- 博客(14)
- 资源 (25)
- 收藏
- 关注
原创 zlib库 安装与使用
1. zlib简介 zlib 适用于数据压缩的函式库,由Jean-loup Gailly (负责compression)和 Mark Adler (负责decompression)开发。 zlib被设计成一个免费的、通用的、法律上不受阻碍(即没有被任何专利覆盖) 的无损数据压缩库。zlib几乎适用于任何计算器硬件和操作系统。 zlib本身的数据格式可以进行跨平台的移植。 与在U
2016-10-29 19:53:38 51075 6
转载 HTTP, HTTP2.0, SPDY, HTTPS | 4种网络协议的渊源与发展
HTTP与现代浏览器 3 HTTP的基本优化 HTTP1.0和HTTP1.1的一些区别HTTP1.0和HTTP1.1存在的一些问题使用SPDY加快你的网站速度 HTTP2.0的新特性
2016-10-27 15:56:17 1228
转载 程序员解决问题的60个策略
程序员的生活就是解决一个又一个问题,永无止境。这篇文章介绍了一系列解决问题的策略。根本的指导方针首先写代码的时候最好不要有缺陷。最好的修复方法就是让 bug 胎死腹中。良好的单元测试强制数据库约束使用输入验证框架避免未实现的“else”条件在应用到主程序之前知道如何在孤立的情况下使用日志print 语句。往往额外输出个一两行将有助于隔离问题。切换至详细的日志记录。详细的日志记录有助于
2016-10-26 10:58:37 799
转载 C语言正则表达式详解 regcomp() regexec() regfree()详解
Linux上一些函数库可以辅助C/C++程序员正则表达式的处理。 常用的接口有regcomp()、regexec()、regfree()和regerror(),C语言中使用正则表达式一般分为三步:编译正则表达式 regcomp()匹配正则表达式 regexec()释放正则表达式 regfree()
2016-10-26 08:57:47 7608
转载 99%的人都理解错了 HTTP 中 GET 与 POST 的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。GET和POST还有一个重大区别,简单的说:GET产生一个TCP数据包;POST产生两个TCP数据包。
2016-10-21 10:25:04 1449
翻译 libevent学习笔记【使用篇】——9. Libevent和DNS解析
如果evutil_getaddrinfo解析成功了,则它会分配一个节点为evutil_addrinfo structures类型的链表res,从函数原型中, 不难看出,evdns_getaddrinfo的使用方法与其他使用回调函数实现非阻塞的函数类似的。其参数的作用可以参考阻塞型的evutil_getaddrinfo。 在使用evdns_getaddrinfo之前,我们需要先配置一个evdns_base用于保存nam
2016-10-20 09:19:43 2775
翻译 libevent学习笔记【使用篇】——8. 连接监听:接收TCP连接
函数evconnlistener_new和evconnlistener_new_bind都用于分配和返回一个新的用于监听连接的对象。如果使用的是evconnlistener_new,需要保证传入的socket套接字处于non-blocking模式,可以通过evutil_make_socket_nonblocking等方法进行设置。listener允许临时关闭和重新开启监听
2016-10-20 09:13:29 3543
翻译 libevent学习笔记【使用篇】——7. evbuffer:缓冲IO的实用功能
创建和释放evbuffer, Evbuffer和其线程安全性, 直接往evbuffer中添加数据,在Libevent中使用evbuffer最频繁的就是网络IO。网络IO中操作evbuffer的接口如下:向evbuffer中加入文件
2016-10-19 23:27:39 12976 1
翻译 libevent学习笔记【使用篇】——6a. Bufferevents高级话题
成对的bufferevent, 调用bufferevent_pair_new()会设置pair[0]和pair[1]为一对相互连接的bufferevent。bufferevent_filter_new()函数创建一个封装现有的“底层”bufferevent的过滤bufferevent。bufferevent和速率限制.创建和使用基于OpenSSL的bufferevent. Openssl 线程安全。
2016-10-19 09:17:33 4192 2
翻译 libevent学习笔记【使用篇】——6. Bufferevents基本概念
大多数时候,应用程序除了响应请求外,还需要处理数据(及其缓存)。当我们想要写数据是,通常会有以下步骤 + 决定要向连接中写入什么数据, 把这些数据放入缓存 + 等待连接可写 + 写入尽可能多的数据 + 记住写入了多少数据,如果还有数据没写完。等待连接再次变为可写状态。 这样的I/O缓冲方式很常见,因而libevent为此提供了一种通用机制。 “bufferevent”由一个底层
2016-10-15 11:57:10 4695
翻译 libevent学习笔记【使用篇】——5.通用函数与可移植函数
<event2/util.h>定义了很多在实现可移植应用时有用的函数,libevent内部也使用这些类型和函数。evutil_socket_t。#define evutil_timeradd(tvp, uvp, vvp) /* */#define evutil_timersub(tvp, uvp, vvp) /* */evutil_make_listen_socket_reuseable
2016-10-10 10:16:07 3496
翻译 libevent学习笔记【使用篇】——4. 让events正常工作
构建event对象,事件持久性 EV_PERSIST,、创建一个可以将自身作为回调函数参数的的event,纯超时events 构造信号事件不在堆中分配event event_assign int event_del(struct event *ev);event_get_priority通过event_base_once插入的event不能被删除或者手动激活。
2016-10-09 23:31:11 10205 2
翻译 libevent学习笔记【使用篇】——3. 运行event loop
默认情况下,event_base_loop()会在event_base上一直运行,直到其上已经没有注册的events了。设置了EVLOOP_ONCE,那么loop将会一直等待,直到一些events变为active,然后运行这些激活的events的回调函数,如果设置了EVLOOP_NONBLOCK标志int event_base_loopexit(struct event_base *base, const
2016-10-09 21:31:58 5508 1
翻译 libevent学习笔记【使用篇】——2. 获取(创建)event_base
在使用任何libevent库函数之前,需要分配至少一个struct event_base的对象。每一个struct event_base对象都维护者一系列事件,并且能够轮询是是否有事件被激活。如果对event_base进行了加锁的保护,那么他可以被多线程访问,我们只需要在某一个线程中运行轮询。 但是如果我们需要各个线程都能进行自己IO轮询,那么就需要为每个线程分配一个event_base.每个eve
2016-10-09 20:40:56 3648
OpenStack企业云平台架构与实践.pdf
2018-04-25
TCP-IP详解卷2-实现.pdf
2018-04-13
UNIX环境高级编程 中文第3版
2018-01-15
libev-官方手册
2017-06-12
Linux+C编程一站式学习
2014-12-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人