自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 资源 (1)
  • 收藏
  • 关注

转载 linux中使用pthread_kill函数测试线程是否存活

转载自:http://blog.csdn.net/echoisland/article/details/6398081pthread_kill:别被名字吓到,pthread_kill可不是kill,而是向线程发送signal。还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数。int pthread_kill(pthread_t

2016-12-20 15:15:33 425

转载 使用 libevent 和 libev 提高网络应用性能

转载自:http://www.ibm.com/developerworks/cn/aix/library/au-libev/简介许多服务器部署(尤其是 web 服务器部署)面对的最大问题之一是必须能够处理大量连接。无论是通过构建基于云的服务来处理网络通信流,还是把应用程序分布在 IBM Amazon EC 实例上,还是为网站提供高性能组件,都需要能够处理大量并发连接。一个好例子是,web 应用程序最

2016-08-31 16:35:28 441

转载 Python中的上下文管理器

转载自:http://blog.jobbole.com/64175/1. 上下文管理器是什么?举个例子,你在写Python代码的时候经常将一系列操作放在一个语句块中:当某条件为真 – 执行这个语句块当某条件为真 – 循环执行这个语句块有时候我们需要在当程序在语句块中运行时保持某种状态,并且在离开语句块后结束这种状态。所以,事实上上下文管理器的任务是 – 代码块执行前准备,代码块执行后收拾。上下文管理

2016-08-30 11:29:45 373

转载 Redis配置文件redis.conf详解

转载自:H2EX » Redis配置文件redis.conf详解Redis.conf 配置文件详解# [Redis](http://yijiebuyi.com/category/redis.html) 配置文件# 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写)## 1k => 1000 bytes# 1kb => 1024 bytes

2016-08-17 10:34:40 323

转载 Linux 文件权限总结

转载自码农网在 Linux 中最基本的任务之一就是设置文件权限。理解它们是如何实现的是你进入 Linux 世界的第一步。如您所料,这一基本操作在类 UNIX 操作系统中大同小异。实际上,Linux 文件权限系统就直接取自于 UNIX 文件权限(甚至使用许多相同的工具)。但不要以为理解文件权限需要长时间的学习。事实上会很简单,让我们一起来看看你需要了解哪些内容以及如何使用它们。基础概念你要明白的第一件

2016-07-17 10:15:13 517

转载 SIGSEGV、SIGBUS错误及处理方法

转载自:http://blog.csdn.net/brace/article/details/1102422今天编程遇到了SIGSEGV错误,比较困惑,所以找了些资料,总结一下:(1)官方说法是: SIGSEGV --- Segment Fault. The possible cases of your encountering this error are: 1.buffer ove

2016-07-15 13:41:54 2497

转载 Linux 中的 EOF 到底是什么?

转载自:http://woshijpf.github.io/2016/07/07/Linux%E4%B8%AD%E7%9A%84EOF%E5%88%B0%E5%BA%95%E6%98%AF%E4%BB%80%E4%B9%88/EOF 的定义EOF 是 end of file 的缩写,表示”文字流”(stream)的结尾。这里的”文字流”,可以是文件(file),也可以是标准输入(stdin)。以前在

2016-07-09 11:33:17 7050

原创 选项解析函数getopt()和getopt_long()

系统执行一个C语言程序总是从main()函数开始。在标准的C程序中,main()函数有两个参数,它们代表程序的命令行参数,原型如下: int main(int argc, char *argv[]);argc是命令行参数的个数,argv是C字符串的数组,它的元素是单个的命令行参数字符串。执行程序名是第一个字符串,而所有参数之后总是一个NULL指针:argv[argc]总是NULL。 比如

2016-07-05 12:49:41 375

原创 用GDB调试程序

本文总结自《用GDB调试程序》一文和网上的一些博客文章,其中加上了自己的一些注释GDB概述GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四

2016-06-23 22:34:05 8372 1

原创 高性能I/O框架库Libevent源码学习

本文总结自《Linux高性能服务器编程》和张亮写的《Libevent源码深度剖析》及其博客http://my.csdn.net/sparkliang需要注意的是,张亮的pdf里基于的是低版本的Libevent源代码,有一些细节跟更新后的版本有出入,但是大体思路都一致。Reactor模式Reator:反应堆”,是一种事件驱动机制。应用程序提供相应的接口(“回调函数”)并注册到Reactor上,当相应的

