你好,2017

2017年1月1日 4 条评论 978次阅读    

2016,今年什么事都没干,太失败了,谨以此记录这一年荒废的时光,祭奠这即将逝去的青春。

也许是因为太安逸了,没有危机感,然而危机其实每天都在逼近,只是发现自己是只井底之蛙,被煮的忘记了来时的方向。

2017如果还这样,就真的废了。

分类: 生活杂感 标签:

最近的一点感慨

2016年11月22日 评论 911次阅读    

正直,比什么都重要。

最容易出bug的,不是代码,而是人。人与人打交道,有利可图的各种灰色case。

正义,最终会战胜邪恶。

分类: C/C++ 标签:

阻止一个产品往前的,往往是我们自己的固守和习以为常

2016年5月22日 评论 1440次阅读    

一个app做久了,自己人可能都习以为常了,认为xxx设计这样就是最好的了,当初讨论了很久云云,没有再优化的空间了。

比如社交,影响一个用户最主要的: 阅读全文...

分类: 产品 标签:

你好,2016

2016年1月1日 5 条评论 1805次阅读    

一不小心16年了,26岁多了,很多事情都要来了。
希望新的一年自己能依旧保持这份不拘的性格,不过稳定的生活,能走的更远,飞的更高,看的更广;
别忘了来时的方向。

分类: 生活杂感 标签:

Memcached 缓存过期机制源码分析

2015年10月7日 评论 3171次阅读    

之前的文章说了 memcached源码学习-线程框架 和 get操作处理代码, 其实最重要的是他的缓存过期策略,以及内存管理机制, 篇幅过长分几篇文章写,这里写一下memcached的缓存过期策略。

说到缓存过期策略,网上有一大堆帖子会介绍说“LRU, 最近最少使用 ” 算法,而且源码中间也是大量的含lru字样的函数,变量,比如lru_crawler_crawl 等,很多人也就信了,可事实却不是这样的。 阅读全文...

分类: Memcached 标签:

memcached LRU过期机制lru_crawler指令可能会错误的清理不应该的slabs的bug

2015年10月7日 评论 1598次阅读    

1.4.20 版本在处理 lru_crawler crawl 2 指令的时候,lru_crawler_crawl函数竟然存在变量未定义的bug,从而导致错误的清理了不应该的slabs槽位的数据。
阅读全文...

分类: Memcached 标签:

Mysql Innodb存储引擎 insert 死锁分析

2015年6月23日 2 条评论 4333次阅读    

前阵子高峰期看线上日志,偶然发现了核心数据库mysql出现大量死锁, show engine innodb status 日志如下:(为了保密,部分字段已移除) 阅读全文...

分类: 数据库 标签: ,

又成长了一年

2015年2月20日 5 条评论 2371次阅读    
   在去准丈母娘家的路上堵车,把这几天的感受写写
  人长大了过年感觉都不一样。
 
   小时候大家都问考试第几名,因为我从小都基本上第一,所以喜欢被问到;现在亲戚朋友见面就问结婚了没,买房买车了没,以后打算在北京发展吗?我就只能回一句“现在还小,不急”,其实是急不了。或者说不应该急。 阅读全文...
分类: 生活杂感 标签:

关于如何高效的在QQ上完成一段谈话–记录那些被“在吗?”消息不断中断的岁月

2014年11月2日 5 条评论 3147次阅读    

小事,但不断的被打扰,忍不住写下来。

写代码的人都知道做事情要学会并行,不断的处理不时而来的中断,比如同事问你问题,朋友聊天等,但由于对方经常打字不够快,你发一条消息过去后,对方很可能得好几十秒,几分钟才能回复过来,所以中间肯定不能盯着聊天框等对方答复,于是需要去做其他事情,比如写代码。
这本来很正常的事情,却被一群“在吗?”党给搅和的实在郁闷,经常一个小事情,一句话留言说清楚了,非得一来一回好几条消息,还间隔好几十秒,把你的时间打的七零八碎的,苍天·······
以后面对这种人,直接不回复 或 发送RST包!!! 阅读全文...

修改libtask支持epoll处理大量并发连接

2014年10月10日 评论 3276次阅读    

原生的libtask库不支持epoll, 这样无法处理大量并发协程的情况,所以小改了下,让它支持epoll,允许大量并发协程运行。代码在这里libtask_epoll

修改方法比较简单,就是把epoll_create, epoll_ctl, epoll_wait 几个函数的使用替换掉原来poll相关的函数,diff在这里阅读全文...

分类: C/C++, TCP/IP, UNIX/LINUX, 协程 标签:

memcached 简单get操作处理代码学习

2014年10月8日 评论 2372次阅读    

