用Bollger记录技术之路的点滴...

关注高性能linux网络编程,NoSQL, c/c++/java ~~~ weibo @语_行 http://weibo.com/201281062~~~ twitter @JerryVector https://twitter.com/JerryVector
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年11月17日

摘要: 我们知道,Redis是一个性能非常优异的kv服务器,有关redis的性能及适用场景,在后期做介绍,这里重点介绍下redis的启动流程,也是对近期对redis代码阅读的一点总结,有不足之处,欢迎拍砖.阅读c/c++项目的源码,一般情况下,都将从main函数,那么对于redis的启动流程,下边也从main函数开始说起.首先,main函数里边声明了一个time_t start 变量, 用来对一些操作进行时间统计,如从AOF文件中加载数据,从redisdb中加载数据。接下来,调用initServerConfig() 对struct redisServer server 这一个全部变量进行默认初始化.( 阅读全文

posted @ 2012-11-17 09:58 语行 阅读(3257) 评论(0) 推荐(1) 编辑

2012年11月16日

摘要: 毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。希望你喜欢这个比喻。下面是一篇新鲜出炉的文章,其作者是Redis作者@antirez,他描述了Redis比较适合的一些应用场景,NoSQLFan简单列举在这里,供大家一览:1.取最新N个数据的操作比如典型的取你网站的最新文章,通过下面方式,我们可以将最新的5000条评论的ID放在Redis的List集合中,并将超出集合部分从数据库获取使用LPUSH latest.comment.. 阅读全文

posted @ 2012-11-16 17:31 语行 阅读(898) 评论(1) 推荐(1) 编辑

2012年11月15日

摘要: 在oracle中,我们有时候会需要判断一个字符串里边是否包含有某一个串;首先,oracle为我们提供了instr这个函数: instr( string1, string2 [, start_position [, nth_appearance ] ] ) 参数分析: string1,源字符串,要在此字符串中查找。 string2: 要在string1中查找的字符串。 start_position: 代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符... 阅读全文

posted @ 2012-11-15 22:18 语行 阅读(3783) 评论(1) 推荐(3) 编辑

2012年11月10日

摘要: Unix下共有五种I/O模型(摘自)《UNIX网络编程 第三版 第一卷:套接口api》阻塞I/O非阻塞I/OI/O复用(select和poll)信号驱动I/O(SIGIO)异步I/O(Posix.1的aio_系列函数)b.阻塞I/O模型 应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。 如果数据没有准备好,一直等待。。。。 数据准备好了,从内核拷贝到用户空间 IO函数返回成功指示 c.非阻塞I/O模型 我们把一个套接口设置为非阻塞就是告诉内核,当所请求的I/O操作无法完成时,不要将进程睡眠,而是返回一个错误。这样我们的I/O操作函数将不断的测试数据是否... 阅读全文

posted @ 2012-11-10 21:35 语行 阅读(2339) 评论(0) 推荐(0) 编辑

2012年10月22日

摘要: 做后端开发的, 免不了要写shell, 敲linux命令, 很多时候当需要一个东西有不记得的时候,首选便是上google, 可以一次两次三次, 每次用一个相同的命令, 都记不住。为了改善这种状况, 最好的方法还是多记录, 多积累。。。date --helpUsage: date [OPTION]... [+FORMAT] or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]Display the current time in the given FORMAT, or set the system date. -d, --date... 阅读全文

posted @ 2012-10-22 10:42 语行 阅读(1343) 评论(0) 推荐(0) 编辑

2012年7月25日

摘要: 线程中特有的线程存储, Thread Specific Data 。线程存储有什么用了?他是什么意思了?大家都知道,在多线程程序中,所有线程共享程序中的变量。现在有一全局变量,所有线程都可以使用它,改变它的值。而如果每个线程希望能单独拥有它,那么就需要使用线程存储了。表面上看起来这是一个全局变量,所有线程都可以使用它,而它的值在每一个线程中又是单独存储的。这就是线程存储的意义。下面说一下线程存储的具体用法。l 创建一个类型为 pthread_key_t 类型的变量。l 调用 pthread_key_create() 来创建该变量。该函数有两个参数,第一个参数就是上面声明的 pthread_ke 阅读全文

posted @ 2012-07-25 16:52 语行 阅读(2077) 评论(0) 推荐(0) 编辑

2012年6月7日

摘要: 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代 码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,如果不想触雷,唯一的解决办法就是做到真正地通晓内存管理,发现所有潜伏的地 雷并且排除它们。1、内存分配 方式内存分配方式有三种:(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程 序的整个运行期间都存在。例如全局变量,static变量。(2)在栈上创建。在执行函数时,函数内局部变量的存储单元 阅读全文

posted @ 2012-06-07 14:13 语行 阅读(294) 评论(0) 推荐(0) 编辑

摘要: 对于很多想要使用linux系统的朋友, 在开始的时候可能都会选择在windows下一wubi的形式安装一个linux, 这种方法最方便,最快速,同时也不需要自己操什么心就可以自动安装好, 但是对于像我这样的程序员来说, 用wubi方式去使用linux总感觉不那么原生态, 始终脱离不了microsoft的魔爪, 所以一定得在一个单独的分区里装一个linux玩才好。安装过程就不多说了, 用一个ubuntu的安装盘, 重启后就可以进入安装程序了, 需要注意的是最好是给分配一个swap分区, 我是用了一个2G的swap分区, 不然在使用ubuntu的时候会有问题。下边, 重点要介绍的就是如何引导win 阅读全文

posted @ 2012-06-07 14:12 语行 阅读(7458) 评论(1) 推荐(0) 编辑

2011年12月3日

摘要: 1:不需要使用一个复杂系统的所有功能, 而且可以创建一个新的类, 包含访问系统的所有规则。 如果只需要使用系统的部分功能(这是通常情况), 那么你为新类所创建的API将比原来系统的API简单的多。2:希望封装或者隐藏原系统。3:希望使用原系统的功能, 而且还希望增加一些新的功能。4:编写新类的成本小于所有人学会使用或者未来维护原系统上所需的成本。 阅读全文

posted @ 2011-12-03 22:33 语行 阅读(643) 评论(0) 推荐(0) 编辑