摘要: 继上一篇关于inject注入的笔记,理解了martini的关键核心之一:依赖注入。注入回调函数,由运行时进行主动调用执行。这一篇主要是注解martini的骨架martini.go的实现,下面先从一个简单的martini使用实例,即创建一个最简单的http服务器开始。 server.go //mart 阅读全文
posted @ 2016-03-07 17:52 Bico 笔记 阅读(1144) 评论(0) 推荐(0) 编辑
摘要: martini是go语言写的一个超级轻量的web开源框架,具体源码可在github搜索找到。13年那会开始接触go语言时有稍微看过这个框架,由于之后没有继续使用go就慢慢忽略了,最近由于手头项目可能会用到,因此又想起这个框架。 github上显示该项目更新不断,说明真是个好框架,简洁高效的东西从来都 阅读全文
posted @ 2016-03-07 17:19 Bico 笔记 阅读(771) 评论(0) 推荐(0) 编辑
摘要: 最近实现的一种简单的协议以及工具,主要用于客户端服务端通讯传输二进制数据时,协议的解包与封包,具体如下:首先定义协议的格式,主要由三部分组成: 数据长度(数据部分长度+协议号长度):4个字节 协议号:2个字节 数据部分:2进制数据数据部分如果是字符串需要先计算字符串的长度,占2个字节,之后再紧... 阅读全文
posted @ 2015-01-30 21:45 Bico 笔记 阅读(2495) 评论(0) 推荐(0) 编辑
摘要: 参考资料:http://erlangcentral.org/wiki/index.php/Building_a_Non-blocking_TCP_server_using_OTP_principles服务器设计tcp_server_app下的根监控树使用one_for_one重启策略。两个子树应用,... 阅读全文
posted @ 2014-09-17 00:12 Bico 笔记 阅读(2207) 评论(0) 推荐(4) 编辑
摘要: 以下注释的源代码都在memcached项目的assoc.c文件中 1 /* how many powers of 2's worth of buckets we use */ 2 unsigned int hashpower = HASHPOWER_DEFAULT; /* 哈希表bucket的级... 阅读全文
posted @ 2014-07-17 23:45 Bico 笔记 阅读(625) 评论(0) 推荐(0) 编辑
摘要: pthread_cond_wait()是linux多线程同步实现的一种方法,表示等待某一个线程共享变量满足了某种情况时线程才能继续执行 pthread_cond_wait()之后的代码,如下面的示例代码段所示,thread_func()函数中的代码示例是一种比较常见的等待共享变量的方式,这里主要关注... 阅读全文
posted @ 2014-07-06 21:39 Bico 笔记 阅读(576) 评论(0) 推荐(0) 编辑
摘要: 本次笔记未涉及到slab的动态重新平衡分配/**首先介绍一下一个跟内存相关的非常重要的概念,内存块类型数据结构:*/typedef struct { unsigned int size; /* chunk的大小 sizes of items */ unsigned int pe... 阅读全文
posted @ 2014-07-03 23:21 Bico 笔记 阅读(650) 评论(0) 推荐(0) 编辑
摘要: 这次记录状态机的主要逻辑,跟踪set命令的执行流程,暂不涉及到内存申请这一块,下面内容基本都是代码注释首先还是补充了解下客户连接在发送数据到数据被处理并返回过程中conn的各种状态的表示enum conn_states {conn_listening, /** 只有监听连接的socket才会是这种状... 阅读全文
posted @ 2014-07-02 22:58 Bico 笔记 阅读(998) 评论(0) 推荐(1) 编辑
摘要: memcached在启动过程初始化server_sockets时,根据启动参数决定系统是进行tcp监听还是udp监听,这里暂时只关注tcp的情况。server_socket在初始化时会向系统申请监听socket之后设置地址,bind以及开始listen等操作,之后比较关键的一步是为监听socket创... 阅读全文
posted @ 2014-07-02 22:38 Bico 笔记 阅读(791) 评论(0) 推荐(0) 编辑
摘要: 以下笔记主要是关注tcp模式下memcached的启动过程。main() 设置信号处理函数为sig_handler()初始化系统设置,保存在全局变量settings里面 settings_init(); 解析启动参数,使用settings局变量保存配置根据启动参数初始化系统具体使用的hash函数,默... 阅读全文
posted @ 2014-06-30 00:35 Bico 笔记 阅读(657) 评论(0) 推荐(0) 编辑