- 博客(105)
- 资源 (4)
- 收藏
- 关注
原创 单线程读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
606
原创 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
2748
原创 多线程/多进程写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
2392
原创 单线程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
1192
转载 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
979
原创 手机尾号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
2619
原创 nginx-简介
nginx(发音"engine x")是俄罗斯软件工程师Igor Sysoev开发的免费开源web服务器软件。nginx于2004年发布,聚焦于高性能,高并发和低内存消耗问题。并且具有多种web服务器功能特性:负载均衡,缓存,访问控制,带宽控制,以及高效整合各种应用的能力,这些特性使nginx很适合于现代网站架构。目前,nginx已经是互联网上第二流行的开源web服务器软件。1 为什么
2015-02-10 09:43:58
859
原创 底层网络编程代码总结
/* * 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
830
原创 nginx-并发模型
nginx采用多进程模型处理并发请求,每个worker采用try_lock竞争accept_mutex,避免惊群现象。优点:编程简单,单进程处理请求。缺点:对连接数固定或较少的大数据量连接来说,性能略显不足。
2015-02-09 16:03:12
683
转载 高性能网络编程--陶辉
1 高性能网络编程1—accept建立连接编写服务器时,许多程序员习惯于使用高层次的组件、中间件(例如OO(面向对象)层层封装过的开源组件),相比于服务器的运行效率而言,他们更关注程序开发的效率,追求更快的完成项目功能点、希望应用代码完全不关心通讯细节。他们更喜欢在OO世界里,去实现某个接口、实现这个组件预定义的各种模式、设置组件参数来达到目的。学习复杂的通讯框架、底层细节,在习惯
2015-02-05 15:00:21
4155
原创 libxml2使用
Libxml2使用指南一、Libxml2介绍:Libxml2 是一个xml的c语言版的解析器,本来是为Gnome项目开发的工具,是一个基于MIT License的免费开源软件。它除了支持c语言版以外,还支持c++、PHP、Pascal、Ruby、Tcl等语言的绑定,能在Windows、Linux、Solaris、MacOsX等平台上运行。功能还是相当强大的,相信满足一般用户需求没有任何问题
2015-01-28 16:17:26
1147
原创 64位bitmap操作
#include #define set_bit1(x,y) (x|=(0x01L<<y))#define set_bit0(x,y) (x&=(~(0x01L<<y)))#define get_bit(x,y) (x&(0x01L<<y))int main(){ int pos = 31; unsigned long bitmap = 0xffffff
2015-01-26 16:46:33
1712
原创 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
581
转载 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
4518
转载 银行IT系统-整体架构
银行IT系统-整体架构1 网络结构1.1 中国国家金融通讯网(China National Financial NetWork):该系统使中央银行、各商业银行及其他金融机构连接在一起。 1.2 CNFN三层网络结构: 一级节点:国家处理中心(National Processing Center,NPC) 二级节点:城市处理中心(City Processing Center,
2014-12-03 15:01:06
9696
转载 三层以太网交换机基本原理及转发流程
三层以太网交换机基本原理及转发流程本文简要介绍了三层以太网交换机的二三层转发机制,主要目的是帮助读者进一步了解交换机的基本原理及转发流程,以期有利于更好的从事设备维护工作和建立于进一步学习的索引。三层以太网交换机的转发机制主要分为两个部分:二层转发和三层交换。1. 二层转发流程1.1. MAC地址介绍MAC地址是48 bit二进制的地址,如:00-e0-
2014-09-26 14:01:51
8635
1
原创 交换机原理
1. 接收网段上的所有数据帧。2. 利用接收数据帧中的源MAC地址来建立MAC地址表(源地址自学习),使用地址老化机制进行地址表维护。3. 在MAC地址表中查找数据帧中的目的MAC地址,如果找到就将该数据帧发送到相应的端口(不包括源端口)。4. 如果找不到,就向所有的端口发送(不包括源端口)。5. 向所有端口转发广播帧和多播帧(不包括源端口)。
2014-09-26 13:53:24
842
原创 链路层原始套接字编程-总结
1、链路层原始套接字创建方法:socket(PF_PACKET, SOCK_RAW, htons(protocol)),其中protocal参数为关心的协议类型。2、默认情况下网卡只处理目的地址是本机网卡地址的包,可通过设置混杂模式,使网卡将收到的所有包(包括组播和广播)都转发给操作系统。代码如下: struct ifreq ifr; strcpy(ifr.ifr_n
2014-09-10 13:51:44
5444
原创 链路层原始套接字编程-客户端
#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
1041
原创 链路层原始套接字编程-服务端
#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
1034
原创 char和short 给int赋值或与int比较时 需要特别注意
#include int main(){ int a; char c =0x81; a = c; printf("%x\n", a);}
2014-08-15 10:56:09
1081
原创 华为S9300交换机CFM和Y.1731配置
mep1:192.168.150.2 4/0/42mep2:192.168.240.253 3/0/46acsno syacsno888 删除配置:undo cfm enable 1. 基本配置[UPE1] cfm enable[UPE1] cfm md md1 level 1[UPE1-md-md] ma ma1[UPE1-md-md-ma-ma] ma
2014-08-05 13:17:27
3566
2
原创 以太网OAM(802.1ag和Y.1731)
以太网技术自诞生起,就以其简单易用和价格低廉的特点逐步成为局域网的主导技术。近年来,随着千兆、万兆以太网技术的相继应用,也促使网络运营商、设备制造商和标准化组织致力于将以太网技术向城域网和广域网领域推进。以太网最初为局域网而设计,由于局域网本身已具备较高的可靠性和稳定性,因此在设计以太网之初并未建立管理维护的机制。而相对于局域网,城域网和广域网在链路长度和网络规模上都迅速扩大,
2014-08-05 13:15:38
7129
2
转载 C调用C++库
C调用C++链接库: 1.编写C++代码,编写函数的时候,需要加入对C的接口,也就是extern “c" 2.由于C不能直接用"class.function”的形式调用函数,所以C++中需要为C写一个接口函数。例如本来要调用student类的talk函数,就另外写一个cfun(),专门建一个student类,并调用talk函数。而cfun()要有extern声明 3.
2014-07-29 10:02:00
1188
原创 C++类
1、为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符2、总是让base class拥有virtual destructor3、不要重新定义父类的非虚函数4、重载赋值操作符需要做自赋值判断5、建议不要将类的成员变量放在公共接口中所有成员函数的实现不要放在class声明中,即使函数体为空在类中,成员函数按照如下顺序声明:构造函数、析构函数、成员函数、操作符函数、其
2014-07-17 10:27:42
423
原创 MySQL数据库重新安装后报错解决方法
重新安装C:\Documents and Settings\All Users\Application Data\MySQL
2014-04-10 15:17:16
704
原创 oracle常用设置
set line 500;column column_name format a30; SQL>set colsep' '; //-域输出分隔符SQL>set echo off; //显示start启动的脚本中的每个sql命令,缺省为onSQL> set echo on //设置运行命令是是否显示语句SQL> set feedback
2014-02-08 14:42:04
626
原创 SQL编程规范
目 录目 录...01 范围... 32 术语和定义... 33 基本原则... 43.1 首先为人编写程序,其次才是计算机。... 43.2 保持代码的简明清晰,避免过分的编程技巧。... 43.3 关键字的大写或小写保持统一,字段的大写或小写也要保持统一...
2014-01-23 15:53:23
5124
原创 Linux程序开发经验总结
1. 进程和线程1.1. 进程进程终止有8种方式使进程终止,其中5种为正常终止,3种异常终止方式:1) 从main返回2) 调用exit3) 调用_exit或_Exit4) 最后一个线程从其启动例程返回5) 最后一个线程调用pthread_exit6) 调用abort7) 接到一个信号并终止8) 最后一个线程对取消请求作出响应
2014-01-23 15:03:27
5510
原创 Linux系统应用经验总结
1. 日志类1.1. 正常消息流程跟踪MO消息匹配流程3种消息类型:MO、MOSR、MO状态报告2个匹配过程: 1)3与5,匹配点在网关,3发送的fwd包中Msg_id字段表示匹配ID,5接收的fwd包中msg_content字段中带有Msg_id字段,用于匹配,格式请参考点对点互通协议。 2)2与7,匹配点在SMSC,5流程中的MO
2014-01-23 15:02:14
5590
原创 多进程框架
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
603
原创 链表查找算法-节约内存
#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
657
原创 截断数据类型
#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
552
原创 创建线程时参数传递技巧-用指针传值
//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
724
原创 ftok函数创建key重复
系统在同一台机器同一个磁盘的不同账户中使用时,出现ftok创建key时重复的现象,而通过ls -i命令查看,i-node结点值明显不一致,为什么还会出现重复呢,经过测试发现几个问题:1、ftok产生key时,组合了3个变量:st_dev、st_ino、proj_id;在Solaris系统上,取proj_id%0xff,st_dev后3位,st_ino后3位组成。st_dev:1
2012-09-18 13:43:49
1655
原创 strcpy问题
The strcpy() function copies string s2 to s1, including the terminating null character, stopping after the null charac- ter has been copied. The strncpy() function copies exactly n
2012-09-11 10:15:07
539
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人