- 博客(9)
- 资源 (30)
- 收藏
- 关注
原创 RTMP Handshake导致Flash不能播放H264流
Adobe在2009年公开了rtmp协议,wikipedia说是部分公开(an incomplete version)而且handshake也有变更。simple handshake是rtmp spec 1.0定义的握手方式。而complex handshake是后来变更的方式,Adobe没有公开。若研发rtmp server,将h264数据给FP播放时,必须为complex handshak
2012-07-04 12:03:40 7553 1
原创 关于sigsuspend返回多个信号的问题
大多数关于sigsuspend等的例子,都是先屏蔽信号,然后调用sigsuspend获取一个信号,然后处理,然后继续等待下个信号。实际上,手册上没有说《Unix环境高级编程》也没有说,若同时有多个信号,sigsuspend会一次取完。基于sigsuspend每次只收取一个信号的假设,设计了一个系统,后来发现SIGCHLD和MYSIGIO(SIGRTMIN+1)在sigsuspend之后同时蹦出
2012-07-31 20:32:32 1964
原创 状态模式在服务器中的应用
不只一次听到不只一个人说,设计模式就是那么回事,怎么怎么回事,那么那么回事,大致都带着肯定的口吻——表达的不是设计模式如何而是听着应该屈从于说者的权威,不容置疑的自信,也带着那么丝不确定。我觉得设计模式是软件行业很不错的书,而软件行业的好书基本上都是国外出版,好书就是丰富经验的积累和说明,讲着故事和经历,阐明原理和规律。所以我更关心我如何理解设计模式,如何应用设计模式。最初那段时间,完全是
2012-07-27 19:02:28 1163
原创 查看内存工具
进程在heap分配的内存在VSS中有体现,分为shared和private,特别是private基本上和进程申请的内存相当。/proc/pid/smaps中记录了进程的内存信息,写了一个c++程序来打印内存。[winlin@dev6 utest]$ ./memview summary 28618VMSIZE: 42240 KBRSS: 1800 KB t
2012-07-27 17:13:55 2513
原创 Linux服务器多进程模型
Linux多进程服务器真的很给力,赞一个!Linux多进程一般是master负责侦听,worker接受和伺服client。一个使用了以下技术的多进程模型:1. sigset:安全信号,信号屏蔽和接受。2. epoll:异步io模型。master进程使用信号模型,侦听用户信号和程序信号,并和worker交流。它的主循环是sigsuspend。worker进程使用事件模型,使用
2012-07-19 19:16:36 4737 1
原创 如何在进程之间传递文件描述符(file discriptor)
fork的标准用法是master侦听,worker接受和伺服客户端。但是若只能是master侦听和接口并做一些处理后,才能知道该给哪个worker,就必须将client的socket fd传递给worker。可以通过socketpair(很高效的方式),很多服务器都是用它来多进程通信(譬如nginx)。传递fd,通过sendmsg实现。很关键的一点,send的fd和recv的fd不一定一样
2012-07-18 21:59:05 7992
原创 算法:离我们也没有那么遥远
最近在学MIT的《算法导论》,感觉算法离我们没有想象的那么遥远:http://v.163.com/special/opencourse/algorithms.html算法在什么层次上影响执行速度,或者在什么条件下才需要关注算法。我始终坚信,但系统复杂度达到一定程度,譬如操作系统,就不仅仅是算法的问题,系统本身的复杂性也足以优先算法考虑。不过《算法导论》第一课说的也没错,算法是基础,
2012-07-01 13:29:24 2011
Pattern.Oriented.Software.Architecture.Volume.2
2012-11-29
mp4 file format引用文档
2012-11-04
The.Cpp.Programming.Language.Special.Edition
2012-10-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人