HTTP 2.0 背景 HTTP 1.1 协议繁琐,没有软件实现了协议中提及的全部细节 未充分利用 TCP 性能,HTTP客户端和浏览器就要找寻其它方法来解决页面加载时间过多的问题。 延迟问题 HTTP 1.1 解决方案 - HTTP Pipelining 技术,但也会造成HTTP头阻塞 概念流:stream存在于 TCP 连接中的一个虚拟连接通道 消息:message它是由数据帧构成。 帧:data fra 2023-08-10 概念
字符编码 本文主要说明三种编码: ASCII、GB、Unicode ASCII ASCII 是为了表示拉丁字母的一套电脑编码系统 使用的8位二进制表示字符,最多能表示256个字符,但是至今只定义了128个字符,其中33个不做显示 以下是95个用二进制表示的拉丁字符 GB类编码GB用来表示中文,常用的可以分为三种,GB2312,GBK,GB18030,代表着中文编码的演进过程。 GB2312 2个字节, 2023-08-10 概念
锁的基本概念 锁可以分为三类,乐观锁,悲观锁以及死锁 乐观锁 核心:先修改,最后提交时再上锁 以我们平时使用的在线文档为例,当多人同时操作一个文档时,任何人可以进行增删改操作,但这个时候并不会直接提交, 而是当最后保存的时,才会去校验是否存在冲突的情况,最大化提高了多人同时修改文档的效率。 悲观锁互斥锁/排他锁简单来说就是同一时间只允许一个线程访问该对象 读写锁/共享锁读写锁同一时间内 2023-07-08 概念
GMP调度模型 作为一名优秀Golang开发者来说,了解Goroutine的调度机制是必不可少的。 Goroutine的由来我们都线程的创建,销毁以及切换,都是由操作系统来完成的,而且成本很大,而颗粒度更小的协程,创建仅需要非常小的内存,一个线程可以创建上万个协程,并且整个生命周期,都由用户自己来掌控, 大大提升了性能以及灵活性。 GMP模型的核心思想 重用线程 限制同时运行的线程数尽可能等于CPU的核心数目, 2022-08-16 Golang
Golang GC原理 Golang 从诞生之处到现在对GC做了诸多改进,目前用的GC算法为三色标记算法。 基础知识 在说三色标记算法之前,必须要了解一些基本的概念,否则无法真正理解Golang的GC算法 通常,一个垃圾回收器的执行过程被分为两个部分。 赋值器:程序中的代码,对于垃圾回收器而言,关注的对象之间的引用,这些相互之间的引用,就构成了一张有向图,操作对象,也就是操作对象之间的引用关系。 回收器:负责垃圾回 2021-08-16 Golang