<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[一土宁的博客]]></title><description><![CDATA[你明白的不是你明白的，使别人明白的才是真明白的。你明白了吗？]]></description><link>https://blog.csdn.net/wnvalentin</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; wnvalentin]]></copyright><item><title><![CDATA[非对称加密与数字证书]]></title><link>https://blog.csdn.net/wnvalentin/article/details/127394488</link><guid>https://blog.csdn.net/wnvalentin/article/details/127394488</guid><author>wnvalentin</author><pubDate>Tue, 18 Oct 2022 20:34:08 +0800</pubDate><description><![CDATA[从非对称加密，到数字签名，到数字证书，再到 HTTPS 的技术大致原理。]]></description><category></category></item><item><title><![CDATA[IIS 网站初始化与 Keep alive]]></title><link>https://blog.csdn.net/wnvalentin/article/details/125626950</link><guid>https://blog.csdn.net/wnvalentin/article/details/125626950</guid><author>wnvalentin</author><pubDate>Tue, 05 Jul 2022 20:35:33 +0800</pubDate><description><![CDATA[IIS 网站应用程序的初始化与保持活跃]]></description><category></category></item><item><title><![CDATA[ASP.NET Core 在 IIS 上的进程内 (InProcess) 托管]]></title><link>https://blog.csdn.net/wnvalentin/article/details/125620188</link><guid>https://blog.csdn.net/wnvalentin/article/details/125620188</guid><author>wnvalentin</author><pubDate>Tue, 05 Jul 2022 18:01:57 +0800</pubDate><description><![CDATA[文本讨论了下列问题：（1）为何推荐使用专业Web Server（例如IIS、NGINX）来代理 ASP.Net core 自带的 kestrel？（2）IIS 托管的 Out of Process 和 In Process 模式如何选择？]]></description><category></category></item><item><title><![CDATA[详解 JWT 规范]]></title><link>https://blog.csdn.net/wnvalentin/article/details/123802484</link><guid>https://blog.csdn.net/wnvalentin/article/details/123802484</guid><author>wnvalentin</author><pubDate>Thu, 26 May 2022 15:35:48 +0800</pubDate><description><![CDATA[1 概述
JSON Web Token (JWT) 是一种用于在两个系统之间传输声明（Claims）的方式，它具有紧凑、URL 安全的特点。所谓“紧凑”，是指它本身教小，适用于空间受限的环境，如 HTTP 授权头和 URI 查询参数。 Claims 在JWT中被编码为一个JSON对象，作为 JSON Web Signature (JWS)结构的有效载荷 或 JSON Web Encryption (JWE) 结构的文本信息。 JWS/JWE 使用 MAC（ Message Authentication Co]]></description><category></category></item><item><title><![CDATA[.NET 中密封类的性能优势]]></title><link>https://blog.csdn.net/wnvalentin/article/details/123824184</link><guid>https://blog.csdn.net/wnvalentin/article/details/123824184</guid><author>wnvalentin</author><pubDate>Tue, 29 Mar 2022 17:48:59 +0800</pubDate><description><![CDATA[文章目录IntroPreface性能优势虚方法调用对象类型转换 (is / as)数组 Arrays数组转换成 Span检测不可达的代码寻找可以被密封的类型补充说明More
Intro
最近看到一篇文章 Performance benefits of sealed class in .NET，觉得写得不错，翻译一下，分享给大家。
目前看到的一些类库中其实很多并没有考虑使用密封类，如果你的类型是不希望被继承的，或者不需要被重写的，那么就应该考虑声明为密封类，尤其是对于类库项目的作者来说，这其实是非常值得考虑的]]></description><category></category></item><item><title><![CDATA[在 xUnit 测试方法中共享测试上下文]]></title><link>https://blog.csdn.net/wnvalentin/article/details/117928909</link><guid>https://blog.csdn.net/wnvalentin/article/details/117928909</guid><author>wnvalentin</author><pubDate>Wed, 16 Jun 2021 10:45:00 +0800</pubDate><description><![CDATA[在使用 xUnit 进行单元测试时，有时候我们需要在不同的测试类中进行一些相同的初始化或清理工作，这些代码称为测试上下文（test context）。根据范围的不同， xUnit 提供了三种共享测试上下文的方式：