2016-06-09 15:41:27 8040

原创 epoll的LT、ET模式和EPOLLONESHOT事件实例介绍

LT、ET模式LT(Level Trigger)电平触发模式 -> 默认的, 相当于效率较高的pollepoll_wait检测到事件发生后通知了应用程序 -> 应用程序可以不立即处理该事件。下一次调用epoll_wait时,还会再次向应用程序通知此事件,直到该事件被处理ET(Edge Trigger)边沿触发模式 epoll的高效工作模式(需向epoll内核事件表中注册一fd上的EPOLLET事

2016-05-25 19:39:54 2006 1

原创 I/O复用(select、poll、epoll模型)

I/O复用:内核一旦发现进程指定的一个/多个I/O条件就绪(输入已准备好被读取/描述符已能承接更多的输出),它就通知进程。该功能使得程序能同时监听多个文件描述符客户端:同时处理多个socket,用户输入和网络连接TCP服务器:同时处理监听socket、连接socket服务器:同时处理TCP请求、UDP请求;同时监听多个端口或处理多种服务Linux下实现I/O复用主要系统调用:select、po

2016-05-24 22:20:29 373

转载 Linux下undefined reference to ‘pthread_create’问题解决

接触了Linux系统编程中的线程编程模块,可gcc sample.c(习惯把书上的sample代码写进sample.c文件中)出现“undefined reference to ‘pthread_create’”,所有关于线程的函数都会有此错误,导致无法编译通过。问题的原因:pthread不是Linux下的默认的库,也就是在链接的时候,无法找到phread库中各函数的入口地址,于是链接会失

2016-05-24 12:54:14 476

转载 Linux的进程优先级NI和PR有什么区别?

转载自:http://www.yunweipai.com/archives/7308.html为什么要有进程优先级?这似乎不用过多的解释,毕竟自从多任务操作系统诞生以来,进程执行占用cpu的能力就是一个必须要可以人为控制的事情。因为有的进程相对重要,而有的进程则没那么重要。进程优先级起作用的方式从发明以来基本没有什么变化,无论是只有一个cpu的时代,还是多核cpu时代,都是通过控制进程占用cpu时间

2016-05-23 17:28:45 2405

原创 高级I/O函数(writev、senfile、dup、mmap、splice、tee)

本文总结自《Linux高性能服务器编程》中第六章pipe#include <unistd.h>int pipe(int fd[2]); //创建一管道,用于进程间通信往fd[1]写入数据,从fd[0]读出 另外:socket的基础API中有一个创建双向管道的方法:#include <sys/socket.h>int socketpair(int domain, int type, int p

2016-05-14 18:18:33 515

翻译 DBDB: Dog Bed Database学习笔记

原英文链接:http://aosabook.org/en/500L/dbdb-dog-bed-database.html 这里简要写下自己学习的笔记(基本按照翻译的顺序一步步写下来)简介DBDB(Dog Bed Database)是一个实现了简单的键值类数据库的Python库。将键值关系存储到磁盘上,以备后续取回。 DBDB的目的在于当机器崩溃或者出错也能保留数据,避免一次性全在RAM上保存数据

2016-04-21 17:29:44 1607

转载 Python生成器详解(从Iterable,Iterator知Generator,Yield)

转载自:http://kissg.me/2016/04/09/python-generator-yield/要理解generator,我们先从迭代(iteration)与迭代器(iterator)讲起.当然,本文的重点是generator,iteration与iterator的知识将点到即止.Iteration,Iterator迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每

2016-04-14 21:38:03 626

转载 Python 线程与协程

转载自:http://blog.rainy.im/2016/04/07/python-thread-and-coroutine/线程要说到线程(Thread)与协程(Coroutine)似乎总是需要从并行(Parallelism)与并发(Concurrency)谈起,关于并行与并发的问题,Rob Pike 用 Golang 小地鼠烧书的例子给出了非常生动形象的说明。简单来说并行就是我们现实世界运行的

2016-04-14 18:45:48 299

转载 Python 3.5 协程究竟是个啥

转载自:http://blog.rainy.im/2016/03/10/how-the-heck-does-async-await-work-in-python-3-5/作为 Python 核心开发者之一,让我很想了解这门语言是如何运作的。我发现总有一些阴暗的角落我对其中错综复杂的细节不是很清楚,但是为了能够有助于 Python 的一些问题和其整体设计,我觉得我应该试着去理解 Python 的核心语

2016-04-14 17:35:48 747 1

原创 基于链表法的Hash算法简易实现

因项目需要,为了查找更快,通过输入pt,port两个数字,读取与之对应的Cos。Hash算法的精髓在于hash函数的设计,在此,我只简单地设计实现了一下。同时针对传入不同值得到相同的key,通过链表法解决:#include "nl_common.h" //自己项目里的.h文件typedef struct _node{ U8 pt; U16 port; U8 Co

2016-04-01 15:53:27 517

原创 在内核中C语言实现htons()函数

Htons():【摘自百度百科】htons是将整型变量从主机字节顺序转变成网络字节顺序, 就是整数在地址空间存储方式变为:高位字节存放在内存的低地址处。网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释,网络字节顺序采用big-endian排序(大尾顺序)方式。因为项目中需要,设定例如来自端口号为9877

2016-04-01 15:32:45 3128

原创 《Python核心编程》读书笔记—正则表达式

正则表达式(RE):由字符和特殊符号组成的字符串常见的符号和字符记号 说明 样例literal 匹配字符串的值 foo rel1 **|** rel2 匹配正则表达式rel1或rel2

2016-03-27 23:28:02 251

原创 《Python核心编程》读书笔记(二)

条件和循环>>> smaller = x if x < y else y使用映射对象(eg 字典)最大的好处:搜索操作比if-elif-else语类/for循环这样的序列查找快很多for:for循环:访问一个可迭代对象中的所有元素,并在所有条目都处理后结束循环 当迭代字符串时:迭代变量只会包含一个字符(长度为1的字符串)通过迭代项迭代:>>>nameList = ['Walter', 'Nic

2016-03-25 21:54:52 943

原创 《Python核心编程》读书笔记(一)

谨以此博文记录自己初次学习Python的知识点,以下笔记均来自于学习《Python核心编程(第二版)》的读书笔记。Python基础:字符串:myString = ‘Hello world’print : 语句调用str() 函数显示对象,交互式解释器调用repr()函数显示对象 print:“%s is number %d” % (“Python”, 1) # “” 与”均可以

2016-03-20 21:14:19 579

原创 ipython notebook 修改默认工作路径的方法

打开 ipython_notebook_config.py这个文件。地址可以通过命令行:ipython profiile create 得到修改文件中最后一行为:c.NotebookApp.notebook_dir = u‘。。。’ #。。。为你要修改为的路径,同时把注释符#去掉

2016-03-19 22:25:44 1232

转载 python模块和类在import上的区别

转载自:http://dudong0726.iteye.com/blog/12269071、类属于模块的一部分。当我们要建立一个类时,通常我们新建一个py文件,例如新建立cn.py,这个cn便成为我们的模块。2、然后在cn里面建立自己的类:'''Created on 2011-11-1@author: dudong0726'''class Person:

2016-03-19 22:18:46 355

转载 Linux系统常用Shell命令:文件查看与查找

转载自:http://www.nowamagic.net/academy/detail/65130212**输出和查看** echo命令:显示输入内容echo '内容' #输入什么就显示什么echo '内容' >>指定位置文件 #将内容追加到文件中[root@nowamagic ~]# echo 'welcome to nowamagic'welcome to nowamagiccat命令:

2016-03-11 10:10:05 1117

原创 输入/输出函数

错误报告 void perror(char const *message);perror函数打印出这个字符串,后面跟一个分号和一个空格,然后打印出一条用于解释errno当前错误代码的信息。2.终止执行void exit(int status);定义于stdlib.h,status返回给操作系统。预定义符号EXIT_SUCCESS, EXIT_FAILURE分别提示程序的终止是成功还是失败。

2016-02-03 13:47:01 412

原创 《C和指针》摘录(二)

数组int b[10]; b是一个指针常量(值为第一个元素的地址,类型取决于数组元素的类型),而不是指针变量,不可被修改。 只有两种场合下,数组名不用指针常量来表示:当数组名作为sizeof操作符的操作数:返回整个数组的长度,而不是指向数组的指针的长度当数组名作为单目操作符&的操作数:取一个数组名的地址 = 指向数组的指针,而不是一个指向某个指针常量值的指针。int a[10];int *

2016-01-30 13:40:57 298

原创 《C和指针》摘录(一)

以下均为个人看了《C和指针》Reek著 人民邮电出版社后将之前不清楚或觉得需要强调的摘抄的:预处理指令: 如下均为预处理指令:#include <stdio.h>#include <string.h>#define MAX_COLS 20预处理指令(preprocessor directives)由预处理器(preprocessor)解释,预处理器读入源代码,根据预处理指令对其进行修改,然后把

2016-01-29 14:10:29 469

原创 Tinyhttpd源码简析并简单测试

Tinyhttpd仅有五百多行,实现了简单的http sever。通过对其开源代码的研究,可以熟悉linux网络编程和http协议。按照tinyhttpd代码执行过程,简单分析下其整个流程:首先是下边这块socket编程建立客户端与服务器之间连接的,简单略过 server_sock = socket(PF_INET, SOCK_STREAM, 0); bind();bind函数的参数sockad

2015-12-23 10:13:33 2427 2

原创 Tinyhttpd源码简析

按照tinyhttpd代码执行过程,简单分析下其整个流程:首先是下边这块socket编程建立客户端与服务器之间连接的,简单略过server_sock = socket(PF_INET, SOCK_STREAM, 0);bind();

2015-12-22 22:56:52 127 1

转载 stat函数(fstat和lstat函数)

转载自:http://www.cnblogs.com/hnrainll/archive/2011/05/11/2043361.html表头文件:    #include              #include 定义函数:    int stat(const char *file_name, struct stat *buf);函数说明:    通过文件名filename

2015-12-21 21:05:52 471

原创 C语言isspace()函数:判断字符是否为空白字符

头文件:#include 定义函数:int isspace(int c);函数说明:检查参数c是否为空格字符,也就是判断是否为空格(' ')、定位字符(' \t ')、CR(' \r ')、换行(' \n ')、垂直定位字符(' \v ')或翻页(' \f ')的情况。返回值:若参数c 为空白字符,则返回非 0,否则返回 0。附加说明:此为宏定义,非真正函数。

2015-12-18 14:31:09 1961

转载 HTTP协议的头信息详解

转载自:http://www.cnblogs.com/li0803/archive/2008/11/04/1324747.html通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可 选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:

2015-12-17 11:37:30 274

转载 socketpair理解

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://liulixiaoyao.blog.51cto.com/1361095/533469今天跟人谈到socketpair的问题,晚上回来写了个程序验证下自己的猜测!     先说说我的理解:socketpair创建了一对无名的套接字描述符(只能在AF_UNI

2015-12-15 20:34:13 270

转载 对char **argv的理解(多级指针)

指向指针的指针在C语言的入口main函数中,有一个**argv参数,指明命令行参数,一般写法是这样:int main(int argc, char **argv){ /* * code here. */}这个**argv,是一个指向指针的指针,用来将命令行参数保存下来,比如,输入一条命令:prog -c -v 200 **a

2015-12-10 10:57:56 1569

原创 80211速率控制的研究

一、将速率自适应调整为固定的速率来发送

2015-11-30 11:27:37 1295

转载 文件的输入输出函数

一. 标准文件函数标准文件函数主要包括文件的打开、关闭、读和写等函数。1、文件的打开和关闭任何一个文件在使用之前和使用之后, 必须要进行打开和关闭, 这是因为操作系统对于同时打开的文件数目是有限制的, DOS操作系统中, 可以在DEVICE .SYS中定义允许同时打开的文件数n(用files=n定义)。其中n 为可同时打开的文件数, 一般n<=20。因此在使用文件前应打开文件, 才可对其中的

2015-11-28 11:13:51 464

原创 STDIN_FILENO与stdin 的区别

区别1:数据类型不同stdin类型为 FILE*,属于标准I/O,STDIN_FILENO类型为 int,文件描述符,是非负整数(如下),属于没有buffer的I/O,直接调用系统调用#define STDIN_FILENO 0 /* Standard input. */#define STDOUT_FILENO 1 /* Standard output. */#define ST

2015-11-23 21:50:28 445

Linux Wi-Fi open source drivers-mac80211, ath9k/ath5k

wifi协议的整个mac层到ath层到硬件的普通数据和beacon帧的接收、发送过程

2015-09-22

空空如也

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

TA关注的人

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