dos命令net helpmsg图文教程,显示net命令错误数字代码帮助信息
大家好,我是老盖,首先感谢观看本文,本篇文章做的有视频,视频讲述的比较详细,也可以看我发布的视频。
今天我们学习net这个命令中的helpmsg这个命令,此命令的语法是: NET HELPMSG message#
NET HELPMSG 显示有关 Windows 网络消息(例如,错误、警告和警报消息)的信息。当键入 NET HELPMSG 以及数字错误(如\”net helpmsg 2182\”)时,Windows 告诉您有关消息以及可以采取的解决该问题的建议措施。
message# 为需要帮助的 Windows 数字错误。
这里我准备了几个错误的命令,一会演示一下,根据错误的代码然后查询代码。
输入命令net start abcd,这样就有一个错误代码2185,然后再输入命令net helpmsg 2185,输出了服务名无效。
再次查询错误代码,输入命令的net helpmsg 86,指定的网络密码不正确。
再次输入命令net helpmsg 2250,显示出错误找不到网络连接。
感谢观看本篇文章,希望对你有所帮助,本文由老盖聊技术原创,我是老盖,专注分享IT互联网与电脑知识,欢迎关注,本文是出于爱心帮助人的目的所写,请随意分享转载,帮助人越多爱的力量就越大,感谢正能量传播。
C# 13 和 .NET 9 全知道 :9 处理文件、流和序列化 (3)
让我们先来看一下 XML,可能是世界上使用最广泛的序列化格式(目前)。为了展示一个典型的例子,我们将定义一个自定义类来存储有关一个人的信息,然后使用一个包含嵌套的 Person 实例的列表来创建一个对象图:
- 使用您喜欢的代码编辑器向 Chapter09 解决方案添加一个名为 WorkingWithSerialization 的新控制台应用程序 / console 项目。
- 在项目文件中,添加元素以静态和全局导入以下类:System.Console 使用 ForegroundColor 和 WriteLine系统.Environment 使用 CurrentDirectorySystem.IO.Path 使用 Combine、GetFileName 和 GetDirectoryName
- 添加一个名为 Program.Helpers.cs 的新类文件。
- 在 Program.Helpers.cs 中,添加一个部分 Program 类,包含一个 SectionTitle 和一个 OutputFileInfo 方法,如下代码所示:
添加一个新的类文件,命名为 Person.cs ,以定义一个 Person 类,该类具有一个 Salary 属性,该属性是 protected ,意味着它仅对自身和派生类可访问。为了填充薪资,该类具有一个带有单个参数的构造函数,用于设置初始薪资,如以下代码所示:
在 Program.cs 中,删除现有语句,然后导入命名空间以处理 XML 序列化和 Person 类,如以下代码所示:
在 Program.cs 中,添加语句以创建 Person 实例的对象图,如以下代码所示:
运行代码,查看结果,并注意抛出了一个异常,如下所示的输出:
在 Person.cs 中,添加一个语句以定义一个无参数构造函数,如以下代码所示:
构造函数不需要做任何事情,但它必须存在,以便 XmlSerializer 可以在反序列化过程中调用它来实例化新的 Person 实例。
- 运行代码并查看结果,请注意对象图被序列化为 XML 元素,如 <FirstName>Bob</FirstName> ,并且 Salary 属性未包含在内,因为它不是 public 属性,如以下输出所示:
我们可以通过使用属性而不是元素来使 XML 更加紧凑
- 在 Person.cs 的顶部,导入 System.Xml.Serialization 命名空间,以便您可以使用 [XmlAttribute] 属性装饰某些属性,如以下代码所示:
在 Person.cs 中,用 [XmlAttribute] 属性装饰名字、姓氏和出生日期属性,并为每个属性设置一个短名称,如以下代码所示:
运行代码,并注意文件大小从 793 字节减少到 488 字节,节省了超过三分之一的空间。此减少是通过将属性值输出为 XML 属性实现的,如以下输出所示:
现在,让我们尝试将 XML 文件反序列化回内存中的实时对象:
- 在 Program.cs 中,添加语句以打开 XML 文件,然后反序列化,如下代码所示:
运行代码,并注意从 XML 文件成功加载人员,然后进行枚举,如下所示的输出:
更多信息:在 System.Xml.Serialization 命名空间中定义了许多其他属性,可以用来控制生成的 XML。一个好的起点是官方文档,关于 XmlAttributeAttribute 类,可以在这里找到:https://learn.microsoft.com/en-us/dotnet/api/system.xml.serialization.xmlattributeattribute。不要将此类与 System.Xml 命名空间中的 XmlAttribute 类混淆。该类用于在读取和写入 XML 时表示 XML 属性,使用 XmlReader 和 XmlWriter 。
如果您不使用任何注释, XmlSerializer 在反序列化时将使用属性名称执行不区分大小写的匹配。
良好实践:使用 XmlSerializer 时,请记住仅包含公共字段和属性,并且类型必须具有无参数构造函数。您可以使用属性自定义输出。
最受欢迎的 .NET 库之一,用于处理 JSON 序列化格式的是 Newtonsoft.Json,简称 Json.NET。它成熟且功能强大。
Newtonsoft.Json 的受欢迎程度如此之高,以至于超出了 NuGet 包管理器中用于下载计数的 32 位整数的范围,如图 9.5 所示:
图 9.5:2022 年 8 月 Newtonsoft.Json 的下载量为负 20 亿次
让我们看看它的实际效果:
- 在 WorkingWithSerialization 项目中,添加对最新版本 Newtonsoft.Json 的包引用,如下所示:
- 构建 WorkingWithSerialization 项目以恢复包。
- 在 Program.cs 中,添加语句以创建一个文本文件,然后将人员序列化为 JSON 格式并写入该文件,如下代码所示:
运行代码,并注意到与包含元素的 XML 相比,JSON 所需的字节数不到一半。它甚至比使用属性的 XML 文件还要小(366 对比 488),如下所示的输出:
.NET Core 3 引入了一个新的命名空间来处理 JSON, System.Text.Json ,该命名空间通过利用像 Span<T> 这样的 API 来优化性能。
此外,像 Json.NET 这样的旧库是通过读取 UTF-16 来实现的。使用 UTF-8 读取和写入 JSON 文档会更高效,因为大多数网络协议,包括 HTTP,使用 UTF-8,并且您可以避免将 UTF-8 转码为 Json.NET 的 Unicode string 值。
通过新的 API,微软在不同场景下实现了 1.3 倍到 5 倍的提升。
Json.NET 的原作者 James Newton-King 加入了微软,并与他们合作开发新的 JSON 类型。正如他在讨论新 JSON API 的评论中所说,“Json.NET 不会消失,”如图 9.6 所示:
图 9.6:Json.NET 原作者的评论
让我们看看如何使用现代 JSON API 来反序列化 JSON 文件:
- 在 WorkingWithSerialization 项目中,在 Program.cs 的顶部,导入新的 JSON 类以执行序列化,使用别名以避免与我们之前使用的 Json.NET 名称冲突,如以下代码所示:
在 Program.cs 中,添加语句以打开 JSON 文件,反序列化它,并输出人们的孩子的名称和数量,如以下代码所示:
运行代码并查看结果,如下所示的输出:
- 良好实践:选择 Json.NET 以提高开发者生产力和丰富的功能集,或选择 System.Text.Json 以获得更好的性能。您可以在以下链接查看差异列表:https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-migrate-from-newtonsoft-how-to#table-of-differences-between-newtonsoftjson-and-systemtextjson。
.NET 9 引入了一个类,使生成 .NET 类型的 JSON 架构变得简单。因此,序列化得到了简化,数据符合预期格式。
让我们看一个工作示例:
- 在 WorkingWithSerialization 项目中,在 Program.cs 的顶部,导入命名空间以执行 JSON 序列化并处理 JSON 架构,如以下代码所示:
在 Program.cs 中,添加语句以导出 Person 类的 JSON 架构,如以下代码所示:
运行代码并查看结果,如下所示的输出:
有许多选项可以控制 JSON 的处理方式,如下所示:
- 包括和排除字段
- 设置外壳策略
- 选择区分大小写的策略
- 在紧凑和美化空白之间进行选择
让我们看看一些实际应用:
- 使用您喜欢的代码编辑器向 Chapter09 解决方案添加一个新的控制台应用程序 / console 项目,命名为 ControllingJson 。
- 在项目文件中,添加元素以静态和全局导入 System.Console 、 System.Environment 和 System.IO.Path 类。
- 在 ControllingJson 项目中,添加一个名为 Book.cs 的新类文件。
- 在 Book.cs 中,定义一个名为 Book 的类,如下代码所示:
在 Program.cs 中,删除现有语句,然后导入命名空间以处理高性能 JSON 和 Book ,如下代码所示:
在 Program.cs 中,添加语句以创建 Book 类的实例并将其序列化为 JSON,如以下代码所示:
运行代码并查看结果,如下所示的输出:
请注意以下事项:
- JSON 文件大小为 221 字节。
- 成员名称使用驼峰命名法,例如 publishDate 。这对于在浏览器中使用 JavaScript 进行后续处理是最好的。
- 所有字段均因设置的选项而包含,包括 pages 。
- JSON 被美化以便于人类阅读。
- DateTime 和 DateTimeOffset 值作为单一标准 string 格式存储。
- 在 Program.cs 中,当设置 JsonSerializerOptions 时,注释掉外壳策略的设置,使用缩进书写,并包含字段。
- 运行代码并查看结果,如下所示的输出:
请注意以下事项:
- JSON 文件减少了大约 20%。
- 成员名称使用正常大小写,例如 PublishDate 。
- Pages 字段缺失。其他字段由于 [JsonInclude] 属性在 PublishDate 和 Created 字段上而被包含。
BinaryFormatter 类是一个序列化类,可以将一个活动对象或一组连接对象转换为可以存储或传输的二进制格式,并在后续重建。该类自 .NET 的早期版本以来一直存在,并位于 System.Runtime.Serialization.Formatters.Binary 命名空间中。但 BinaryFormatter 存在几个问题,主要与安全性和稳健性有关。
例如, BinaryFormatter 易受到反序列化攻击,恶意输入可以在反序列化过程中执行任意代码。这使得任何使用 BinaryFormatter 的应用程序在攻击者能够控制序列化数据时容易受到远程代码执行 (RCE) 的影响。 BinaryFormatter 对其反序列化的数据不执行任何验证或检查,因此在处理不受信任的数据时本质上是不安全的。
BinaryFormatter 不支持许多现代序列化功能,例如 JSON 或 XML 序列化能力,这些功能更安全且更灵活。
良好实践:微软建议使用序列化库,如 System.Text.Json 、 System.Xml.Serialization 或 Google.Protobuf 。
在.NET Core 的第一个版本中,微软团队完全移除了 BinaryFormatter ,因为其已知的风险,但没有明确的安全替代方案,客户要求将其恢复,团队在.NET Core 1.1 中做了这一点。从那时起,团队默认禁用了它,但允许开发者通过设置标志显式重新启用它,如果他们接受风险。
在 .NET 9 中,启用 BinaryFormatter 的标志已被移除,任何使用它的行为将抛出异常。但仍然可以通过引用一个标记为永久脆弱的 NuGet 包并设置一些配置来重新启用它。
更多信息:您可以通过以下链接了解有关为什么以及如何在 .NET 9 中移除 BinaryFormatter 类的更多信息: https://devblogs.microsoft.com/dotnet/binaryformatter-removed-from-dotnet-9/ 。
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。