...]]></description><category></category></item><item><title><![CDATA[为什么OAuth是授权协议，而不是认证协议？]]></title><link>https://blog.csdn.net/wnvalentin/article/details/109227551</link><guid>https://blog.csdn.net/wnvalentin/article/details/109227551</guid><author>wnvalentin</author><pubDate>Thu, 22 Oct 2020 18:29:38 +0800</pubDate><description><![CDATA[《User Authentication with OAuth 2.0》
The OAuth 2.0 specification defines a delegation protocol that is useful for conveying authorization decisions across a network of web-enabled applications and APIs. OAuth is used in a wide variety of applications, incl]]></description><category></category></item><item><title><![CDATA[从IL层面认识await, async]]></title><link>https://blog.csdn.net/wnvalentin/article/details/108217240</link><guid>https://blog.csdn.net/wnvalentin/article/details/108217240</guid><author>wnvalentin</author><pubDate>Tue, 25 Aug 2020 11:21:30 +0800</pubDate><description><![CDATA[文章目录从 IL 层面认识使用 WebClient 下载挖掘 await async 的IL代码`d__1` 类GetResult() 方法将 IL 代码回写为 C#完整 C# 代码剖析 AsyncTaskMethodBuilder第一次回调 MoveNext第二次回调 MoveNext总结
await，async 这玩意的知识点已经被人说的烂的不能再烂了，看似没什么好说的，但我发现有不少文章还是从理论上讲述了这两个语法糖的用法，懂得还是懂，不懂的看似懂了过几天又不懂了，人生如戏全靠记是不行的哈??????]]></description><category></category></item><item><title><![CDATA[Redis为什么这么快]]></title><link>https://blog.csdn.net/wnvalentin/article/details/108004845</link><guid>https://blog.csdn.net/wnvalentin/article/details/108004845</guid><author>wnvalentin</author><pubDate>Fri, 14 Aug 2020 15:11:30 +0800</pubDate><description><![CDATA[文章目录面试问题计算机的世界，缓存无处不在Redis为什么这么快？1. IO多路复用技术2. Redis线程模型2.1 I/O多路复用程序、文件事件分派器2.2 事件的处理器2.3 客户端与redis通信过程压力测试答案
曾经有人这么告诉我：“在理想状态下，我们的页面跳转需要在瞬间解决，对于页内操作则需要在刹那间解决。另外，超过一弹指的耗时操作要有进度提示，并且可以随时中止或取消，这样才能给用户最好的体验。”
那么瞬间、刹那、一弹指具体是多少时间呢？

根据《摩诃僧祗律》记载：
一刹那者为一念，二十念为一瞬]]></description><category></category></item><item><title><![CDATA[文件系统]]></title><link>https://blog.csdn.net/wnvalentin/article/details/108003824</link><guid>https://blog.csdn.net/wnvalentin/article/details/108003824</guid><author>wnvalentin</author><pubDate>Fri, 14 Aug 2020 14:59:00 +0800</pubDate><description><![CDATA[文章目录前言正文文件系统的基本组成虚拟文件系统文件的使用文件的存储连续空间存放方式非连续空间存放方式链表方式索引方式Unix 文件的实现方式空闲空间管理空闲表法空闲链表法位图法文件系统的结构目录的存储软链接和硬链接文件 I/O缓冲与非缓冲 I/O直接与非直接 I/O阻塞与非阻塞 I/O VS 同步与异步 I/O
前言

