
网络编程
文章平均质量分 50
Honkee
希望希望可以成真
展开
-
网络编程,一个ACSII文件的传输
为了简单,这个程序没有错误处理的逻辑,原创 2014-06-25 08:26:14 · 966 阅读 · 0 评论 -
Memcache源码阅读(8)---多线程
我看的源码版本是1.2.4前面已经将memcached的主要内容讨论完了。这里来说说memcached怎么使用多线程的吧。memcached的线程分为两种,一个主线程,另外的是工作线程。一个主线程负责接收用户的请求,接收到请求后将这个请求递交给多个工作线程的其中一个。每个工作线程都有一个连接队列管理着主线程递交的连接。线程初始化还是从线程的初始化开始。初始化一些锁,然后初始化工作线程,在主线程和工作原创 2016-12-25 21:06:49 · 594 阅读 · 0 评论 -
Memcache源码阅读(7)---用户输入的处理
我看的源码版本是1.2.4前面我已经说了数据存储,哈希表的管理,内存的管理。还有第二章说到用户的请求时如何到达memcached的,从用户的输入到memcached如何接受到这些输入。那现在我们来分析一下接收到这些输入后,memcached是怎么操作的。要看这部分代码就需要知道memcached有多少个命令。 我从process_command()这个函数里看到的命令有:get,bget,add,原创 2016-12-25 20:22:26 · 621 阅读 · 0 评论 -
Memcache源码阅读(5)---哈希表管理
我看的源码版本是1.2.4memcached使用的哈希函数是用Dr Dobbs的Hash方法,哈希函数的原理我就不说了,它可以将一个k个字节的数据通过转换,变为一个32位的二进制数。它有那样的特性,这k个字节的二进制稍微有一点变动,得到的32为二进制数就会有很大区别。这也就是哈希函数的作用。虽然说他哈希之后是32位,也就是可以分为2^32这么多个哈希桶,如果我们不需要这么大的哈希桶,可以对得到这32原创 2016-12-18 22:09:18 · 700 阅读 · 0 评论 -
Memcache源码阅读(4)---内存管理
我看的源码版本是1.2.4memcached的存储memcached拥有一个内存池,内存池中的内存分成多种大小的chunk,chunk的大小有一个基础大小(最小的chunk大小,base chunk size),然后后面大小的是以settings.factor为因子不断的增大。比如说base chunk size为64byte, setting.factor = 1.5,那么memcached拥有的原创 2016-12-18 15:06:35 · 939 阅读 · 0 评论 -
Memcache源码阅读(6)---数据存储
我看的源码版本是1.2.4前面第4篇讲到了memcached怎么去管理内存的,memcached将内存分为不同大小的chunk,不同大小的数据就放到能装下那个数据的最小chunk中。现在我来讲讲数据是以怎样的形式存储在内存中的。item的结构体#define ITEM_key(item) ((char*)&((item)->end[0])) //获得这个item的key #define ITEM_s原创 2016-12-21 20:02:08 · 958 阅读 · 0 评论 -
Memcache源码阅读(3)---处理用户输入
我看的源码版本是1.2.4从main函数开始,看看作者怎么初始化,然后再看作者怎么监听连接,怎么接受用户的输入,怎么处理用户的输入。主程序main函数里的一些操作 自定义中断处理函数 从命令行中获取用户打开memcached的指令值 设置core文件 初始化资源,统计资源,分配内存 屏蔽SIGPIPE信号,因为SIGPIPE的默认处理是中断程序,客户端断开连接后,memcached再往客户端写数据就原创 2016-12-17 15:45:10 · 557 阅读 · 0 评论 -
Memcache源码阅读(2)---命令行使用
我看的源码版本是1.2.4使用方法编译安装,运行memcached➜ memcached-1.2.4 ./memcachedtelnet 到memcached监听的端口,通过命令行访问memcache➜ ~ telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 1原创 2016-12-17 15:44:21 · 689 阅读 · 0 评论 -
Memcache源码阅读(1)---看源码的心得
心得我这是第一次看源码。说不上什么心得,不过也总结一下~我觉得阅读一个项目的源码,应该是先知道这个项目具体怎么用之后,先估计一下作者的实现,然后再看源码来验证自己的想法。我这次阅读源码是在没有用过这个项目的前提下阅读的,一开始的时候不知道从何读起,于是就去网上找别人的博客,跟着别人的博文一篇一篇的看,然后自己对着源码看。慢慢的自己就开始知道要看什么了,就不再跟着别人的博文的步骤来,自己想知道那个功能原创 2016-12-17 15:43:18 · 1297 阅读 · 0 评论 -
Memcache的分布式
memcached是不支持分布式的,要实现分布式的memcached是需要在客户端那边实现的。就是我运行多个memcached实例,在客户端那边注册多个memcached实例,key->value对具体保存在哪个memcached实例由客户端的哈希算法决定。对于固定的memcached实例,任何hash函数都可以比较好的定位到固定的memcached实例,但是现实中,memcached实例有可能由于原创 2016-12-26 16:41:52 · 822 阅读 · 2 评论