07 2020 档案

摘要:虽然编译时没报错,但还是要加上以下头文件: #include <string.h> 加上后正常运行。 阅读全文
posted @ 2020-07-31 18:17 epiphanyy 阅读(1) 评论(0) 推荐(0) 编辑
摘要:以shared_ptr为参数调用std::move并用等于号时,会调用共享指针的移动构造函数,从而使原共享指针失效: #include <iostream> #include <memory> using namespace std; int main() { shared_ptr<int> ipt 阅读全文
posted @ 2020-07-25 23:31 epiphanyy 阅读(72) 评论(0) 推荐(0) 编辑
摘要:上一章中,TCP客户同时处理两个输入:标准输入和TCP套接字,我们遇到的问题是客户阻塞于标准输入上的fgets调用期间,服务器进程被杀死时,虽然服务器TCP正确地给客户TCP发送了一个FIN,但客户进程正阻塞于从标准输入读的过程,它将看不到这个EOF,直到从套接字读时(可能已经过了很长时间)才看到。 阅读全文
posted @ 2020-07-22 15:03 epiphanyy 阅读(23) 评论(0) 推荐(0) 编辑
摘要:给你一个以行程长度编码压缩的整数列表 nums 。 考虑每对相邻的两个元素 [freq, val] = [nums[2*i], nums[2*i+1]] (其中 i >= 0 ),每一对都表示解压后子列表中有 freq 个值为 val 的元素,你需要从左到右连接所有子列表以生成解压后的列表。 请你返 阅读全文
posted @ 2020-07-21 15:24 epiphanyy 阅读(4) 评论(0) 推荐(0) 编辑
摘要:函数poll和select必须遍历被监视的文件描述符列表,当这个列表很大时,每次调用时的遍历时间成为瓶颈。epoll函数就是为了优化poll和select函数。 创建一个epoll实例: #include <sys/epoll.h> int epoll_create(int size) 成功时,创建 阅读全文
posted @ 2020-07-19 17:00 epiphanyy 阅读(5) 评论(0) 推荐(0) 编辑
摘要:原因是打开文件语句: if ((fd = open(path, O_RDWR | O_CREAT | O_TRUNC, 777)) < 0) 写成了: if (fd = open(path, O_RDWR | O_CREAT | O_TRUNC, 777) < 0) 使fd结果为一个布尔值,并且文件 阅读全文
posted @ 2020-07-17 23:45 epiphanyy 阅读(35) 评论(0) 推荐(0) 编辑
摘要:有很多方法可以获取和设置套接字选项: 1.getsockopt和setsockopt函数。 2.fcntl函数。 3.ioctl函数。 fcntl函数是将套接字设为非阻塞式IO型、设为信号驱动式IO型、设置套接字属主的POSIX方法。 这两个函数只用于套接字: 以上函数用于获取或设置套接字选项。参数 阅读全文
posted @ 2020-07-17 15:17 epiphanyy 阅读(166) 评论(0) 推荐(0) 编辑
摘要:标准IO库处理了缓冲区分配、以优化的块长度执行IO等细节,使得用户不必担心如何选择使用正确的块长度。 对于write、read等函数,是围绕文件描述符的,打开文件的描述符被用于后续的IO操作,而对于标准IO库,它们的操作是围绕流的,当标准IO库打开或创建一个文件时,我们使一个流与一个文件相关联。 A 阅读全文
posted @ 2020-07-16 20:59 epiphanyy 阅读(37) 评论(0) 推荐(0) 编辑
摘要:先介绍套接字地址结构,本书中几乎每个例子都会用到它们,该结构可在两个方向上传递:从进程到内核和从内核到进程。从内核到进程方向的传递是值-结果参数的例子。 地址转换函数在地址的文本表达和它们存放在套接字地址结构中的二进制值之间进行转换。多数现存IPv4代码使用inet_addr和inet_ntoa函数 阅读全文
posted @ 2020-07-16 14:30 epiphanyy 阅读(33) 评论(0) 推荐(0) 编辑
摘要:并发服务器是在同时有大量客户连接到同一服务器上时用于提供并发性的一种常用Unix技术,使用fork函数实施的是每客户单进程模型,还有每客户单线程的另一种模型。 下图给出了在一对TCP客户与服务器进程间发生的典型事件的时间表,服务器首先启动,稍后客户启动,它试图连接到服务器。我们假设客户给服务器发送一 阅读全文
posted @ 2020-07-15 15:47 epiphanyy 阅读(43) 评论(0) 推荐(0) 编辑
摘要:给你两个整数数组 nums 和 index。你需要按照以下规则创建目标数组: 目标数组 target 最初为空。 按从左到右的顺序依次读取 nums[i] 和 index[i],在 target 数组中的下标 index[i] 处插入值 nums[i] 。 重复上一步,直到在 nums 和 inde 阅读全文
posted @ 2020-07-12 11:25 epiphanyy 阅读(2) 评论(0) 推荐(0) 编辑
摘要:编写通过计算机网络通信的程序时,首先要发明一种协议,即这些程序怎样进行通信。在深入设计一个协议的细节前,要在更高层次决定通信由哪个程序发起以及响应在何时产生,举例来说,一般认为web服务器是一个长时间运行的程序(即所谓守护程序),它只在响应来自网络的请求时才发送网络消息。协议另一端是web客户程序, 阅读全文
posted @ 2020-07-10 22:47 epiphanyy 阅读(23) 评论(0) 推荐(0) 编辑
摘要:问题出现的原因是: if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) 写成了: if ((sockfd = socket(AF_INET, SOCK_STREAM, 0) < 0)) 导致sockfd的结果为布尔值,而该布尔值对应的文件描述符不是 阅读全文
posted @ 2020-07-10 18:26 epiphanyy 阅读(10) 评论(0) 推荐(0) 编辑
摘要:servaddr是sockaddr_in类型的结构,网络编程中可能已经包含了sys/socket.h头文件,但sockaddr_in类型还需头文件netinet/in.h。 阅读全文
posted @ 2020-07-10 17:38 epiphanyy 阅读(70) 评论(0) 推荐(0) 编辑
摘要:编写小程序时,人们会在编辑完源文件后重新编译所有文件来重建应用程序。但对大型程序来说,改动一个源文件会重新编译所有其他的源文件太费时。 如有三个头文件和三个源文件: 如果我们只修改了头文件c.h,则源文件main.c和2.c无需重新编译,因为它们并不依赖于这个头文件。而如果被修改的是b.h,而程序员 阅读全文
posted @ 2020-07-09 00:25 epiphanyy 阅读(7) 评论(0) 推荐(0) 编辑
摘要:树的宽度(广度)优先遍历:先访问树的第一层节点,再访问第二层节点,直到最后一层。同一层节点中,从左到右依次访问。 二叉搜索树中,左子节点总是小于等于根节点,右子节点总是大于等于根节点。我们可以平均在O(logn)的时间内根据节点值在二叉搜索树中找到一个节点。 二叉树的特例有堆和红黑树。堆分最大堆和最 阅读全文
posted @ 2020-07-06 22:37 epiphanyy 阅读(5) 评论(0) 推荐(0) 编辑
摘要:可用sysconf函数查询的线程限制: 但有些系统没提供访问这些限制的方法,但这些限制仍存在。 我们可以设置线程和线程属性或互斥量和互斥量属性来细调线程和同步对象的行为,管理这些属性的函数都遵循相同的模式: 1.每个对象与它自己类型的属性进行关联(即线程与线程属性关联,互斥量与互斥量属性关联)。一个 阅读全文
posted @ 2020-07-02 22:10 epiphanyy 阅读(13) 评论(0) 推荐(0) 编辑

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