正文
文件系统的基本组成
文件系统是操作系统中负责管理持久数据的子系统，说简单点，就是负责把用户的文件存到磁盘硬件中，因为即使计算机断电了，磁盘里的数据并不会丢失，所以可以持久化的保存文件。]]></description><category></category></item><item><title><![CDATA[Redis 延迟问题定位与最佳实践]]></title><link>https://blog.csdn.net/wnvalentin/article/details/107997657</link><guid>https://blog.csdn.net/wnvalentin/article/details/107997657</guid><author>wnvalentin</author><pubDate>Fri, 14 Aug 2020 14:21:56 +0800</pubDate><description><![CDATA[文章目录使用复杂度高的命令
Redis作为内存数据库，拥有非常高的性能，单个实例的 QPS 能够达到 10W 左右。但我们在使用 Redis 时，经常时不时会出现访问延迟很大的情况，如果你不知道 Redis 的内部实现原理，在排查问题时就会一头雾水。
很多时候，Redis 出现访问延迟变大，都与我们的使用不当或运维不合理导致的。
这篇文章我们就来分析一下 Redis 在使用过程中，经常会遇到的延迟问题以及如何定位和分析。
使用复杂度高的命令
如果在使用Redis时，发现访问延迟突然增大，如何进行排查？
首先]]></description><category></category></item><item><title><![CDATA[跨域资源共享 CORS]]></title><link>https://blog.csdn.net/wnvalentin/article/details/107203074</link><guid>https://blog.csdn.net/wnvalentin/article/details/107203074</guid><author>wnvalentin</author><pubDate>Wed, 08 Jul 2020 13:44:37 +0800</pubDate><description><![CDATA[CORS是一个W3C标准，全称是"跨域资源共享"（Cross-origin resource sharing）。
它允许浏览器向跨源服务器，发出XMLHttpRequest请求，从而克服了AJAX只能同源使用的限制。
本文详细介绍CORS的内部机制。
一、简介
CORS需要浏览器和服务器同时支持。目前，所有浏览器都支持该功能，IE浏览器不能低于IE10。
整个 CORS 通信过程，都是浏览器自动完成，不需要用户参与。对于开发者来说，CORS 通信与同源的 AJAX 通信没有差别，代码完全一样。浏览器一旦发现]]></description><category></category></item><item><title><![CDATA[LINQ 延迟查询的原因]]></title><link>https://blog.csdn.net/wnvalentin/article/details/106444287</link><guid>https://blog.csdn.net/wnvalentin/article/details/106444287</guid><author>wnvalentin</author><pubDate>Sat, 30 May 2020 18:36:25 +0800</pubDate><description><![CDATA[延迟查询
在运行 LINQ 中的某些扩展方法进行集合的查询时，查询不会立即运行。只有当运行至 foreach 对查询结果进行遍历时，或者对查询结果调用 ToList() 方法等情况时，查询才会真正的运行。
我们以 Where() 方法为例进行研究。考察如下代码：
var names = new List&lt;string&gt; {"Nino", "Alberto", "Juan", "Mike", "Phil"};
var namesWithJ = names.Where(n=&gt;n.StartsW]]></description><category></category></item><item><title><![CDATA[C#与CLR学习笔记（8）—— 通过反射调用泛型方法]]></title><link>https://blog.csdn.net/wnvalentin/article/details/106224998</link><guid>https://blog.csdn.net/wnvalentin/article/details/106224998</guid><author>wnvalentin</author><pubDate>Tue, 19 May 2020 23:09:43 +0800</pubDate><description><![CDATA[1 调用非泛型方法
通过反射创建一个对象，然后调用其方法的一般过程为：

加载程序集，并获取类型
通过类型，实例化一个类型对象（调用静态方法则不必实例化）
根据名称、方法签名、可访问性等约束，获取要调用的方法
通过 Invoke 方法，传入实际参数，进行调用。

案例：
public class ReflectionTest
{
    // 无参构造函数
    public ReflectionTest(){}
    
    public void Show(string name, int id)]]></description><category></category></item><item><title><![CDATA[C#与CLR学习笔记（7）—— 泛型与泛型约束]]></title><link>https://blog.csdn.net/wnvalentin/article/details/106166786</link><guid>https://blog.csdn.net/wnvalentin/article/details/106166786</guid><author>wnvalentin</author><pubDate>Sun, 17 May 2020 01:15:50 +0800</pubDate><description><![CDATA[文章目录1 泛型概述1.1 含义1.2 泛型的继承1.2.1 泛型类型的继承1.2.2 泛型的类型参数的继承2 泛型约束2.1 编译器对泛型参数的验证2.2 泛型约束的类型2.3 其他验证问题参考文献
1 泛型概述
1.1 含义
使用泛型的主要目的有三个：（1）实现代码复用；（2）避免使用Object类，在实例化一个泛型类时，我们需要指定T的实际类型（类型实参），这样保证了类型安全；（3）减少了 Object 造成的装箱拆箱，提高性能（原理见下文）。
对于编译器而言，泛型 T 本质上就是一个 类型参数（Ty]]></description><category></category></item><item><title><![CDATA[IO 模型知多少 (2)]]></title><link>https://blog.csdn.net/wnvalentin/article/details/106105639</link><guid>https://blog.csdn.net/wnvalentin/article/details/106105639</guid><author>wnvalentin</author><pubDate>Wed, 13 May 2020 23:27:38 +0800</pubDate><description><![CDATA[文章目录1. 引言2. Socket 编程基础2. 同步阻塞 IO3. 同步非阻塞 IO4. IO 多路复用5. 验证 I/O 模型5.1 验证同步阻塞I/O发起的系统调用
1. 引言
之前的一篇介绍 IO 模型的文章 IO 模型知多少(1) 比较偏理论，很多同学反应不是很好理解。这一篇咱们换一个角度，从代码角度来分析一下。
2. Socket 编程基础
开始之前，我们先来梳理一下，需要提前了解的几个概念：

socket: 直译为“插座”，在计算机通信领域，socket 被翻译为“套接字”，它是计算机之间]]></description><category></category></item><item><title><![CDATA[IO 模型知多少 (1)]]></title><link>https://blog.csdn.net/wnvalentin/article/details/106105271</link><guid>https://blog.csdn.net/wnvalentin/article/details/106105271</guid><author>wnvalentin</author><pubDate>Wed, 13 May 2020 20:08:03 +0800</pubDate><description><![CDATA[文章目录1. 引言2.  I/O 的定义2.1 计算机视角2.2 程序视角3. IO 模型之阻塞 I/O (BIO)4. IO 模型之非阻塞 I/O (NIO)5. IO 模型之 IO 多路复用5.1 IO多路复用之select/poll5.2 IO 多路复用之 epoll6. IO 模型之信号驱动 IO (SIGIO)7. IO 模型之异步 IO (AIO)8. 总结参考资料
1. 引言

