操作系统
文章平均质量分 76
华仔爱技术
精通C++、Java开语言,精通Linux平台相关开发技术,MySQL、Sphinx,熟悉各种互联网开源产品,如Nginx、Redis等,对系统分析和设计有丰富的经验
展开
-
多核时代:并行程序设计探讨(4)——Windows和Linux对决(进程间通信)
进程间通信多进程和多线程本质上就是将原来一个进程或者线程处理的任务分给了多个进程或者线程,也可以说是将原来一个CPU处理的任务分给了多个CPU处理,类似于随着生产力的发展,原来一个人包打天下的个人英雄主义时代被分工合作的团队取代一样。既然是一个团队,就必然涉及到分工合作问题,并行程序的设计本质上就是解决“分工”和“合作”的问题。其中原创 2009-08-04 20:47:00 · 6886 阅读 · 3 评论 -
tcp短连接TIME_WAIT问题解决方法大全(1)——高屋建瓴
tcp连接是网络编程中最基础的概念,基于不同的使用场景,我们一般区分为“长连接”和“短连接”,长短连接的优点和缺点这里就不详细展开了,有心的同学直接去google查询,本文主要关注如何解决tcp短连接的TIME_WAIT问题。短连接最大的优点是方便,特别是脚本语言,由于执行完毕后脚本语言的进程就结束了,基本上都是用短连接。但短连接最大的缺点是将占用大量的系统资源,例如:本地端口原创 2012-11-04 21:45:54 · 29584 阅读 · 10 评论 -
tcp短连接TIME_WAIT问题解决方法大全(3)——tcp_tw_recycle
【tcp_tw_recycle和tcp_timestamps】参考官方文档(http://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt),tcp_tw_recycle解释如下:tcp_tw_recycle选项作用为:Enable fast recycling TIME-WAIT sockets. Default valu原创 2012-11-04 21:52:09 · 21113 阅读 · 4 评论 -
tcp短连接TIME_WAIT问题解决方法大全(4)——tcp_tw_reuse
tcp_tw_reuse选项的含义如下(http://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt):tcp_tw_reuse - BOOLEANAllow to reuse TIME-WAIT sockets for new connections when it issafe from protocol view原创 2012-11-04 21:54:04 · 20931 阅读 · 2 评论 -
tcp短连接TIME_WAIT问题解决方法大全(5)——tcp_max_tw_buckets
参考官方文档(http://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt),解释如下:tcp_max_tw_buckets - INTEGERMaximal number of timewait sockets held by system simultaneously.If this number is excee原创 2012-11-04 21:55:59 · 17469 阅读 · 0 评论 -
高可用开源方案 Keepalived VS Heartbeat对比
最近因为项目需要,简单的试用了两款高可用开源方案:Keepalived和Heartbeat。两者都很流行,但差异还是很大的,现将试用过程中的感受以及相关知识点简单总结一下,供大家选择方案的时候参考。1)Keepalived使用更简单:从安装、配置、使用、维护等角度上对比,Keepalived都比Heartbeat要简单得多,尤其是Heartbeat 2.1.4后拆分成3个子项目,安原创 2013-08-06 11:26:18 · 20186 阅读 · 0 评论 -
tcp流控的一个实例:无法发送数据!
模拟测试程序,从客户端向服务器发数据,人工控制服务器收数据。当客户端发了一部分数据后,无法再发送,此时服务器开始每次收取1K。按照常理推断,服务器收取1K后,客户端应该能够继续发送数据,但实测观察发现,客户端还是无法发送数据,直到服务器收取了一定数据量后,客户端才能够继续发送。tcp抓包如下:11:42:40.217984 IP localhost.6379 > local原创 2012-10-31 09:22:12 · 4114 阅读 · 0 评论 -
tcp短连接TIME_WAIT问题解决方法大全(2)——SO_LINGER
SO_LINGER是一个socket选项,通过setsockopt API进行设置,使用起来比较简单,但其实现机制比较复杂,且字面意思上比较难理解。解释最清楚的当属《Unix网络编程卷1》中的说明(7.5章节),这里简单摘录:SO_LINGER的值用如下数据结构表示:struct linger { int l_onoff; /* 0 = off, nozero = on *原创 2012-11-04 21:48:23 · 16066 阅读 · 2 评论 -
大型项目使用Automake/Autoconf完成编译配置(2)——步步为营
使用过开源C/C++项目的同学们都知道,标准的编译过程已经变成了简单的三部曲:configure/make/make install, 使用起来很方便,不像平时自己写代码,要手写一堆复杂的Makefile,而且换个编译环境,Makefile还需要修改(Eclipse也是这样)。这么好的东东当然要拿来用了,但GNU的Autotool系列博大精深,工具数量又多,涉及的语言也多,要是自己从头看到尾,黄花菜都凉了,项目估计早就结束了;上网搜样例倒是有一大堆,但都是“hello world”的样例,离真正完成大型项目原创 2011-02-04 18:19:00 · 16540 阅读 · 16 评论 -
大型项目使用Automake/Autoconf完成编译配置(1)——提纲挈领
使用过开源C/C++项目的同学们都知道,标准的编译过程已经变成了简单的三部曲:configure/make/make install, 使用起来很方便,不像平时自己写代码,要手写一堆复杂的Makefile,而且换个编译环境,Makefile还需要修改(Eclipse也是这样)。这么好的东东当然要拿来用了,但GNU的Autotool系列博大精深,工具数量又多,涉及的语言也多,要是自己从头看到尾,黄花菜都凉了,项目估计早就结束了;上网搜样例倒是有一大堆,但都是“hello world”的样例,离真正完成大型原创 2011-02-04 18:13:00 · 8508 阅读 · 5 评论 -
多核时代:并行程序设计探讨(3)——Windows和Linux对决(多进程多线程)
并行程序设计探讨(3)——Windows和Linux对决(多进程多线程)前面的博文经过分析总结,最后得出两种并行技术:多进程多线程、多机协作。对于多进程和多线程来说,最有代表性且最常见的的莫过于Windows和Linux(作为UNIX类操作系统的代表,下同)这两个操作系统了。真是冤家路窄,Windows和Linux这对冤家在这里又碰面了!!当然,我这里不是要挑起Windows和Linu原创 2009-07-11 11:49:00 · 7939 阅读 · 0 评论 -
多核时代:并行程序设计探讨(1)——并行系统
并行程序设计探讨(1)——并行系统大家可能会有疑问:你一会儿并行,一会儿多核,到底是谁跟谁啊?我开始也有这个疑问,甚至以为并行就是多核,其实两个并不能对等,一句话就是:多核是并行的一种。并行本身是一个广泛的概念,其实早在多核之前并行处理就已经存在N久了,大家想想看:IBM、SUN、HP的小型机,哪个不是多CPU的?甚至连DELL的工作站,都是两CPU的,更不用说那些中型机、大型机原创 2009-06-24 23:07:00 · 4436 阅读 · 0 评论 -
多核时代:并行程序设计探讨(5)——Windows和Linux对决(进程间同步)
Windows和Linux对决(线程间同步)1.1 Windows线程同步1.1.1 关键代码区Critical Section所谓“关键代码区”,相信大家看名字也能理解个大概了。首先:它很关键,第二:它是代码区。之所以关键,当然目的就是每次只能一个线程能够进入;既然是代码区,那就是只能在一组拥有同样代码的线程中用。那什么情况下会用到关键代码区呢?当然是要保护多个原创 2009-08-08 23:31:00 · 4858 阅读 · 1 评论 -
tcp 三次握手和四次断连深入分析:连接状态和socket API的关系
我敢打赌很少有人明白tcp状态和socket编程API之间的关系。不信? 看看如下几个问题你是否知道吧:1)什么时候客户端才能够连接上server端, 是server端调用bind后还是listen后还是accept后 ?2)什么情况下会出现FIN_WAIT_2状态。。。。。。。。。。。。。。。。。。。。。如果你不清楚的话,那么就听我细细道来原创 2014-10-28 10:59:22 · 6637 阅读 · 0 评论