<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Doctorllm的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/Doctorllm</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; Doctorllm]]></copyright><item><title><![CDATA[Nginx安装部署]]></title><link>https://blog.csdn.net/Doctorllm/article/details/46580631</link><guid>https://blog.csdn.net/Doctorllm/article/details/46580631</guid><author>Doctorllm</author><pubDate>Sun, 21 Jun 2015 10:09:24 +0800</pubDate><description><![CDATA[﻿﻿
Nginx安装部署

Nginx ("engine x")
是一个高性能的 HTTP
和
反向代理
服务器，也是一个 IMAP/POP3/SMTP
代理服务器。 Nginx
是由 Igor Sysoev
为俄罗斯访问量第二的 Rambler.ru
站点开发的，第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布，因它的稳定性、丰富的功]]></description><category></category></item><item><title><![CDATA[VMWare的三种网络工作模式]]></title><link>https://blog.csdn.net/Doctorllm/article/details/45669227</link><guid>https://blog.csdn.net/Doctorllm/article/details/45669227</guid><author>Doctorllm</author><pubDate>Tue, 12 May 2015 14:35:18 +0800</pubDate><description><![CDATA[如果你想利用VMWare在局域网中新建一个独立的虚拟服务器，为局域网用户提供网络服务;或者想创建一个与网内其他机器相隔离的虚拟系统，进行特殊的调试工作。此时，对虚拟系统工作模式的选择就非常重要了。如果你选择的工作模式不正确，就无法实现上述目的，也就不能充分发挥VMWare在网络管理和维护中的作用。现在，让我们一起走近VMWare的三种工作模式。 

  理解三种工作模式 

  VMWar]]></description><category></category></item><item><title><![CDATA[程序员保持持久战斗力的方法]]></title><link>https://blog.csdn.net/Doctorllm/article/details/44850773</link><guid>https://blog.csdn.net/Doctorllm/article/details/44850773</guid><author>Doctorllm</author><pubDate>Fri, 03 Apr 2015 09:13:17 +0800</pubDate><description><![CDATA[今天上班到公司，又是等电梯，跟之前一样，又是等了10多分钟都上不了电梯，人太多，我一气之下，就从1楼走到了13楼（我工作的楼层），到了之后，虽然有点累，出了点汗，但突然感觉不错，身体好像得到锻炼，这时候我突然发现，我应该每天都这样走上来，天天锻炼身体，那我以后身体一定会比较健康，这样才能长久地战斗在程序员这种苦逼的职业生涯中。
        想当年读小学的时候，那时候家里穷，每天都是步行去学校]]></description><category></category></item><item><title><![CDATA[线程池代替进程池]]></title><link>https://blog.csdn.net/Doctorllm/article/details/44673205</link><guid>https://blog.csdn.net/Doctorllm/article/details/44673205</guid><author>Doctorllm</author><pubDate>Fri, 27 Mar 2015 11:08:19 +0800</pubDate><description><![CDATA[一．问题引入
刚进入一家新公司，在公司的一些培训中得知，我们的服务端系统中，底层库的任务调度用的是进程池的实现，也就是创建许多子进程来进行执行业务处理，进程池技术是比较早的一种技术了，在现在众多高性能服务端程序中，包括开源著名的apache,nginx…，大多采用线程池来实现，下面说一下采用线程的一些好处。
 
二．线程的优点
线程（thread）技术早在60年代就被提出，但真正应用多线程]]></description><category></category></item><item><title><![CDATA[高并发服务器架构]]></title><link>https://blog.csdn.net/Doctorllm/article/details/44672797</link><guid>https://blog.csdn.net/Doctorllm/article/details/44672797</guid><author>Doctorllm</author><pubDate>Fri, 27 Mar 2015 10:46:42 +0800</pubDate><description><![CDATA[设计一个稳定，高效的服务器，需要考虑很多的方面，不管是系统方面的，还是代码方面的。那么究竟有哪些？

    一： 导致服务器低效的四个罪魁祸首：数据拷贝，（用户态/内核态切换）上下文切换，内存管理，锁竞争；

    数据拷贝： 
        ---首先提下零拷贝。零拷贝（ zero-copy ），某种程度上来说可以有效的改善数据传输的性能，在内核驱动程序（比如网络堆栈或者磁盘存储]]></description><category></category></item><item><title><![CDATA[提高Linux上socket 性能]]></title><link>https://blog.csdn.net/Doctorllm/article/details/44672691</link><guid>https://blog.csdn.net/Doctorllm/article/details/44672691</guid><author>Doctorllm</author><pubDate>Fri, 27 Mar 2015 10:41:54 +0800</pubDate><description><![CDATA[加速网络应用程序的 4 种方法


