自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (9)
  • 收藏
  • 关注

原创 技巧【1】

【1】do{}while(0)#define cerror(str, n) do{ perror(str); exit(n);}while(0)好处,主要是与if连用的时候,首先,要用{}扩起来,否则可能会出现下列情况:#define cerror(str,n) perror(str); exit(n);if(n>0)    cerror(str,n):于是替换以后变成

2013-05-30 20:30:56 606

原创 ubuntu11.10安装Lua

1、下载lua的源码包,地址如下,最新版本5.1.2。http://www.lua.org/ftp/lua-5.1.2.tar.gz2、下载libreadline相关支持。sudo apt-get install libreadline5sudo apt-get install libreadline-gplv2-dev3.make linuxsudo make i

2013-05-30 00:19:18 655

转载 Proxy源代码分析--谈谈如何学习linux网络编程

本文出自:http://www.china-pub.com 作者:李培源 (2001-08-10 12:00:00) Linux是一个可靠性非常高的操作系统,但是所有用过Linux的朋友都会感觉到,Linux 和Windows这样的"傻瓜"操作系统(这里丝毫没有贬低Windows的意思,相反这应该是 Windows的优点)相比,后者无疑在易操作性上更胜一筹。但是为什么又有那么多的

2013-05-29 09:54:12 844

原创 疯狂的bug【select -IO复用中】

select版本的回显服务,初期的bug是,客户端可以连接上服务器,但是客户端发送字符串过来以后,服务器的select却阻塞在那里,死活没反映。。。gdb调试查看了fd_set类型的值,也发现的确是有两个值的叠加的——一个是监听套接字,一个是刚刚连接上的客户套接字。这就奇怪了!直到看到 http://bbs.csdn.net/topics/230024080 上别人的提问,最后他说:解决了,原因是

2013-05-28 22:53:04 1171

转载 Linux线程池

转自:http://hi.baidu.com/boahegcrmdghots/item/f3ca1a3c2d47fcc52e8ec2e1一个Linux下C线程池的实现      什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比

2013-05-27 09:40:02 639

原创 地址转换

#include#include #include int main(int argc, char *argv[]){ char addr[26]; struct in_addr id; unsigned char *p; int i; if(argc==1) { strcpy(addr,"192.168.1.1"

2013-05-26 13:13:32 605

原创 回射服务器【1单进程】

服务器端:ser.c#include #include #include #include #include #include #include #include #include int main(){ struct sockaddr_in sad; int sfd; int cfd; sfd=socket(AF_INET

2013-05-24 21:54:08 603

原创 僵死进程总结

http://bbs.chinaunix.net/thread-820884-1-1.html   什么是僵死进程呢?就是儿子死了,父亲不去收尸,儿子就变成僵尸了。(1)父进程先结束,子进程后结束。父进程结束时,子进程被init收养,成为他的子进程。eg:#include #include #include int main(){ int p; if((p

2013-05-24 11:29:58 1649 1

原创 数组:奇数在前,偶数在后,要求顺序不变

不要求顺序:http://zhedahht.blog.163.com/blog/static/25411174200741295930898/要求顺序:http://blog.sina.com.cn/s/blog_5163a02d0101b6u6.html1.不要求顺序一个数组,如[3,5,2,4,6,8,9,32,1],有奇数有偶数,要求把所有奇数放在前面,偶数放在后

2013-05-22 22:41:11 2395

原创 linux文件系统

ext2 : 早期linux中常用的文件系统ext3 : ext2的升级版,带日志功能RAMFS : 内存文件系统,速度很快NFS : 网络文件系统,由SUN发明,主要用于远程文件共享MS-DOS : MS-DOS文件系统VFAT : Windows 95/98 操作系统采用的文件系统FAT : Windows XP 操作系统采用的文件系统NTFS : Windows

2013-05-21 21:12:21 564

原创 共享内存【1】

