- 博客(316)
- 资源 (7)
- 收藏
- 关注
原创 libevent2.0源码学习三:对网络模型的(EPOLL)的封装
Libevent的核心是事件驱动、同步非阻塞,为了达到这一目标,必须采用系统提供的I/O多路复用技术,而这些在Windows、Linux、Unix等不同平台上却各有不同,所以,libevent对系统底层的网络模型作了一层封装,下面我们就来看一下。
2014-02-19 15:34:10
4634
原创 libevent2.0源码学习二:通用数据结构
本来想分析一下libevent实现的链表,队列,最小椎,哈希表这三个数据结构的,后来发现网上已经有人写过分析了,我就不重要造轮子啦。上链接:1:TAILQ队列(compat/sys/queue.h):http://bachmozart.iteye.com/blog/2928362:最小堆(minheap-internal.h):http://www.cppblog.com/kevi
2014-02-18 15:59:40
2209
原创 libevent2.0源码学习一:前言
开始分析之前的废话使用libevent 2.0.21-stable(这个系列的分析也是基于这个版本的)也有一段时间了,最近心血来潮去读了它的源码。顺便也写一下分析吧,方便以后查看,也利于别人学习和交流。
2014-02-18 15:51:47
2181
转载 linux更改执行进程名称
前几天网上搜索如何更改执行进程的进程名称,并没有得到一个好的答案.刚刚阅读nginx的源码,发现这样一种解决方案,记录之:网上说的比较多的是直接更改argv[0],但是如上图中所示,nginx中指出,必须将argv[1]置为NULL才行,而且要注意,系统给argv[0]提供的空间可能不足以存储你所要求的新title,解决方案是重新给环境变量申请内存区域,然后将环境变量复制过去(en
2014-01-24 12:45:17
1972
1
转载 Eclipse快捷键 10个最有用的快捷键
Eclipse中10个最有用的快捷键组合 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合。通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升。 1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了。这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个
2014-01-21 14:06:39
882
原创 LINUX时间同步
1. 安装ntpdate工具# sudo apt-get install ntpdate2. 设置系统时间与网络时间同步# ntpdate cn.pool.ntp.org3. 将系统时间写入硬件时间# hwclock --systohc
2014-01-21 09:27:15
1098
转载 Linux使用eclipse编译,调试Nginx模块
1.进入nginx 源码目录/home/song/nginx-1.3.9/命令行执行(最简单的参数,配置安装目录) 代码如下复制代码a>./configure –prefix=/home/song/test_nginxb>makec>make installnginx就安装在了/home/song/test_n
2014-01-21 09:18:05
1767
转载 在C/C++程序中打印当前函数调用栈
前几天帮同事跟踪的一个程序莫名退出,没有core dump(当然ulimit是打开的)的问题。我们知道,正常情况下,如果程序因为某种异常条件退出的话,应该会产生core dump,而如果程序正常退出的话,应该是直接或者间接的调用了exit()相关的函数。基于这个事实,我想到了这样一个办法,在程序开始时,通过系统提供的atexit(),向系统注册一个回调函数,在程序调用exit()退出的时候,这个回
2014-01-07 09:52:14
1703
转载 Linux Mint 的国内软件源(支持 Linux Mint 13/14/15)
这个 Linux Mint 的国内软件源是由开源中国架设的,源的地址:http://mirrors.oschina.net/linuxmint/使用方式:首先,备份软件源文件sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup复制代码Linux Mint推荐使用Software Source
2014-01-02 22:37:25
7870
原创 用libevent实现一个小小的HTTP SERVER
如题,先上代码://http_server.c#include #include #include #include #include #define PORT 8080#define SERVER_MARK "mytest http server 0.1"void http_handle(struct evhttp_request *req, void *arg);i
2013-12-27 11:34:24
3192
转载 4年技术经验
从毕业开始到现在技术已经做了4年了。4年时间,从一个创业MIS型公司的小小程序员混到了现在的互联网企业的技术型PM(其实个人觉得自己应该被称为高级工程师,或者厚着脸皮的话称为“架构师”也行)。中间的道路虽然也是磕磕绊绊,当庆幸的是还总算是爬过来了。 其实要说有什么大的经验也算不上,只能说跌爬滚打了4年时间,再怎么不长记性,忘乎所以,长了伤疤忘了疼,但是疤痕总归要留下一点?!只能
2013-12-20 08:58:11
1331
1
原创 nginx队列模块的分析和使用
nginx队列模块的设计挺精妙的,也算是用一个C语言实现泛型编译的典型例子了,我将其独立出来,写上注释和测试例子,方便以后查看。
2013-12-16 15:14:01
2333
原创 FastCgi与PHP-fpm之间的关系
提问:我在网上查fastcgi与php-fpm的关系,查了快一周了,基本看了个遍,真是众说纷纭,没一个权威性的定义。网上有的说,fastcgi是一个协议,php-fpm实现了这个协议; 有的说,php-fpm是fastcgi进程的管理器,用来管理fastcgi进程的; 有的说,php-fpm是php内核的一个补丁; 有的说,修改了php.ini配置文件后,没办法平滑重启,所以就诞生
2013-12-06 14:27:52
2931
转载 Nginx模块开发入门
前言Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%。与Apache相比,Nginx在高并发情况下具有巨大的性能优势。Nginx属于典型的微内核设计,其内核非常简洁和优雅,同时具有非常高的可扩展性。Nginx最初仅仅主要被用于做反向代理,后来随着HTTP核心的成熟和各种HTT
2013-12-02 11:27:14
1553
转载 MySQL执行计划解读
Explain语法EXPLAIN SELECT ……变体:1. EXPLAIN EXTENDED SELECT ……将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2. EXPLAIN PARTITIONS SELECT ……用于分区表的EXPLAIN执行计划包含的信息 id
2013-11-26 16:05:17
1023
原创 redis网络事件框架的使用
redis封装了一个小型网络库供自己使用,这个网络库只有几百行代码,却基本实现了一个高效的异步网络事件框架,而且与其他redis模块相对独立,故我将其独立出来,方便以后复用。与著名的libevent相比,它代码精简,只实现了最基本的功能,而且没有用上什么高深的技术,十分适合我们学习和借鉴。 以下这个程序实现了一个简单的回显服务器,并且每秒钟在控制台输出一句话。它简单地演示了redis网络模块的使用。 这个程序由6个源文件组成,ae.h, ae.c, ae_epoll.c, anet.h, anet.c
2013-11-25 17:33:21
3200
1
原创 C++:简单的二维数组模板类
这是我自己封闭的简单的二维数组模板类。欢迎大家试用我用它来代替二维数组或二维vector(二维数组容易出错,二维vector效率太低)
2013-11-19 18:09:04
5176
转载 一个简单的makefile示例及其注释
相信在unix下编程的没有不知道makefile的,刚开始学习unix平台下的东西,了解了下makefile的制作,觉得有点东西可以记录下。 下面是一个极其简单的例子:现在我要编译一个Hello world,需要如下三个文件: 1. print.h #include void printhello(); 2. print.c
2013-11-19 17:26:04
1290
1
转载 Linux中C语言open函数打开或创建文件详细讲解
头文件:#include #include #include 函数原型:int open( const char * pathname, int flags);int open( const char * pathname,int flags, mode_t mode);作用:以各种方式打开文件返回值:返回打开的文件句柄,-1 打开失败函数说明 参数pa
2013-08-28 13:53:06
10535
转载 移民就移民了,别拉祖国来垫背
发现人的目光可以完全被锻造,并且目光被颠倒的人自身丝毫意识不到,是源于一桩小事。那年在巴黎凡尔赛门的一个展会上,我遇到来自德国的一位华商,浙江青田人,生意做得相当大,雇了好几个工,都是大陆过去的年轻人。其中一位金融专业毕业的硕士生与我搭起话来。得悉小伙子的专业和文凭,见他做着高中文凭都不需要的活,我便问他为什么。他说毕业后想留在德国,但找不到专业对口的工作,只能将就这份活。说着背对老板,脸上露出不
2013-07-23 12:54:04
1671
2
转载 Winsock入门编程示例代码
Winsock入门,socket编程,网络 客户端代码:[cpp] view plaincopy#include #include #include #pragma comment(lib,"Ws2_32.lib") #define BUFFER_SIZE 50 /*客户端代码
2013-07-22 09:37:48
2417
原创 int, double, string的转换函数
这几个函数还是挺常用的,在这里记录一下,以后要用的时候就不用重新写啦。#include #include #include #include #include using namespace std;class CommonTool{public: static int CoverStringToInt(const string &value); static strin
2013-07-15 10:55:44
1709
1
转载 glog功能介绍
本文是根据自己的理解翻译组织了glog的manual,鉴于自身的理解能力和英语水平,可能存在谬误,欢迎大家指出!英文原文见http://google-glog.googlecode.com/svn/trunk/doc/glog.html 1. 概述 Google glog是一个基于程序级记录日志信息的c++库,编程使用方式与c++的stream操作类似,例:
2013-07-06 16:26:20
1758
转载 Linux top 命令详解
查看多核CPU命令 mpstat -P ALL 和 sar -P ALL 说明:sar -P ALL > aaa.txt 重定向输出内容到文件 aaa.txt top命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解。本文
2013-07-06 14:31:35
1213
转载 linux下获取程序当前目录绝对路径
1、Shell版#获取当前脚本所在绝对路径 cur_dir=$(cd "$(dirname "$0")"; pwd) 2、C语言版 方法一:用realpath函数。这种方法用于开机启动程序获取自身目录会出错。char current_absolute_path[MAX_SIZE]; //获取当前目录绝对路径 if (NULL == realpath("./", c
2013-06-28 17:41:56
6218
转载 log4cplus学习笔记
(一)log4cplus是C++编写的开源日志系统,功能很全面,用到自己开发的工程中会比较专业的,本文介绍了log4cplus基本概念,以及如何安装,配置。 ### 简介 ###log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统.受Apache Software License保护。作者是Tad E. Smith。log4cplus具有线程安全、灵活、以
2013-06-20 11:30:33
2401
转载 为什么要探索宇宙(献给那些质疑中国载人航天的人们)
1970年,赞比亚修女 Mary Jucunda 给 Ernst Stuhlinger 博士写了一封信,他因在火星之旅工程中的原创性研究,成为 NASA(美国航空航天局)Marshall 太空航行中心的科学副总监。信中,Mary Jucunda 修女问道:目前地球上还有这么多小孩子吃不上饭,他怎么能舍得为远在火星的项目花费数十亿美元。Stuhlinger 很快给Jucunda 修女回了信,
2013-06-14 21:38:56
2170
转载 UML基础
本教程参考“大话设计模式”,作者:程杰 下面我们来详细分解:动物矩形框:代表一个类Class,类图分为三层:第一层,显示类的名称,如果是抽象类,则就用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是行为。注意前面的符号,‘+’表示public,‘-’表示private,‘#’表示protected。
2013-06-07 18:04:56
1268
转载 centos下编译php扩展
新装了centos 6.2,用yum安装的php,发现少了mbstring、mcrypt扩展,可是在centos的repos里不再包括mcrypt的源文件,于是1、下载php-5.3.11.tar.gz,找到ext/mcrypt,用phpize来进行扩展,发现phpize不能用;2、rpm -q --whatprovides /usr/bin/phpize找出需要安装php-devel,
2013-06-07 17:02:03
2660
转载 网络并发 工作经验总结(2W/S级别吞吐)
协议设计原则:第一条 使用文本协议, 尽量使用http协议;(文本协议利于调试和测试,也利于脚本使用, http协议成熟,比较多工具支持)第二条 如果效率成为问题,可以在实现了文本协议之后,支持二进制协议;(这样程序的BUG可以用文本协议及早发现,后来调试也更方便);第三条 选择二进制协议时(protocal_buffer, memcache协议, MessagePack)
2013-06-07 14:11:07
1825
原创 用libevent实现简易的telnet
我承认这篇文章有点标题党,呵呵。其实就是一个能和服务器建立全双工通信的客户端而已,用网络库libevent实现。从这里也可以看出,同样的功能,分别用epoll和libevent来比较,从代码量和代码清晰度来说,libevent完胜,呵呵。上代码:#include #include #include #include #include #include #i
2013-06-07 13:56:10
2757
原创 用epoll实现简易的telnet
我承认这篇文章有点标题党,呵呵。其实就是一个能和服务器建立全双工通信的客户端而已,用epoll机制实现。上代码:#include #include #include #include #include #include #include #include //注意,不能一次性输入超过MAXLINE个的字符,否则程序会出错#define MAXLINE 1024//发
2013-06-07 11:16:43
1821
转载 STDIN_FILENO
最近在学《UNIX高级环境编程》,遇到有关STDIN_FILENO的问题,在此总结一下。在UNIX一些系统调用中使用到STDIN_FILENO表示标准输入,STDOUT_FILENO表示标准输出,STDERR_FILENO表示标准出错,使用时需要加头文件在UNIX下还有stdin,stdout,stderr表示同样的含义。二者的主要区别为:1.数据类型不同,前者为i
2013-06-07 10:00:41
2380
转载 开源日志系统log4cplus
原文地址,原作者是分成7个部分的: (一) http://www.cppblog.com/tx7do/articles/11715.html (二) http://www.cppblog.com/tx7do/articles/11716.html (三) http://www.cppblog.com/tx7do/article
2013-06-01 11:35:59
1354
转载 mysql字符串函数
对于针对字符串位置的操作,第一个位置被标记为1。ASCII(str)返回字符串str的 最左面字符的ASCII代码值。如果str是空字符串, 返回0。如果str是NULL,返回NULL。mysql> select ASCII('2'); -> 50mysql> select ASCII(2); -> 50mysql> select ASCII('dx
2013-06-01 10:42:10
1171
原创 在Ubuntu上用apt-get安装opencv
0:网上很多安装opencv的教程都是基于源码安装的,这样又麻烦又容易出错,用apt-get安装,只要输入几条命令就行,方便多了(我是菜鸟,高手绕路,呵呵)1:搜索与OPENCV相关的软件包:apt-cache search opencv2:安装这些软件包(我全部用默认安装)sudo apt-get install XXX XXX XXX3:查看安装好的(与OPENCV相关
2013-05-31 17:18:01
9339
4
转载 windows下开发PHP扩展(无需Cygwin)
第一步:准备1、php源码包和windows下的二进制包,以及安装Visual C++,并把Microsoft Visual Studio/Common/MSDev98/Bin的绝对路径添加到windows环境变量2、解压源码包到d:/php_src3、进入d:/php_src/ext目录,复制skeleton文件夹,并重命名为要开发扩展的名字,本例为“linvo”
2013-05-29 15:33:22
1303
我自己写的聊天软件haoIM的源代码
2011-04-17
我自己写的聊天软件haoIM的源代码(utf-8)
2011-04-17
hao IM 0.20更新补丁
2011-04-22
有问题的QT程序,请大家帮忙看一下吧
2011-03-21
redis网络事件框架的使用
2013-11-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