代码改变世界

随笔分类 -  Programming Toolbox

libuv 中文编程指南(四)网络

2013-03-17 21:57 by Haippy, 27641 阅读, 收藏, 编辑
摘要: libuv 的网络接口与 BSD 套接字接口存在很大的不同, 某些事情在 libuv 下变得更简单了, 并且所有接口都是都是非阻塞的, 但是原则上还是一致的. 另外 libuv 也提供了一些工具类的函数抽象了一些让人生厌的, 重复而底层的任务,比如使用 BSD 套接字结构来建立套接字, DNS 查询, 或者其他各种参数的设置. libuv 中在网络 I/O 中使用了 uv_tcp_t 和 uv_udp_t 两个结构体. 阅读全文

libuv 中文编程指南(二)libuv 基础

2013-03-17 21:57 by Haippy, 50064 阅读, 收藏, 编辑
摘要: libuv 采用了 异步 (asynchronous), 事件驱动 (event-driven)的编程风格, 其主要任务是为开人员提供了一套事件循环和基于I/O(或其他活动)通知的回调函数, libuv 提供了一套核心的工具集, 例如定时器, 非阻塞网络编程的支持, 异步访问文件系统, 子进程以及其他功能. 阅读全文

libuv 中文编程指南(一)序言

2013-03-17 21:57 by Haippy, 20068 阅读, 收藏, 编辑
摘要: 本书由一系列 libuv 教程组成, libuv 是一个高性能事件驱动的程序库,封装了 Windows 和 Unix 平台一些底层特性,为开发者提供了统一的 API. 本书旨在涵盖 libuv 的主要特性, 并不是一份完整介绍 libuv 内部每个 API 和数据结构的指南, 官方文档 official libuv documentation 可以直接在 libuv 源码提供的头文件中找到. 阅读全文

Zookeeper C API 指南一(准备工作)

2013-02-21 11:16 by Haippy, 34976 阅读, 收藏, 编辑
摘要: 以前本博客中转载、翻译或写过(自己才疏学浅,写的不好)一些 Zookeeper 方面的文章,但是都没有涉及到 Zookeeper C API 的内容,今天的这篇博客是我农历新年的第一篇技术博客,我想详细讲讲 Zookeeper C API 的使用规则和示例,算是把以前的旧帐还上吧 :-) 阅读全文

深入浅出 Barriers 实现(一)

2012-12-26 19:29 by Haippy, 11690 阅读, 收藏, 编辑
摘要: Barriers,字面意思为“壁垒,屏障,栅栏”,在计算机领域中 Barriers 也有它独特的含义,具体来讲,在并行程序中,Barriers 是一种同步的手段,可被视为一种线程同步原语,如一组线程/进程的 Barrier 可以用来同步该线程/进程组,只有当该线程/进程组中所有线程到达屏障点(可称之为同步点)时,整个程序才得以继续执行。 阅读全文

如何在Linux下实现你的线程池(Step By Step,Pthread)

2012-09-28 20:39 by Haippy, 3793 阅读, 收藏, 编辑
摘要: 200行C代码就可以实现线程池?开玩笑吧?不,告诉你,我是认真的,200行C代码真的可以实现一个简单可用的线程池!!! 阅读全文

如何将 Linux 内核实现的红黑树 rbtree 运用到你的 C 程序中?

2012-09-02 23:48 by Haippy, 20194 阅读, 收藏, 编辑
摘要: 相信大家都知道红黑树是什么吧,但是呢......如果你确实不知道,你不该穿越到这儿的,你应该去这里,这里,还有这里看看,然后再来这里看看,最后如果大爷您赏脸,再来看看我吧 :-) 阅读全文

Hash 函数资源链接汇总

2012-07-14 12:01 by Haippy, 1779 阅读, 收藏, 编辑
摘要: Hash 函数资源链接汇总 阅读全文

布隆过滤器(Bloom Filter)详解

2012-07-13 18:35 by Haippy, 58654 阅读, 收藏, 编辑
摘要: 布隆过滤器(Bloom Filter)是由布隆(Burton Howard Bloom)在1970年提出的。它实际上是由一个很长的二进制向量和一系列随机映射函数组成,布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率(假正例False positives,即Bloom Filter报告某一元素存在于某集合中,但是实际上该元素并不在集合中)和删除困难,但是没有识别错误的情形(即假反例False negatives,如果某个元素确实没有在该集合中,那么Bloom Filter 是不会报告该元素存在于集合中的)。 阅读全文

