- 博客(35)
- 资源 (29)
- 收藏
- 关注
转载 vlc 参数
使用VLC.exe -h或者 VLC.exe -H可以将帮助内容倒出到文件中,两个的区别是-H 倒出的内容多些。这里我们直接将内容贴上.Usage: vlc [options] [stream] ...You can specify multiple streams on the commandline. They will be enqueued in the playlis
2012-09-28 17:01:22 2980
转载 Linux下基于POSIX标准的共享内存操作示例
http://blog.csdn.net/laojing123/article/details/6109154 对于进程间通信,之前一直是用管道进行实现。比如父子进程间使用pipe,无血缘关系的进程可以使用fifo。从来没有想过使用共享内存,为什么呢?大家还记得这本书吧《Unix环境高级编程》,上面讲解了关于共享内存的操作,说实话,太麻烦了,真的不好用(有好多繁杂的接口,比如shmget,
2012-09-25 10:18:05 2532
转载 在linux中获取错误返回信息
#include // void perror(const char *msg);#include // char *strerror(int errnum);#include //errnoerrno 是错误代码,在 errno.h头文件中;perror是错误输出函数,输出格式为:msg:errno对应的错误信息(加上一个换行符);strerror 是通过参
2012-09-24 17:29:35 6907
转载 UDT源码剖析(六):UDT::socket()过程代码注释
调用路线UDT::socket()->CUDT::socket()->CUDTUnited::newSocket()1UDTSOCKET CUDT::socket(int af, int type, int)2{3 // 如果垃圾收集没启动
2012-09-19 17:19:58 4598
转载 UDT源码剖析(五):UDT::cleanup()过程代码注释
调用路线UDT::cleanup()->CUDT::cleanup()->CUDTUnited::cleanup()1int CUDTUnited::cleanup()2{3 // 锁保护4
2012-09-19 17:19:19 2790
转载 UDT源码剖析(四):UDT的GC线程相关过程代码注释
随着UDT::Startup()的启动,GC线程也随之运行了。GC主要关注的就是UDTSocket的释放,下面我们来看看这个GC线程是怎么实现的。查看源代码打印帮助1#ifndef WIN322 void* CUDTUnited::garbageCollect
2012-09-19 17:18:40 4160 1
转载 UDT源码剖析(三):UDT::startup()过程代码注释
调用路线UDT::startup()->CUDT::startup()->CUDTUnited::startup()1int startup()2{3 return CUDT::startup();4
2012-09-19 17:17:38 3619
转载 UDT源码剖析(二):UDT自带例程recvfile注释
#ifndef WIN32 #include #include #else #include #include #endif#include #include #include #include #include using namespace std;int main(int argc, char* argv
2012-09-19 17:16:13 4532
转载 UDT源码剖析(一):UDT自带例程sendfile注释
#ifndef WIN32 #include #include #else #include #include #endif#include #include #include #include using namespace std;#ifndef WIN32void* sendfile(void*);#
2012-09-19 17:15:23 19200 2
转载 UDT协议-基于UDP的可靠数据传输协议
http://blog.csdn.net/iiprogram/article/details/16644971. 介绍随着网络带宽时延产品(BDP)的增加,通常的TCP协议开始变的低效。这是因为它的AIMD(additive increase multiplicative decrease)算法彻底减少了TCP拥塞窗口,但不能快速的恢复可用带宽。理论上的流量分析表明TCP在
2012-09-19 16:28:41 5320
转载 TCP/UDP相关知识总汇
TCP如何保证可靠传输的?确认机制:保证每个数据包都能收到,差错检验:保证数据包的正确,流量控制:保证接收方不会溢出。顺序编号:保证传输的有序性 1、TCP/IP的可靠传输服务五个特征:面向数据流、虚电路连接、有缓冲的传输、无结构的数据流、全双工的连接。 2、TCP采用了具有重传功能的肯定确认技术作为可靠数据流传输服务的基础。 3、为了提高数据流传输过程
2012-09-19 14:45:05 1105
转载 nginx源码分析(19)-方法(3)
nginx的三个部分:核心、事件模型/并发模型、应用模块,之前已经详细了分析了核心和事件模型/并发模型两个部分,也详细解释了nginx的模块化设计。之 前的分析采用了平铺直叙的方式,对源码中主要函数进行了流程化的分解和剖析,经过这种分析方式,对nginx的认识越来越全面和深入,相关的领域知识和背 景知识也越来越丰富。但是这种分析方法比较直白,分析不够深入和透彻,缺少总结和对比,只是阐述如何
2012-09-14 11:11:26 1545 1
转载 nginx源码分析(17)-模块分析(3)
前面已经分析了nginx的事件处理机制的构建阶段,也分析过nginx的进程模型,利用上一篇文章中总结的并发模型设计的知识,先总结介绍一下nginx的并发模型,然后剖析nginx事件处理机制运行阶段的处理过程。nginx 的进程模型采用的是prefork方式,预先分配的worker子进程数量由配置文件指定,默认为1。master主进程创建监听套接口并监听客户连接, 每个worker子进程独自
2012-09-14 11:10:45 486
转载 nginx源码分析(16)-模块分析(2)
对一个高性能服务器来说,一般都要求处理速度快和资源占用小,尤其是当服务器遇到C10K问题的时候。要做到处理速度足够快,其并发模型的设计相当关键;而要做到资源尤其是内存资源的占用少,就要依赖于其资源分配和资源管理的方案设计。网 上有一些比较apache、lighttpd和nginx的文章,一般认为apache的功能完善,但是并发能力较弱,资源占用较多,一般并发量达到一千 以上,服务已经比较吃
2012-09-14 11:09:50 708
转载 nginx源码分析(15)-模块分析(1)
nginx的内部实现上用四个模块上下文结构把所有模块从实现上分开为四种,不同的模块上下文支持不同的模块钩子。如果抛开实现方式,仅仅从功能逻辑上来 区分,大致可以把所有模块分为三类,第一类是nginx的内核模块;第二类是http模块;第三类是mail模块。内核模块包含核心类模块、event类 模块和没有模块上下文结构的conf模块;http模块是所有的http类模块;mail模块是所有的mail类模
2012-09-14 11:09:11 698
转载 nginx源码分析(14)-运维与配置(2)
事件模块的指令集主要是配置epoll、kqueue、select、poll等,这些指令控制nginx处理连接的方式,这些指令有: 1、accept_mutex语法形式:accept_mutex [on|off]默认值:on nginx使用accept mutex保护accept()系统调用。accept mutex在不同的系统上会使用原子指令实现或者使用文件
2012-09-14 11:08:36 905
转载 nginx源码分析(13)-运维与配置(1)
http://blog.csdn.net/kenbinzhang/article/details/4722359nginx现在已经支持很多功能,系统内已经实现的模块多达72个,这些模块提供了若干配置指令来设置和控制nginx的相关处理过程。 为了能够更深入的进行接下来的源码分析,利用一些篇幅讨论一下nginx的运维和配置相关的内容,主要参考了nginx的英文wiki资料
2012-09-14 11:07:57 1117
转载 nginx源码分析(12)-进程启动分析(2)
第四个剖析的是worker子进程的执行函数ngx_worker_process_cycle(src/os/unix/ngx_process_cycle.c)。static voidngx_worker_process_cycle(ngx_cycle_t *cycle, void *data){ ngx_uint_t i; ngx_connecti
2012-09-14 11:06:33 467
转载 nginx源码分析(11)-进程启动分析(1)
nginx的进程启动过程是在ngx_master_process_cycle(src/os/unix/ngx_process_cycle.c)中完成的(单进程是通过ngx_single_process_cycle完成,这里只分析多进程的情况),在ngx_master_process_cycle中,会根据配置文件的worker_processes值创建多个子进程,即一个master进程和多个work
2012-09-14 11:05:24 577
转载 nginx源码分析(10)-启动过程分析
http://blog.csdn.net/kenbinzhang/article/details/4681694nginx有两个重要头文件:ngx_config.h和ngx_core.h。src/core/ngx_config.h文件中包含的是和操作系统相关的宏定义和头文件,其中又会包含objs/ngx_auto_headers.h和src/os/unix/ngx__config.
2012-09-14 11:04:24 589
转载 nginx源码分析(9)-模块化(4)
模块的上下文是四个结构体定义的:ngx_core_module_t、ngx_event_module_t、ngx_http_module_t、ngx_mail_module_t,分别对应于四类模块。typedef struct { ngx_str_t name; void *(*create_conf)(ngx_cyc
2012-09-14 11:03:22 466
转载 nginx源码分析(8)-模块化(3)
接下来剖析模块的指令。模块的指令在源码中是ngx_command_t结构的变量,ngx_command_t的声明在src/core/ngx_conf_file.h中:struct ngx_command_s { ngx_str_t name; ngx_uint_t type; char
2012-09-14 11:02:26 494
转载 nginx源码分析(7)-模块化(2)
http://blog.csdn.net/kenbinzhang/article/details/4656815分析nginx的模块化架构的实现方式,就要从ngx_module_t结构体入手。ngx_module_t的声明在src/core/ngx_conf_file.h中:#define NGX_MODULE_V1 0, 0, 0, 0, 0, 0, 1#d
2012-09-14 11:01:09 542
转载 nginx源码分析(6)-模块化(1)
源码的src/core目录下实现了不少精巧的数据结构,最重要的有:内存池ngx_pool_t、缓冲区ngx_buf_t、缓冲区链 ngx_chain_t、字符串ngx_str_t、数组ngx_array_t、链表ngx_list_t、队列ngx_queue_t、基于hash 的关联数组ngx_hash_t、红黑树ngx_rbtree_t、radix树ngx_radix_tree_t等,这些数据结构
2012-09-14 11:00:22 485
转载 nginx源码分析(5)-方法(2)
利用nginx wiki和互联网收集了不少nginx相关的文档资料,但是仔细阅读之后发觉对理解nginx架构有直接帮助的资料不多,一些有帮助的资料也要结合阅读部分源码细节才能搞清楚所述其是,可能nginx在非俄国之外的环境下流行不久,应用还很简单,相关的英文和中文文档也就不够丰富的原因吧。不过还是有一些金子的。如果要了解nginx的概况和使用方法,wiki足以满足需要,wiki上有
2012-09-14 10:59:40 637
转载 nginx源码分析(4)-方法(1)
看了几天的源码,进度很慢,过于关注代码实现的细节了,反而很难看清整体结构。于是问诸google寻找方法。大体上分析源代码都要经历三遍过程,第一遍是浏览,通过阅读源码的文档和注释,阅读接口,先弄清楚每个模块是干什么的而不关心它是怎么做的,画出架构草图;第二遍是精读,根据架构草图把系统分为小部分,每个部分从源码实现自底向上的阅读,更深入细致的理解每个模块的实现方式以及与模块外部的接口方式等,弄明白模块
2012-09-14 10:58:56 483
转载 nginx源码分析(3)- 自动脚本
nginx的自动脚本指的是configure脚本程序和auto子目录下面的脚本程序。自动脚本完成两件事情,其一是检查环境,其二是生成文件。生成的文件有两类,一类是编译代码需要的Makefile文件,一类是根据环境检查结果生成的c代码。生成的Makefile很干净,也很容易阅读。生成的c代码有三个文件,ngx_auto_config.h是根据环境检查的结果声明的一些宏定义,这个头文件被include
2012-09-14 10:57:16 587
转载 nginx源码分析(2)- 概览
http://blog.csdn.net/kenbinzhang/article/details/4653202源码分析是一个逐步取精的过程,最开始是一个大概了解的过程,各种认识不会太深刻,但是把这些真实的感受也记录下来,觉得挺有意思的,可能有些认识是片面或者是不正确的,但可以通过后面更深入细致的分析过程,不断的纠正错误和深化理解。源码分析是一个过程,经验是逐步累积起来的,希望文字可以
2012-09-14 10:56:35 531
转载 nginx源码分析(1)- 缘起
http://blog.csdn.net/kenbinzhang/article/details/4653201nginx是一个开源的高性能web服务器系统,事件驱动的请求处理方式和极其苛刻的资源使用方式,使得nginx成为名副其实的高性能服务器。nginx的源码质量也相当高,作者“家酿”了许多代码,自造了不少轮子,诸如内存池、缓冲区、字符串、链表、红黑树等经典数据结构,事件驱动模型,ht
2012-09-14 10:55:20 775
转载 服务器技术系列综述(三)
网络请求包经过网络层(技术系列综述(一))被解析翻译成程序自定义的消息,之后被投递到业务线程的线程消息队列(技术系列综述(二))中。业务线程在队列的另一端取出消息,开始处理,这是本章要介绍的部分。业务处理部分:主要有会话类(Session)和会话管理类(SessionManager,常见该类为单例)。先给出类图,后文详细介绍:一 SessionManager的职责:(1)继承IMsgT
2012-09-13 17:34:53 853
转载 服务器技术系列综述(二)
《技术系列综述(一)》介绍了网络层部分。网络层基本都是多路复用函数作为运行的主线程,使用管道或者sockpair与之通讯,这是网络层线程的固有特点,和业务线程的呈现方式完全不同。经过网络层以后,数据开始流向业务线程,现在就顺着数据流向往上看。一 业务线程《技术系列之 线程(一)》有对线程的一个入门描述,里面的消息队列只是示例,真实可用的可以看《技术系列之 线程(二)》。(1)业务线
2012-09-13 17:21:02 519
转载 服务器技术系列综述(一)
一 系统框架概述网络上的服务器,无论是嵌入式的网络设备,还是pc上服务器,整体结构以及主要思想都大体相同:根据业务模型确定主要数据结构,根据数据结构确定线程模型,在各个业务线程内根据围绕主要数据结构进行的操作确定状态机模型,低层使用网络层收发数据完成和其它网元的通讯。线程交互模型简单描述如下图:其中网络层包括收发模块,收数据模块是单独线程,而发数据模块则被业务线程调用在其本身线程中发送
2012-09-13 17:14:01 644
转载 高性能服务器本质论
作者:CppExplore http://www.cppblog.com/CppExplore/和http://blog.csdn.net/cppexplore同步发布一 服务器分类从软件性能角度,高性能服务器分:cpu密集型服务器/IO密集型服务器(1)CPU密集型:该类服务器没有对io的访问/没有同步点,性能瓶颈在于对cpu的充分利用。典型的如转发服务器/代理服务器/协议转换
2012-09-13 16:55:45 424
转载 高性能服务器本质论
作者:CppExplore 网址:http://www.cppblog.com/CppExplore/本章主要列举服务器程序的各种网络模型,示例程序以及性能对比后面再写。一、分类依据。服务器的网络模型分类主要依据以下几点(1)是否阻塞方式处理请求,是否多路复用,使用哪种多路复用函数(2)是否多线程,多线程间如何组织(3)是否多进程,多进程的切入点一般都是accept函数前二
2012-09-13 16:42:05 494
转载 fork如何做到返回两次
http://blog.csdn.net/barfoo/article/details/1626938 一直很疑惑fork方法如何做到返回两次,今天认真看了看书,其实大家都说的“返回两次”在表达上是不清楚的。fork并没有真正的返回两次,它依然返回了一次,只是OS对fork进行的操作使得我们看起来它返回了两次而已。搜到一篇文章,说的还比较清楚。收藏下来吧。要搞清
2012-09-03 18:18:16 391
inotify 文件监视
2013-12-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人