自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Lyn&Xx

勤奋小李(•̀ᴗ•́)و ̑̑

  • 博客(16)
  • 收藏
  • 关注

原创 LevelDB源码阅读-key

levelDB中的key前言在levelDB中有五种不同的key,在正式分析memtable之前我们先介绍一下这5中不同的keyuser_keyParsedInternalKeyInternalKeyLookupKeyMemtableKeyuser_key(用户key)user_key是Slice结构体来表示的,其内部就是简单封装了字符串和它的size。顾名思义,这个key...

2018-12-24 10:46:04 684

转载 LevelDB源码阅读-coding

LevelDB源码阅读-coding原文:https://blog.csdn.net/caoshangpa/article/details/78815940LevelDB默认使用的是小端字节序存储,低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。编码分为变长的EncodeVarint和固定大小的EncodeFixed两种,每种又分32位和64位。一.EncodeFixedvo...

2018-12-19 17:47:59 301

原创 levelDB源码阅读-内存池arena

levelDB源码阅读-内存池arena前言直接使用系统调用分配内存是非常不明智的频繁调用malloc/new是非常耗时的,且系统需要根据一些算法在内存空闲块表中查找可能会产生大量的内存碎片如果使用不细心也很容易造成内存泄漏采用内存池,预先申请一块比较大的空间供申请,可以根据程序的实际需要指定申请的规则,并且对这些内存资源统一管理。使用内存池的好处申请内存的时间会更快,直接在...

2018-12-18 16:44:29 210

原创 levelDB源码阅读-skiplist跳表下

levelDB中的skiplist跳表 下前言在跳表 上 中介绍了跳表的基本结构,接下来将要介绍跳表的迭代器和其内部实现的方法。Iterator -跳表的迭代器跳表的迭代器实现非常简单,调用了跳表内部的一些实现方法。 // Iteration over the contents of a skip list class Iterator { public: // In...

2018-12-17 11:15:29 310

原创 levelDB源码阅读-skiplist跳表 上

levelDB中的skiplist跳表 上前言在之前的博客中已经简要介绍了跳表的原理,接下来将介绍跳表在levelDB中的实现。本小节主要讲一下跳表和其Node的实现结构,关于具体的方法将在下一节中讲到。代码位置:leveldb-master/db/skiplist.h深入源码skiplist结构template<typename Key, class Comparator&g...

2018-12-17 10:22:45 369

原创 SkipList 跳表的原理

SkipList 跳表的原理前言在各类数据结构中,实现的方式无非两种,数组/链表,跳表是一种基于链表改进的数据结构,能够实现快速查找;levelDB中便用到了它。跳表是平衡树的一种替代的数据结构,但是和红黑树不同的是,跳表对于树的平衡的实现是基于一种随机化的算法也就是说跳表的插入和删除工作是比较简单的。接下来我们将了解跳表的实现原理。跳表的结构以下是一个普通的链表,假设我们需要访问...

2018-12-16 14:41:08 599

转载 levelDB的LSM文件树

前言下面是一篇转自简书的文章,介绍了leveldb所使用的LSM算法。作者:散入风中链接:https://www.jianshu.com/p/d578495f8557來源:简书LSM文件树是基于Bigtable思想用于levelDB数据库(google两位重量级架构,Jeff Dean和Sanjay Ghemawat所发起的开源数据库)的一个存储结构,在这里做一个简单的理解。LSM文件...

2018-12-15 19:15:38 604

原创 http请求报文和响应报文

http请求报文和响应报文前言http协议是一个应用层协议,其报文分为请求报文和响应报文当客户端请求一个网页时,会先通过http协议将请求的内容封装在http请求报文之中,服务器收到该请求报文后根据协议规范进行报文解析,然后向客户端返回响应报文。http报文结构为:起始行对报文进行描述头部向报文中添加了一些附加信息,是一个名/只的列表,头部和协议配合工作,共同决定了客户端和服务器...

