page contents
Nen
Nen - 程序员

性别: 天津 - 天津市 注册于 2021-06-23

向TA求助
2850金币数
43180 经验值
1个粉丝
主页被访问 6248 次

3096 个回答

0 赞同

网络编程中设计并发服务器,使用多进程 与 多线程 ,请问有什么...

答案一: 1)进程:子进程是父进程的复制品。子进程获得父进程数据空间、堆和栈的复制品。 2)线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。 两者都可以提高程序的并发度,提高程序运行效率和响应时间。 线程和进程在使用上各...

回答于 2022-01-11 14:25

0 赞同

网络编程的一般步骤?

对于TCP连接: 1.服务器端1)创建套接字create;2)绑定端口号bind;3)监听连接listen;4)接受连接请求accept,并返回新的套接字;5)用新返回的套接字 recv/send;6)关闭套接字。 2.客户端1)创建套接字create; 2)发起建立连接请求connect; 3)发送/接收数据send/recv;4)关闭套接字。 TCP总结: Server端:crea...

回答于 2022-01-11 14:24

0 赞同

TCP的重发机制是怎么实现的?

1)滑动窗口机制,确立收发的边界,能让发送方知道已经发送了多少(已确认)、尚未确认的字节数、尚待发送的字节数;让接收方知道(已经确认收到的字节数)。 2)选择重传,用于对传输出错的序列进行重传。

回答于 2022-01-11 14:23

0 赞同

TCP为什么不是两次连接?而是三次握手?

如果A与B两个进程通信,如果仅是两次连接。可能出现的一种情况就是:A发送完请报文以后,由于网络情况不好,出现了网络拥塞,即B延时很长时间后收到报文,即此时A将此报文认定为失效的报文。 B收到报文后,会向A发起连接。此时两次握手完毕,B会认为已经建立了连接可以通信,B会一直等到A发送的连接请求,而A对失效的报...

回答于 2022-01-11 14:23

0 赞同

socket编程,如果client断电了,服务器如何快速知道?

使用定时器(适合有数据流动的情况); 使用socket选项SO_KEEPALIVE(适合没有数据流动的情况);

回答于 2022-01-11 14:22

0 赞同

静态内存分配和动态内存分配有什么区别?

静态内存分配是在编译时期完成的,不占用CPU资源;动态内存分配是在运行时期完成的,分配和释放需要占用CPU资源; 静态内存分配是在栈上分配的;动态内存分配是在堆上分配的; 静态内存分配不需要指针或引用类型的支持;动态内存分配需要; 静态内存分配是按计划分配的,在编译前确定内存块的大小;动态内存分配是按需要...

回答于 2022-01-10 14:13

0 赞同

如何构造一个类,使得只能在堆上或只能在栈上分配内存?

只能在堆上分配内存:将析构函数声明为private; 只能在栈上生成对象:将new和delete重载为private

回答于 2022-01-10 14:13

0 赞同

浅拷贝和深拷贝有什么区别?

浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享一块内存;而深拷贝会创造一个相同的对象,新对象与原对象不共享内存,修改新对象不会影响原对象。

回答于 2022-01-10 14:12

0 赞同

字节对齐的原则是什么?

从偏移为0的位置开始存储; 如果没有定义#pragma pack(n) sizeof的最终结果必然是结构内部最大成员的整数倍,不够补齐; 结构内部各个成员的首地址必然是自身大小的整数倍; 如果定义了#pragma pack(n) sizeof的最终结果必然必然是min[n,结构内部最大成员]的整数倍,不够补齐; 结构内部各个成员的首地址必然是min[n,...

回答于 2022-01-10 14:12

0 赞同

在C++中,使用malloc申请的内存能否通过delete释放?使用new申请...

不能。 malloc /free主要为了兼容C,new和delete 完全可以取代malloc /free的。malloc /free的操作对象都是必须明确大小的。 而且不能用在动态类上。new 和delete会自动进行类型检查和,也不需要自己明确内存大小,malloc/free不能执行构造函数与析构函数,所以动态对象它是不行的。 当然从理论上说使用malloc申请的内存...

回答于 2022-01-10 14:08