自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2011-07-21 20:44:26 927 1

转载 使用 Socket 通信实现 FTP 客户端程序

FTP 概述文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。FTP的目标是提高文件的共享性和可靠高效地传送数据。在传输文件时,FTP 客户端程序先与服务器建立连接,然后向服务器发送命令。服务器收到命令后给予响应,并执行命令。FTP 协议与操作系统无关,任何操作系统上的程序只要符合 FTP 协议,就可以相互传输数据。本文主要基于 LINUX 平台,对 FTP 客户端的实现原理进行详尽的解释并阐述如何使用 C 语言编写一个简单的 FTP 客户端。回页首FTP 协议相比其他协议,

2011-06-02 19:08:00 4766 3

转载 c++内存的分布

<br />一、一个经过编译的C/C++的程序占用的内存分成以下几个部分:<br />1、栈区(stack):由编译器自动分配和释放 ,存放函数的参数值、局部变量的值等,甚至函数的调用过程都是用栈来完成。其操作方式类似于数据结构中的栈。 <br />2、堆区(heap) :一般由程序员手动申请以及释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式类似于链表。 <br />3、全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静

2011-05-16 22:06:00 615

转载 面向程序员的数据库访问性能优化法则

<br />面向程序员的数据库访问性能优化法则<br /> <br />特别说明:<br />1、  本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识;<br />2、  本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也可以参考,但许多观点不适合于KV数据库或内存数据库或者是基于SSD技术的数据库;<br />3、  本文未深入数据库优化中最核心的执行计划分析技术。<br /> <br />读者对像:<br />开发人员:如果你是做数据

2011-05-02 15:10:00 669

转载 syslog应用详解

<br />syslog是Linux的日志子系统,本文详细讲述了syslog日志文件的字段含义、syslog如何应用和syslog的配置,并描述了c语言应用syslog的几个接口。<br /><br />日志概念<br />      日志文件详细地记录了系统每天发生的各种各样的事件。用户可以通过日志文件检查错误产生的原因,或者在受到攻击和黑客入侵时追踪攻击者的踪迹。日志的两个比较重要的作用是:审核和监测。<br />      Linux 系统的日志主要分为两种类型 :<br />      1. 进程所

2011-05-02 09:31:00 3433

转载 多线程 or 多进程?

<br />      在Unix上编程采用多线程还是多进程的争执由来已久,这种争执最常见到在C/S通讯中服务端并发技术的选型上,比如WEB服务器技术中,Apache是采用多进程的(perfork模式,每客户连接对应一个进程,每进程中只存在唯一一个执行线程),Java的Web容器Tomcat、Websphere等都是多线程的(每客户连接对应一个线程,所有线程都在一个进程中)。<br />      从Unix发展历史看,伴随着Unix的诞生进程就出现了,而线程很晚才被系统支持,例如Linux直到内核2.6,

2011-05-02 09:03:00 8081 5

转载 解决TCP网络传输“粘包”问题

当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API)。TCP/IP传输层有两个并列的协议:TCP和UDP。其中TCP(transport control protocol,传输控制协议)是面向连接的,提供高可靠性服务。UDP(user datagram protocol,用户数据报协议)是无连接的,提供高效率服务。在实际工程应用中,对可靠性和效率的选择取决于应用的环境和需求。一般情况下,普通数据的网络传输采用高效率的udp,重要数据的网络传输采用高可靠性的T

2011-04-30 17:47:00 736

转载 统一建模语言UML轻松入门(4)――动态建模

静可描形,动可描行。动和静是辩证的两面,在UML中,静态建模可以描述系统的组织和结构,而动态建模则可描述系统的行为和动作。前一节中介绍的类图和对象图主要用于静态建模,本节我们将描述UML中的动态建模机制。在动态建模机制中,以消息来完成对象之间的交互,用状态图、顺序图、协作图和活动图来描述系统的行为。4.1消息       在面向对象领域,两个对象的交互是通过消息的发送和接收来完成的。消息分为简单消息、同步消息和异步消息:       (1)简单消息:只是表示控制如何从一个对象发给另一个对象,并不包含控制的细

2011-04-30 17:05:00 1100 5

转载 创业公司的CEO每周须必做的13件事

<br />当一个创业公司的CEO是个很辛苦很难的事。下面列出的是每个创业公司的CEO每周都应该必做的13件事情:<br /><br />1.关注一件事。你的公司一次只能做好一件事情。弄清楚你的这件事。把它贴在墙上。每天都要这样。把它放在公司内的日常交流论坛的顶部。不要让任何其它事情把你的团队从这个事情上分心。<br /><br />2.记住:你和你的团队是共荣共损的。花时间去培养你的团队。引进比你更善于做某些事的人。激励他们、督促他们去做他们从来不敢相信自己能完成的事。给他们行动的自由、允许他们漫无目的的

