摘要: 首先我们需要知道,tcp/ip协议并不是一个协议,而是一个协议族,里面包好tcp,udp,ip等协议,tcp/ip网络协议栈包括应用层,传输层,网络层和链路层。tcp协议是一中面向连接的,可靠的传输层协议。连接过程就像打电话的过程。现在简要介绍其三次握手的过程:第一次握手:客户A向客户B发送一个连接请求,在这个包中,syn=1,seq=x,并进入SYN_SEND状态,等待服务器确认;对应客户端的connect函数(Linux)。第二次握手:客户B接受到了A发送的包,然后发送一个包进行确认,该包中syn=1,ack=1,ack_seq=x+1,seq=y;此时服务器进入SYN_RECV状态;对应 阅读全文
posted @ 2013-04-17 11:36 芒刺 阅读(301) 评论(0) 推荐(0) 编辑
摘要: C/C++语言很多人都比较熟悉,这基本上是每位大学生必学的一门编程语言,通常还都是作为程序设计入门语言学的,并且课程大多安排在大一。刚上大学,孩子们还都很乖,学习也比较认真,用心。所以,C/C++语言掌握地也都不错,不用说编译程序,就是写个上几百行的程序都不在话下,但是他们真的知道C/C++程序编译的步骤么?我想很多人都不甚清楚,如果他接下来学过“编译原理”,也许能说个大概。VC的“舒适”开发环境屏蔽了很多编译的细节,这无疑降低了初学者的入门门槛,但是也“剥夺”了他们“知其所以然”的权利,致使很多东西只能死记硬背,遇到相关问题就“丈二”。实际上,我也是在学习Linux环境下编程的过程中才逐渐弄 阅读全文
posted @ 2013-04-16 20:54 芒刺 阅读(844) 评论(0) 推荐(0) 编辑
摘要: 依赖关系(Dependence):依赖关系是一种使用关系,对于两个相对独立的系统,当一个系统负责构造另一个系统的实例,当一个系统改变会影响到另一个系统,反之不成立。或者依赖另一个系统的服务时,例如生产零件的机器和零件,机器负责构造零件对象。出现依赖的三种情况:(1)A类是B类某个方法的局部变量。(2)A类是B类的一个参数。(3)A类向B类发送消息,让B类变化。生命周期:B类开始调用含有A类的方法开始实例化,当方法使用结束后释放。[csharp]view plaincopypublicclass动物{privatebool生命;///<paramname="氧气"> 阅读全文
posted @ 2013-04-16 14:32 芒刺 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 联编是指一个计算机程序自身彼此关联的过程,在这个联编过程中,需要确定程序中的操作调用(函数调用)与执行该操作(函数)的代码段之间的映射关系;按照联编所进行的阶段不同,可分为静态联编和动态联编;静态联编:是指联编工作是在程序编译连接阶段进行的,这种联编又称为早期联编;因为这种联编是在程序开始运行之前完成的;在程序编译阶段进行的这种联编又称静态束定;在编译时就解决了程序中的操作调用与执行该操作代码间的关系,确定这种关系又被称为束定;编译时束定又称为静态束定;动态联编:编译程序在编译阶段并不能确切地知道将要调用的函数,只有在程序执行时才能确定将要调用的函数,为此要确切地知道将要调用的函数,要求联编工 阅读全文
posted @ 2013-04-15 15:10 芒刺 阅读(503) 评论(0) 推荐(0) 编辑
摘要: C++ 虚函数表解析前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家一个清晰的剖析。当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大 阅读全文
posted @ 2013-04-15 15:07 芒刺 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 一:简答题(30)1:数据库以及线程发生死锁的原理及必要条件,如何避免死锁答:产生死锁的原因主要是:(1)因为系统资源不足。(2)进程运行推进的顺序不合适。(3)资源分配不当等。产生死锁的四个必要条件:(1)互斥条件:一个资源每次只能被一个进程使用。(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。避免死锁:死锁的预防是通过破坏产生条件来阻止死锁的产生,但这种方法破坏了系统的并行性和并发性。死锁产生的前三个条件是死锁产生的必要条件,也就是 阅读全文
posted @ 2013-04-12 15:05 芒刺 阅读(245) 评论(0) 推荐(0) 编辑
摘要: WINDOWS内存管理方式主要分为:段式管理、页式管理、段页式管理。 页式管理:页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分成片或者页面(page frame),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理。 其优点是没有外碎片,每个内碎片不超过页大小(空间浪费小)。一个程序不必连续存放。便于改变程序占用空间的大小(主要指随着程序运行而动态生成的数据增多,要求地址空间相应增长,通常由系统调用完成而不是操作系统自动完成). 阅读全文
posted @ 2013-04-12 11:55 芒刺 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 这几天重新看了一遍《大话设计模式》,发现果然有不同的感悟,而且自己也上网找了《敏捷软件开发—原则、模式与实践》一书来看,那本书的序言中有一段话我觉得很有道理:“美的东西比丑的东西创建起来更廉价,也更快捷。”设计一个软件不关要追求代码的优雅问题,更关乎生产成本等。技术大师们在对软件架构的研究中经历了很长时间的摸索,从面向过程到面向对象,从设计原则到设计模式,总结了许多设计上的经典法则,而我们就只是站在巨人的肩膀上眺望远方而已。 从《大话设计模式》中,大家一定会发现其中的经典的23个模式背后,其实都遵循着一些基本的原则的。而设计原则又由设计模式来实现,这就是二者相辅相成的关系,所以了解原则对于.. 阅读全文
posted @ 2013-04-12 11:24 芒刺 阅读(467) 评论(0) 推荐(1) 编辑