04 2014 档案
摘要:shell中的循环for循环类似于C语言的步长控制例如:for ((i=1;i<=10;i++)); do echo $(expr $i \* 4 ); done 将1到10,依次乘以4,然后打印出来。这里顺便提一下,shell里面表达式的计算,可以有其他形式:for ((i=1;i<=10;i++...
阅读全文
摘要:带变长参数的函数很多语言都支持带变长参数的函数,C也不例外,我们常用的比如printf()函数,它的函数原型中参数列表里面有一个省略号,就代表了可变参数列表,可以先看下它的实现:int printf(char *fmt, ...){ static char sprint_buf[1024]; ...
阅读全文
摘要:Linux 文件系统先说磁盘磁盘存储系统有一些共同的特征:它们都有物理数据分区,都可以对数据进行直接访问,都有将文件名映射到物理存储的方法;从硬件角度来看,磁盘存储系统有盘片、盘面、磁道、柱面和扇区,这些描述了磁盘的物理结构;典型的硬盘结构如下图,它由固定在以一定速度旋转的轴上的多个盘片组成,每个盘...
阅读全文
摘要:IPC 机制简介概述在Unix早期发展中,做出重大贡献的两大主力Bell实验室和伯克利大学(BSD)在IPC(InterProcess Communication)方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“System V IPC”,通信进程局限在单个计...
阅读全文
摘要:字符串常见算法题 左旋转字符串 在字符串上定义反转的操作XT,即把X的所有字符反转(如X="abc",那么XT="cba")。如果将一个字符串分成两部分,X和Y两个部分,那么我们可以得到下面的结论:(XTYT)T=YX。 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符
阅读全文
摘要:变长结构体变长结构体是由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...
阅读全文
摘要:MySQL默认数据目录修改本文主要介绍在CentOS下通过yum命令安装mysql之后,如何移动默认数据目录到指定位置。安装mysql:yum -y install mysql-server mysql-clientMysql 安装之后默认的数据文件存储目录为/var/lib/mysql。假如要把目...
阅读全文
摘要:Nginx一致性哈希模块的Lua重新实现技术背景:最近在工作中使用了nginx+redis 的架构,redis在后台做分布式存储,每个redis都存放不同的数据,这些数据都是某门户网站通过Hadoop分析出来的用户行为日志,key是uid,value是user profile,每小时更新量在500-800万条记录,而这些记录一旦生成,我需要在5分钟左右的时间完成所有导入过程。首先,我在nginx中使用了第三方模块HttpUpstreamConsistent来做负载均衡策略,针对不同用户(uid)选取不同的backend redis: upstream somestream { c...
阅读全文

浙公网安备 33010602011771号