共享内存总结:   http://www.embedu.org/Column/Column250.htm用tmpfs的例子:  http://www.chinaunix.net/old_jh/4/243074.htmlrandisk写得很全: http://linux.chinaunix.net/techdoc/beginner/2008/01/29/977725.shtml性能测试:

2013-05-21 15:07:53 592

原创 open的UNBLOCK模式

#include #include #include #include int main(){ int f1,f2;int n=0; char p[34]; int h=0; f1=dup(0);//open(0,O_RDWR|O_CREAT|O_NONBLOCK,0666); while(h<10) { n=r

2013-05-21 13:15:05 618

原创 汉诺塔

#include #include typedef int T;#define NUM 4struct stack{ int size; int index; T *head;};int init(struct stack *p, int n);void destroy(struct stack *p);int get_size(struct stack *p);

2013-05-19 10:30:14 533

原创 美丽字符串

不计大小写,每个字母都有一个“美丽程度”,是1-26之间的数值,一一对应,具体字母与数字的对应关系未知,给定一个字符串,求其可能的最大美丽程度。统计频率,排序,频率大的分配26,第二大的分配25,。。。#include #include #include #include int bety(const char *str);int cmp(const void*p1,

2013-05-18 21:09:29 2374

原创 facebook题

#include #include #include #include double get(int iC, int iB, int iP);int main(){ int n; scanf("%d", &n); int *pi = (int*)malloc(n*sizeof(int)); int ind=0; int n1=n; while(n--) { int

2013-05-18 20:39:04 564

原创 信号总结

信号集:sigset_t每个进程有一个信号屏蔽字,想象成每个进程维护了这样一个sig_set的全局变量吧。在这个变量中被set的信号,如果发送给该进程,那么进程不会收到,信号会被阻塞,状态为pending(未决)。如果后来解除了pending,那么进程就会收到了。首先要对信号集变量进行设置:sigset_t sst;sigemptyset(&sst)sigfills

2013-05-18 15:25:24 720

原创 数组峰值

#include int findd(int *p, int a, int b);int main(){ int ar[] = {1,2,3,5,7,8,9,7,5,3,2,0}; int x = findd(ar, 0, sizeof(ar)/sizeof(int)-1); printf("p[%d] = %d\n", x, ar[x]); return 0

2013-05-17 22:27:28 1087

原创 实现整数加法

int addd(int a, int b){ if((b&a)==0)return a^b; else return addd(a^b, (a&b)<<1);}administrator@ubuntu:~/test/net/new$ ./t 5 7 5+7=12administrator@ubuntu:~/test/net/new$ ./t 5 795

2013-05-17 15:44:12 508

原创 简单socket【C/S,服务器收文件】

Server:等待连接,有连接进来的时候,就accept,新fork一个子进程,然后read,再将得到的buf存到getpid().txt,父进程继续accept。    Client:连接,然后传送指定文件到Server。Server:s.c #include #include #include #include #include #include #

2013-05-17 14:12:29 794

原创 缓冲

1.setbuf和setvbuf1.1 setbuf改变stdout的行为    标准输出通常是行缓冲的,也就是遇到\n或者缓冲区满时才执行IO:     #include #include int main(){//setbuf(stdout,NULL); printf("ASD");sleep(1);printf("__\n"); return 0;}执行的时

2013-05-15 01:11:58 669

原创 信号【1】ALRM

#include #include #include #include void myfunc(int i);int main(int argc, char *argv[]){ int ret1,ret2; if (argc>1) { if(atoi(argv[1])!=0) { if (si

2013-05-14 22:13:09 667

原创 总结 共享内存

http://tonybai.com/2005/09/23/apr-shmem/    匿名共享内存:【1】int N=1024; //大小char *p = mmap(NULL, N, PROT_READ|PROT_WRITE, MAP_ANON|MAP_SHARED,-1,0);p[0]='A';p[a]='B';...mummap(p,N);

2013-05-14 15:37:12 776

原创 linux多线程 & IPC【】open和shm_open

