Unix&Linux
文章平均质量分 79
lotus302
这个作者很懒,什么都没留下…
展开
-
Posix mq和SystemV mq区别
1、 Posix mq内核参数影响fs.mqueue.msg_max 消息队列中消息个数最大限制fs.mqueue.msgsize_max 消息队列中每个消息长度最大限制fs.mqueue.queues_max 消息队列个数最大限制建议值fs.mqueue.msgsize_max = 8192fs.mqueue.msg_max = 10000fs.m原创 2015-10-16 17:08:53 · 2713 阅读 · 0 评论 -
队列管理
typedef struct list_head list_head;struct list_head{ struct list_head *next, *prev;}; #define LIST_INIT(p) (p)->next=(p),(p)->prev=(p);#define LIST_ADD_HEAD(h, p)原创 2011-09-07 17:12:10 · 310 阅读 · 0 评论 -
B+树
一个m阶的b+树应满足以下特性:1.树中的每个结点至多有m棵子树;2.若根结点不是叶子结点,则至少有两棵子树;3.除根结点之外的所有非终结点至少有[(m+1)/2]棵子树(3/2=1);4.所有非终结点中包含下列信息数据:(key[0],pointer[0];ke原创 2011-10-18 13:22:42 · 427 阅读 · 0 评论 -
链表查找算法-节约内存
#include #include #include #include #include #include #include #include #include #include #include #define KEYNUM 1000000#define KEYHASH 0xFFFFtypedef struct cr_rec_原创 2013-04-22 13:56:28 · 647 阅读 · 0 评论 -
Linux程序开发经验总结
1. 进程和线程1.1. 进程进程终止有8种方式使进程终止,其中5种为正常终止,3种异常终止方式:1) 从main返回2) 调用exit3) 调用_exit或_Exit4) 最后一个线程从其启动例程返回5) 最后一个线程调用pthread_exit6) 调用abort7) 接到一个信号并终止8) 最后一个线程对取消请求作出响应原创 2014-01-23 15:03:27 · 5475 阅读 · 0 评论 -
ar命令用法
ar基本用法ar命令可以用来创建、修改库,也可以从库中提出单个模块。库是一单独的文件,里面包含了按照特定的结构组织起来的其它的一些文件(称做此库文件的member)。原始文件的内容、模式、时间戳、属主、组等属性都保留在库文件中。下面是ar命令的格式:ar[-][abcfilNoPsSuvV][membername][count]archivefiles...例如我们可以用ar原创 2012-05-17 09:32:58 · 1188 阅读 · 0 评论 -
静态链接库与动态连接库
1、静态链接库编译:ar rv ./lib/libtest.a test1.c test2.c连接:gcc test.c -L./lib/ -ltest -o test查看:nm libtest.a 2、动态链接库编译:gcc test1.c test2.c -fPIC -shared -o ./lib/libtest.so连接:gcc test.c -L./lib/原创 2012-05-21 15:37:34 · 393 阅读 · 0 评论 -
防止poll监听被中断
{ int rv; time_t tin; time_t tout; if (timeout > 0) { timeout *= 1000; tin = time(NULL); }原创 2012-03-08 14:58:21 · 580 阅读 · 0 评论 -
创建线程时参数传递技巧-用指针传值
//1. thtread mainvoid *listen_thread(void *data){ int socket = (int)data; size_t len; char byte; len = 1; (void) recv(socket,&byte,&len,-1);exit(1);}//2.pthread callpthread_原创 2012-12-27 13:31:47 · 714 阅读 · 0 评论 -
截断数据类型
#include #include struct test_t{int a;unsigned b:1;int c;};int main(){char a;int b=0x0102;int c=0x0201;a = b;printf("a=%x\n", a);struct test_t t;printf("t=%d\n", size原创 2012-12-27 13:34:28 · 540 阅读 · 0 评论 -
多进程框架
int main_run(){ int stat; int i; pid_t pid; int fd[2]; char c; if(setjmp(exit_jb)) goto shutdown; //i原创 2013-06-08 14:05:42 · 589 阅读 · 0 评论 -
链路层原始套接字编程-服务端
#include #include #include #include #include #include #include #include #include #define LEN 60void print_str16(unsigned char buf[], size_t len){ int i;原创 2014-09-10 11:17:56 · 1024 阅读 · 0 评论 -
链路层原始套接字编程-客户端
#include #include #include #include #include #include #include #include #include #define LEN 60void print_str16(unsigned char buf[], size_t len){ int i;原创 2014-09-10 11:18:33 · 1023 阅读 · 0 评论 -
hadoop实现原理
与单机的文件系统不同,分布式文件系统不是将这些数据放在一块磁盘上,由上层操作系统来管理。而是存放在一个服务器集群上,由集群中的服务器,各尽其责,通力合作,提供整个文件系统的服务。其中重要的服务器包括:主控服务器(Master/NameNode),数据服务器(ChunkServer/DataNode),和客户服务器。HDFS和GFS都是按照这个架构模式搭建的。个人觉得,其中设计的最核心内容是:文件的原创 2012-02-08 16:35:27 · 2071 阅读 · 0 评论 -
VIM快捷键
1、光标定位快捷键: H -> 光标定位到屏幕上方 M -> 光标定位到屏幕中间 L -> 光表定位到屏幕下方 b -> 光标向前移动上一个单词词头 B -> 光标向前移动一个big-word的单词词头 e -> 光标向后移动下一个单词的词尾原创 2011-09-07 13:55:19 · 4964 阅读 · 1 评论 -
BB树
平衡二叉树或者是一颗空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。平衡因子定义为结点的左子树的深度减去它的右子树的深度。由于平衡二叉树上任何结点的左右子树的深度之差都不超过1,可以证明它的深度和logN是同原创 2011-10-18 13:24:00 · 925 阅读 · 0 评论 -
单线程读fifo写文件
int log_fifo2file(char *fifoname, char *filename, size_t size, int expire, int *exitflag){ int fd1, fd2; size_t nread, nwrite, sum; char file[PATH_MAX], filene原创 2015-12-01 16:52:15 · 585 阅读 · 0 评论 -
多线程/多进程写FIFO为原子操作(一次写小于PIPE_BUF内容)
#include #include #include #include #include #include #include #include #define WRITENUM 4typedef struct writeattr writeattr;struct writeattr{ int id; int原创 2015-08-17 17:06:09 · 2377 阅读 · 0 评论 -
单线程socket性能测试
int main(){ int ret, fd, connfd; char ip[16]="10.10.126.183"; short port = 7208; int backlog = 10; char buf[87380]; ssi原创 2015-08-17 16:10:47 · 1178 阅读 · 0 评论 -
一张图记住常用 Linux 系统性能诊断工具
转载 2015-03-04 16:48:28 · 576 阅读 · 0 评论 -
C实现固定大小对象池
typedef struct common_obj_pool common_obj_pool;typedef struct common_obj_node common_obj_node;struct common_obj_pool { uint count; //total num uint size; //per size uint原创 2015-01-21 10:25:00 · 568 阅读 · 0 评论 -
libnids-TCP流重组
1. Voidprocess_tcp(u_char * data, int skblen) 2. { 3. 4. struct ip *this_iphdr = (struct ip *)data; 5. /*tcphdr 的头*/ 6. struct tcphdr *this_tcphdr = (struct tcphdr *)(data +转载 2015-01-07 16:07:55 · 4476 阅读 · 0 评论 -
手机尾号hash算法
经过各省实际统计情况来看,除了尾号为4的号码较少外,其他尾号相差不多,所以采用尾号后4位来进行hash//经典算法unsigned BKDRHash(char *str){ unsigned seed = 131; // 31 131 1313 13131 131313 etc.. unsigned hash = 0; while(*str)原创 2015-02-11 11:36:27 · 2563 阅读 · 0 评论 -
William Richard Stevens
William Richard Stevens,(1951年2月5日-1999年9月1日),美国计算机科学家,是众多的畅销UNIX、TCP/IP书籍的作者。生平Stevens于 1951 年出生于北 Rhodesia 的 Luanshya。他的父亲在当地的一家铜厂工作。他的家曾先后搬到盐湖城、Hurley、新墨西哥、华盛顿和南非的 Phalaborwa。史蒂文斯曾就读于位于弗吉尼亚Wa转载 2015-02-11 15:18:40 · 941 阅读 · 0 评论 -
nginx-并发模型
nginx采用多进程模型处理并发请求,每个worker采用try_lock竞争accept_mutex,避免惊群现象。优点:编程简单,单进程处理请求。缺点:对连接数固定或较少的大数据量连接来说,性能略显不足。原创 2015-02-09 16:03:12 · 670 阅读 · 0 评论 -
strncpy与snprintf
char buf[]="abcdefg";stcncpy(s, buf, 4); //abcdsnprintf(s, 4, "%4s", buf); //abc原创 2011-09-07 13:47:01 · 552 阅读 · 0 评论 -
高性能网络编程--陶辉
1 高性能网络编程1—accept建立连接编写服务器时,许多程序员习惯于使用高层次的组件、中间件(例如OO(面向对象)层层封装过的开源组件),相比于服务器的运行效率而言,他们更关注程序开发的效率,追求更快的完成项目功能点、希望应用代码完全不关心通讯细节。他们更喜欢在OO世界里,去实现某个接口、实现这个组件预定义的各种模式、设置组件参数来达到目的。学习复杂的通讯框架、底层细节,在习惯转载 2015-02-05 15:00:21 · 4134 阅读 · 0 评论 -
网关分布式架构设计
由hadoop原理实现网关核心架构,其中Master性能、稳定性、容灾为网关发展瓶颈原创 2012-02-08 17:02:05 · 2192 阅读 · 0 评论 -
底层网络编程代码总结
/* * Author: GaoYang, * Since: 2014-7-24 ~ 2015-7-24 */#ifndef COMMON_UTIL_H#define COMMON_UTIL_H#include #include #include #include #include #include #include #include #include #incl原创 2015-02-09 16:20:31 · 815 阅读 · 0 评论 -
memcached简介
memcached是高性能的分布式内存缓存服务器,一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态访问的速度、提高可扩展性。1. memcached的特点:(1) memcached中保存的数据都存储在memcached内置的内存存储空间中。(2) 由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。(3) 内容容量达到指定值之后,就基于LR原创 2012-02-08 17:09:06 · 355 阅读 · 0 评论 -
svn常用命令
svn代码提交注意的问题:1.可以直接通过svn ci 提交修改的代码。2.如果提示过期,是因为冲突,首先要update一下,然后用svn resolved清除多余的文件,并且解决冲突,最后svn ci 提交。 一.代码提交处理过程(以Make.rules为例):(1)修改提交:svn ci -m "" Make.rules(2)如果过期会显示:Sendin原创 2012-01-30 13:44:46 · 1358 阅读 · 0 评论 -
Solaris系统SHM共享内存使用方法
1. 基础知识系统V共享内存是已知的Unix /Linux系统中最快的进程间通信方式,那么要想采用SHM方式申请共享内存需要做哪些操作呢?In Solaris 10, you are not required to make changes to the/etc/system file to implement the System V IPC. Solaris 10 uses t原创 2012-08-28 09:34:40 · 1986 阅读 · 0 评论 -
线程特有数据==线程内静态变量
函数应用背景:在单线程程序中,函数经常使用全局变量或静态变量,这是不会影响程序的正确性的,但如果线程调用的函数使用全局变量或静态变量,则很可能引起编程错误,因为这些函数使用的全局变量和静态变量无法为不同的线程保存各自的值,而当同一进程内的不同线程几乎同时调用这样的函数时就可能会有问题发生。而解决这一问题的一种方式就是使用线程特定数据的机制。#include #include #incl原创 2012-06-27 09:03:11 · 903 阅读 · 0 评论 -
共享内存-新学习
场景:1、主进程拉起各个子进程;2、各个子进程负责各自业务;3、共享资源都一般在共享内存申请;4、个别特殊业务进程自己申请资源;问题:其他进程是否可以访问特殊进程内的自己申请的特殊资源?答案:可以有限制的使用原因:特殊进程在主进程初始化过程中,也将自己的特殊资源初始化了,而其他进程在访问特殊进程的特殊资源时,看到的是该资源在主进程初始化的值,这个值不原创 2012-06-08 16:18:37 · 282 阅读 · 0 评论 -
多线程信号返回测试结果
原创 2012-03-31 12:53:48 · 411 阅读 · 0 评论 -
linux下的压缩与解压
解压tar gz bz2 tgz zip等Linux下的各种压缩文件2009-05-12 11:00对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕。别个不说,单单就压缩文件为例,我们知道在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rar。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar原创 2012-03-13 17:19:43 · 317 阅读 · 0 评论 -
性能监控脚本
#!/bin/awk -fBEGIN{FS=":";mo_total=0;mt_total=0;mosr_total=0;mtsr_total=0; date="";hour_old="";min_old="";second_old="";print "-------------------------------------------------原创 2012-03-07 14:38:45 · 497 阅读 · 0 评论 -
在HP刀片上Solaris系统SHM共享内存缺陷
使用shm测试程序在x86和sparc上进行测试,下面的数据为分别使用vmstat与top的观测结果,附件里是测试程序。前提:shm预设申请接近2G内存,50进程无锁对共享内存写入信息。在x86机器上:1.未运行测试程序前的数据top:load averages: 0.14, 0.31, 0.16; up 0+00:03:33原创 2012-01-30 13:34:53 · 432 阅读 · 0 评论 -
对64位长整形赋值为原子操作
测试平台:sparc(Solaris )、x86(Solaris)、x86(Linux)#include #include #include #include #include #include #define G_THREAD_NUM 5void* add_main(void* arg);void* del_main(void* arg);void原创 2011-12-14 09:19:22 · 3314 阅读 · 2 评论 -
strace中文
参数说明: -c 统计每一系统调用的所执行的时间,次数和出错的次数等. -d 输出strace关于标准错误的调试信息. -f 跟踪由fork调用所产生的子进程. -ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号. -F 尝试跟踪vfork调用.在-f时,vfork不被跟踪. -h 输出简要的帮助信息.原创 2011-12-08 17:05:51 · 465 阅读 · 0 评论