2018-12-11 13:42:30 54454 1

原创 TCP拥塞控制算法(Tahoe/Reno/Newreno)

TCP拥塞控制算法(Tahoe/Reno/Newreno)前言TCP(Transmission Control Protocol),传输控制协议,是目前__Internet__上最重要的一个通信协议之一,其作用是对数据的传输进行一定的控制;而拥塞控制算法又是TCP中最重要的一个算法之一,接下来我们先来了解一下基本概念,再来详细介绍3个协议中的拥塞控制算法以及他们之间的区别。前期知识储备及名词...

2018-12-10 21:23:43 23085 6

原创 epoll的两种工作模式LT ET

epoll的两种工作模式LT ET前言之前已经介绍过了epoll的工作机制,以及它和select,poll之间的区别,传送门:https://blog.csdn.net/lyn_00/article/details/84839673接下来我们详细介绍一下它的两种工作模式。LT(level triggered)LT模式,也叫做水平触发模式。在该模式下,当有事件发生并调用epoll_wait...

2018-12-10 17:31:08 2540

原创 select、poll、epoll之间的区别

select、poll、epoll之间的区别前言在之前的博客中介绍了五种I/O模型(阻塞,非阻塞,多路复用,信号,异步)。https://blog.csdn.net/lyn_00/article/details/84780288select、poll和epoll是三种实现I/O的机制,本质上他们都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的。下...

2018-12-05 17:09:35 720

原创 几种常见进程间通信(IPC)方式之信号

几种常见进程间通信(IPC)方式-信号前言进程间通信是指在不同进程之间传播或交换信息,在Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间,进程之间不能相互访问。必须通过内核才能进行数据交换。如图:常见的通信方式有以下几种:管道pipe有名管道FIFO消息队列MessageQueue共享存储信号量Semaphore信号Signal套接字Socket...

2018-12-04 17:23:05 2856

原创 几种常见进程间通信(IPC)方式之共享存储

几种常见进程间通信(IPC)方式-共享存储前言进程间通信是指在不同进程之间传播或交换信息,在Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间,进程之间不能相互访问。必须通过内核才能进行数据交换。如图:常见的通信方式有以下几种:管道pipe有名管道FIFO消息队列MessageQueue共享存储信号量Semaphore信号Signal套接字Socket...

2018-12-04 15:30:25 32274 1

原创 五种I/O模型

五种I/O模型引入我们知道,为了操作系统安全性等考虑,进程是无法直接操作I/O设备的,必须通过系统调用请求内核协助完成I/O操作。如图I/O操作中的阻塞、非阻塞、同步、异步阻塞:阻塞就是调用一个函数,这个调用没有得到结果之前,执行这个函数的线程会被挂起。非阻塞:是指一个函数不能立刻得到结果,这个函数不会阻塞该线程而立即返回。同步:这个词的可能会造成一些误解,同步实际上是协同步调,...

2018-12-03 21:50:52 356

原创 几种常见进程间通信(IPC)方式之有名管道FIFO

几种常见进程间通信(IPC)方式-有名管道FIFO前言进程间通信是指在不同进程之间传播或交换信息,在Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间,进程之间不能相互访问。必须通过内核才能进行数据交换。如图:常见的通信方式有以下几种:管道pipe有名管道FIFO消息队列MessageQueue共享存储信号量Semaphore信号Signal套接字So...

2018-12-03 19:00:22 578

原创 几种常见进程间通信(IPC)方式之管道pipe

几种常见进程间通信(IPC)方式-管道pipe前言进程间通信是指在不同进程之间传播或交换信息,在Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间,进程之间不能相互访问。必须通过内核才能进行数据交换。如图:常见的通信方式有以下几种:管道pipe有名管道FIFO消息队列MessageQueue共享存储信号量Semaphore信号Signal套接字Sock...

2018-12-03 16:48:53 3606 3

空空如也

空空如也

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

TA关注的人

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