#include #include #include #include #include #include #include #include char *name = "test";int main(int args, char **argv){ char *p; int f; unlink(name); f = open(name, O_RDWR | O_CREAT|O_EXCL, 0666)

2013-05-14 14:27:12 1947

原创 linux多线程 & IPC【】system V匿名内存共享

在shmget函数中使用   IPC_PRIVATE的场合,发生在具有亲缘关系的进程间通信的场合。#include #include #include #include #include #include #include #include struct st{ sem_t mutex; int value;};int main(){ in

2013-05-14 13:32:30 831

原创 linux多线程 & IPC【12】System V 共享内存

System V的IPC包括System V消息队列,System V信号量和System共享内存。特征是使用key_t来标志,一般是一个32位的整数,正式说法是一个不小于32位的整数。    没有亲缘关系的进程之间需要约定好一个文件或目录名(反正目录也是文件),以及一个整数值,然后调用ftok()函数返回一个key_t。    key_t类型在中定义。    函数ftok原型为:

2013-05-13 22:13:04 843

原创 getopt函数的使用和实例

一。理论 在  “-a a_arg -b b_arg -c”中,选项:-a,-b,-c参数:a_arg,b_arg调用形式:getopt(argc, argv,":ab::c")找了一遍以后返回-1,因此最后总是会返回-1的。a:   选项a后面有参数,可以用一个或者多个空格隔开,也可以不用空格,紧跟着a。即   【-a  a_arg】       或者

2013-05-13 17:05:53 1062

原创 linux多线程 & IPC【11】《unix网络编程》的系统日志demo

上一篇自己写的基于共享内存的系统日志服务,有一个缺点就是槽满之后,客户端就阻塞在那里了。当然对于客户端来说,要紧的是去干正事,不是为了打印一行log神经病一样阻塞在这里。所以阻塞不是好的解决方案,应该:【1】分配较大的NMSG【2】服务器响应及时,这样即使消息多,也能很快处理完,不至于积累下来。【3】在槽满时,再有消息来的话,给出overflow    书本上就是用了overflo

2013-05-13 14:41:56 875

原创 linux多线程 & IPC【10】自己写一个系统日志服务

unix网络编程【13章 posix共享内存区】 中实现了一个简单的日志服务,使用共享内存实现了没有亲缘关系的进程间的通信。这个共享内存是采用内存映射文件的(用shm_open),匿名的共享内存实现有亲缘关系进程间的通信比较方便,没有亲缘关系的就不知道怎么实现了。    折腾了一个晚上加一个上午,终于整出来了。首先是头文件(mylog.h),给出了结构体的定义和一些宏定义:#ifnde

2013-05-13 11:25:48 903

原创 linux多线程【9】匿名内存映射

上一篇是创建文件,然后再映射到内存,再fork子进程,实现IPC。现在使用匿名内存映射(1)使用/dev/zero文件。(2)形式上没有文件。    先看第一种,由于/dev/zero本来已经存在,因此open的时候不需要第三个参数,第二个参数指定为O_RDWR即可。#include #include #include #include #include #inc

2013-05-12 20:28:30 2476

原创 linux多线程【8】mmap实现父子进程的共享内存通信,用信号量同步

1.创建文件。open,ftruncate2.将文件映射到内存。内存首地址存放一个sem_t实现进程的互斥。mmap,sem_init3.创建子进程。父子进程互斥地访问共享内存的内容。fork,sem_wait,sem_post4.取消映射。munmap由于需要同步或者互斥,因此需要sem_t,我们把他放在内存区的开头,那么真正可用的内存就是开头做一定偏移。维护一个指针,使

2013-05-12 17:31:51 3422

原创 linux多线程【7】mmap的使用

mmap将文件映射到内存中,然后用指针指向内存,就可以方便高效的操作了。   创建文件map_file,长度为256,映射到内存中,然后写入字符串,结束后用cat查看是否写入了。#include #include #include #include #include #include #include #include #include #include #

2013-05-12 16:39:44 3012

原创 linux多线程【6】单实例的进程-记录锁的使用