10 个对初学者有用的 GIT 教程

2012-06-04 21:04 by Haippy, 2678 阅读, 收藏, 编辑
摘要: Git 是用于 Linux 内核开发的版本控制工具。与常用的版本控制工具CVS、Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。Git的速度很快,这对于诸如Linux kernel这样的大项目来说自然很重要。Git最为出色的是它的合并跟踪(merge tracing)能力。 阅读全文

LRU算法的简单实现( C语言 + uthash包)

2012-01-12 21:20 by Haippy, 6024 阅读, 收藏, 编辑
摘要: LRU是Least Recently Used的缩写,即最近最少使用页面置换算法,是为虚拟页式存储管理服务的,LRU算法的提出,是基于这样一个事实:在前面几条指令中使用频繁的页面很可能在后面的几条指令中频繁使用。 阅读全文

Learning by doing 系列文章(之一)如何在 Python 中使用 epoll ?

2012-01-11 17:27 by Haippy, 2061 阅读, 收藏, 编辑
摘要: Python 在 2.6 版中引入了用于处理Linux epoll系统调用的API,本文简单地介绍 python 中与 epoll 有关的 API,欢迎大家提出问题。 阅读全文

epoll 使用详解

2012-01-09 16:32 by Haippy, 45324 阅读, 收藏, 编辑
摘要: epoll 是Linux内核中的一种可扩展IO事件处理机制,最早在 Linux 2.5.44内核中引入,可被用于代替POSIX select 和 poll 系统调用,并且在具有大量应用程序请求时能够获得较好的性能( 此时被监视的文件描述符数目非常大,与旧的 select 和 poll 系统调用完成操作所需 O(n) 不同, epoll能在O(1)时间内完成操作,所以性能相当高),epoll 与 FreeBSD的kqueue类似,都向用户空间提供了自己的文件描述符来进行操作。 阅读全文

自己动手实现自旋锁(spinlock)

2011-12-17 10:17 by Haippy, 7877 阅读, 收藏, 编辑
摘要: 大多数的并行程序都需要在底层使用锁机制进行同步,简单来讲,锁无非是一套简单的原语,它们保证程序(或进程)对某一资源的互斥访问来维持数据的一致性,如果没有锁机制作为保证,多个线程可能同时访问某一资源,假设没有精心设计的(很复杂)无锁算法保证程序正确执行,那么后果往往非常严重的。无锁算法难于使用,所以一般而言都使用锁来保证程序的一致性。 阅读全文

C 语言实现动态字符串

2011-12-16 20:55 by Haippy, 8038 阅读, 收藏, 编辑
摘要: 在C语言中,字符串是以连续的字节流表示的,并且以 '\0' 结尾,C语言标准库中也提供了很多函数来操作这种形式的字符串,比如,求字符串长度 strlen( ),求子串strstr( ),字符串拷贝strcpy( )等等,但是,这些函数并不安全,很可能给系统或应用程序带来严重的问题,如栈溢出等,C语言字符串中并没有记录操作系统为其分配的长度,用户必须自己将字符串长度保存在其他的变量中,很明显如果操作不当就会产生错误,如臭名昭著的缓冲区溢出。 阅读全文

一致性hash算法释义

2011-12-10 09:57 by Haippy, 23527 阅读, 收藏, 编辑
摘要: 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的(参见扩展阅读[1]),设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。 阅读全文

Lex & Flex 词法分析器实践(未完,持续更新)

2011-10-10 23:38 by Haippy, 11964 阅读, 收藏, 编辑
摘要: Lex是LEXical compiler的缩写,是Unix环境下非常著名的工具, Lex (最早是埃里克·施密特和 Mike Lesk 制作)是许多 UNIX 系统的标准词法分析器(lexical analyzer)产生程式,而且这个工具所作的行为被详列为 POSIX 标准的一部分。 阅读全文

How to use epoll? A complete example in C

2011-09-22 10:51 by Haippy, 1204 阅读, 收藏, 编辑
摘要: epoll的详细用法,完整 C 例程说明。 阅读全文