2011-04-25 19:17:00 520

转载 一些linux网络API

<br /> 索引:<br />1.字节序函数<br />2.字节操作函数<br />3.地址转换函数<br />4.readn、writen和readline<br />5.测试描述符类型<br />6.socket函数<br />7.connect函数<br />8.bind函数<br />9.listen函数<br />10.accept函数<br />11.close函数<br />12.getsockname和getpeername<br />13.select函数<br />14.shutdow

2011-04-13 11:40:00 627

转载 统一建模语言UML轻松入门(3)――静态建模:类和对象

同类相从,同声相应,固天之理也。——《庄子·渔父》类是一种对本质相同事物的抽象,人类软件开发技术的发展历史,就是还事物以本源的历史,开发技术、名词越来越接近世界的真实,“面向对象”、“类”就是这样的产物。3.1类图在UML中,类图显示了一组类、接口、协作以及它们之间的关系。在UML的静态机制中类图是一个重点,它不但为设计人员所关心,更为实现人员所关注,建模工具也主要依据类图来产生代码(正向)工程。因此,类图在UML的各种图中占据了相当重要的地位。       类在类图中类用矩形框来表示,它的属性和操作分别列

2011-04-11 12:48:00 732

转载 统一建模语言UML轻松入门(2)――静态建模:用例

目前,在热播的内地版《神雕侠侣》中,杨过和小龙女有一份不为人知的默契与浪漫,那就是他们所绘制的并肩小人图。这样的小人图,是UML用例图的一部分,被称为参与者。2.1 用例与用例图用例是需求分析中最重要的概念,需求表征了一个系统的设计特性、特征和行为,描述一个系统的需求意味着描述了建立在该系统外部的事物与系统之间的契约,契约上声明了期望系统做什么。需求获取(Requirement Elicitation) 是需求工程的主体,其主要工作是建立待开发系统的模型,而用例就是用于建立这种模型的良好方法。用例最初由Iv

2011-04-10 10:20:00 1039

转载 国学入门书要目及其读法(梁启超)

<br />国学入门书要目及其读法<br /><br />梁启超<br />    两月前清华周刊记者以此题相属,蹉跎久未报命。顷独居翠微山中,行箧无一书,而记者督责甚急,乃竭三日之力,专凭忆想所及草斯篇,漏略自所不免,且容有并书名篇名亦忆错误者,他日更当补正也。<br />中华民国十二年四月二十六日启超作于碧摩岩翠山房<br /><br />    甲、修养应用及思想史关系书类<br />    《论语》 《孟子》<br />    《论语》为二千来国人思想之总源泉,《孟子》自宋以后势力亦与相埒,此二书可

2011-04-09 15:52:00 5673

转载 论语全集

<br />论语<br /><br />论语序说<br />  史记世家曰:“孔子名丘,字仲尼。其先宋人。父叔梁纥,母颜氏。以鲁襄公二十二年,庚戌之岁,十一月庚子,生孔子于鲁昌平乡陬邑。为儿嬉戏,常陈俎豆,设礼容。及长,为委吏,料量平;为司职吏,畜蕃息。适周,问礼于老子,既反,而弟子益进。昭公二十五年甲申,孔子年三十五,而昭公奔齐,鲁乱。于是适齐,为高昭子家臣,以通乎景公。公欲封以尼溪之田,晏婴不可,公惑之。孔子遂行,反乎鲁。定公元年壬辰,孔子年四十三,而季氏强僭,其臣阳虎作乱专政。故孔子不仕,而退修诗、书

2011-04-09 15:49:00 8146

转载 setsocket用法大全

<br />1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:<br />BOOL bReuseaddr=TRUE;<br />setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));<br /><br />2. 如果要已经处于连接状态的soket在调用closeso

2011-04-09 15:46:00 795

转载 BitTorrent 性能卓越的原因

<br />概要<br />      BitTorrent 文件发布系统采用针锋相对(tit_for_tat)的方法来达到帕累托有效,与当前已知的协作技术相比,它具有更高的活力。本文将解释BitTorrent 的用途,以及是怎样用经济学的方法来达到这个目标的。<br /> <br />1、BitTorrent 用来做什么?<br />      当通过HTTP协议来下载一个文件的时候,所有的上载开销都在主机上。而使用 BitTorrent,当多个人同时下载同一个文件的时候,他们之间也相互为对方提供文件的部

