自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 Nginx源码学习——内存池

    Nginx特点是占有内存少,并发能力强,这得益于Nginx所采用的内存管理手段——内存池。内存池的目的是预先分配较大的内存块留作备用,当有新的内存需求时,可直接在内存池中分配(指针移动),避免了频繁系统调用(malloc/free)造成的内存碎片和性能下降等问题。Nginx内存池本质上是一个链表结构,链表的每一个节点称为一个数据块,由ngx_pool_data_t结构体描述。我们需要对内存...

2018-04-13 16:54:30 1110

原创 Nginx源码学习——进程通信

    Nginx服务器在使用Master-Worker模型时,会涉及到三类通信:Linux系统与Nginx通信,Master进程与Worker进程通信,Worker进程间通信,也采用了三种不同的通信机制。Linux信号    Linux 系统与Nginx是通过信号进行通信的,例如在Linux命令行敲下 ./nginx -s stop ,实际系统会新开一个Master进程,该进程负责向原Maste...

2018-03-31 14:45:17 395

原创 nginx源码学习——架构

  最近开始关注Nginx源码,粗浅地记录下我的一些学习心得。    Nginx是一款高性能的Web服务器,它既可以作为HTTP服务器,也可以作为反向代理服务器或者邮件服务器,其源码采用C语言编写。多进程模型    Nginx能够轻松支持万级别的并发,那么其背后的架构是怎样的呢?Nginx启动后,在Unix系统中会以Daemon的方式在后台运行,后台进程包含一个Master进程和多个Worker进...

2018-03-28 18:18:51 269

原创 谈谈TCP/IP 拥塞控制

最近在看《tcp/ip详解》,记录一下我对拥塞控制的理解吧。       当发送方向网络中注入大量的报文段时,容易发生拥塞,从而造成网络的性能和吞吐量的下降,这时就需要拥塞控制。在拥塞控制最主要由发送方的拥塞窗口(cwnd)来控制(当然也得考虑对端接收窗口(rwnd)的大小),这个窗口值的大小就代表能够发送出去的但还没有收到ACK的最大数据报文段,所以TCP的拥塞控制的核心就是要选取最合适的c

2017-08-20 16:48:56 436

原创 libevent解读一

一、接触libeventlibevent是用C语言编写的开源高性能网络库,是学习网络编程、后台开发必备的源码学习资料。其源代码相当精炼、易读,设计技巧和技术框架也很精彩,所以在此我也将我的理解与思考与大家分享,后期我自己也模仿实现了C++版本的网络库,欢迎一起来讨论。二、libevent特点高性能,体现在使用了事件驱动的设计模式,即Reactor模型。跨平台,支持目前几乎所

2017-07-22 18:43:31 337

原创 STL各容器底层所使用的数据结构

C++ STL 的实现:1.vector      底层数据结构为数组 ,支持快速随机访问2.list            底层数据结构为双向链表,支持快速增删3.deque       底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问deque是一个双端队列(

2017-02-20 15:49:59 329

转载 平均背景法的原理

《Learning OpenCV》中的第9中开篇介绍了一种建立背景模型的方法——平均背景法。 但书上只是简单地介绍了一下这种方法的思想,更多的原理蕴含在它给出的代码当中。平均背景法是一种建立背景模型的方法。简单地说,就是从视频或摄像头中获取一系列的帧,然后取这些帧中的平均像素值来表征背景。然后再给这些平均像素值加上一定的阈值范围,这就构成了背景模型。在新加入的图像中,如果对应位置的像素超出

2015-11-04 15:54:47 1110

原创 C++有序链表合并

问题将两个有序链表合并成一个新的有序链表,例:    list1: 1->4->8->9    list2: 2->3->5->6->10合并后    list: 1->2->3->4->5->6->8->9->10分析利用两指针p1,p2分别指向两链表的头head1,head2,依次比较当前指针所指元素,若p1->val小于p2->val,则将p1所指元素添加

2015-08-08 10:28:32 557

原创 求最大连续子向量之和

问题引出《编程珠玑》第8章引出一个模式识别问题:输入是具有n个浮点数的向量x,输出是输入向量的任何连续子向量中的最大和。例如:    31 -41 59 26 -53 58 97 -93 -23 84那么应该输出想x[2..6]的综合,即187。分析当所有书都是正数时,问题很容易解决,此时最大子向量就是整个输入向量。当输入向量中有负数的时候,是否应该包含某个负数并期望旁

2015-08-07 08:31:17 708

原创 Windows平台下最新版VLC编译

1.编译环境:win7(32bit)/win7(64bit)2.编译工具:这里用的是mingw+msys3.解压工具:7-zip4.参考(官网编译):https://wiki.videolan.org/Win32CompileMSYS/------------------------------------------------------------------------

2015-08-06 14:40:51 1235 1

原创 C++ set用法

set介绍C++ 集合(set)是一种包含已排序对象的关联容器,能够自动对进入集合的元素排序,并且不允许重复(另一类集合(multiset)提供对重复元素的支持)。集合中的元素可以是常见类型,也可以是自定义的接口提类型。set容器有2个主要特征:(1)不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,再插入新元素。(2)不提供直接存取元素的任何操作函数,只

2015-08-06 14:10:50 1008

原创 简单的二分搜索算法

看《编程珠玑》,第一个接触的算法就是二分搜索算法,很常见也很容易实现。引入举个简单的例子:猜数字游戏,猜1到100间的一个随机数字。50?太小了,75?太大了,如此,游戏进行下去,直到猜中为止。如果整数位于1到n之间,那么你可以在log2n次之内猜中。如果n是1000,10次就可以完成,n是100万,最多20次可以完成。概念这个例子引出了 二分搜索 的概念:即初始条

2015-08-06 11:41:50 586 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除