自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Nginx安装部署

Nginx安装部署Nginx ("engine x")是一个高性能的 HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP代理服务器。 Nginx是由 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功

2015-06-21 10:09:24 476

转载 VMWare的三种网络工作模式

如果你想利用VMWare在局域网中新建一个独立的虚拟服务器,为局域网用户提供网络服务;或者想创建一个与网内其他机器相隔离的虚拟系统,进行特殊的调试工作。此时,对虚拟系统工作模式的选择就非常重要了。如果你选择的工作模式不正确,就无法实现上述目的,也就不能充分发挥VMWare在网络管理和维护中的作用。现在,让我们一起走近VMWare的三种工作模式。 理解三种工作模式 VMWar

2015-05-12 14:35:18 497

原创 程序员保持持久战斗力的方法

今天上班到公司,又是等电梯,跟之前一样,又是等了10多分钟都上不了电梯,人太多,我一气之下,就从1楼走到了13楼(我工作的楼层),到了之后,虽然有点累,出了点汗,但突然感觉不错,身体好像得到锻炼,这时候我突然发现,我应该每天都这样走上来,天天锻炼身体,那我以后身体一定会比较健康,这样才能长久地战斗在程序员这种苦逼的职业生涯中。        想当年读小学的时候,那时候家里穷,每天都是步行去学校

2015-04-03 09:13:17 731 1

原创 线程池代替进程池

一.问题引入刚进入一家新公司,在公司的一些培训中得知,我们的服务端系统中,底层库的任务调度用的是进程池的实现,也就是创建许多子进程来进行执行业务处理,进程池技术是比较早的一种技术了,在现在众多高性能服务端程序中,包括开源著名的apache,nginx…,大多采用线程池来实现,下面说一下采用线程的一些好处。 二.线程的优点线程(thread)技术早在60年代就被提出,但真正应用多线程

2015-03-27 11:08:19 1320

转载 高并发服务器架构

设计一个稳定,高效的服务器,需要考虑很多的方面,不管是系统方面的,还是代码方面的。那么究竟有哪些?    一: 导致服务器低效的四个罪魁祸首:数据拷贝,(用户态/内核态切换)上下文切换,内存管理,锁竞争;    数据拷贝:         ---首先提下零拷贝。零拷贝( zero-copy ),某种程度上来说可以有效的改善数据传输的性能,在内核驱动程序(比如网络堆栈或者磁盘存储

2015-03-27 10:46:42 1371

转载 提高Linux上socket 性能

加速网络应用程序的 4 种方法使用 Sockets API,我们可以开发客户机和服务器应用程序,它们可以在本地网络上进行通信,也可以通过 Internet 在全球范围内进行通信。与其他 API 一样,您可以通过一些方法使用 Sockets API,从而提高 Socket 的性能,或者限制 Socket 的性能。本文探索了 4 种使用 Sockets API 来获取应用程序的最大性能并对

2015-03-27 10:41:54 572

转载 高并发Web服务的演变——节约系统内存和CPU

一、越来越多的并发连接数现在的Web系统面对的并发连接数在近几年呈现指数增长,高并发成为了一种常态,给Web系统带来不小的挑战。以最简单粗暴的方式解决,就是增加Web系统的机器和升级硬件配置。虽然现在的硬件越来越便宜,但是一味地通过增加机器来解决并发量的增长,成本是非常高昂的。结合技术优化方案,才是更有效的解决方法。并发连接数为什么呈指数增长?实际上,从这几年的用户基数上看,这个数量并没有

2015-03-24 09:24:39 512

转载 TCP协议疑难杂症全景解析

说明:1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的3).针对对象:对TCP已经有了全面了解的人。因为本文不会解析TCP头里面的每一个字段或者3次握手的细节,也不会解释慢启动和快速重传的定义4).除了《TCP/IP详解》(卷一,卷二)以及《Unix网络编程》以及Linux源代码之外,

2015-03-20 09:48:05 633

转载 夏俊:深入网站服务端技术(一)——网站并发的问题

一、 引子《关于大型网站技术演进的思考》已经连载完了两个系列,它们分别是《存储的瓶颈》和《网站静态化的处理》,这两个系列对应到网站里的组件就是存储端和浏览器端,网站除了这两端外,还有一端那就是服务端了,服务端上接浏览器端,下承存储端,所以当我们想让网站的浏览器端或存储端性能更加优秀的时候,就不得不去考虑服务端的问题,因为服务端和它们永远都是剪不断理还乱的关联性。现在我要开启《关于大型网

