摘要: 带变长参数的函数很多语言都支持带变长参数的函数,C也不例外,我们常用的比如printf()函数,它的函数原型中参数列表里面有一个省略号,就代表了可变参数列表,可以先看下它的实现:int printf(char *fmt, ...){ static char sprint_buf[1024]; ... 阅读全文
posted @ 2014-04-23 23:13 如果的事 阅读(1323) 评论(0) 推荐(1)
摘要: Linux 文件系统先说磁盘磁盘存储系统有一些共同的特征:它们都有物理数据分区,都可以对数据进行直接访问,都有将文件名映射到物理存储的方法;从硬件角度来看,磁盘存储系统有盘片、盘面、磁道、柱面和扇区,这些描述了磁盘的物理结构;典型的硬盘结构如下图,它由固定在以一定速度旋转的轴上的多个盘片组成,每个盘... 阅读全文
posted @ 2014-04-23 21:18 如果的事 阅读(495) 评论(0) 推荐(0)
摘要: IPC 机制简介概述在Unix早期发展中,做出重大贡献的两大主力Bell实验室和伯克利大学(BSD)在IPC(InterProcess Communication)方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“System V IPC”,通信进程局限在单个计... 阅读全文
posted @ 2014-04-23 14:19 如果的事 阅读(4148) 评论(0) 推荐(0)
摘要: 字符串常见算法题 左旋转字符串 在字符串上定义反转的操作XT,即把X的所有字符反转(如X="abc",那么XT="cba")。如果将一个字符串分成两部分,X和Y两个部分,那么我们可以得到下面的结论:(XTYT)T=YX。 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符 阅读全文
posted @ 2014-04-21 15:47 如果的事 阅读(1848) 评论(0) 推荐(0)
摘要: 变长结构体变长结构体是由gcc扩展的一种技术,它是指其最后一个成员的长度不固定(flexible array member,也叫柔性数组),先来看一个简单的例子:#include #include #pragma pack(1)typedef struct { int a; char b[10]; char *vector; } cq; #pragma pack()int main(){ cq *a = malloc(sizeof(cq)); char str[] = "hello"; a->vector = malloc(sizeof(st... 阅读全文
posted @ 2014-04-10 23:39 如果的事 阅读(2543) 评论(0) 推荐(0)
摘要: MySQL默认数据目录修改本文主要介绍在CentOS下通过yum命令安装mysql之后,如何移动默认数据目录到指定位置。安装mysql:yum -y install mysql-server mysql-clientMysql 安装之后默认的数据文件存储目录为/var/lib/mysql。假如要把目... 阅读全文
posted @ 2014-04-03 10:33 如果的事 阅读(1383) 评论(0) 推荐(0)
摘要: Nginx一致性哈希模块的Lua重新实现技术背景:最近在工作中使用了nginx+redis 的架构,redis在后台做分布式存储,每个redis都存放不同的数据,这些数据都是某门户网站通过Hadoop分析出来的用户行为日志,key是uid,value是user profile,每小时更新量在500-800万条记录,而这些记录一旦生成,我需要在5分钟左右的时间完成所有导入过程。首先,我在nginx中使用了第三方模块HttpUpstreamConsistent来做负载均衡策略,针对不同用户(uid)选取不同的backend redis: upstream somestream { c... 阅读全文
posted @ 2014-04-02 16:26 如果的事 阅读(3680) 评论(2) 推荐(0)
摘要: Lua协程协同程序(coroutine)与多线程情况下的线程比较类似:有自己的堆栈、局部变量、指令指针,但与其它协程共享全局变量等很多信息。协程类似一种多线程,但与多线程还有很多区别: 1. 协程并非os线程,所以创建、切换开销比线程相对要小。 2. 协程与线程一样有自己的栈、局部变量... 阅读全文
posted @ 2014-03-30 20:23 如果的事 阅读(2595) 评论(0) 推荐(0)
摘要: Lua的环境、编译等Lua命令行lua命令行选项:-i:进入交互式-e:执行lua代码-l:加载库文件例如使用下面的命令启动lua解释器,可以重新定义lua提示符。lua -i -e "_PROMPT=' try>'"在交互模式下,如果要打印任何表达式的值,可以用等号开头,并跟随一个表达式,例如:>... 阅读全文
posted @ 2014-03-30 19:28 如果的事 阅读(1144) 评论(0) 推荐(0)
摘要: Lua函数之二Lua中函数的两个重要特性:1、函数和其他类型(如number、string)一样,可以存放在变量中,也可以存放在table中,可以作为函数的参数,还可以作为函数的返回值。2、嵌套的函数可以访问其外部函数中的局部变量——闭包。例如:local foo = function(x) ret... 阅读全文
posted @ 2014-03-30 18:36 如果的事 阅读(585) 评论(0) 推荐(0)