守护进程往往只维护一个实例,再次起一个进程时,检测到已经运行,就不会再运行了。这一点可以由记录锁来完成。#include #include #include #include #include #include #include #include #include #include #define LOCKFILE "/var/run/daemon.pid"#

2013-05-12 14:50:05 1053

原创 linux多线程【5】哲学家用餐-另一种思路

以上两篇的思路是:锁定左边的筷子,然后去锁定右边的筷子,要是失败,就把左边的筷子也释放掉。如果不这样的话,万一4个哲学家都已经锁定了左边的筷子,然后最后一个人也锁定了左边的筷子,最后每个人都不释放左边的筷子,而右边的筷子是别人的左边筷子。这不就死锁了吗!但是,如果有一个人是先锁定右边再锁定左边,那么:1:如果他的左边筷子被锁定,说明他的右边筷子已经锁定了,那就可以吃了,就不是死锁了。2:如

2013-05-10 11:39:37 797

原创 linux多线程【4】哲学家用餐-sem_t

ref:http://blog.csdn.net/acceptedxukai/article/details/8307247sem_t信号量,如果信号量取值为1,那么只能有01两种状态,那么不就跟mutex差不多吗。sem_wait和sem_trywait加锁。sem_post解锁。注意初始化的时候:sem_init(&st,0,1);中间的参数如果不是0,表示允许进程

2013-05-10 11:23:39 1135

原创 linux多线程【3】哲学家用餐-mutex实现

ref:http://blog.csdn.net/kongzhp/article/details/7487150    5跟筷子,5个哲学家,哲学家要吃饭,自然要两根筷子,这样就出现资源争用的情况。哲学家只能用左边和右边的筷子,两根筷子备齐才能吃饭!    使用mutex的话,就是每个筷子一个mutex,需要5个mutex,哲学家先lock左边的筷子,如果有

2013-05-10 11:00:02 1057

原创 linux 多线程【2】条件变量

条件变量:一个生产者,一个消费者,生产者将变量++,消费者将变量--,但是消费者只能在变量>0时才能--,生产者只能在变量//thread.c#include #include #include #include #include #include #include #include void *func1(void *);void *func2(void *);

2013-05-09 22:08:39 680

原创 linux多线程【1】demo

不使用多线程同步,对全局整数进行++和打印操作://thread.c#include #include #include #include #include #include #include #include void *func(void *);int g_a=0;pthread_mutex_t t1;int main(){ pthread_t pt1,pt

2013-05-09 20:02:59 641

libevent实例_包括安装文件和代码

libevent的helloworld实例,包括安装程序和代码

2013-06-07

AES加密源代码

AES加密的源代码。C++开发的。AES属于对称加密,是经典的加密方法

2011-12-20

相关向量机RVM工具箱

相关向量机 RVM 的MATLAB工具箱 原作者的网站上下载的

2011-12-20

相关向量机(RVM)论文6篇

原作者的网站上下的: A Hierarchical Latent Variable Model for Data Visualization.pdf Bayesian Image Super-Resolution.pdf Bayesian Inference_An Introduction to Principles and Practice in Machine Learning.pdf Fast Marginal Likehood Maximisation for Sparse Bayesian Models.pdf Mixtures of Probabilistic Principle Component Analysers.pdf Variational Relevance Vector Machine.pdf

2011-12-20

PartitionMagic80

很好用的磁盘分区软件,汉化的版本。如果有资源出现问题可以联系QQ978299005.

2010-12-01

C数值算法程序大全.rar

搞算法的可以看看~数字算法,学会很管用的

2010-10-30

国际大学生程序设计竞赛试题解析

国际大学生程序设计竞赛试题解析 代码很小,效果很炫,学习下!

2010-10-30

端口扫描软件eScanPort

扫描速度非常快,功能也很全~扫描本机或局域网内用户的端口

2010-07-05

XP实用技巧(快捷键、故障解决、优化攻略等)

常用的XP技巧,包括快捷键、漏洞、故障解决等。

2010-05-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除