- 博客(17)
- 收藏
- 关注
转载 简单工厂,工厂方法和抽象工厂的区别
http://www.cnblogs.com/cwj-0122/articles/1267954.html看了网络上很多关于设计模式的方法,有的模式看起来相似,但本质还是区别很大的.像简单工厂,工厂方法和抽象工厂就有很明显的区别. 有一个比较好理解的例子,在这跟大家介绍下: 1.如果一个后花园只种蔬菜类,那么就用简单工厂就可以了. 2.如果后花园蔬菜品种繁多.得用工厂方法才可以,把
2012-11-27 11:07:02
291
转载 OOAD
http://blog.youkuaiyun.com/yuchen2008/article/details/1478601OOAD什么是OOAD?面向对象的分析与设计,使用面向对象的思想对一个系统的分析与设计UML:什么是UML?统一的建模语言,什么是建模?将客观事物图形化,比如盖楼房,首先要把地基打好统一指的是什么?在计算机领域有很多的图形语言,这样就需要一个标准,UML就是这样
2012-11-27 11:04:34
4997
转载 shared ptr多线程使用注意事项
shared_ptr objects offer the same level of thread safety as built-in types. A shared_ptr instance can be "read " (accessed using only const operations) simultaneously by multiple threads. Different sh
2012-11-16 13:33:35
630
转载 MVCC
本文转自http://www.cnblogs.com/wenfeng762/archive/2011/11/06/2238108.html;AUTOCOMMITMysql默认自动提交,可以通过如下命令查看和修改:mysql> SHOW VARIABLES LIKE 'AUTOCOMMIT';+---------------+-------+| Variable_name |
2012-10-31 10:59:07
2251
转载 B树系列
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关
2012-10-30 11:37:41
766
原创 关于morden c++ design中的kdl问题(singleton)的解决
kdl问题见:http://www.kuqin.com/design-patterns/20071113/2300.html;问题转为代码描述如下:// =====================================================================================// // Filename: kdl.cpp
2012-10-24 12:07:19
526
原创 redis之dict
redis的dict是自动rehash的hash表,为了平衡性能,rehash不是一次做完的,而是分散到每次交互操作来做;typedef struct dictEntry { void *key; void *val; struct dictEntry *next;} dictEntry;typedef struct dictType {
2012-09-11 15:56:51
575
原创 redis之intset
intset结构体:typedef struct intset { uint32_t encoding; uint32_t length; int8_t contents[];} intset;encoding保存编码方式:INTSET_ENC_INT16、INTSET_ENC_INT32和INTSET_ENC_INT64;length保存元素个数
2012-09-11 15:22:49
641
原创 redis之zipmap
zipmap是用连续内存保存key,value对的结构;因为是连续内存保存的,所以每次插入或删除操作都可能会导致重新分配内存;为了缓解重新分配内存压力,为每个value保留一个free字段,表明可用空闲字节数(4);存储结构:"foo""bar""hello""world"zmlen表示key,value对数目,如果该数目大于或等于254,得遍历整个map才能得
2012-09-11 12:07:55
2380
原创 redis之ziplist
本文剖析redis的ziplist的实现。ziplist是一个存储高效的双链表,存储的元素类型有字符串和整数;虽然存储高效,但每次插入或删除ziplist中的元素都会引起重新分配内存,所以,ziplist作为大型只读表非常高效,频繁的插入或删除ziplist不太合适;ziplist的内部结构:zlbytes是一个unsigned int数字,表示整个ziplist占用的
2012-09-10 17:20:12
893
原创 redis之VM
aeCreateFileEvent(server.el, server.io_ready_pipe_read, AE_READABLE, vmThreadedIOCompletedJob, NULL)主线程和后台线程通过pipe进行通信: 后台线程每处理完一个job,就会给server.io_ready_pipe_write发送一个字节数据; 主线程监听server
2012-09-07 10:53:29
2084
原创 redis之bio
bio开线程来执行close和fdatasync操作;采用的是job list方式(每个线程一个job list,线程从job list取job执行),也就是生产者-消费者模型;
2012-09-06 16:43:44
496
原创 redis之readQueryFromClient
void readQueryFromClient(aeEventLoop *el, int fd, void *privdata, int mask)读数据到redisClient::querybuf;读到数据超过client_max_querybuf_len时,直接freeClient(c);processInputBuffer(c);1、输入以*开头,则reqtype为REDI
2012-09-06 15:09:54
1900
原创 redis之acceptTcpHandler
aeCreateTimeEvent(server.el, 1, serverCron, NULL, NULL);aeCreateFileEvent(server.el,server.ipfd,AE_READABLE,acceptTcpHandler,NULL);acceptTcpHandler每accept到一个clientfd,会为该fd调用createClient(有maxclient
2012-09-06 14:46:38
1138
原创 redis 之网络模型
#define AE_SETSIZE (1024*10) /* Max number of fd supported */redis的网络模型处理的fd必须小于2048(在events结构体中放不下);/* State of an event based program */ typedef struct aeEventLoop { int maxfd; lo
2012-09-06 12:35:53
3233
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人