4

原创 2013年12月01日 22:24:25

1.TCP/IP 建立连接的过程?(3-way shake)

    Client与server建立TCP连接时:首先Client向server发SYN(请求),然后server回复(应答请求),最后Client回复,这样TCP就建立一次连接(三次握手)的过程就建立了


2.使用udp和tcp进程网络传输,为什么tcp能保证包是发送顺序,而 udp无法保证?

   

    1.主机每次发送数据时,TCP就给每个数据包分配一个序列号并且在一个特定的时间内等待接收主机对分配的这个序列号进行确认,如果发送主机在一个特定时间内没有收到接收主机的确认,则发送主机会重传此数据包。接收主机利用序列号对接收的数据进行确认,以便检测对方发送的数据是否有丢失或者乱序等,接收主机一旦收到已经顺序化的数据,它就将这些数据按正确的顺序重组成数据流并传递到高层进行处理。
  2.UDP不提供可靠的数据传输!一个端口发往同一个目的端口的几个数据包的顺序可能会出现混乱

3.Linux epoll的LT(level triggered)与ET(edge-triggered)工作方式的区别?
   
    LT:水平触发,效率会低于ET触发,尤其在大并发,大流量的情况下。但是LT对代码编写要求比较低,不容易出现问题。LT模式服务编写上的表现是:只要有数据没有被获取,内核就不断通知你,因此不用担心事件丢失的情况。
  ET:边缘触发,效率非常高,在并发,大流量的情况下,会比LT少很多epoll的系统调用,因此效率高。但是对编程要求高,需要细致的处理每个请求,否则容易发生丢失事件的情况。
  从本质上讲:与LT相比,ET模型是通过减少系统调用来达到提高并行效率的。

4.网络编程中设计并发服务器,使用多进程与多线程 ,请问有什么区别?
    两者都可以提高程序的并发度,提高程序运行效率和响应时间。线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移

5.请列举进程间通迅都有哪些方式?并说明工作方式,优缺点等。
    
    常见三种方式:管道,消息缓冲,共享内存
  1.无名管道简单方便。但局限于单向通信的工作方式。并且只能在创建它的进程及其子孙进程之间实现管道的共享;有名管道虽然可以提供给任意关系的进程使用。但是由于其长期存在于系统之中,使用不当容易出错。
  2.消息缓冲,使用方便,但是信息的复制需要额外消耗CPU的时间。不适宜于信息量大或操作频繁的场合。
  3.共享内存,针对消息缓冲的缺点改而利用内存缓冲区直接交换信息,无须复制,快捷、信息量大是其优点但是不方便网络通信

6. C++中指针和引用有什么区别
    
    1.引用访问一个变量是直接访问,而指针是间接访问。
  2.引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间。
  3.引用在开始的时候就绑定到了一个内存空间(开始必须赋初值),所以他只能是这个内存空间的名字,而不能改成其他的,当然可以改变这个内存空间的值。

相关文章推荐

JNI学习(4)(我是菜鸟)-JNI类型签名

所有内容为记录学习过程,不是大牛尽情谅解。所有分析都参考深入理解Android 卷一 先看一下动态注册中的代码 现在看processFile 方法 一直都没明白后面的那一长...

Pixhawk原生固件PX4之TAKEOFF的启动流程

Takeoff模式启动流程...

PCL点云特征描述与提取(4)

如何从一个深度图像(range image)中提取NARF特征 代码解析narf_feature_extraction.cpp #include #include #include #inc...

港科VINS-Mono系统学习(4) 里程计

vins是今年刚开源的vio系统,跑了数据集效果挺好的,所以看了paper和代码。 视频地址:https://www.youtube.com/watch?v=I4txdvGhT6I github:...

fabric源码解析4——配置系统

fabric源码解析4——配置系统fabric的配置系统是程序原始数据的来源之一,虽然简单却很重要。在阅读源码过程中对于具象化程序也很有帮助。在分析peer的具体交易工作之前,我们可以先分析一下fab...

log4j 不同的包(package)下的日志写入到不同的日志文件下

所需要的包:commons-logging-1.1.x.jar,log4j-1.2.x.jar(主要)两个jar包(放入项目bin目录下)及log4j.properties文件(放入到项目src根目录...

extjs4 grid 新增、删除、修改

删除与修改的操作,分两块进行。页面删除与后台删除。因此在页面上进行删除或修改后成功后,后台只传递一个SUCCESS标记,若后台同步成功,则在页面的store中执行删除或者修改。减少网络中的数据传输。 ...
  • dys1990
  • dys1990
  • 2012年04月21日 17:20
  • 29648

Log4j 日志配置示例详解

日志是应用软件中不可缺少的部分,Apache的开源项目Log4j是一个功能强大的日志组件,提供方便的日志记录,具体请参考Log4j文档指南。Log4j下载在apache网站,可以免费下载到Log4j最...

ipv4-only网络环境下访问ipv6站点的三种方式

苹果2016年5月4日向开发者发出提醒,App Store将于今年6月1日实施全新策略,届时所有提交至苹果App Store的iOS应用申请必须要兼容面向硬件识别和网络路由的最新互联网协议--IPv6...

android应用开发-从设计到实现 4-3应用的创建与部署

应用的创建与部署现在我们开始创建一个全新的项目工程-天气预报,并在编译后让它运行到真实的设备上。创建应用工程运行Android Studio, 启动Android Studio,选择Start a n...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:4
举报原因:
原因补充:

(最多只允许输入30个字)