同步异步I/O，阻塞非阻塞I/O是程序员老生常谈的话题了，也是自己一直以来懵懵懂懂的一个话题。比如：何为同步异步？何]]></description><category></category></item><item><title><![CDATA[struct实例字段的内存布局(Layout)和大小]]></title><link>https://blog.csdn.net/wnvalentin/article/details/105997906</link><guid>https://blog.csdn.net/wnvalentin/article/details/105997906</guid><author>wnvalentin</author><pubDate>Fri, 08 May 2020 19:04:05 +0800</pubDate><description><![CDATA[背景
在C/C++中，struct类型中的成员的一旦声明，则实例中成员在内存中的布局 (Layout) 顺序就定下来了，即与成员声明的顺序相同，并且在默认情况下总是按照结构中占用空间最大的成员进行对齐(Align)；当然我们也可以通过设置或编码来设置内存对齐的方式。
然而在 .net 托管环境中，CLR 提供了更自由的方式来控制 struct 中 Layout：我们可以在定义 struct时，在 struct 上运用 StructLayoutAttribute 特性来控制成员的内存布局。默认情况下，stru]]></description><category></category></item><item><title><![CDATA[C#并发编程之初识并行编程]]></title><link>https://blog.csdn.net/wnvalentin/article/details/105987868</link><guid>https://blog.csdn.net/wnvalentin/article/details/105987868</guid><author>wnvalentin</author><pubDate>Fri, 08 May 2020 09:16:55 +0800</pubDate><description><![CDATA[原文地址：https://mp.weixin.qq.com/s/0Sn_Me6kmcF0GCL7sWCq_g
写在前面
之前微信公众号里有一位叫sara的朋友建议我写一下Parallel的相关内容，因为手中商城的重构工作量较大，一时之间无法抽出时间。近日，这套系统已有阶段性成果，所以准备写一下Parallel的相关内容，正好也延续之前的C#并发编程系列。
Parallel是并行编程的相关内容，而P...]]></description><category></category></item><item><title><![CDATA[Windows平台的容器]]></title><link>https://blog.csdn.net/wnvalentin/article/details/105606678</link><guid>https://blog.csdn.net/wnvalentin/article/details/105606678</guid><author>wnvalentin</author><pubDate>Sat, 02 May 2020 19:41:01 +0800</pubDate><description><![CDATA[虚拟化技术概述
所谓虚拟化，就是在一台计算机上同时运行多个操作系统，即在同一个物理平台上创造出多台不同机器的假象。每个运行在主机上的操作系统称为“虚拟机”。不同的虚拟机之间是互相隔离的，也就是说一个虚拟机的故障不会影响其他虚拟机。
今日，虚拟化技术一个重要应用就是云计算。我们从云上获取的一台计算机（IaaS），或者某项服务（PaaS），并不对应着专门的物理资源，而是与其他用户共享物理资源的虚拟机。...]]></description><category></category></item></channel></rss>