摘要:
https: HTTPS是http安全版本的实现,在http与tcp之间加了一层ssl/tls安全传输协议 为了防止请求被监听、篡改、冒充,在tls实现过程中引入了数字证书机制,数字证书由第三方权威机构提供保证。 数字证书原理是采用非对称加密生成一对公钥、私钥,服务端保存私钥,下发公钥给客户端,由于 阅读全文
摘要:
RWMutex:是基于Mutex实现的读写互斥锁,一个goroutine可以持有多个读锁或者一个写锁,同一时刻只能持有读锁或者写锁 数据结构设计: 按顺序这里应该介绍释放写锁的代码了,但是由于获取写锁中有很重要的几个逻辑变量,跟获取读锁时强依赖,所以在这里先说说获取读锁的逻辑 总结: 读写互斥锁的实 阅读全文
摘要:
互斥锁:没有读锁写锁之分,同一时刻,只能有一个gorutine获取一把锁 数据结构设计: 关键函数设计: lock函数: 再来看看unlock函数,终于可以来点轻松的了 总结: 一、互斥效果实现方式 1. 当前goroutine进入自旋锁逻辑等待中 2. 挂起当前goroutine等待其他gorou 阅读全文
摘要:
socket:tcp/udp、ip构成了网络通信的基石,tcp/ip是面向连接的通信协议 要求建立连接时进行3次握手确保连接已被建立,关闭连接时需要4次通信来保证客户端和,服务端都已经关闭 在通信过程中还有保证数据不丢失,在连接不畅通时还需要进行超时重试等等 所以socket就是封装了这一套基于tc 阅读全文
摘要:
golang中使用的http协议版本是RFC2616 对于一个http服务来讲,需要兼容新旧版本的http协议,http1.0/2.0,以及https的支持,http的通信是建立在tcp连接基础上的通信。 现在协议有了,连接通信也有了,还剩一个问题就是如何处理client request请求,这个问 阅读全文
摘要:
common-pool: 对于一些对象的频繁创建会带来很大的系统开销,并且需要对对象数量进行控制来降低资源消耗,比如数据库连接,线程等 common-pool采用了缓存思想来解决这个问题,预先把一些对象资源创建好并统一保存起来,也就是保存到逻辑上的对象池中 等到需要对象时从池中直接获取,不需要时归还 阅读全文