功夫Panda

记录一些遇到的问题

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2012年6月13日

摘要: 原文链接:http://jakielong.iteye.com/blog/7716631. 用户态和内核态的概念区别究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子:1)例子C代码voidtestfork(){if(0==fork()){printf(“createnewprocesssuccess!\n”);}printf(“testforkok\n”);}这段代码很简单,从功能的角度来看,就是实际执行了一个fork(),生成一个新的进程,从逻辑的角度 阅读全文
posted @ 2012-06-13 15:12 功夫Panda 阅读(470) 评论(0) 推荐(0) 编辑

2012年5月17日

摘要: Linux下进程重命名的方法:使用系统函数prctl(),声明如下:#include <sys/prctl.h>int prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5);具体用法请参考http://www.kernel.org/doc/man-pages/online/pages/man2/prctl.2.html进程重命名代码:prctl(PR_SET_NAME, “process_name”, NULL, NULL, NULL);第一 阅读全文
posted @ 2012-05-17 20:27 功夫Panda 阅读(7672) 评论(0) 推荐(0) 编辑

2012年4月11日

摘要: void setbuf(FILE *stream, char *buf);为流设置一个缓冲区,当缓冲区被填满或调用fflush,缓冲区中的数据写到流中如果buf设置为NULL,表示无缓冲区 阅读全文
posted @ 2012-04-11 13:14 功夫Panda 阅读(561) 评论(0) 推荐(0) 编辑

2012年3月31日

摘要: Http Server Push是一种推送技术,服务器主动向浏览器发送数据。1. 下载安装1) 下载源代码包Nginx:http://nginx.org/Nginx Http Push Module:http://pushmodule.slact.net/2) 解压缩tar zxvf nginx-1.0.14.tar.gztar zxvf nginx_http_push_module-0.692.tar.gz3) 编译安装编译Nginx,configure指定待添加模块的路径./configure --add-module=path/to/nginx_http_push_module ...m 阅读全文
posted @ 2012-03-31 11:16 功夫Panda 阅读(10182) 评论(0) 推荐(0) 编辑

2012年3月29日

摘要: Linux下tcp连接断开的时候调用close()函数,有优雅断开和强制断开两种方式。那么如何设置断开连接的方式呢?是通过设置socket描述符一个linger结构体属性。linger结构体数据结构如下:#include <arpa/inet.h>struct linger { int l_onoff; int l_linger;};三种断开方式:1. l_onoff = 0; l_linger忽略close()立刻返回,底层会将未发送完的数据发送完成后再释放资源,即优雅退出。2. l_onoff != 0; l_linger = 0;close()立刻返回,但不会发送未发送完成的 阅读全文
posted @ 2012-03-29 10:59 功夫Panda 阅读(9304) 评论(3) 推荐(0) 编辑

2012年3月28日

摘要: 看到哪就写到哪,暂时比较乱,会定期整理,Memcached 1.4.131.slabsmemcached维护一个slabs数组,每个slabs的内存长度固定(即item内存上限),slabs内部实际上是一个item链表,同一slabs内的item大小相等,而slabs之间的item大小是线性增长的,增长因子factor(其值大于1,默认是1.25)item长度(字节)是8的整数倍,有余则补全slabs[0]: {[],[],[],[],[],[],[],[],[],[],[] }slabs[1]: {[ ],[ ],[ ],[ ],[ ],[ ],[ ],[ ] }slabs[2]: ... 阅读全文
posted @ 2012-03-28 16:52 功夫Panda 阅读(220) 评论(0) 推荐(0) 编辑

2012年3月26日

摘要: 假如程序命令行启动时,需要指定一系列参数,那么,getopt()与getopt_long()是你的不二选择。作为曾经还在手写的孩纸,我发现这个之后,泪流满面。。1. intgetopt(intargc,char*constargv[],constchar*optstring)若选项在optstring中,返回选项字符,否则返回-1;与该选项对应的参数保存在变量optarg中包含在unistd.h,argc和argv与main(int argc, char *argv[])的参数相对应,optstring是选项字符集,表现为在启动命令行中'-'后面的首个字符,例如:ls -l - 阅读全文
posted @ 2012-03-26 12:08 功夫Panda 阅读(5111) 评论(0) 推荐(0) 编辑

2012年3月23日

摘要: 目前遇到一个问题:多个进程对同一个文件进行写操作,如何避免冲突。研究了一下,做个小结。对于多进程写文件,主要有以下两种处理方式:1.类似于Linux日志文件服务启动一个logger进程,其他进程向logger发消息,即把数据发送给logger,由logger来写文件,这种方法最安全,但是实现上相对复杂2.采用文件锁对当前读写文件进行加锁处理,简单说下两种加锁方式:flock():文件级别的锁,针对整个文件进行加锁fcntl()函数:段级别的锁,能够针对文件的某个部分进行加锁另外,对于读写相对不很频繁,每次写入数据量比较小的这种情况,不加锁也可以接受,但打开文件操作时,必须启用O_APPEND选 阅读全文
posted @ 2012-03-23 17:06 功夫Panda 阅读(11792) 评论(0) 推荐(1) 编辑

摘要: 2月份之前,iPhone官网货源不是很足,所以写了个提醒脚本,定时刷新页面,条件符合则发送邮件提醒,第一次用Python干了点事,Python的简洁、开发效率、丰富的库,给我留下很深印象 1 #!/usr/bin/python 2 #-*- coding:utf-8 -*- 3 #import sys 4 import httplib 5 import smtplib 6 import time 7 8 9 #read mailing list from specified file 10 def read_mailing_list(filename): 11 m... 阅读全文
posted @ 2012-03-23 12:31 功夫Panda 阅读(897) 评论(0) 推荐(0) 编辑

2012年2月24日

摘要: 最近接触了HTML5中的websocket,下载了一个C实现的websocket库,但是其MD5算法实现中,涉及到AVR相关内容,编译时缺少头文件,而且需要交叉编译,我不是很清楚,于是乎,参照相关资料,实现了MD5算法。由于我要处理的是字符串,长度较小,而且是以byte为单位,因此实现中并未以bit作为基本单位,同时内部对输入数据进行了拷贝,不适合处理大型文件。md5.h/* * summary: MD5 * author: caosiyang * email: csy3228@gmail.com */#ifndef __MD5_H__#define __MD5_H__#include < 阅读全文
posted @ 2012-02-24 11:40 功夫Panda 阅读(1161) 评论(0) 推荐(0) 编辑