使用 Sockets API，我们可以开发客户机和服务器应用程序，它们可以在本地网络上进行通信，也可以通过 Internet 在全球范围内进行通信。与其他 API 一样，您可以通过一些方法使用 Sockets API，从而提高 Socket 的性能，或者限制 Socket 的性能。本文探索了 4 种使用 Sockets API 来获取应用程序的最大性能并对]]></description><category></category></item><item><title><![CDATA[高并发Web服务的演变——节约系统内存和CPU]]></title><link>https://blog.csdn.net/Doctorllm/article/details/44587295</link><guid>https://blog.csdn.net/Doctorllm/article/details/44587295</guid><author>Doctorllm</author><pubDate>Tue, 24 Mar 2015 09:24:39 +0800</pubDate><description><![CDATA[一、越来越多的并发连接数
现在的Web系统面对的并发连接数在近几年呈现指数增长，高并发成为了一种常态，给Web系统带来不小的挑战。以最简单粗暴的方式解决，就是增加Web系统的机器和升级硬件配置。虽然现在的硬件越来越便宜，但是一味地通过增加机器来解决并发量的增长，成本是非常高昂的。结合技术优化方案，才是更有效的解决方法。
并发连接数为什么呈指数增长？实际上，从这几年的用户基数上看，这个数量并没有]]></description><category></category></item><item><title><![CDATA[TCP协议疑难杂症全景解析]]></title><link>https://blog.csdn.net/Doctorllm/article/details/44487359</link><guid>https://blog.csdn.net/Doctorllm/article/details/44487359</guid><author>Doctorllm</author><pubDate>Fri, 20 Mar 2015 09:48:05 +0800</pubDate><description><![CDATA[说明：
1).本文以TCP的发展历程解析容易引起混淆，误会的方方面面
2).本文不会贴大量的源码，大多数是以文字形式描述，我相信文字看起来是要比代码更轻松的
3).针对对象：对TCP已经有了全面了解的人。因为本文不会解析TCP头里面的每一个字段或者3次握手的细节，也不会解释慢启动和快速重传的定义
4).除了《TCP/IP详解》(卷一，卷二)以及《Unix网络编程》以及Linux源代码之外，]]></description><category></category></item><item><title><![CDATA[夏俊：深入网站服务端技术（一）——网站并发的问题]]></title><link>https://blog.csdn.net/Doctorllm/article/details/44338889</link><guid>https://blog.csdn.net/Doctorllm/article/details/44338889</guid><author>Doctorllm</author><pubDate>Tue, 17 Mar 2015 10:57:14 +0800</pubDate><description><![CDATA[一、 引子


《关于大型网站技术演进的思考》已经连载完了两个系列，它们分别是《存储的瓶颈》和《网站静态化的处理》，这两个系列对应到网站里的组件就是存储端和浏览器端，网站除了这两端外，还有一端那就是服务端了，服务端上接浏览器端，下承存储端，所以当我们想让网站的浏览器端或存储端性能更加优秀的时候，就不得不去考虑服务端的问题，因为服务端和它们永远都是剪不断理还乱的关联性。现在我要开启《关于大型网]]></description><category></category></item><item><title><![CDATA[多线程和多进程的区别（小结）]]></title><link>https://blog.csdn.net/Doctorllm/article/details/44195827</link><guid>https://blog.csdn.net/Doctorllm/article/details/44195827</guid><author>Doctorllm</author><pubDate>Wed, 11 Mar 2015 10:54:54 +0800</pubDate><description><![CDATA[很想写点关于多进程和多线程的东西，我确实很爱他们。但是每每想动手写点关于他们的东西，却总是求全心理作祟，始终动不了手。
今天终于下了决心，写点东西，以后可以再修修补补也无妨。
 
