上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 21 下一页
摘要: 从 Newtonsoft.Json 迁移到 System.Text.Json 一.写在前面 System.Text.Json 是 .NET Core 3 及以上版本内置的 Json 序列化组件,刚推出的时候经常看到踩各种坑的吐槽,现在经过几个版本的迭代优化,提升了易用性,修复了各种问题,是时候考虑使 阅读全文
posted @ 2022-03-19 02:58 小林野夫 阅读(1670) 评论(0) 推荐(0)
摘要: 博观而约取,厚积而薄发。这篇文章主要讲述System.Text.Json 中的字符编码相关的知识,希望能为你提供帮助。 参考链接:https://docs.microsoft.com/zh-cn/dotnet/standard/serialization/system-text-json-chara 阅读全文
posted @ 2022-03-19 00:19 小林野夫 阅读(14019) 评论(0) 推荐(5)
摘要: 请先阅读 JSON数据交换格式 Json数据交换格式 对应C#类 System.Text.Json.Nodes:.NET 6 依微软的计划,System.Text.Json 应取代Newtonsoft.Json(Json.NET),成为 .NET Core/.NET 5+ 奥林匹克指定 JSON 程 阅读全文
posted @ 2022-03-14 01:25 小林野夫 阅读(4339) 评论(0) 推荐(1)
摘要: 总结 在 C# 8.0 以后将引用类型默认不可为空, 编译器使用静态分析,帮助开发人员尽可能地规避由空引用带来的代码问题。C# 8.0之前引用类型默认为空,也使用无法运行静态流分析。使用 ? 作为可为空声明,这对值类型和引用类型都适用。!表示忽略可空警告 编译器静态分析对象的属性、字段、参数、 方法 阅读全文
posted @ 2022-03-12 17:36 小林野夫 阅读(1916) 评论(0) 推荐(1)
摘要: Roslynator.Analyzers 软件包的新版本 2.3.1 将分析、重构和修复方法的数量提升到了 500 多个。Roslynator 使用开源的 Roslyn .NET 编译器平台对 C#代码进行静态分析。这个分析驱动 IDE 显示可以帮助你改进代码的提示和操作信息。 Roslynator 阅读全文
posted @ 2022-03-12 16:38 小林野夫 阅读(1692) 评论(0) 推荐(0)
摘要: JSON数据交换格式 Json简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。人类很容易读写。机器很容易解析和生成。它基于 JavaScript 编程语言标准 ECMA-262 第 3 版的子集 - 1999 年 12 月。JSON是一种完全独立于语 阅读全文
posted @ 2022-03-12 15:00 小林野夫 阅读(741) 评论(0) 推荐(0)
摘要: 有序列表(SortedList),也称为序列。他可以对列表中每个元素的插入位置进行精确地控制。 可以根据元素的在列表中的位置访问元素,并搜索列表中的元素。 列表允许重复的元素。 有序列表是数组和哈希表的组合。 它包含一个可使用键或索引访问各项的列表。 如果您使用索引访问各项,则它是一个动态数组(Ar 阅读全文
posted @ 2022-03-11 17:28 小林野夫 阅读(1543) 评论(0) 推荐(0)
摘要: 早期绑定 早期绑定也称静态绑定,是指编译时绑定;早期绑定对象基本上是强类型对象或静态类型对象。 早期绑定在编译期间识别并检查方法、属性、函数,并在应用程序执行之前执行其他优化。在这个绑定中,编译器已经知道它是什么类型的对象以及它拥有的方法或属性。 早期绑定的优点 1、性能很快 2、易于编码、开发 3 阅读全文
posted @ 2022-03-07 03:07 小林野夫 阅读(328) 评论(0) 推荐(0)
摘要: 原文链接:https://www.cnblogs.com/hez2010/p/12810993.html 前言 今天 .NET 官方博客宣布 C# 9 Source Generators 第一个预览版发布,这是一个用户已经喊了快 5 年特性,今天终于发布了。 简介 Source Generators 阅读全文
posted @ 2022-03-07 00:15 小林野夫 阅读(1199) 评论(0) 推荐(0)
摘要: 总结 序列化,侧重于数据交换和传输, 数据序列化就是将对象或者数据结构转化成特定的格式,可以是XML,也可以是JSON等任何格式。使其可在网络中传输和交换数据 持久化,侧重存储。重点在于如何将业务数据对象存储在持久化介质上, 并同时提供查询修改的手段。 正文 什么是持久化? 持久化是将程序数据在持久 阅读全文
posted @ 2022-03-06 21:30 小林野夫 阅读(580) 评论(0) 推荐(0)
摘要: 在讨论 .NET 和 C# 中的软件开发时经常出现的两个术语是 DTO 和 POCO。一些开发人员交替使用这些术语。那么,DTO 和 POCO 之间有什么区别?首先,让我们定义每个术语。随着 C# 9、.NET 5 和记录类型越来越流行,我希望能经常将它们用于 DTR。 数据传输对象 (DTO) D 阅读全文
posted @ 2022-03-05 21:32 小林野夫 阅读(2975) 评论(1) 推荐(0)
摘要: 总结: 1、POCO的解释就是"Plain Old C# Object"。从字面上翻译为"纯洁老式的C#对象",但大家都使用"简单java对象"来称呼它。只有无参建构函式和属性、字段(很少用到字段,默认都是属性)的C#类,没有多余的东西(接口、继承、依赖)。另外提一点所有 DTO(只含属性的类) 都 阅读全文
posted @ 2022-03-05 21:09 小林野夫 阅读(1721) 评论(0) 推荐(1)
摘要: 什么是 JSON? JSON 指的是 JavaScript 对象标记法(JavaScript Object Notation) JSON 是一种轻量级的数据交换格式 JSON 具有自我描述性且易于理解 JSON 独立于语言 JSON 使用 JavaScript 语法,但是 JSON 格式是纯文本的。 阅读全文
posted @ 2022-03-05 13:23 小林野夫 阅读(244) 评论(0) 推荐(0)
摘要: 可序列化类型定义-serializable 类型前面添加了[serializable]特性的类就是可序列化类型,SerializableAttribute特性只能应用于引用类型(class)、值类型(struct)、枚举类型(enum)和委托类型(delegate)。枚举和委托类型总是可序列化的所以 阅读全文
posted @ 2022-03-05 11:56 小林野夫 阅读(4930) 评论(0) 推荐(0)
摘要: 定义 序列化是使用指定格式将活动对象或对象图转换为字节序列的过程,从而存储对象或将对象传输到内存、数据库或文件的过程。 它的主要用途是保存对象的状态,以便能够在需要时重新创建对象。 反向过程称为“反序列化”。 对象图objectGfraph, 一个对象可以引用一个集合,而这个集合引用了一组对象,这些 阅读全文
posted @ 2022-03-04 19:54 小林野夫 阅读(157) 评论(0) 推荐(0)
摘要: 当我们想使用本机调试器(如CDB或WinDBG)调试.NET应用程序时,我们必须在本机调试器和托管世界之间使用“桥”,因为本机调试器本身并不理解托管代码。它是本机调试器。为了提供这个桥,CLR附带了一个调试扩展名SOS.DLL。这理解CLR的内部结构,因此允许我们执行诸如输出托管调用堆栈、转储托管堆 阅读全文
posted @ 2022-03-02 14:25 小林野夫 阅读(147) 评论(0) 推荐(0)
摘要: 条件自动回收 达到指定条件后自动执行GC回收垃圾。 GC中的方法AddMemoryPressure和RemoveMemoryPressure 本机资源有时会消耗大量内存,但用于包装它的托管对象只占用很少的内存。一个典型的例子就是位图。一个位图可能占用几兆字节的本机内存,托管对象却极小,只包含一个HB 阅读全文
posted @ 2022-03-01 12:19 小林野夫 阅读(342) 评论(0) 推荐(0)
摘要: 总结 1、一般要获取一个内核对象的引用,最好用SafeHandle来引用它,这个类可以帮你管理引用计数,而且用它引用内核对象,代码更健壮 2、托管中生成并引用非托管,一但非托管和托管中的引用断开(托管资源被回收),那么这个时候非托管资源还在,那么释放这个问题就有一丢丢困难。 常见的有两种机制来自动释 阅读全文
posted @ 2022-02-28 21:35 小林野夫 阅读(1004) 评论(0) 推荐(0)
摘要: 属性 GC.MaxGeneration:获取系统当前支持的最大代数。 方法 GC.GetTotalMemory(bool forceFullCollection) 方法 true表示该方法先做垃圾收集操作,之后才计算出受控代码分配的字节数。false表示不做垃圾收集,直接计算出受控代码分配的字节数。 阅读全文
posted @ 2022-02-28 21:35 小林野夫 阅读(5425) 评论(0) 推荐(0)
摘要: 这个话题还未做详细研究,暂时用不到,只是粗略看了一下。 使用System.Runtime.InteropServices.GCHandle类来手动控制对象的生命周期 (个人感觉这里可能有一些问题...只是草稿而已..还请高手指正) 1.GCHandle.Alloc 传递一个Object和一个GCHa 阅读全文
posted @ 2022-02-28 21:22 小林野夫 阅读(1268) 评论(0) 推荐(0)
摘要: 在后台垃圾回收 (GC) 中,在进行第 2 代回收的过程中,将会根据需要收集暂时代(第 0 代和第 1 代)。 后台垃圾回收是在一个或多个专用线程上执行的,具体取决于它是后台还是服务器 GC,它只适用于第 2 代回收。 默认启用后台垃圾回收。 可以在 .NET Framework 应用中使用 gcC 阅读全文
posted @ 2022-02-26 17:47 小林野夫 阅读(299) 评论(0) 推荐(0)
摘要: 从 .NET 5 开始,一些新标记为已过时的 API 使用 ObsoleteAttribute 上的两个新属性。 ObsoleteAttribute.DiagnosticId 属性指示编译器使用自定义诊断 ID 产生生成警告。 通过自定义 ID 可专门、单独地取消过时警告。 对于 .NET 5+ 过 阅读全文
posted @ 2022-02-25 16:51 小林野夫 阅读(668) 评论(0) 推荐(0)
摘要: 相关的类 GcSetting 类 GCLargeObjectHeapCompactionMode 枚举 GCLargeObjectHeapCompactionMode 枚举 属性的值 GCSettings.LargeObjectHeapCompactionMode 是 GCLargeObjectHe 阅读全文
posted @ 2022-02-25 16:30 小林野夫 阅读(1488) 评论(0) 推荐(0)
摘要: 原文链接:https://docs.microsoft.com/zh-cn/dotnet/standard/garbage-collection/large-object-heap NET 垃圾回收器 (GC) 将对象分为小型和大型对象。 如果是大型对象,它的某些特性将比对象较小时显得更为重要。 例 阅读全文
posted @ 2022-02-24 00:12 小林野夫 阅读(756) 评论(0) 推荐(0)
摘要: GC 管理内存分配和回收 公共语言运行时的垃圾回收器为应用程序管理内存的分配和释放。 https://docs.microsoft.com/zh-cn/dotnet/standard/automatic-memory-management GC内存分配原则 暂时代:因为第 0 代和第 1 代中的对象 阅读全文
posted @ 2022-02-23 18:20 小林野夫 阅读(292) 评论(0) 推荐(0)
摘要: 原文:https://docs.microsoft.com/zh-cn/dotnet/standard/automatic-memory-management 自动内存管理是公共语言运行时在托管执行过程中提供的服务之一。 公共语言运行时的垃圾回收器为应用程序管理内存的分配和释放。 对开发人员而言,这 阅读全文
posted @ 2022-02-23 17:41 小林野夫 阅读(185) 评论(0) 推荐(0)
摘要: 触发垃圾回收算法的条件 触发垃圾回收的条件 当满足以下条件之一时将发生垃圾回收: 操作系统报告低内存请看(将触发第2代垃圾回收)。 这是通过 OS 的内存不足通知或主机指示的内存不足检测出来。 由托管堆上已分配的对象使用的内存超出了可接受的阈值。 随着进程的运行,此阈值会不断地进行调整。触发第0代回 阅读全文
posted @ 2022-02-23 16:48 小林野夫 阅读(835) 评论(0) 推荐(1)
摘要: .net主要有两种类型垃圾回收器,也可也说是垃圾回收器的两种工作模式。 GC的类型主要有两种; 工作模式是针对进程的,程序启动后就不能修改了。只能在配置文件.json .xml进行设置。但是可用通过GCSeting类的GCLatencyMode进行微调(也叫延迟模式)。 工作站(默认的.NET程序都 阅读全文
posted @ 2022-02-23 15:54 小林野夫 阅读(1822) 评论(0) 推荐(0)
摘要: 延迟模式 lowlatency 使用环境:后台工作方式只影响第 2 代中的垃圾回收;第 0 代和第 1 代中的垃圾回收始终是非并发的,因为它们完成的速度很快。GC模式是针对进程配置的,进程运行期间不能更改,但是应用程序使用GCsetting类的GClatencyMode属性对垃圾回收进行某种程度的控 阅读全文
posted @ 2022-02-23 15:47 小林野夫 阅读(920) 评论(0) 推荐(0)
摘要: 前言 自从.NET Core 3.0开始对根据自己具体的应用场景去配置GC ,让GC 发挥最好的作用。.NET 5 改动更大,而且.NET 5整体性能比.net core 3.1高20%,并且在GC这块.NET 5开放了更多配置,所以.NET 5很值得关注。 GC管理你服务的内存分配和释放,GC在运 阅读全文
posted @ 2022-02-22 18:05 小林野夫 阅读(376) 评论(0) 推荐(0)
摘要: 上一篇我介绍了Hash函数 这篇我来说一下Hash函数在 HashTable中的应用。 HashTable的特性: 1、装载因子:.net core 0.72 ,java 0.75 2、冲突解决方案:Hashtable使用了闭散列法来解决冲突,java采用 开散列法解决冲突. 3、bucket(桶) 阅读全文
posted @ 2022-02-22 15:41 小林野夫 阅读(654) 评论(0) 推荐(0)
摘要: 希函数定义 哈希函数(英語:Hash function)又称散列函数、散列函数、摘要算法、单向散列函数。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个(哈希函数返回的值)称为指纹、哈希值、哈希代码、摘要或散列值(hash values,has 阅读全文
posted @ 2022-02-22 02:31 小林野夫 阅读(1686) 评论(0) 推荐(0)
摘要: Hashtable 和 Dictionary <K, V> 类型 1):单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分. 2):Dictionary和HashTable内部实现差不多,但前者无需装箱拆箱操作,效率略高一点。 3):多线程程序中推荐使用Co 阅读全文
posted @ 2022-02-22 02:10 小林野夫 阅读(719) 评论(0) 推荐(0)
摘要: 字节顺序,又称端序或尾序(英語:Endianness),在计算机科学领域中,指電腦記憶體中或在数字通信链路中,组成多字节的字的字节的排列顺序。 例如假设上述变量x类型为int,位于地址0x100处,它的值为0x01234567,地址范围为0x100~0x103字节,其内部排列顺序依赖于机器的类型。大 阅读全文
posted @ 2022-02-21 16:00 小林野夫 阅读(5036) 评论(2) 推荐(0)
摘要: 作用 在使用.NET编写的代码在debug时很容易进行排查和定位问题,一旦项目上线并出现问题的话那么只能依靠系统日志来进行问题排查和定位,但当项目复杂时,即各种方法间相互调用将导致要获取具体的出错方法或调用者将是一件不那么容易的事(因为没有PDB文件) 还好.NET提供了一系列系统组件来帮助我们获取 阅读全文
posted @ 2022-02-20 17:55 小林野夫 阅读(4429) 评论(0) 推荐(4)
摘要: 异常概述 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网络是否始终保持通畅等等。设计类型时要想好各种使用情况类型名称通常是名词,例如filestream或者st 阅读全文
posted @ 2022-02-20 16:38 小林野夫 阅读(738) 评论(0) 推荐(0)
摘要: 装载自:https://docs.microsoft.com/zh-cn/visualstudio/debugger/managing-exceptions-with-the-debugger?view=vs-2022 以下是部分摘抄 在 Visual Studio 中使用调试器管理异常 “异常设置 阅读全文
posted @ 2022-02-20 12:22 小林野夫 阅读(629) 评论(0) 推荐(0)
摘要: 栈溢出:死循环、递归调用,C# 的堆栈大小对于 32 位进程只有 1 MB,对于 64 位进程只有 4 MB如下: Main(args); static void Main(string[] args) { Main(args); } /* 输出: Stack overflow. Repeat 24 阅读全文
posted @ 2022-02-19 19:13 小林野夫 阅读(1567) 评论(0) 推荐(0)
摘要: ParallelOptions 构造函数 此构造函数用默认值初始化实例。 MaxDegreeOfParallelism 初始化为-1,表示没有对应采用的并行度进行上限设置。 CancellationToken 初始化为不可取消的标记,并 TaskScheduler 初始化为默认计划程序 (TaskS 阅读全文
posted @ 2022-02-18 19:33 小林野夫 阅读(2426) 评论(0) 推荐(0)
摘要: 总结 总之,要编写一个健壮的并行循环,必须在并行循环体中检测 ParallelLoopState 对象的 IsExceptional, IsStopped 和 LowestBreakIteration 三个属性,出于简化编程的目的, ParallelLoopState 提供了一个 ShouldExi 阅读全文
posted @ 2022-02-18 16:32 小林野夫 阅读(634) 评论(0) 推荐(0)
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 21 下一页
原文链接:https://www.cnblogs.com/cdaniu/