posted @ 2012-11-17 09:58 语行 阅读(3257) 评论(0) 推荐(1) 编辑
摘要:
我们知道,Redis是一个性能非常优异的kv服务器,有关redis的性能及适用场景,在后期做介绍,这里重点介绍下redis的启动流程,也是对近期对redis代码阅读的一点总结,有不足之处,欢迎拍砖.阅读c/c++项目的源码,一般情况下,都将从main函数,那么对于redis的启动流程,下边也从main函数开始说起.首先,main函数里边声明了一个time_t start 变量, 用来对一些操作进行时间统计,如从AOF文件中加载数据,从redisdb中加载数据。接下来,调用initServerConfig() 对struct redisServer server 这一个全部变量进行默认初始化.( 阅读全文
摘要:
毫无疑问,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) 编辑
摘要:
在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) 编辑
摘要:
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) 编辑
摘要:
做后端开发的, 免不了要写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) 编辑
摘要:
线程中特有的线程存储, Thread Specific Data 。线程存储有什么用了?他是什么意思了?大家都知道,在多线程程序中,所有线程共享程序中的变量。现在有一全局变量,所有线程都可以使用它,改变它的值。而如果每个线程希望能单独拥有它,那么就需要使用线程存储了。表面上看起来这是一个全局变量,所有线程都可以使用它,而它的值在每一个线程中又是单独存储的。这就是线程存储的意义。下面说一下线程存储的具体用法。l 创建一个类型为 pthread_key_t 类型的变量。l 调用 pthread_key_create() 来创建该变量。该函数有两个参数,第一个参数就是上面声明的 pthread_ke 阅读全文
posted @ 2012-07-25 16:52 语行 阅读(2077) 评论(0) 推荐(0) 编辑
摘要:
内存管理是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) 编辑