自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一土宁的博客

你明白的不是你明白的,使别人明白的才是真明白的。你明白了吗?

  • 博客(70)
  • 资源 (2)
  • 收藏
  • 关注

原创 非对称加密与数字证书

从非对称加密,到数字签名,到数字证书,再到 HTTPS 的技术大致原理。

2022-10-18 20:34:08 1714 1

原创 IIS 网站初始化与 Keep alive

IIS 网站应用程序的初始化与保持活跃

2022-07-05 20:35:33 1110

翻译 ASP.NET Core 在 IIS 上的进程内 (InProcess) 托管

文本讨论了下列问题:(1)为何推荐使用专业Web Server(例如IIS、NGINX)来代理 ASP.Net core 自带的 kestrel?(2)IIS 托管的 Out of Process 和 In Process 模式如何选择?

2022-07-05 18:01:57 1459

原创 详解 JWT 规范

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

2022-05-26 15:35:48 2874

转载 .NET 中密封类的性能优势

文章目录IntroPreface性能优势虚方法调用对象类型转换 (is / as)数组 Arrays数组转换成 Span检测不可达的代码寻找可以被密封的类型补充说明MoreIntro最近看到一篇文章 Performance benefits of sealed class in .NET,觉得写得不错,翻译一下,分享给大家。目前看到的一些类库中其实很多并没有考虑使用密封类,如果你的类型是不希望被继承的,或者不需要被重写的,那么就应该考虑声明为密封类,尤其是对于类库项目的作者来说,这其实是非常值得考虑的

2022-03-29 17:48:59 170

原创 在 xUnit 测试方法中共享测试上下文

在使用 xUnit 进行单元测试时,有时候我们需要在不同的测试类中进行一些相同的初始化或清理工作,这些代码称为测试上下文(test context)。根据范围的不同, xUnit 提供了三种共享测试上下文的方式:...

2021-06-16 10:45:00 713

转载 为什么OAuth是授权协议,而不是认证协议?

《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

2020-10-22 18:29:38 842

转载 从IL层面认识await, async

文章目录从 IL 层面认识使用 WebClient 下载挖掘 await async 的IL代码`d__1` 类GetResult() 方法将 IL 代码回写为 C#完整 C# 代码剖析 AsyncTaskMethodBuilder第一次回调 MoveNext第二次回调 MoveNext总结await,async 这玩意的知识点已经被人说的烂的不能再烂了,看似没什么好说的,但我发现有不少文章还是从理论上讲述了这两个语法糖的用法,懂得还是懂,不懂的看似懂了过几天又不懂了,人生如戏全靠记是不行的哈??????

2020-08-25 11:21:30 470

转载 Redis为什么这么快

文章目录面试问题计算机的世界,缓存无处不在Redis为什么这么快?1. IO多路复用技术2. Redis线程模型2.1 I/O多路复用程序、文件事件分派器2.2 事件的处理器2.3 客户端与redis通信过程压力测试答案曾经有人这么告诉我:“在理想状态下,我们的页面跳转需要在瞬间解决,对于页内操作则需要在刹那间解决。另外,超过一弹指的耗时操作要有进度提示,并且可以随时中止或取消,这样才能给用户最好的体验。”那么瞬间、刹那、一弹指具体是多少时间呢?根据《摩诃僧祗律》记载:一刹那者为一念,二十念为一瞬

2020-08-14 15:11:30 1692

转载 文件系统

文章目录前言正文文件系统的基本组成虚拟文件系统文件的使用文件的存储连续空间存放方式非连续空间存放方式链表方式索引方式Unix 文件的实现方式空闲空间管理空闲表法空闲链表法位图法文件系统的结构目录的存储软链接和硬链接文件 I/O缓冲与非缓冲 I/O直接与非直接 I/O阻塞与非阻塞 I/O VS 同步与异步 I/O前言正文文件系统的基本组成文件系统是操作系统中负责管理持久数据的子系统,说简单点,就是负责把用户的文件存到磁盘硬件中,因为即使计算机断电了,磁盘里的数据并不会丢失,所以可以持久化的保存文件。

