摘要:
项目开发过程中经常使用了基于libuv库封装的库接口来实现异步处理,一直没仔细研究过这些接口的内部如何实现,因此也就没有掌握它的设计思想。今天花了点时间研究了其事件循环内部的一些过程,总算有了一些理解,理解还不够深刻,先记录下来: 1、循环流程 2、它的整体结构基于事件循环,简单的说就是外部的接口( 阅读全文
摘要:
看到一篇不错的描述红黑树的文章,转载过来~ 定义 红黑树的主要是像是对2-3查找树进行编码,尤其是对2-3查找树中的3-nodes节点添加额外的信息。红黑树中将节点之间的链接分为两种不同类型,红色链接,他用来链接两个2-nodes节点来表示一个3-nodes节点。黑色链接用来链接普通的2-3节点。特 阅读全文
摘要:
TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。一、滑动窗口协议 所谓滑动窗口协议,自己理解有两点:1. “窗口”对应的是一段可以被发送者发送的字节序列,其连续的范围称之为“窗口”;2. “滑动”则是指这段“允许发送的范 阅读全文
摘要:
unitedstack有云 :https://www.ustack.com/blog/ceph_infra/ 阅读全文
摘要:
1.tcp断开连接时为什么要有timewait状态 2.画出tcp三次握手四次挥手状态切换图 3.libuv事件循环接口内部都是怎么实现的?libuv利用了什么机制? 4.协程与线程的区别是什么?为什么要有协程?如何用C实现协程? 5.nosql相比较关系型数据库有什么优点 6.分析下nginx源码 阅读全文
摘要:
我们都知道Go语言是原生支持语言级并发的,这个并发的最小逻辑单元就是goroutine。goroutine就是Go语言提供的一种用户态线程,当然这种用户态线程是跑在内核级线程之上的。当我们创建了很多的goroutine,并且它们都是跑在同一个内核线程之上的时候,就需要一个调度器来维护这些gorout 阅读全文
摘要:
DHCP共有八种报文,分别为DHCP Discover、DHCP Offer、DHCP Request、DHCP ACK、DHCP NAK、DHCP Release、DHCP Decline、DHCP Inform。各报文类型功能如下所述: DHCP Discover DHCP客户端请求地址时,并不 阅读全文
摘要:
Libevent,libev,libuv三者的区别所在? libevent提供了全套解决方案(事件库,非阻塞IO库,http库,DNS客户端),然而libevent使用全局变量,导致非线程安全。它的watcher结构也过大,把I/O、计时器、信号句柄整合在一起。而且(作者认为)libevent的附加 阅读全文
摘要:
一、Protobuf 的优点 Protobuf 有如 XML,不过它更小、更快、也更简单。它以高效的二进制方式存储,比 XML 小 3 到 10 倍,快 20 到 100 倍。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构。 阅读全文
摘要:
1、概念剖析 相信很多从事linux后台开发工作的都接触过同步&异步、阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞、异步就是非阻塞,下面我们先剖析下这几个概念分别是什么含义。 同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做 阅读全文