
网络编程
iteye_17143
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
以两军问题为背景来演绎Basic Paxos
背景在计算机通信理论中,有一个著名的两军问题(two-army problem),讲述通信的双方通过ACK来达成共识,永远会有一个在途的ACK需要进行确认,因此无法达成共识。两军问题和Basic Paxos非常相似1) 通信的各方需要达成共识;2) 通信的各方仅需要达成一个共识;3) 假设的前提是信道不稳定,有丢包、延迟或者重放,但消息不会被篡改。Basic Paxos...原创 2015-09-28 10:28:52 · 463 阅读 · 0 评论 -
[zz]Save SQLite memory database to file
[url]http://itsystementwicklung.de/pipermail/list-pysqlite/2008-July/000113.html[/url]I would like to do this for similar reasons. I have a web application where the application data will be ...2009-04-25 15:45:57 · 253 阅读 · 0 评论 -
vc6 设置 pre-build 步骤
把 spdatapickle 移植到 win32 平台,使用 vc6 进行编译。在编译示范例子的时候,第一步需要调用代码生成工具根据 xml 生成一些代码。这个步骤在 makefile 中很容易实现,但是在 vc6 中,试了好久才终于试验成功。记录一下步骤[img]http://dl.iteye.com/upload/attachment/165175/5324ca86-9ceb-3be4...2009-11-06 22:52:14 · 328 阅读 · 0 评论 -
socat
socat 类似 telnet ,但是支持多种协议。比如要 debug unix domain socket 的 server ,用下面的命令就可以得到和 telnet 一样的效果。[code]bash$ ./socat unix-connect:/tmp/my.sock stdin[/code]...2009-10-28 23:11:13 · 200 阅读 · 0 评论 -
lkcd 的配置
suse linux 自带了 lkcd 安装包,安装之后,还有些配置项需要修改一下。默认是使用 网络 方式,改成使用本地文件方式,记录一下[code]/etc/sysconfig/dumpDUMP_ACTIVE="1"DUMPDEV="/dev/vmdump"DUMPDIR="/var/log/dump"DUMP_LEVEL="2"DUMP_COMPRESS="...2007-09-27 23:22:04 · 444 阅读 · 0 评论 -
手工测试 ssl 服务器的工具
在为基于文本命令行协议的服务器(echo,smtp,pop,http一类的)增加 ssl 支持的时候,通常期望能够有一个 stelnet 工具,类似于平时用来测试文本命令行服务器的 telnet 工具,不过就要求 stelnet 能够支持 ssl 协议。一般来说,开发这类服务器,telnet 都是最基本的调试工具。有了这个 stelnet 工具之后,对于开发 ssl 的服务器有很大的帮助。...2007-08-11 16:13:43 · 678 阅读 · 0 评论 -
SpamAssassin, spf, greylist, dnsbl 相关的 milter 编译安装
首先,如果系统中没有 libmilter.a 库,那么下载 sendmail-8.14.3 ,把 libmilter.a 安装上。libmilter 库有个 bug ,会导致很多的 milter core dump 。[code]sendmail-8.14.3/libmilter/smfi.c 832c832< ++s; /...2009-04-05 14:15:01 · 271 阅读 · 0 评论 -
milter client 的实现
在浏览了 milter 的协议描述和具体的实现之后,决定自己动手实现一份。sendmail 里面的 milter client 的实现,实在显得太复杂了。很多基本功能都没有实现为函数,在用到的地方直接实现;而且 sendmail 偏偏要实现所有的灵活性,导致代码的可读性非常糟糕。看了 sendmail 的具体实现之后,以为 milter 协议会很复杂,实现起来会有难度。在调通了 option ...2009-03-28 19:38:17 · 220 阅读 · 0 评论 -
在 SPServer 中集成 IOCP 和 SSL
打算把 Windows 的 SSPI 集成到 SPServer/IOCP 的框架中,这样可以减少 SPServer 对第三方库的依赖。但是看了一下 SSPI 之后,望而生畏啊。对比 openssl ,SSPI 接口相当于与其中的 BIO 接口,并且比 BIO 接口更难用。找了几个例子来看,每个的代码基本上都是又长又难看,太多的错误判断了。最后还是直接在 windows 上用 openssl 算了。...2008-06-20 22:27:48 · 439 阅读 · 0 评论 -
Half-Sync/Half-Async 和 Leader/Follower 模式的实现代码
把之前发表过的一篇文章贴到自己 blog 中,便于查看。在 [url=http://code.google.com/p/spserver/]SPServer[/url] 中实现了 HSHA 和 LF 两种线程池。目前的实现还是比较可读的,这两种线程池最主要的处理逻辑各自都被集中到了一个函数中。先来看看 HSHA 的核心实现代码[url]http://spserver...原创 2009-12-27 13:33:25 · 195 阅读 · 0 评论 -
[zz]Tokyo Cabinet Observations
[url]http://parand.com/say/index.php/2009/04/09/tokyo-cabinet-observations/[/url]I’m using Tokyo Cabinet with Python tc for a decent sized amount of data (~19G in a single hash table) on OS X....原创 2009-05-05 17:41:25 · 146 阅读 · 0 评论 -
[zz]Tokyo Cabinet Table Engine
Sounds impressive and cool. I wonder about Table engine performance though.My experiences with Berkeley DB (using the native C API) were positive, from a performance point of view, largely because B...原创 2009-07-05 22:26:14 · 123 阅读 · 0 评论 -
调试堆栈错乱的问题
如果没有简单的重现办法,或者只是偶尔出现的话,可以通过 glibc 的一些特殊功能来协助debug 。[url]http://www.novell.com/support/viewContent.do?externalId=3113982&sliceId=1[/url]主要的作用是加快程序产生 core dump ,尽量在出现第一个错误的时候,就让程序 core dump ,这样一...原创 2010-07-15 00:57:15 · 578 阅读 · 0 评论 -
自动化解决编译依赖问题
一个用 c++ 实现的系统,过于庞大,依赖很复杂,还要变化很频繁。原来靠手工维护 Makefile 里面的 link 和 incl ,经常都会因为一个底层模块的调整导致大规模的编译错误。后来把依赖关系整理到一个统一的文件中,每次编译的时候,从文件中读取依赖关系,实时计算 link 和 incl ,这样解决了上面的问题。不过好景不长,由于写代码的人太多,最近搞了好几个循环依赖的东西出来。原来...2010-12-04 14:02:34 · 331 阅读 · 0 评论 -
让设置 suid 的程序也产生 coredump
被 suid 的程序要产生 coredump 文件,还需要额外的设置。[url]http://www.linuxinsight.com/proc_sys_fs_suid_dumpable.html[/url][quote]suid_dumpableSubmitted by admin on Thu, 2006-06-01 01:45The value in th...原创 2010-05-11 11:24:11 · 368 阅读 · 0 评论 -
一个用于快速定位 C/C++ 函数返回位置的 macro
这个 macro 是这样的[code]#define return for( printf("return %s %d\n",__FILE__,__LINE__); ; ) return[/code]对于 C/C++ 程序来说,使用上面的 macro ,可以把函数的返回位置输出到屏幕。使用的场景:需要调试具有多出口的 C/C++ 函数,并且原有的代码在返回的位置都没...2009-09-28 23:11:19 · 287 阅读 · 0 评论 -
使用 gettimeofday 来测量执行时间存在的问题
之前一直使用 cprof 来分析 c/c++ 程序的性能瓶颈,可惜在 2.6 内核 + 多线程的情况下, cprof 貌似不工作了。无奈之下,使用 gettimeofday 来人肉分析。为了方便,写了这样一个类[code]class SP_NKClock { struct timeval mBornTime; struct timeval mPrevTime;}...2009-08-01 17:25:38 · 1053 阅读 · 0 评论 -
[zz]What does anon mean for pmap?
[url]http://stackoverflow.com/questions/1477885/trying-to-locate-a-leak-what-does-anon-mean-for-pmap[/url]Anon blocks are "large" blocks allocated via malloc or mmap -- see the manpages. As such...2010-02-26 21:12:31 · 367 阅读 · 0 评论 -
[zz]Troubleshooting Memory Usage
[url]http://rimuhosting.com/howto/memory.jsp[/url][code]# create a memmon.sh script that tracks the current date, memory usage and running processescat /root/memmon.sh#!/bin/bashdate;up...原创 2010-01-13 21:05:34 · 120 阅读 · 0 评论 -
linux inotify 通知信息不包括 user 和 process 的原因
[url]http://groups.google.com/group/linux.kernel/browse_thread/thread/3e45bbe4ae4fce5b/d745471e60cd7656?hl=en&#d745471e60cd7656[/url]在这里 Robert Love 说明了为什么不提供 user 和 process 信息的原因:[quote]Hi,...2008-10-09 16:59:28 · 125 阅读 · 0 评论 -
[zz]break when opening certain file
http://www.nabble.com/break-when-opening-certain-file-td21428195.htmlYou want a "conditional breakpoint".Assuming you're on i386-linux or similar (adjustments arestraightforward for most oth...原创 2009-02-16 17:38:51 · 121 阅读 · 0 评论 -
Reasons for threading
[url]http://www.sagemath.org:9001/GlennTarbox/DsageNg[/url]There are 2 reasons for threading at high levels:1. Blocking on code which you can't change2. Can't figure out how to make it asynchr...2008-06-11 20:49:00 · 166 阅读 · 0 评论 -
集成 IOCP 到 Libevent
集成 IOCP 到 Libevent完整的代码在[url]http://spserver.googlecode.com/files/libevent-1.4.4-iocp-3.zip[/url]2008.08.23[url]http://spserver.googlecode.com/files/libevent-1.4.5-stable-iocp-2.zip[/url]...2008-06-01 14:36:20 · 232 阅读 · 0 评论 -
one thread per connection 的好处和弱点
要实现一个并发的网络服务器,一个流行的做法是使用 one thread per connection 。具体采用的模型可能是《unix网络编程》 (第二版,中文版) 27.12 TCP预先创建线程服务器程序,主线程统一 accept 。使用这种模型,有以下的好处:1.可以很方便地把这个模型实现为一个与具体应用无关的 framework,《unix网络编程》书上的代码稍加...2007-03-08 11:25:58 · 1434 阅读 · 0 评论 -
event-driven system
[b]An Architecture for Highly Concurrent Well-Conditioned Internet Services.pdf[/b]SEDA 项目的相关论文Page26The use of helper processes in Flash and Harvest underscores the occasional need for an e...2007-03-07 17:46:27 · 213 阅读 · 0 评论 -
reliable messaging in jabber
http://mail.jabber.org/pipermail/standards/2003-August/003950.htmlThe only way you can truly do reliable messaging is if the client that receives the message sends back a confirmation that the m...2007-03-05 15:53:05 · 97 阅读 · 0 评论 -
[zz] Passing data between event loops in multithreaded apps
http://monkeymail.org/archives/libevent-users/2006-October/000257.htmlPassing data between event loops in multithreaded appshttp://www.weirdness.net/code/libevent2007-02-18 10:33:13 · 105 阅读 · 0 评论 -
libevent 注解
libevent - an event notification libraryhttp://www.monkey.org/~provos/libevent/http://www.monkey.org/~provos/libevent/event3.html《unix网络编程》 (第二版,中文版)27.4 TCP 迭代服务器程序6.8 TCP 回射服务器程序(修订版)6...2006-12-27 21:03:47 · 88 阅读 · 0 评论 -
[zz]MINA Tutorial 中文版: A Date with MINA
http://wiki.apache.org/directory/MinaTutorialInChinese如果想实现复杂的如LDAP这样的协议怎么办呢?它似乎是一个恶梦,因为IO层没有帮助你分离‘message解析’和‘实际的业务逻辑(比如访问一个目录数据库)’。MINA提供了一个协议层来解决这个问题。协议层将ByteBuffer事件转换成高层的POJO事件:就像前面提到的,你只需撰写面...2006-12-08 15:09:23 · 109 阅读 · 0 评论 -
[zz]Comparing Two High-Performance I/O Design Patterns
http://www.artima.com/articles/io_design_patterns3.htmlSystem I/O can be blocking, or non-blocking synchronous, or non-blocking asynchronous [1, 2]. Blocking I/O means that the calling system doe...2006-12-08 11:33:29 · 141 阅读 · 0 评论 -
Thrift:Facebook.com 的核心框架
[url]http://developers.facebook.com/thrift/[/url]Thrift is a software framework for scalable cross-language services development. It combines a powerful software stack with a code generation engin...2007-12-07 21:42:58 · 107 阅读 · 0 评论 -
TCP套接口的缓冲区
《unix网络编程》 Page42每一个 TCP 套接口有一个发送缓冲区,我们可以用 SO_SNDBUF 套接口选项来改变这一缓冲区的大小。当应用进程调用 write 时,内核从应用进程的缓冲区中 copy 所有数据到套接口的发送缓冲区。如果套接口的发送缓冲区容不下应用程序的所有数据(或是应用进程的缓冲区大于套接口发送缓冲区,或是套接口发送缓冲区还有其他数据),应用进程将被挂起(睡眠)。这里假...2007-03-08 15:23:14 · 256 阅读 · 0 评论 -
half-sync/half-async 和 Leader/Followers 模式的主要区别
在 [url=http://www.douban.com/subject/1137259/]《POSA2》[/url] 一书中,关于这两个模式有两个很形象的比喻:[b]半同步/半异步(half-sync/half-async):[/b]许多餐厅使用 半同步/半异步 模式的变体。例如,餐厅常常雇佣一个领班负责迎接顾客,并在餐厅繁忙时留意给顾客安排桌位,为等待就餐的顾客按序排队是必要的。领...2007-03-16 22:44:35 · 141 阅读 · 0 评论 -
Leader/Follower 进程池设计思路
看了 [url=http://www.fmc-modeling.org/category/projects/apache/amp/4_3Multitasking_server.html]apache 的分析文章[/url]之后,觉得里面的图非常好地描述了 apache 的结构。也尝试用 visio 画一下 [url=http://iunknown.iteye.com/blog/147010]spp...2008-01-04 23:47:51 · 174 阅读 · 0 评论 -
[zz]Emulate event driven i/o by IOCP
[url=http://mail-archives.apache.org/mod_mbox/apr-dev/200504.mbox/%3C4265083D.2020009@wstoddard.com%3E]原文[/url]It may be possible to use IOCompletionPorts on Windows to implement apr_pollset_*. I...2008-05-29 11:21:02 · 121 阅读 · 0 评论 -
用完成端口(IOCP)实现一个简单的服务器框架
IOCP 对于高并发的应用程序提供了良好的支持,使得开发高并发的应用程序的难度降低了很多。IOCP 作为系统底层的 API ,保持了尽可能高的灵活性,对于很多复杂的情况,IOCP 也一样适用。这种灵活性是一种双刃剑,对于复杂的情况,没有这种灵活性就没有办法完成工作。但是对于简单的情况,这种灵活性就带来了额外的负担。 这里将要提到的这个服务器框架(spserver/iocp版),...2008-05-25 00:01:28 · 314 阅读 · 0 评论 -
fork with thread
[url]http://gceclub.sun.com.cn/solaris/819-7051-10.pdf[/url]Fork-One 安全问题和解决方案除了通常关注的问题(如锁定共享数据)以外,当只有fork() 线程处于运行状态时,还应根据fork 子进程的操作来处理库。问题在于子进程中的唯一线程可能会尝试获取由未复制到子进程中的线程持有的锁定。大多数程序不可能遇到此...2007-07-19 13:02:42 · 265 阅读 · 0 评论 -
关于 apache 的 prefork
http://blog.youkuaiyun.com/marcolu/archive/2004/08/02/59085.aspx常用的应该就只有3个:worker|prefork|perchild 1. prefork:在功能上就是使用 Apache的运行方式,一个父进程,然后根据设置以及连接情况生成相应的子进程数。这种模式可靠性和健壮性都是最好的。但是在性能上,开销过大。达不到我们这些“...2007-06-19 13:28:17 · 160 阅读 · 0 评论 -
mysql 6 网络层 IO 的设计
mysql 6 中关于网络层 IO 的设计,在下面这个链接中讲了大体的思路[url]http://forge.mysql.com/worklog/task.php?id=441[/url]首先提到了目前的设计,one_thread_per_connect 模型。[quote]......- A new thread is created to serve this sock...2008-05-17 22:24:25 · 164 阅读 · 0 评论 -
IOCP 的资源释放问题
在参考了一些资料,并且尝试了几次之后,也逐渐想到了一个用来安全释放 IOCP 资源的办法。[url]http://groups.google.com/group/dev4server/browse_thread/thread/29a91064931a628e[/url]接着发现有人已经把这种方案描述的很清楚了[url]http://blog.codingnow.com/2007/0...2008-05-11 15:52:03 · 332 阅读 · 0 评论