一.为何需要多进程（或者多线程），为何需要并发？
这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说，他们确实无法感受到并发的魅力以及必要性。
我想，只要你不是整天都写那种int main()]]></description><category></category></item><item><title><![CDATA[为什么我们使用Nginx而不是Apache？]]></title><link>https://blog.csdn.net/Doctorllm/article/details/44172549</link><guid>https://blog.csdn.net/Doctorllm/article/details/44172549</guid><author>Doctorllm</author><pubDate>Tue, 10 Mar 2015 10:54:13 +0800</pubDate><description><![CDATA[Apache是非常强大的Web服务器，模块化结构，也是Web服务端的鼻祖。世界上大多数网站仍运行着Apache系统。但是，Apache并不是完美的，并且不再适合大规模系统。为什么？因为他的进程模式虽然简单而灵活，但并不适合大规模尤其是当要处理像PHP这种需要占用大量内存应用程序代码时。


我们大多数的客户在他们的服务器上使用Apache作为Web服务器，尤其是部署在一个基于PHP系统的前端]]></description><category></category></item><item><title><![CDATA[select, iocp, epoll,kqueue及各种I/O复用机制]]></title><link>https://blog.csdn.net/Doctorllm/article/details/44172065</link><guid>https://blog.csdn.net/Doctorllm/article/details/44172065</guid><author>Doctorllm</author><pubDate>Tue, 10 Mar 2015 10:25:35 +0800</pubDate><description><![CDATA[首先，介绍几种常见的I/O模型及其区别，如下：


blocking I/O

nonblocking I/O

I/O multiplexing (select and poll)

signal driven I/O (SIGIO)

asynchronous I/O (the POSIX aio_functions)


blocking I/O 
这个不用多解]]></description><category></category></item><item><title><![CDATA[Apache ab 压力测试及分析]]></title><link>https://blog.csdn.net/Doctorllm/article/details/44037327</link><guid>https://blog.csdn.net/Doctorllm/article/details/44037327</guid><author>Doctorllm</author><pubDate>Tue, 03 Mar 2015 13:50:14 +0800</pubDate><description><![CDATA[压力测试是一种基本的质量保证行为，它是每个重要软件测试工作的一部分。压力测试的基本思路很简单：不是在常规条件下运行手动或自动测试，而是在计 算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽等。一般用并发来做压力测试。
1.apache安装
下载：
从Apache官方网站http://httpd.apache.org/down]]></description><category></category></item><item><title><![CDATA[如何成为一个牛逼的C/C++程序员？]]></title><link>https://blog.csdn.net/Doctorllm/article/details/43866761</link><guid>https://blog.csdn.net/Doctorllm/article/details/43866761</guid><author>Doctorllm</author><pubDate>Tue, 17 Feb 2015 16:35:57 +0800</pubDate><description><![CDATA[这个题目的噱头太大，要真的写起来， 足够写一本书了。
 
本人是过来人， 结合自身的体会和大家交流一下，希望新人能少走弯路。
 
每个人的情况不一样，我下面的描述可能并不适合每一个看到这篇文章的人。
 
