谈谈 .NET 对象生命周期
https://www.cnblogs.com/MaMaNongNong/p/11945161.html
不用程序员操心的堆 — 托管堆
程序在计算机上跑着,就难免会占用内存资源来存储在程序运行过程中的数据,我们按照内存资源的存取方式将内存划分为堆内存和栈内存。
栈内存,通常使用的场景是:对存取速度要求较高且数据量不大。
典型的栈内存使用的例子就是函数栈,每一个函数被调用时都会被分配一块内存,这块内存被称为栈内存,以先进后出的方式存取数据,在函数执行过程中不断往函数栈中压入(PUSH)数据(值类型数据:int、float、对象的引用…),函数执行完后又将函数栈中的数据逐个弹出(POP),由于是以操作栈的形式来存取,所以访问速度快。
堆内存,从字面意思上理解就好像是仓库里面可以存一堆破烂,你若是需要存点什么东西就尽管往里面一扔,仓库里有的是空间。事实确实也是如此,堆内存中可以存放大规格的数据(比如对象资源),这些数据是不适合存放在栈中的,因为栈空间的容量有限,这就是堆内存相对于栈内存的好处:容量大。但是它的缺点也是显而易见的,那就是存取堆内存的数据相较于存取栈内存 ...
RESTful 架构基础
https://dzone.com/refcardz/rest-foundations-restful
REST(Representational State Transfer)架构风格是一种世界观,把信息提升为架构中的一等公民。通过 REST 可以实现系统的高性能、可伸缩、通用性、简单性、可修改性和可扩展等特性。这篇文章解释了主要的 HTTP 操作,对 HTTP 响应码进行描述,并列举相关开发库和框架。此外,本文还提供了额外的资源,对每个主题进行了更深入的探讨。
简介
REST 架构风格不是一种可以购买的技术,也不是一个可以添加到软件开发项目中的开发库。首先也是最重要的,REST 是一种世界观,把将信息提升为构建架构中的一等公民。
Roy Fielding 的博士论文“架构风格和基于网络的软件架构设计”介绍和整理了“RESTful”系统的思想和相关术语。这是一篇学术论文,虽然使用正式语言,但是仍然易于理解并且提供了实践基础。
总结一下,RESTful 通过体系结构的特定选择能从部署的系统中获得理想特性。尽管这种风格定义的约束细节并没有为所有场合设计,但是的确可以 ...
HTTPS 原理分析——带着疑问层层深入
https://blog.leapmie.com/archives/418/
HTTPS
随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议。大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL 、非对称加密、 CA证书等,但对于以下灵魂三拷问可能就答不上了:
为什么用了 HTTPS 就是安全的?
HTTPS 的底层原理如何实现?
用了 HTTPS 就一定安全吗?
本文将层层深入,从原理上把 HTTPS 的安全性讲透。
HTTPS 的实现原理
大家可能都听说过 HTTPS 协议之所以是安全的是因为 HTTPS 协议会对传输的数据进行加密,而加密过程是使用了非对称加密实现。但其实,HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段。
HTTPS的整体过程分为证书验证和数据传输阶段,具体的交互过程如下:
① 证书验证阶段
浏览器发起 HTTPS 请求
服务端返回 HTTPS 证书
客户端验证证书是否合法,如果不合法则提示告警
② 数据传输阶段
当证书验证合法 ...
编程小知识
.NET
.NET Core 依赖注入的三大生命周期
https://mp.weixin.qq.com/s/PUdolCF8I9GCXlt1DI_BMw
三大生命周期:
多例模式 Transient:每解析一次接口,就会实例化一个对象。每次对象都是唯一且不同的。每次解析请求,实例的都是一个全新的对象。
Scoped 英文释为范围,区域:第一次请求,它会实例出一个对象 IA a = new A(); 并缓存下来,接下来的每一次请求,会判断是否是同一个 HttpContext,如若是同一个,那么它仍然返回这个 a 对象。
这里解释下,什么叫一次请求。同一次请求,它的 HttpContext 肯定是同一个,所以返回的都是 a。这里 Scoped 其实就是一次 http 请求的作用域,同一次请求,可能多次请求其他的服务,也可能多次请求同一个控制器,只是这个人进了商场买东西,不管做什么,还是这个人。但是它一旦出了这个商场(结束了本次 http 请求)再次进入商场,就是新的请求了,就需要重新过安检(虽然还是那个人)。
单例模式 Singleton:只要服务器不嗝屁,不管解析多少次接口, ...
通俗易懂,什么是.NET? 什么是.NET Framework? 什么是.NET Core?
https://www.cnblogs.com/1996V/p/9037603.html
什么是.NET?什么是.NET Framework?本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先从类型系统开始讲起,我将通过跨语言操作这个例子来逐渐引入一系列.NET的相关概念,这主要包括:CLS、CTS(CLI)、FCL、Windows下CLR的相关核心组成、Windows下托管程序运行概念、什么是.NET Framework,.NET Core,.NET Standard及一些VS编译器相关杂项和相关阅读链接。完整的从上读到下则你可以理解个大概的.NET体系。
目录
.NET和C#是什么关系
跨语言和跨平台是什么
什么是跨语言互操作,什么是CLS
CLS异常
什么是CTS?
什么是类库?
什么是基础类库BCL?
什么是框架类库FCL?
什么是基元类型?
System.Object的意义
计算机是如何运行程序的?
什么是CPU?
什么是高级编程语言?
什么是托管代码,托管语言,托管模块?
非托管的异常
什么是CLR,.NET虚拟机?
什么是CLR ...
在浏览器输入 URL 回车之后发生了什么
https://4ark.me/post/b6c7c0a2.html
前言
这个问题已经是老生常谈了,更是经常被作为面试的压轴题出现,网上也有很多文章,但最近闲的无聊,然后就自己做了一篇笔记,感觉比之前理解更透彻了。
这篇笔记是我这两天看了数十篇文章总结出来的,所以相对全面一点,但由于我是做前端的,所以会比较重点分析浏览器渲染页面那一部分,至于其他部分我会罗列出关键词,感兴趣的可以自行查阅
注意:本文的步骤是建立在,请求的是一个简单的 HTTP 请求,没有 HTTPS、HTTP2、最简单的 DNS、没有代理、并且服务器没有任何问题的基础上,尽管这是不切实际的。
大致流程
URL 解析
DNS 查询
TCP 连接
处理请求
接受响应
渲染页面
一、URL 解析
地址解析:
首先判断你输入的是一个合法的 URL 还是一个待搜索的关键词,并且根据你输入的内容进行自动完成、字符编码等操作。
HSTS
由于安全隐患,会使用 HSTS 强制客户端使用 HTTPS 访问页面。详见:你所不知道的 HSTS。
其他操作
浏览器还会进行一些额外的操作,比如安全检查、访问限 ...
设计原则
简介:https://www.cnblogs.com/zhili/p/DesignPatternSummery.html
第一篇:https://www.cnblogs.com/shoshana-kong/p/8847893.html
第二篇:https://www.cnblogs.com/www-zsl187-com/p/8821885.html
1、开放 - 封闭原则 ( Open-Closed Principle, OCP )
通俗:对扩展开放,对修改关闭
开闭原则(Open-Closed Principle, OCP)强调的是:一个软件实体(指的类、函数、模块等)应该对扩展开放,对修改关闭。即每次发生变化时,要通过添加新的代码来增强现有类型的行为,而不是修改原有的代码。
符合开闭原则的最好方式是提供一个固有的接口,然后让所有可能发生变化的类实现该接口,让固定的接口与相关对象进行交互。
2、单一职责原则 ( Single Responsibility Principle )
通俗:一个类只做一件事
就一个类而言,应该只有一个引起它变化的原因。如果一个类承担 ...
设计模式
简介:https://www.cnblogs.com/www-zsl187-com/p/8834734.html
正文:https://www.cnblogs.com/zhili/p/DesignPatternSummery.html
一、创建型模式
1、抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类.
2、生成器模式(Builder pattern): 使用生成器模式封装一个产品的构造过程, 并允许按步骤构造. 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示.
3、工厂模式(factory method pattern): 定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个. 工厂方法让类把实例化推迟到子类.
4、原型模式(prototype pattern): 当创建给定类的实例过程很昂贵或很复杂时, 就使用原型模式.
5、单例模式(Singleton pattern): 确保一个类只有一个实例, 并提供全局访问点.
6、多例模式(Multition p ...
Hexo 下的 Markdown 语法 和 MathJax 下的 LaTeX 语法
Markdown:
https://www.ofind.cn/blog/HEXO/HEXO下的Markdown语法(GFM)写博客.html
LaTeX:
https://www.zybuluo.com/knight/note/96093
https://www.cnblogs.com/linxd/p/4955530.html
https://blog.csdn.net/ajacker/article/details/80301378
https://github.com/CTeX-org/lshort-zh-cn
https://www.mathjax.org/#demo
Markdown
语法简明概述
分段 两个回车
换行 两个空格+回车
标题 #~######,#的个数表示几级标题,即表示一级标题到六级标题
强调 **粗体**,__粗体__,*斜体*,_斜体_,***加粗斜体***,___加粗斜体___,~~删除线~~
引用 > 注意后面紧跟个空格,>的个数表示几级引用
表格 -和|分割行和列,:控制对齐方式。表格内换行:<br>
代码块 使用` ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick Start
Create a new post
1$ hexo new "My New Post"
More info: Writing
Run server
1$ hexo server
More info: Server
Generate static files
1$ hexo generate
More info: Generating
Deploy to remote sites
1$ hexo deploy
More info: Deployment