书籍阅读
文章平均质量分 68
整理书籍阅读中的内容
带你去网吧里偷耳机
这个作者很懒,什么都没留下…
展开
-
Unix网络编程---套接字联网API chapter 14
高级IO函数 1套接字超时三种方案 (1)使用SIGALRM为connect设置超时 (2)使用SELECT为recvfrom设置超时 (3)使用SO_RCVTIMEO套接字选项为recvfrom设置超时 2recv和send函数原创 2021-09-13 02:07:32 · 86 阅读 · 0 评论 -
《linux多线程服务端编程》---- Part 1 C++多线程系统编程(2)
Chapter 4C++多线程系统编程精要 Chapter 5高效的多线程日志原创 2021-09-12 18:48:49 · 105 阅读 · 0 评论 -
《linux多线程服务端编程》---- Part 1 C++多线程系统编程(1)
Chapter 1线程安全的对象生命期管理 综述: 线程安全: 对象的创建: 一个函数如果要锁住相同类型的多个对象,为保证始终按照相同的顺序加锁,可以比较mutex对象的地址,始终先加锁地址较小的mutex。 shared_ptr/weak_ptr shared_ptr技术与陷阱 意外延长对象的生命周期 小结 (1)原始指针暴露给多个线程往往会造成race condition (2)统一用shared_ptr来管理对象的生命期。 (3)sha..原创 2021-09-12 17:05:39 · 202 阅读 · 0 评论 -
《linux多线程服务端编程》---- C++基础前奏
1 mutable 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 该关键字修饰类中数据成员时,会释放掉non-static成员变量的bitwise constnes约束,即使在const成员函数依然可以修改该数据成员变量。 Immutableobject(不可变对象) :当对象被创建后,你不能修改对象的状态以及字段。 2 C++二阶构造 【C++深度剖析教程4】C++的二阶构造模式_厚积薄发-CS..原创 2021-09-12 16:28:09 · 115 阅读 · 0 评论 -
Unix网络编程---套接字联网API chapter 8
1 UDP套接字编程 UDP是无连接不可靠的数据报协议,不同于TCP提供的面向连接的可靠字节流。 UDP客户/服务器函数调用: 图片 2 recvfrom和sendto函数 图片 3 UDP服务器程序示例 图片 图片 4 UDP客户程序示例 图片 图片 5 UDP程序例子小结 图片 图片 6 UDP的connect函数 没有三路握手过程,内核只是检查是否存在立即可知的错误,记录对端的IP地址和端口号,然后立即返回到调用进程。 图片 图片 UDP客户进程或服务器进程只在使原创 2021-09-08 21:40:37 · 75 阅读 · 0 评论 -
Unix网络编程---套接字联网API chapter 7
1获取和设置影响套接字的选项 1)getsockopt函数和setsockopt函数 2)fcntl函数 把套接字设置为非阻塞式IO或信号驱动式IO以及设置套接字属主的POSIX方法 3)ioctl函数 2getsockopt和setsockopt原创 2021-09-07 15:59:17 · 164 阅读 · 2 评论 -
Unix网络编程----套接字联网API chapter 5
chapter 5 1 TCP客户/服务器程序示例 服务器程序main函数: 服务器str_echo函数 客户端main函数 客户端str_cli函数 2正常启动 3正常终止 4信号处理原创 2021-09-06 00:08:13 · 85 阅读 · 0 评论 -
Effective C++ (Version 3) Chapter 1 让自己习惯C++
导读: 在类中,被声明为explicit的构造函数比其non-explicit兄弟更受欢迎,因为他们禁止编译器执行非预期(往往也不被期望)的类型转换。 条款01:视C++为一个语言联邦 把C++视为一个由相关语言组成的联邦而非单一语言。C++有四种次语言。 (1)C (2)Object-Oriented C++ 这就是C With Classes所诉求的:类/封装/继承/多态/虚函数/...原创 2020-02-15 12:19:29 · 133 阅读 · 0 评论 -
Effective C++ (Version 3) Chapter 2 构造/析构/赋值运算
条款05:了解C++默默编写并调用哪些函数 只有当这些函数被需要(被调用)的时候,他们才会被编译出来。 (1)对于拷贝构造函数和赋值运算符。编译器创建的版本只是单纯地将来源对象的每一个non-static成员变量拷贝到目标对象。 (2)对于赋值运算符,只有当生出的代码合法且有适当机会证明它有意义,编译器才会在我们没有声明赋值运算符但它又被调用时为我们生成默认的赋值运算符。否则,编译器拒绝...原创 2020-02-19 22:46:01 · 167 阅读 · 0 评论 -
Effective C++ (Version 3) Chapter 3 资源管理
条款13:以对象管理资源原创 2020-02-21 22:05:21 · 166 阅读 · 0 评论 -
TCP中shutdown函数/TCP套接字选项SO_LINGER来实现TCP优雅关闭
一 Shutdown函数 有时候,我们想给服务器发送一个FIN,告诉它们我们已经完成了数据发送,但是仍然保持套接字描述符打开以便读取。 这时候就需要一种关闭TCP连接其中一半的方法。 确切地说,close() / closesocket() 用来关闭套接字,将套接字描述符(或句柄)从内存清除,之后再也不能使用该套接字,与C语言中的 fclose() 类似。应用程序关闭套接字后,与...原创 2020-02-28 17:13:49 · 839 阅读 · 0 评论 -
《现代C++教程》chapter 3&chapter 4
chapter 3语言运行期的强化 lambda表达式 Lambda 表达式,实际上就是提供了一个类似匿名函数的特性, 而匿名函数则是在需要一个函数,但是又不想费力去命名一个函数的情况下去使用的。 格式: [捕获列表](参数列表) mutable(可选) 异常属性 -> 返回类型 { // 函数体 } 所谓捕获列表,其实可以理解为参数的一种类型,Lambda 表达式内部函数体在默认情况下是不能够使用函数体外部的变量的, 这时候捕获列表可以起到传递外部数据的作用。 【值传递捕获列表】 .原创 2021-09-05 14:12:26 · 87 阅读 · 0 评论 -
Unix网络编程----套接字联网API chpater1/2
1 客户从TCP套接字读取数据时,因为经常存在读取的数据量很大的情况,因此总是需要把read编写在某个循环中,当read返回0(表示对端关闭连接)或负值(表明发生错误)时终止循环。 2 exit函数终止程序的运行,Unix在一个进程终止时总是关闭该进程所有打开的描述符,套接字也因此关闭。 3 Unix中errno值 4 简单的时间获取服务器程序 ...原创 2020-02-15 18:13:29 · 187 阅读 · 0 评论 -
Unix网络编程----套接字联网API chpater3/4
viyfvghkjhklj原创 2020-02-15 21:13:39 · 128 阅读 · 0 评论 -
《现代C++教程》chapter 1&chapter 2
chapter 1迈向现代C++ 被弃用的特性: (1)不再允许字符串字面值常量赋值给一个char *,应该使用const char *或者auto (2)auto_ptr被弃用,应使用unique_ptr (3)如果一个类有析构函数,为其生成拷贝构造函数和拷贝赋值运算符的特性被弃用了。 (4)C 语言风格的类型转换被弃用(即在变量前使用(convert_type)),应该使用static_cast、reinterpret_cast、const_cast来进行类型转换。 (5...原创 2021-08-31 23:06:08 · 143 阅读 · 0 评论 -
《现代C++教程》chapter 5&chapter 6&chapter 7
chapter 5 RAII与引用计数 对于动态分配的对象,进行引用计数,每当增加一次对同一个对象的引用,那么引用对象的引用计数就会增加一次, 每删除一次引用,引用计数就会减一,当一个对象的引用计数减为零时,就自动删除指向的堆内存。 C++11 引入了智能指针的概念,使用了引用计数的想法,让程序员不再需要关心手动释放内存。 这些智能指针就包括std::shared_ptr/std::unique_ptr/std::weak_ptr,使用它们需要包含头文件<memory>。 s...原创 2021-09-05 14:52:21 · 90 阅读 · 0 评论