2015-03-17 10:57:14 614

转载 多线程和多进程的区别(小结)

很想写点关于多进程和多线程的东西,我确实很爱他们。但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手。今天终于下了决心,写点东西,以后可以再修修补补也无妨。 一.为何需要多进程(或者多线程),为何需要并发?这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说,他们确实无法感受到并发的魅力以及必要性。我想,只要你不是整天都写那种int main()

2015-03-11 10:54:54 370

转载 为什么我们使用Nginx而不是Apache?

Apache是非常强大的Web服务器,模块化结构,也是Web服务端的鼻祖。世界上大多数网站仍运行着Apache系统。但是,Apache并不是完美的,并且不再适合大规模系统。为什么?因为他的进程模式虽然简单而灵活,但并不适合大规模尤其是当要处理像PHP这种需要占用大量内存应用程序代码时。我们大多数的客户在他们的服务器上使用Apache作为Web服务器,尤其是部署在一个基于PHP系统的前端

2015-03-10 10:54:13 353

转载 select, iocp, epoll,kqueue及各种I/O复用机制

首先,介绍几种常见的I/O模型及其区别,如下:blocking I/Ononblocking I/OI/O multiplexing (select and poll)signal driven I/O (SIGIO)asynchronous I/O (the POSIX aio_functions)blocking I/O 这个不用多解

2015-03-10 10:25:35 463

转载 Apache ab 压力测试及分析

压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计 算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽等。一般用并发来做压力测试。1.apache安装下载:从Apache官方网站http://httpd.apache.org/down

2015-03-03 13:50:14 564

转载 如何成为一个牛逼的C/C++程序员?

这个题目的噱头太大,要真的写起来, 足够写一本书了。 本人是过来人, 结合自身的体会和大家交流一下,希望新人能少走弯路。 每个人的情况不一样,我下面的描述可能并不适合每一个看到这篇文章的人。 一、C/C++语言       如果你的基础很差, 建议不要一开始就学C++语言,从C开始学起,对程序有个初步的认识,循序渐进。C语言的书嘛,先买一本 300 页以内的,把书中

2015-02-17 16:35:57 409

转载 做10年Windows程序员与做10年Linux程序员的区别

如果一个程序员从来没有在linux,unix下开发过程序,一直在windows下面开发程序, 同样是工作10年, 大部分情况下与在linux,unix下面开发10年的程序员水平会差别很大。我写这篇文章并不是想贬低windows下面开发的人,做windows开发的人看了可能会感觉不舒服,我并不是这个意思,我只是说说我自己的感受,我最早开始学习编程也是在windows下面的, 学的是VB,后来转到VC

2015-02-17 16:19:08 462

转载 C/C++程序员必须熟练应用的开源项目

作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应用过, 但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定的环境中使用, 对于自己来说, 在不同的项目中应用, 只需要复制代码, 改改也就可以了, 因为自己写的代码自己很熟悉。

2015-02-17 15:59:48 403

原创 在线程中,解决SIGPIPE信号问题

有时候线程会出现SIGPIPE错误: (gdb) bt#0  0x00110416 in __kernel_vsyscall ()#1  0x0092f918 in send () from /lib/libpthread.so.0 这是因为在调用socket发送函数send()时,出现的异常错误,可能的原因是因为tcp连接可能不正常,导致了send()数据失败,系统会收到

2015-02-02 16:17:14 1350

原创 在linux下,解决mysql长连接异常错误(SIGPIPE)

1. 最近在linux下开发IM服务端,遇到一个导致服务端崩溃的问题:问题描述:服务端运行一个晚上,到了第二天早上一来,登陆客户端时,系统崩溃,从log与gdb的信息得知,崩溃在执行 mysql_ping()的时候:(gdb) bt#0  0x00110416 in __kernel_vsyscall ()#1  0x0092f918 in send () from /lib/

2015-02-02 15:58:20 1356

转载 recv send 阻塞和非阻塞

int send( SOCKET s, const char FAR *buf, int len, int flags );不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。 该函数的第一个参数指定发送端套接字描述符; 第二个参数指明一个存放应用程序要发送数据

2015-01-23 10:52:07 337

转载 Epoll模型详解

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,搜

2015-01-21 21:40:02 365

空空如也

空空如也

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

TA关注的人

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