2011-04-09 15:30:00 805

转载 系统构架设计应考虑的因素

<br />本文从程序的运行时结构和源代码的组织结构两个方面探讨了系统构架设计应考虑的各种因素,列举了系统构架设计文档应考虑的一些问题。 <br /><br />    一、与构架有关的几个基本概念:<br />  <br />    1、模块(module):一组完成指定功能的语句,包括:输入、输出、逻辑处理功能、内部信息、运行环境(与功能对应但不是一对一关系)。<br />  <br />    2、组件(component):系统中相当重要的、几乎是独立的可替换部分,它在明确定义的构架环境中实现确切的

2011-04-09 15:15:00 741

转载 泡泡堂、QQ堂游戏通信架构分析

<br />  之前,我分析过QQ游戏(特指QQ休闲平台,并非QQ堂,下同)的通信架构(http://blog.csdn.net/wang_8910/archive/2011/04/09/6311779.aspx),分析过魔兽世界的通信架构(http://blog.csdn.net/wang_8910/archive/2011/04/09/6311810.aspx),似乎网络游戏的通信架构也就是这些了,其实不然,在网络游戏大家庭中,还有一种类型的游戏我认为有必要把它的通信架构专门作个介绍,这便是如泡泡堂、Q

2011-04-09 15:08:00 780

转载 拼包函数及网络封包的异常处理(含代码)

<br />  常见的网络服务器,基本上是7*24小时运转的,对于网游来说,至少要求服务器要能连续工作一周以上的时间并保证不出现服务器崩溃这样的灾难性事件。事实上,要求一个服务器在连续的满负荷运转下不出任何异常,要求它设计的近乎完美,这几乎是不太现实的。服务器本身可以出异常(但要尽可能少得出),但是,服务器本身应该被设计得足以健壮,“小病小灾”打不垮它,这就要求服务器在异常处理方面要下很多功夫。<br /> <br />  服务器的异常处理包括的内容非常广泛,本文仅就在网络封包方面出现的异常作一讨论,希望能

2011-04-09 14:54:00 1009

转载 逆向思维--魔兽世界封包分析

  特别声明:  本人非常欣赏暴雪及他们的游戏,之所以写这个文章,是想让大家了解一些网络封包分析方面的常见方法以及学习暴雪游戏在网络处理方面的经验,偶认为作为一个网络编程者,熟练掌握封包分析的工具和方法应该是其基本功之一。本文所列的所有封包分析内容,全部是采用普通黑箱方式即可得来的,并未涉及对魔兽世界可执行程序的逆向工程。同时,除此文涉及的内容外,本人拒绝向任何人透露更详细的关于魔兽世界封包方面的更多内容,有兴趣者请自己进行相关的试验,本人在此文中也将尽量避免公开敏感的封包内容及相关加解密算法。谨以此文献给

2011-04-09 14:48:00 1566

转载 负载均衡--大型在线系统实现的关键(再谈QQ游戏百万人在线的技术实现)

<br />本文出处:http://blog.csdn.net/sodme<br /> <br />      要了解此篇文章中引用的另一篇文章,请到以下地址:http://blog.csdn.net/wang_8910/archive/2011/04/09/6311765.aspx<br /> <br />      以上的这篇文章是早在去年的时候写的了,当时正在作休闲平台,一直在想着如何实现一个可扩充的支持百万人在线的游戏平台,后来思路有了,就写了那篇总结。文章的意思,重点在于阐述一个百万级在线的系统是

2011-04-09 14:31:00 1048

转载 类似于QQ游戏百万人同时在线的服务器架构实现

<br />本文作者:sodme 本文出处:http://blog.csdn.net/sodme<br /> <br />      QQ游戏于前几日终于突破了百万人同时在线的关口,向着更为远大的目标迈进,这让其它众多传统的棋牌休闲游戏平台黯然失色,相比之下,联众似乎已经根本不是QQ的对手,因为QQ除了这100万的游戏在线人数外,它还拥有3亿多的注册量(当然很多是重复注册的)以及QQ聊天软件900万的同时在线率,我们已经可以预见未来由QQ构建起来的强大棋牌休闲游戏帝国。<br /><br />  那么,在技

2011-04-09 14:21:00 2456

转载 C++强大背后

<br />在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C++。C++是一门通用编程语言,支持多种编程范式,包括过程式、面向对象(object-oriented programming, OP)、泛型(generic programming, GP),后来为泛型而设计的模版,被发现及证明是图灵完备的,因此使C++亦可支持模版元编程范式(templa

2011-04-08 17:16:00 536

转载 统一建模语言UML轻松入门(1)――基本概念

统一建模语言UML轻松入门(1)――基本概念---------------------------------------------------------------------宋宝华 email:21cnbao@21cn.com---------------------------------------------------------------------公元前260年,秦、赵之间发生了空前惨烈的长平之战。赵军战败,40多万人被坑杀。从此,六国再也无力抵御秦军的进攻。前230~前221年,秦王

2011-04-08 16:15:00 568

转载 socket编程原理

1 问题的引入      UNIX系统的I/O命令集,是从Maltics和早期系统中的命令演变出来的,其模式为打开一读/写一关闭(open-write-read-close)。在一个用户进程进行I/O操作时,它首先调用“打开”获得对指定文件或设备的使用权,并返回称为文件描述符的整型数,以描述用户在打开的文件或设备上进行I/O操作的进程。然后这个用户进程多次调用“读/写”以传输数据。当所有的传输操作完成后,用户进程关闭调用,通知操作系统已经完成了对某对象的使用。      TCP/IP协议被集成到UNIX内核

2011-04-08 13:32:00 750

转载 fork 进程 pthread_create线程

<br />Introduction<br />Details<br /> <br />一个进程就相当于一个主线程。<br /> <br />fork一个进程与create一个线程的区别: <br />fork进程:子进程复制父进程的进程环境。父进程结束不会影响子进程的运行。进程切换复制进程环境。 <br />create线程:子线程共享父线程的线程环境。线程(一个主线程下的多个线程)切换不复制环境,所以线程运行快,省去了复制环境的时间。主线程运行结束,子线程的运行就无意义了。 <br /> <br />子

2011-04-08 10:30:00 3779

转载 C++和Java传统中积极的一面

译者注:本文翻译自Bruce Eckel(《Thinking in C++》& 《Thinking in Java》作者)的博文,该博文于2009年03月14日发表于:http://www.artima.com/weblogs/viewpost.jsp?thread=252441本文的发表引起了互联网上热烈的讨论,关于讨论大家可以到这里围观。下面是原文。原名《The Positive Legacy of C++ and Java》摘要:在最近的讨论中,有些人断定C++并不是一个设计完美的语言。在我在C++标

2011-04-08 10:18:00 535

转载 编程修养

<br />前言<br />什么是好的程序员?是不是懂得很多技术细节?还是懂底层编程?还是编程速度比较快?我觉得都不是。对于一些技术细节来说和底层的技术,只要看帮助,查资料就能找到,对于速度快,只要编得多也就熟能生巧了。<br />我认为好的程序员应该有以下几方面的素质:<br />  1、有专研精神,勤学善问、举一反三。<br />  2、积极向上的态度,有创造性思维。<br />  3、与人积极交流沟通的能力,有团队精神。<br />  4、谦虚谨慎,戒骄戒燥。<br />  5、写出的代码质量高。包括

2011-04-08 10:04:00 518

转载 浅谈代码分层:构建模块化程序

<br />模块化的程序是怎样的程序?我们可以说一个具有明显物理结构的软件是模块化的,例如带插件的软件,一个完整的软件由若干运行时库共同构建;也可以说一个高度面向对象的库是模块化的,例如图形引擎OGRE;也可以说一些具有明显层次结构的代码是模块化的。<br />模块化的软件具有很多显而易见的好处。在开发期,一个模块化的设计有利于程序员实现,使其在实现过程中一直保持清晰的思路,减少潜伏的BUG;而在维护期,则有利于其他程序员的理解。<br />在我看来,具有良好模块设计的代码,至少分为两种形式:整体设计没有层

2011-04-07 10:58:00 1294

转载 WebQQ 2.0实现分析(一)

Web前端开发听上去并不是一份牛逼的工作,但如果你的Web前端开发搞的很牛逼,那么你一定是做到了Steve Souders提到的那14条,个人认为如果前端开发有什么所谓的金科玉律,应该就是指他们了。Yahoo!后来还据此专门为Firebug开发了一个插件:YSlow。闭门造车不是个好主意,Web QQ 2.0的前端我认为做的很有创意,所以我准备停下来,认真分析一下其实现。在开始分析之前,先来了解一些基础知识。基础知识那些不得不说的工具“工欲善其事,必先利其器”,我所使用的分析工具简单而强大,上文已经提到过:

2011-04-07 10:25:00 2192

转载 tcp要点学习-数据发送一

<br />1. 什么是delayed ack algorithm<br /><br /> <br />      delayed ack algorithm也就是<TCP/IP详解>中所谓的"经受时延的确认"(翻译得真饶舌 = =||)。在RFC1122中提到delayed ack的概念:<br />  <br /> <br /> <br />      但是,如你所想,如果为每一个接收到的报文都发送一个ACK报文,那将会增加网络的负担。于是,为了解决这个问题,delayed ack被提出。也就是说,实现

2011-04-06 22:02:00 855

转载 tcp要点学习-断开连接

<br />主要部分,四次握手:<br /> <br />      断开连接其实从我的角度看不区分客户端和服务器端,任何一方都可以调用close(or closesocket)之类的函数开始主动终止一个连接。这里先暂时说正常情况。当调用close函数断开一个连接时,主动断开的一方发送FIN(finish报文给对方。有了之前的经验,我想你应该明白我说的FIN报文时什么东西。也就是一个设置了FIN标志位的报文段。FIN报文也可能附加用户数据,如果这一方还有数据要发送时,将数据附加到这个FIN报文时完全正常的。

2011-04-06 21:51:00 452

转载 tcp要点学习-建立连接

<br />准备:<br />  <br />     在这里本文将遵循上一篇文章的风格,只提TCP协议中的要点,这样我觉得可以更容易地掌握TCP。或者根本谈不上掌握,对于这种纯理论的东西,即使你现在掌握了再多的细节,一段时间后也会淡忘。 <br />  <br />     在以后各种细节中,因为我们会涉及到分析一些TCP中的数据报,因此一个协议包截获工具必不可少。在<TCP/IP详解>中一直使用tcpdump。这里因为我的系统是windows,所以只好使用windows平台的tcpdump,也就是Win

2011-04-06 21:33:00 503

转载 这是给开发者的弥天大谎还是至理名言?

<br />       “当我需要用到它时我就去学它!”<br /><br />        过去这些年里这句话我听到无数次;对于处在一个像软件开发这样的快速发展变化的行业里,这听起来像是一种十分适用主义的态度。从某些层面上说,它确实十分适用,但从另一个层面来看,我很受这句话困扰。它似乎成了我们这个行业的福音,但却从来没有把这个行业变的更好。问题就在于,这句话表面上借明智的有经验的开发者之言,其实是幌子,实为人们随波逐流的借口。实在是有太多的东西需要我们在工作之中“发现学习”,但对于这种对新知的“发现学

2011-04-06 11:34:00 547

转载 LInux进程控制与编程

<br />.用fork创建一个新的进程,新进程几乎是当前进程的一个完全拷贝<br /> <br />.调用函数execve可以在进程中用另外的程序来替换当前运行的进程<br /> <br />.轻量级进程, 也称为线程, 提供了独立的执行线索和堆栈段,但却共享数据段, Linux特有的_clone调用用于支持线程,它通过指定共享的属性带来了更好的灵活性<br /> <br />.一个进程是一个正在执行的程序的实例,也是Linux基本的调度单位<br /> <br />.正在运行的程序的一个进程由如下元素组

2011-04-05 14:59:00 1759

转载 高质量c c++编程

第1章 文件结构每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件。另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。C++/C程序的头文件以“.h”为后缀,C程序的定义文件以“.c”为后缀,C++程序的定义文件通常以“.cpp”为后缀(也有一些系统以“.cc”或“.cxx”为后缀)。1.1 版权和版本的声明版权和版本的声明位于头文件和定义文件的开头(参见示例1-1),主要内容有:(1)版权信息。(2)文件名

2011-04-05 14:22:00 3204

转载 C语言高效编程的几招

编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。

2011-04-05 14:09:00 415

转载 Linux系统下的多线程编程入门

线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期, solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现 在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。

2011-04-05 13:39:00 385

转载 Socket编程基础知识

整理自《Linux网络编程》

2011-04-05 11:38:00 382

转载 C/C++语言可变参数表深层探索

C/C++语言有一个不同于其它语言的特性,即其支持可变参数,典型的函数如printf、scanf等可以接受数量不定的参数。如:printf ( "I love you" ); printf ( "%d", a );printf ( "%d,%d", a, b );第一、二、三个printf分别接受1、2、3个参数,让我们看看printf函数的原型:int printf ( const char *format, ... );从函数原型可以看出,其除了接收一个固定的参数format以外

2011-04-04 17:37:00 542

空空如也

空空如也

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

TA关注的人

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