2020-08-14 14:59:00 409

转载 Redis 延迟问题定位与最佳实践

文章目录使用复杂度高的命令Redis作为内存数据库,拥有非常高的性能,单个实例的 QPS 能够达到 10W 左右。但我们在使用 Redis 时,经常时不时会出现访问延迟很大的情况,如果你不知道 Redis 的内部实现原理,在排查问题时就会一头雾水。很多时候,Redis 出现访问延迟变大,都与我们的使用不当或运维不合理导致的。这篇文章我们就来分析一下 Redis 在使用过程中,经常会遇到的延迟问题以及如何定位和分析。使用复杂度高的命令如果在使用Redis时,发现访问延迟突然增大,如何进行排查?首先

2020-08-14 14:21:56 405

转载 跨域资源共享 CORS

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。本文详细介绍CORS的内部机制。一、简介CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。整个 CORS 通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS 通信与同源的 AJAX 通信没有差别,代码完全一样。浏览器一旦发现

2020-07-08 13:44:37 231

原创 LINQ 延迟查询的原因

延迟查询在运行 LINQ 中的某些扩展方法进行集合的查询时,查询不会立即运行。只有当运行至 foreach 对查询结果进行遍历时,或者对查询结果调用 ToList() 方法等情况时,查询才会真正的运行。我们以 Where() 方法为例进行研究。考察如下代码:var names = new List<string> {"Nino", "Alberto", "Juan", "Mike", "Phil"};var namesWithJ = names.Where(n=>n.StartsW

2020-05-30 18:36:25 367

原创 C#与CLR学习笔记(8)—— 通过反射调用泛型方法

1 调用非泛型方法通过反射创建一个对象,然后调用其方法的一般过程为:加载程序集,并获取类型通过类型,实例化一个类型对象(调用静态方法则不必实例化)根据名称、方法签名、可访问性等约束,获取要调用的方法通过 Invoke 方法,传入实际参数,进行调用。案例:public class ReflectionTest{ // 无参构造函数 public ReflectionTest(){} public void Show(string name, int id)

2020-05-19 23:09:43 1171

原创 C#与CLR学习笔记(7)—— 泛型与泛型约束

文章目录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

2020-05-17 01:15:50 270

转载 IO 模型知多少 (2)

文章目录1. 引言2. Socket 编程基础2. 同步阻塞 IO3. 同步非阻塞 IO4. IO 多路复用5. 验证 I/O 模型5.1 验证同步阻塞I/O发起的系统调用1. 引言之前的一篇介绍 IO 模型的文章 IO 模型知多少(1) 比较偏理论,很多同学反应不是很好理解。这一篇咱们换一个角度,从代码角度来分析一下。2. Socket 编程基础开始之前,我们先来梳理一下,需要提前了解的几个概念:socket: 直译为“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间

2020-05-13 23:27:38 253

转载 IO 模型知多少 (1)

文章目录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是程序员老生常谈的话题了,也是自己一直以来懵懵懂懂的一个话题。比如:何为同步异步?何

2020-05-13 20:08:03 198

转载 struct实例字段的内存布局(Layout)和大小

背景在C/C++中,struct类型中的成员的一旦声明,则实例中成员在内存中的布局 (Layout) 顺序就定下来了,即与成员声明的顺序相同,并且在默认情况下总是按照结构中占用空间最大的成员进行对齐(Align);当然我们也可以通过设置或编码来设置内存对齐的方式。然而在 .net 托管环境中,CLR 提供了更自由的方式来控制 struct 中 Layout:我们可以在定义 struct时,在 struct 上运用 StructLayoutAttribute 特性来控制成员的内存布局。默认情况下,stru

2020-05-08 19:04:05 920 1

转载 C#并发编程之初识并行编程

原文地址:https://mp.weixin.qq.com/s/0Sn_Me6kmcF0GCL7sWCq_g写在前面之前微信公众号里有一位叫sara的朋友建议我写一下Parallel的相关内容,因为手中商城的重构工作量较大,一时之间无法抽出时间。近日,这套系统已有阶段性成果,所以准备写一下Parallel的相关内容,正好也延续之前的C#并发编程系列。Parallel是并行编程的相关内容,而P...

2020-05-08 09:16:55 283

原创 Windows平台的容器

虚拟化技术概述所谓虚拟化,就是在一台计算机上同时运行多个操作系统,即在同一个物理平台上创造出多台不同机器的假象。每个运行在主机上的操作系统称为“虚拟机”。不同的虚拟机之间是互相隔离的,也就是说一个虚拟机的故障不会影响其他虚拟机。今日,虚拟化技术一个重要应用就是云计算。我们从云上获取的一台计算机(IaaS),或者某项服务(PaaS),并不对应着专门的物理资源,而是与其他用户共享物理资源的虚拟机。...

2020-05-02 19:41:01 5875

转载 Program Files(x86) 与 SysWow64

如果用的是 64 位 Windows,你会发现硬盘上有两个名为 Program Files(x86)和 SysWOW64 的新文件夹,它们在 32 位 Windows 上不存在。 它们有什么用呢?什么是WOW6464位的 Windows 并不是简单地把所有东西都编译成 64 位就万事大吉的。关于 64 位的 CPU 应该做成什么样子,Intel 和 AMD 曾有各自的打算。AMD 的回答直接了...

2020-04-11 23:55:54 304

原创 .gitignore 文件用法

Git是跟踪项目中所有文件的好工具,但是,您会希望在项目的整个生命周期中不要跟踪某些文件及其变更。例如:系统文件(i.e. Mac系统的.Ds_Store)应用程序配置文件(i.e. app.config, .env)构建组件(i.e. *.pyc)安装的依赖(i.e. node_modules)个人文件(i.e. todo.txt)应用程序数据和日志(i.e. .log,.sql...

2020-04-11 11:33:03 18389

翻译 无锁编程介绍

原文地址:http://preshing.com/20120612/an-introduction-to-lock-free-programming文章目录无锁编程是什么无锁编程技术原子的 Read-Modify-Write 操作Compare-And-Swap 循环顺序一致性内存保序不同的处理器有不同的内存模型参考文献无锁编程是一项挑战,不仅仅是因为自身的复杂性所致,还与初次探索该课题的困难...

2020-02-11 20:24:38 1257

转载 进击的.NET —— 在云原生时代的蜕变

文章目录默认可执行文件单文件可执行文件程序集链接分层编译ReadyToRun 映像主要版本前滚Docker 和 cgroup 内存限制垃圾回收堆大小减小垃圾回收大型页面支持结语你一定看过这篇文章 《进击的 Java ,云原生时代的蜕变》, 本篇文章的灵感来自于这篇文章。北京时间9.24 就将正式发布 .NET Core 3.0 , 所以写下这篇文章让大家全面认识 .NET Core。.NET...

2020-01-17 21:10:25 366

转载 从CLR GC到CoreCLR GC看.NET Core对云原生的支持

文章目录内存分配概要垃圾回收算法与GC运行机制GC RootGC运行机制垃圾回收时机与模式.NET Core 3.0 中的 GC 优化处理GC堆限制支持 Docker 内存限制支持 DockerCPU 限制参考文献内存分配概要前段时间在园子里看到有人提到了 GC 学习的重要性,很赞同他的观点。充分了解 GC 可以帮助我们更好的认识 .NET 的设计以及为何在云原生开发中 .NET Core 会...

2020-01-17 20:48:43 382

转载 C# 中的闭包

首先来看一个简单的例子。 var list = new Action[5]; for (int i = 0; i < list.Length; i++) { list[i] = () => { Console.WriteLine(i); }; } ...

2019-12-16 22:25:42 905

原创 CLR 处理 Corrupted State Exception

文章目录异常 Exception 到底是个啥Win32 SEH 与 System.Exception 类托管代码与 SEH损坏状态异常(Corrupted State Exceptions, CES)不要捕获 Exception 基类正确的编码参考文献你是否曾经编写过不太正确或者接近正确的代码? 你的代码是否在一切顺利时能正确运行,但是一旦出错就不知道会错在哪里? catch (Exceptio...

2019-12-01 16:30:00 672

转载 .NET 4.0里异常处理的新机制

前几天,有一个朋友问我为什么在.NET里不能捕捉(catch)到一些异常了,而且在调试器里也捕捉不到。研究了一下,是.NET 4.0里新的异常处理机制捣的鬼。在.NET 4.0之后,CLR 将会区别出一些异常(都是SEH异常),将这些异常标识为破坏性异常(Corrupted State Exception)。针对这些异常,CLR 的 catch 块不会捕捉这些异常,即使你用类似下面的代码: ...

2019-12-01 13:23:35 151

转载 深入理解跨域SSO单点登录原理与技术

文章目录1 SSO体系结构1.1 SSO1.2 体系结构1.3 Token(令牌)1.4 同域SSO原理分析token的生成token过期移除认证流程1.5 跨域SSO原理分析分析2 Cookie增删改查2.1 如何读取Cookie?2.2 如何写入Cookie带浏览器?2.3 修改Cookie2.4 删除Cookie3 跨域读写 Cookie#3.1 利用 HTML 的 script 标签跨域写...

2019-11-29 10:37:09 926

转载 一个TCP连接可以发几个HTTP请求?

一道经典的面试题是从 URL 在浏览器被被输入到页面展现的过程中发生了什么,大多数回答都是说请求响应之后 DOM 怎么被构建,被绘制出来。但是你有没有想过,收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢?要搞懂这个问题,我们需要先解决下面五个问题:现代浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完...

2019-11-29 09:05:53 623 2

转载 调用堆栈

原文链接:https://blog.csdn.net/zhuoya_/article/details/80516246本篇来分析函数调用的过程.通过下面一个简单的例子来进入话题:#include<stdio.h>int sum(int a,int b){ int tmp=0; tmp=a+b; return tmp;} int main(){...

2019-11-28 23:12:03 266

转载 使用System.Text.Decoder类来处理“流文本”

何为“流文本”? 他就像“流媒体”,众所周知“流媒体”可以边传送数据边将已接收的不完整的数据预览给接收方。“流文本”亦如此。数据传输中的数据并不会按期望以一个整体直接被接收的,尤其是数据量比较大的情况(或者接收方接收速度有限的情况),都会使数据被分割成一块一块的形式传给接收方的。这个数据块的边界是没有任何规律的,因此所谓“流xx”模式实现的一大难点就是怎样把接收到的数据碎片正确分析并给用户提供即...

2019-09-21 19:44:58 659

转载 字符编码(Encoding)和字节顺序标记(BOM)

什么是字符顺序标记(BOM)计算机内部数据存储都是二进制的,只有知道一段数据的二进制存储格式,这段数据才有意义。所谓的文本文件其实就是用一种特定的字符编码来将二进制源数据转换成文字。多数文本编辑器都可以编辑不同编码的文本文件,那么文本编辑器是怎样通过源二进制数据来得知这段数据的文本编码呢?答案就是靠字符顺序标记(Byte Order Mark),在文章里面我们就统一用英文简写BOM指这一名词。...

2019-09-21 19:37:19 1210

转载 一文搞懂 API 网关

Content前言API GatewayAPI注册协议转换服务发现服务调用优雅下线性能缓存限流稳定性熔断降级日志隔离网关管控平台其他总结前言假设你正在开发一个电商网站,那么这里会涉及到很多后端的微服务,比如会员、商品、推荐服务等等。那么这里就会遇到一个问题,APP/Browser 怎么去访问这些后端的服务?如果业务比较简单的话,可以给每个业务都分配一个独立的域名(https://servi...

2019-08-26 19:21:57 8260 3

原创 C#与CLR学习笔记(6)—— 轻松理解协变与逆变

Contents前言本质与原因简单本质产生原因广义上的协变与逆变参考文献前言协变(covariance)和 逆变(contravariance)是我们在学习泛型委托和泛型接口中遇到的比较抽象的一组概念。它们的使用方法,其实是非常简单的,即:用 in 标记的逆变量只能出现在泛型接口的方法的输入参数中,或者作为泛型委托的输入参数;用 out 标记的协变量只能作为泛型接口方法或者泛型委托的输出...

2019-08-25 14:15:39 476

原创 C#与CLR学习笔记(5)—— 值传递与引用传递

Contents1. 值传递与引用传递2. 使用 ref 传递值类型3. 使用 ref 传递引用类型4. ref 与 out 的区别上一篇文章介绍了值类型和引用类型使用上的区别。这里,我们来研究一下值类型和引用类型作为参数进行传递时不同的表现,以及原因。1. 值传递与引用传递CLR 对方法的参数默认是只进行值传递的,不管参数是值类型的参数还是类类型(即引用类型)的参数。所谓值传递,就是将参数...

2019-08-14 21:37:58 950

转载 C# 8.0 中的模式匹配

Contents模式匹配简介C# 8.0 中模式匹配的演变表达模式结语多年来,我们在 C# 中实现了许多功能,不仅改善了代码的性能,更重要的是还提高了代码的可读性。鉴于软件行业的快速发展,语言当然需要与其用户群同步发展。广泛用于 Haskell、Swift 或 Kotlin 等各种编程语言的某些功能,有时也会用于 C#。其中一个功能就是模式匹配,这一概念已经存在很长时间,是 .NET 领域中的许...

2019-08-14 11:04:03 1171

转载 ASP.NET Core 中的管道机制

本文转载自https://www.cnblogs.com/hippieZhou/p/11205573.html。前言在开始之前,我们需要明确的一个概念是,在 Web 程序中,用户的每次请求流程都是线性的,放在 ASP.NET Core 程序中,都会对应一个请求管道(request pipeline),在这个请求管道中,我们可以动态配置各种业务逻辑对应的 中间件(middleware),从而达到...

2019-08-14 10:28:56 2479

原创 C#与CLR学习笔记(4)—— 值类型与引用类型

目录值类型与引用类型的关系值类型与引用类型的使用区别装箱与拆箱造成装箱的其他情况参考文献值类型与引用类型的关系在CLR(或者说CTS)中,引用类型包括以下几种:类类型(Class) 接口类型(Interface) 委托类型(Delegate)所有的引用类型都直接或间接地继承自 System.Object 类。我们自己定义的类,如果没有明确基类,也是直接继承自 ...

2019-07-24 21:03:52 228

转载 栈帧

部分来源:https://www.jianshu.com/p/b666213cdd8a什么是栈?在数据结构中, 栈是限定仅在表尾进行插入或删除操作的线性表。栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。“栈” 一般是指一种数据结构,而 “堆栈” 是指内存中的存储结构。在计算机系统中,栈也可以称...

2019-07-11 23:48:06 484

C# 7.1 and .NET Core 2.0 - Modern Cross-Platform Development - 3rd edition

C# 7.1 and .NET Core 2.0 - Modern Cross-Platform Development - 第三版。

2019-05-07

C# and .NET Core Test-Driven Development

C# and .NET Core Test-Driven Development Dive into TDD to create flexible, maintainable, and production-ready .NET Core applications.

2019-05-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除