好久没写博客了,这里简单记录一下memcached的get操作处理过程,之前写了些memcached的主体流程/线程框架。get命令相对来说是最简单的了, 主要分为这几步: 读取命令; 解析命令;查找key, 拼接返回数据格式;发送结果给客户端;

阅读全文...

分类: Memcached 标签:

memcached里面一段神奇,危险,暂且无bug的code: add_iov

2014年10月7日 评论 2626次阅读    

翻memcached代码,看到一个函数:add_iov , 在里面着实纳闷了许久,多次认为这个代码会有问题,于是打日志,gdb上去调试,最后不得不承认: 这代码能work!(不过很危险)

阅读全文...

梦想一直都有,总有一天会实现的

2014年9月20日 1 条评论 2173次阅读    

高中时就喜欢马云的各种语录,今天阿里上市了,挺高兴的,算是有一点点信念吧,感想敢做,特立独行。

有些人能够实现自己的梦想,有些人却能帮助别人实现梦想。

有一天,我也一定会创业,有自己的产品,帮别人实现梦想。现在我什么也没有,只差一步步去实践了。

分类: 产品, 创业, 生活杂感 标签:

禅悟人生:白隐禅师

2014年8月27日 2 条评论 2112次阅读    

记得高中启蒙老师李黎上课时总是跑题,本来教数学,讲着讲着就在课堂上讲起了人生,好像那时候我们喜欢他的课也就是他讲故事的原因吧。其中最有印象也最难忘的就是日本白隐禅师的故事了,一直对我影响很大,感触很深。摘录如下: 阅读全文...

分类: 生活杂感 标签:

十年后,你会成为怎样的人?

2014年8月6日 评论 1920次阅读    
大半的人在20岁或30岁上就死了:一过这个年龄,他们只变了自己的影子;以后的生命不过是用来模仿自己,把以前真正有人味儿的时代所说的,所做的,所想的,所喜欢的,一天天地重复,而且重复的方式越来越机械,越来越脱腔走板。如果你不想重复自己,那你需要不断地改变。
—— 罗曼•罗兰 《约翰·克里斯托夫》
分类: 生活杂感 标签:

mark小段子-尊严

2014年7月28日 评论 1749次阅读    

“尊严不是别人给的,是自己争取的。”

如果你自己没本事,就不要把尊严太当回事,否则会活的很狼狈。

分类: 生活杂感 标签:

memcached源码学习-线程框架

2014年7月8日 评论 3777次阅读    

看了看memcached, memcached 主要的线程框架是master-slave的主线程-工作线程模式,单进程,多线程,之间通过管道和链表通信,基本就是这样。

下面具体看下代码。 阅读全文...

libtask协程库实现源码学习-异步I/O

2014年6月30日 评论 3764次阅读    

上篇文章写了libtask协程库实现的基本原理,最后说道协程编程一个很大的关键点是,程序员需要知道什么时候应该进行协程切换,什么地方需要异步I/O,什么地方的代码是顺序运行的等。

这里回顾一下具体哪些地方需要做协程切换,异步I/O: 所有可能会造成阻塞的操作,都必须进行异步IO处理,及时切换协程,绝对不能在协程里面做阻塞操作,因为阻塞了大家都阻塞了,就黄了。

顺藤摸瓜,上次的http压力测试小程序里面,协程执行函数fetchtask就是协程运行的主要函数,看下其实现: 阅读全文...

libtask协程库实现源码学习

2014年6月29日 6 条评论 12894次阅读    

协程的概念不多说了,轻量级线程,其最大的优势就是协程之间的切换代价非常低,理论上是单线程运行,只是在应用层进行了上下文手动切换。

其最重要的实现函数是makecontext, getcontext, swapcontext 这一组函数,具体的协程上下文切换由他们完成。具体就不多说了,这些函数在glibc里面是已汇编的形式提供的,实际上做的工作就是讲各个寄存器,堆栈指针,指令指针等全部保存起来,或者进行切换,从而达到协程切换的目的。我们知道程序在CPU上运行的时候,注意依赖2个重要的东西: 阅读全文...

人生最值的投资是对未来和理想的坚持

2014年6月28日 1 条评论 1824次阅读    

为未来做决定很不容易,至少30%的人会反对你。好决定一般是艰难痛苦的,但痛苦的未必就是好决定。得利者不会表态支持你,受挫者一定会骂。网络时代,最狠的往往是那些毫无利益关系的"公"人,他们往往赢得40%不太明白的糊涂人。因为害怕被骂而随波逐流大有人在。人生最值的投资是对未来和理想的坚持!

---转自这里

分类: 生活杂感 标签: