浅墨浓香

想要天亮进城,就得天黑赶路。
随笔 - 743, 文章 - 16, 评论 - 87, 阅读 - 53万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

04 2017 档案

该文被密码保护。

posted @ 2017-04-30 22:58 浅墨浓香 阅读(19) 评论(0) 推荐(0) 编辑

该文被密码保护。

posted @ 2017-04-30 21:23 浅墨浓香 阅读(25) 评论(0) 推荐(1) 编辑

该文被密码保护。

posted @ 2017-04-30 08:39 浅墨浓香 阅读(28) 评论(0) 推荐(0) 编辑

摘要:1. 遵循经典设计准则 (1)DTLib中所有类位于单一的继承树下 (2)改进的关键点 ①Exception类继承自Object类:堆空间中创建异常对象失败时,返回NULL指针。 ②新增InvalidOperationException类:成员函数调用时,如果状态不正确则抛出异常。 ③SmartPo 阅读全文

posted @ 2017-04-24 00:28 浅墨浓香 阅读(212) 评论(0) 推荐(0) 编辑

摘要:1. 当代软件架构实践中的经验 (1)尽量使用单重继承的方式进行系统设计 (2)尽量保持系统中只存在单一的继承树 (3)尽量使用组合关系代替继承关系 2. 不幸的事实 (1)C++语言的灵活性使得代码中可以存在多个继承树 (2)C++编译器的差异使得同样的代码可能表现不同的行为(如new操作结果失败 阅读全文

posted @ 2017-04-23 22:06 浅墨浓香 阅读(212) 评论(0) 推荐(0) 编辑

该文被密码保护。

posted @ 2017-04-23 12:36 浅墨浓香 阅读(127) 评论(0) 推荐(0) 编辑

该文被密码保护。

posted @ 2017-04-22 22:09 浅墨浓香 阅读(71) 评论(0) 推荐(0) 编辑

该文被密码保护。

posted @ 2017-04-22 21:02 浅墨浓香 阅读(78) 评论(0) 推荐(0) 编辑

摘要:1. 异常类构建 (1)异常的类型可以是自定义类类型 (2)对于类类型异常的匹配依旧是至上而下严格匹配 (3)赋值兼容性原则在异常匹配中依然适用 (4)一般而言,匹配子类异常的catch放在上部,匹配父类异常的catch放在下部。 (5)现代C++库必然包含充要的异常类族 2. DTLib异常类功能 阅读全文

posted @ 2017-04-22 17:27 浅墨浓香 阅读(292) 评论(0) 推荐(0) 编辑

摘要:5. 守护进程的介绍 5.1 守护进程 (1)守护进程(daemon)是生存期长的一种进程。它们常常在系统引导装入时启动,在系统关闭时终止。 (2)所有守护进程者都以超级用户(用户ID为0)的优先权运行。 (3)守护进程没有控制终端 (4)守护进程的父进程都是init进程 5.2 守护进程的编程步骤 阅读全文

posted @ 2017-04-12 16:51 浅墨浓香 阅读(470) 评论(0) 推荐(0) 编辑

摘要:4. 事件驱动模型:epoll 4.1 epoll简介 (1)epoll是Linux内核为处理大批量的socket而改进的poll,相对于select/poll来说,epoll更加灵活。它使用一个文件描述符来管理多个socket。 (2)epoll之所以高效,是因为它将用户关心的socket事件存放 阅读全文

posted @ 2017-04-12 13:19 浅墨浓香 阅读(1504) 评论(0) 推荐(0) 编辑

摘要:3. I/O多路复用:select函数 3.1 I/O多路复用简介 (1)通信领域的时分多路复用 (2)I/O多路复用(I/O multiplexing) ①同一线程,通过“拨开关”方式,来同时处理多个I/O流,哪个IO准备就绪就把开关拨向它。(I/O多路复用类似于通信领域中的“时分复用”) ②通过 阅读全文

posted @ 2017-04-09 00:08 浅墨浓香 阅读(1639) 评论(0) 推荐(0) 编辑

摘要:1. 高性能I/O (1)通常,recv函数没有数据可用时会阻塞等待。同样,当socket发送缓冲区没有足够多空间来发送消息时,函数send会阻塞。 (2)当socket在非阻塞模式下,这些函数不会阻塞,如果发送/接收缓冲区没有数据时,调用会失败并设置errno为EWOULDBLOCK或EAGAIN 阅读全文

posted @ 2017-04-08 22:48 浅墨浓香 阅读(708) 评论(0) 推荐(0) 编辑

摘要:3. 广播的介绍 (1)广播 ①广播实现一对多的通信,如QQ群 ②它通过向广播地址发送数据报文实现的 (2)SO_BROADCAST选项 ①SO_BROADCAST选项控制着UDP套接字是否能发送广播数据报,选项的类型为int,非零意味着“是”。 ②注意,该选项只有UDP套接字可以使用,TCP是不能 阅读全文

posted @ 2017-04-06 15:40 浅墨浓香 阅读(428) 评论(0) 推荐(0) 编辑

摘要:2. 端口绑定和域名解析 2.1 端口绑定:SO_REUSEADDR选项 2.2 域名解析 (1)域名解析过程 (2)域名解析函数 头文件 #include <netdb.h> 函数 struct hostent* gethostent(void); struct hostent* gethostb 阅读全文

posted @ 2017-04-06 14:22 浅墨浓香 阅读(843) 评论(0) 推荐(0) 编辑

摘要:1. UDP编程模型 (1)UDP客户端服务器模型 ①客户端可以不调用bind()而直接与服务器通讯。 ②UDP是无连接的,因此服务端不需要调用accept和listen,客户端也无需调用connect函数。 (2)数据传输 ①发送数据 头文件 #include <sys/socket.h> 函数 阅读全文

posted @ 2017-04-06 11:25 浅墨浓香 阅读(414) 评论(0) 推荐(1) 编辑

摘要:7. 基于自定义协议的多线程模型 (1)服务端编程 ①主线程负责调用accept与客户端连接 ②当接受客户端连接后,创建子线程来服务客户端,以处理多客户端的并发访问。 ③服务端接到的客户端信息后,回显给客户端 (2)客户端编程 ①从键盘输入信息,并发送给服务端 ②接收来自服务端的信息 //msg.h 阅读全文

posted @ 2017-04-06 00:14 浅墨浓香 阅读(550) 评论(0) 推荐(0) 编辑

摘要:5. 自定义协议编程 (1)自定义协议:MSG (2)自定义读写函数 ①extern int write_msg(int sockfd, char* buff, size_t len); //发送一个基于自定义协议的message,发送的数据存放在buff中 ②extern int read_msg 阅读全文

posted @ 2017-04-05 22:34 浅墨浓香 阅读(408) 评论(0) 推荐(0) 编辑

摘要:4. TCP的连接和关闭过程 4.1 TCP连接的三次握手和四次挥手 (1)三次握手 ①第1次握手:建立连接。客户端发送连接请求报文段(SYN=1,sequence Number=x);然后客户端进入SYN_SEND状态,等待服务器确认。 ②第2次握手:服务器收到SYN报文段,然后对SYN报文段进行 阅读全文

posted @ 2017-04-04 22:47 浅墨浓香 阅读(508) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示