一、C/C++语言
 
      如果你的基础很差， 建议不要一开始就学C++语言，从C开始学起，对程序有个初步的认识，循序渐进。C语言的书嘛，先买一本 300 页以内的，把书中]]></description><category></category></item><item><title><![CDATA[做10年Windows程序员与做10年Linux程序员的区别]]></title><link>https://blog.csdn.net/Doctorllm/article/details/43866703</link><guid>https://blog.csdn.net/Doctorllm/article/details/43866703</guid><author>Doctorllm</author><pubDate>Tue, 17 Feb 2015 16:19:08 +0800</pubDate><description><![CDATA[如果一个程序员从来没有在linux，unix下开发过程序，一直在windows下面开发程序， 同样是工作10年， 大部分情况下与在linux，unix下面开发10年的程序员水平会差别很大。我写这篇文章并不是想贬低windows下面开发的人，做windows开发的人看了可能会感觉不舒服，我并不是这个意思，我只是说说我自己的感受，我最早开始学习编程也是在windows下面的， 学的是VB，后来转到VC]]></description><category></category></item><item><title><![CDATA[C/C++程序员必须熟练应用的开源项目]]></title><link>https://blog.csdn.net/Doctorllm/article/details/43866623</link><guid>https://blog.csdn.net/Doctorllm/article/details/43866623</guid><author>Doctorllm</author><pubDate>Tue, 17 Feb 2015 15:59:48 +0800</pubDate><description><![CDATA[作为一个经验丰富的C/C++程序员， 肯定亲手写过各种功能的代码， 比如封装过数据库访问的类， 封装过网络通信的类，封装过日志操作的类， 封装过文件访问的类， 封装过UI界面库等， 也在实际的项目中应用过， 但是回过头仔细想想，其实以前自己写过的这些代码，只能是在特定的项目或者特定的环境中使用， 对于自己来说， 在不同的项目中应用， 只需要复制代码， 改改也就可以了， 因为自己写的代码自己很熟悉。]]></description><category></category></item><item><title><![CDATA[在线程中，解决SIGPIPE信号问题]]></title><link>https://blog.csdn.net/Doctorllm/article/details/43410027</link><guid>https://blog.csdn.net/Doctorllm/article/details/43410027</guid><author>Doctorllm</author><pubDate>Mon, 02 Feb 2015 16:17:14 +0800</pubDate><description><![CDATA[有时候线程会出现SIGPIPE错误：
 
(gdb) bt
#0  0x00110416 in __kernel_vsyscall ()
#1  0x0092f918 in send () from /lib/libpthread.so.0
 
这是因为在调用socket发送函数send()时，出现的异常错误，可能的原因是因为tcp连接可能不正常，导致了send()数据失败，系统会收到]]></description><category></category></item><item><title><![CDATA[在linux下，解决mysql长连接异常错误（SIGPIPE）]]></title><link>https://blog.csdn.net/Doctorllm/article/details/43409685</link><guid>https://blog.csdn.net/Doctorllm/article/details/43409685</guid><author>Doctorllm</author><pubDate>Mon, 02 Feb 2015 15:58:20 +0800</pubDate><description><![CDATA[1. 最近在linux下开发IM服务端，遇到一个导致服务端崩溃的问题：
问题描述：服务端运行一个晚上，到了第二天早上一来，登陆客户端时，系统崩溃，
从log与gdb的信息得知，崩溃在执行 mysql_ping（）的时候：
(gdb) bt
#0  0x00110416 in __kernel_vsyscall ()
#1  0x0092f918 in send () from /lib/]]></description><category></category></item><item><title><![CDATA[recv send 阻塞和非阻塞]]></title><link>https://blog.csdn.net/Doctorllm/article/details/43052529</link><guid>https://blog.csdn.net/Doctorllm/article/details/43052529</guid><author>Doctorllm</author><pubDate>Fri, 23 Jan 2015 10:52:07 +0800</pubDate><description><![CDATA[int send( SOCKET s, const char FAR *buf, int len, int flags );
不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求，而服务器则通常用send函数来向客户程序发送应答。
 
该函数的第一个参数指定发送端套接字描述符；
 
第二个参数指明一个存放应用程序要发送数据]]></description><category></category></item><item><title><![CDATA[Epoll模型详解]]></title><link>https://blog.csdn.net/Doctorllm/article/details/42979915</link><guid>https://blog.csdn.net/Doctorllm/article/details/42979915</guid><author>Doctorllm</author><pubDate>Wed, 21 Jan 2015 21:40:02 +0800</pubDate><description><![CDATA[Linux 2.6内核中提高网络I/O性能的新方法-epoll I/O多路复用技术在比较多的TCP网络服务器中有使用，即比较多的用到select函数。

1、为什么select落后
    首先，在Linux内核中，select所用到的FD_SET是有限的，即内核中有个参数__FD_SETSIZE定义了每个FD_SET的句柄个数，在 我用的2.6.15-25-386内核中，该值是1024，搜]]></description><category></category></item></channel></rss>