Linux高性能服务器编程 读书笔记(6) 第10章 信号 第11章 定时器 第12章 libevent 网络服务器一般有三种事件需要处理 : IO事件, 信号事件, 定时器事件. 这三种事件都可以通过epoll函数来进行统一处理. 信号信号有什么作用?其实主要是为了处理一些特殊事件, 比如中断系统调用, 触发定时器信号, 管道读写失败发出的信号. 比如说中断进程, 在服务器上直接中断一般不是一个合理的做法, 一般会捕获中断信号, 在做 2025-02-19 #Linux高性能服务器编程
Linux高性能服务器编程 读书笔记(5) 第九章 I/O复用(1) 本节主要描述三个IO复用函数, select / poll / epoll. 这里对select / poll只做简要描述, 对epoll做详尽描述. 所谓I/O复用, 就是使程序可通过一些函数同时监听多个文件描述符(如socket), 可以即使并发对这些文件描述符上的事件进行处理. 要注意的一点是I/O复用 2025-02-16 #Linux高性能服务器编程
Linux高性能服务器编程 读书笔记(4) 第八章 高性能服务器程序框架 本章意在抛出一些核心的概念, 实操基本没有, 但是这些概念的理解我认为相对重要, 我会以口语化的形式简要描述. 服务器模型 C/S模型 : 客户端/服务端, 最基础的服务器模型, 资源集中在服务端, 主要是客户端向服务端申请资源. p2p模型 : 每个主机都可以是客户端和服务端, 每个主机上都会存有一定的资源, 每个主机利用洪泛向每个点申请资源 2025-02-15 #Linux高性能服务器编程
被讨厌的勇气 读书摘录(1) 如果一味地关注过去的原因, 企图仅仅靠原因去解释事务, 那就会陷入决定论. 事实上我们会从经历中发现符合自己目的的因素. 决定我们自身的不是过去的经历, 而是我们自己赋予经历的意义. 但关键是经历本身不会决定什么. 我们给过去的经历”赋予了什么样的意义”, 这直接决定了我们的生活. 人生不是别人赋予的, 而是由自己选择的, 是自己选择自己如何生活. 如果不能感到幸福的话, 就不可以一直这样, 不 2025-02-15 #阅读
Linux高性能服务器编程 读书笔记(3) 第七章 Linux服务器程序规范 日志rsyslog一个非常强大的日志管理工具,它是现代 Linux 和 Unix 系统中默认的日志守护进程之一. 它负责收集、存储和转发来自操作系统和应用程序的日志消息. syslog一个用于向rsyslog系统发送日志进行存储的函数. 12#include<syslog.h>void syslog(int priority, const char*messa 2025-02-13 #Linux高性能服务器编程
Linux高性能服务器编程 读书笔记(2) 第六章 高级IO函数 pipe1int pipe(int fd[2]); fd[0]对应读端, fd[1]对应写端 默认阻塞, 可设置为非阻塞 双端都存在引用计数功能, 写端引用计数为0读端read返回0, 读端引用计数为0写端write会失败并发出SIGPIPE信号 多用于父子进程间通信, 一边关闭读端, 一边关闭写端. dup / dup212int dup(in 2025-02-13 #Linux高性能服务器编程
Linux高性能服务器编程 读书笔记(1) 第五章 Linux网络编程基础API 字节序什么是大小端字节序?这里以32位机举例, 32位机CPU一次可以装载4字节, 那么这4个字节不同的排序方式就对应了不同的字节序 : 大端字节序 : 顺着排, 0x12345678 将被排序为 12 34 56 78. 小端字节序 : 逆着排, 0x12345678 将被排序为 78 56 34 12. 为什么要分大小端?其实更多 2025-02-10 #高性能服务器编程
瓦尔登湖读书摘录(4) 我们对规律与和谐的了解, 往往局限于那些我们已经掌握的事例; 但许多貌似彼此冲突的因素也能导致和谐的结果, 但许多规律我们固然尚未认识可是确实存在且更加神奇美妙. 其实幸福的人应该永远生活在此刻, 好好利用每件落到我们身上的琐事, 就像青草坦然接受每颗落在它身上的最细小的露珠那样, 别把时间用于挽回从前失去的机会, 并美名其曰承担责任. 若是能在宁静而有益的清晨之气中, 回想每日所做善事, 2025-02-02 #Effective C++ #阅读
Effective C++ 条款53-55 杂项讨论 学到这里, Effective C++至此也算是告一段落了, 还剩下一些杂七杂八的讨论, 我们将在本文逐一列举. 条款53 : 不要忽视编译器的警告 我们应严肃对待编译器发出的警告信息, 努力在你的编译器最高警告级别下争取无警告的荣誉. 同时也不要过度依赖编译器的报警能力, 有些可能导致运行崩溃的错误编译器无法准确检测. 条款54 : 让自己熟悉包括Tr1在内的标准程序库Tr1其实是早期的 2025-01-31 #Effective C++
Effective C++ 条款49-52 内存分配 条款49 : 了解new-handler的行为条款50 : 了解new和delete的合理替换时机条款51 : 编写new和delete时需固守常规条款52 :写了placement new也要写placement delete 条款49-52中详细讲述了定制new和delete的实现, 加上前面所讲述的智能指针及资源管理类, 让我们对内存管理有了比较深刻的认知. 但是这部分有些内容经查证已经相对 2025-01-30 #Effective C++