自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LIncoLN的博客

不管怎样,要坚持下来!

  • 博客(14)
  • 资源 (2)
  • 收藏
  • 关注

原创 __buildin_expect的作用

一般来讲,cpu是会做指令预读取的,执行概率很高的分支指令指令会被预先读入,从而提高执行效率。如果此时发生了跳转,那么预读取的指令和数据就会失效,从而降低了执行效率。大部分的情况下,cpu不知道哪个分支的执行概率更高,这时候可以由程序员指定。__builtin_expect(x) 可以告诉 编译器 x为真 或者 为假的概率很高,从而让编译器在生成指令的时候,概率很高的分支指令不需要跳转,而概率...

2018-12-19 10:42:07 452

原创 【redis】ziplist详细解析

本文根据5.0.2版本的redis源码详细解析ziplist数据结构。1 创建一个ziplistziplist的内存结构如上图。一个uint32_t的totalsize,保存当前ziplist所占用内存总量 接着一个uint32_t的offset,指向最后一个元素的位置,ziplist中的元素称作zlentry,起始时,offset指向ZIP_END 之后是uint16_...

2018-12-11 16:59:46 3307 1

原创 【redis】sds数据结构

本文从源码介绍sds的数据结构。sds是redis中对传统字符串的封装,在其上加入了长度等信息。用于redis中key等字符串类型数据的存储。1 sds的数据结构typedef char *sds;/* Note: sdshdr5 is never used, we just access the flags byte directly. * However is here t...

2018-12-05 13:48:07 1343

原创 【leveldb】memtable内存数据库的实现

本文介绍leveldb中内存库memtable的实现。 memtable是leveldb中的内存库, 写入的数据都会先写到memtable中,然后通过合库的方式落到磁盘。检索时也是先检索内存库memtable。1 memtable的数据结构class MemTable { public: // MemTables are reference counted. The in...

2018-11-29 10:52:41 829 1

原创 【leveldb】arena内存结构

本文介绍arena内存管理的设计和实现。arena是leveldb中一个非常简单的内存池,以下做详细介绍。1 数据结构arena数据结构如下,其中,blocks_保存着所有创建的block;blocks_memory_保存所有block申请的总空间;alloc_ptr_和alloc_bytes_remaining_分别是当前block的内存分配起始地址 和 可用空间大小。 //...

2018-11-22 15:59:00 1221

原创 【笔试题】盛大的一道笔试题

本文给出一道盛大的笔试题及其解法。题目如下,图片没有拍到最后的问题,但是根据题目推断,是要求 RST的值: 解决方法如下:    

2018-11-13 09:39:30 724

原创 [nginx] nginx内存池ngx_pool_t的介绍

本文详细介绍nginx中内存池的设计和实现。 nginx pool 由 小内存拉链、大内存拉链、回调函数拉链组成。创建的第一个ngx_pool_s头部,会作为整个pool的head,保存一些拉链信息。1 创建一个ngx_pool:struct ngx_pool_s { ngx_pool_data_t d; size_t m...

2018-11-12 15:56:52 598

原创 lex && yacc

lex:    词法分析器,和c是强耦合    简单地讲,lex做的是一个字符串匹配的工作,它从待匹配的文本字符串中寻找预设的表达式,如果寻找到一个特定的表达式,则执行相应的动作    支持的表达式类似正则表达式        使用方式:    1 按照lex的规则,指定表达式及其相应的动作    2 根据上一步配置的表达式和动作,生成扫描器的c代码

2017-07-05 16:20:01 327

原创 【数学基础】概率统计

1 条件概率A,B是两个事件,p(A)为事件A发生的概率,p(B)为事件B发生的概率,p(AB)为事件AB同时发生的概率,p(A|B)为事件A在事件B已经发生的情况下发生的概率1) p(A|B) = p(AB) / p(B) ; 条件概率 等于 联合概率 除以 先决条件的边缘概率2) p(AB)  = p(B) * p(A|B); 以此递推,有以下结论:p(A1A2A3...An)

2017-07-03 14:56:45 899

原创 【tf-idf】理解

tf:衡量词在文档中的重要性。表示词在文档中出现的频率,即词频    tf=词在文档中出现的次数/文档中所有词的个数或者    tf=词在文档中出现的次数/文档中出现最多的词的次数idf:衡量词的普遍性。表示词在文档集合中出现的频率,即逆文档频率    idf=log(文档集合总个数/包含词的文档个数+1)或者    idf=log(文档集合所有

2017-06-29 10:50:51 331

转载 gperftools使用说明

原文章:使用gperftool + libuwind + graphviz来分析程序性能为了了解程序的执行时间以及各个函数之间的调用关系,可以通过Google的gperftool来统计函数之间的关系以及时间信息。通过分析每个函数的时间信息,就可以看程序的关键消耗点在什么地方。1. 安装gperftools:http://code.google.com/p/gperftools/do

2017-06-05 17:40:36 2004

原创 libco 协程的理解

学习libco,做了一些代码解读,记录在此1 线程上下文线程上下文实际是一个协程栈,维护协程之间的执行序列同一个线程中的所有协程,共用一个线程上下文线程上下文在 第一次被使用到的时候进行创建// 协程公共的 线程上下文struct stCoRoutineEnv_t{ stCoRoutine_t *pCallStack[ 128 ]; // 协程栈,保存同

2017-05-26 15:56:43 1356

原创 libco hook栈内存的原理

  看libco,要搞明白怎么hook栈内存的hook栈内存就是要 让函数中使用的临时变量 都 在指定的内存 上进行分配首先看了一些关于函数栈的资料 X86汇编调用框架浅析与CFI简介,对函数压栈过程有了一些认识。 结合libco的代码,对hook栈内存有了一些自己的理解在coctx_swap做了一些注释,如下: //-------------// 64 b...

2017-05-25 15:45:13 724

原创 libco和tornado、协程和异步的一些理解

看了些libco的实现,感觉和tornado差不多,基本的思想还是在线程被阻塞的时候能够去做其他的事情,此时还是用epoll来调度挂起和恢复从这点看协程依然是基于异步的,且是纯异步的,只是协程框架提供了更好的语义表达,代码书写更方便了,因此,协程的使用也是用在有一定的IO的服务中,纯计算的服务用起来并不合适。这样来看,协程和线程的使用场景不同,说协程是用户态线程容易误导人libco和tor

2017-05-09 15:33:44 1347

统计学习方法--李航.pdf

李航的 统计学习方法,经典书籍,详细介绍经典机器学习算法。带书签,质量清晰

2019-06-15

百面机器学习 算法工程师带你去面试.pdf

非常通俗的讲解了机器学习的相关知识,包括特征工程、各种经典算法、降维和优化算法、神经网络等

2019-02-01

空空如也

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

TA关注的人

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