前言 C++ 11 常用的特性有: auto:自动类型推导,可以根据等号右边的类型推导出变量的类型,简化代码。 decltype 关键字:可以根据表达式的类型推导出变量或函数的返回值类型。 lambda:匿名函数,可以在需要的地方定义和使用函数,提高灵活性和效率。 智能指针:自动管理内存的指针,可以避免内存泄漏和悬空指针。 nullptr:空指针字面量,可以替代0或...
访问权限 C++ 通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为成员访问限定符。 在类的内部(定义类的代码内部),⽆论成员被声明为 public、protected 还是 private,都是可以互相访问的,没有访问权限的限制。在类的外部(定义类的代码之外),只能通过对象访问成员,并且通过...
虚函数 C ++ 虚函数是一种实现多态的机制,它可以让基类的指针或引用调用派生类的成员函数。虚函数的作用是实现运行时决议,即根据指针或引用所指向或绑定的对象的实际类型,动态的确定调用哪个函数。虚函数依赖于虚函数表工作,虚函数表用来保存虚函数地址,当我们用基类指针指向派生类时,虚表指针指向派生类的虚函数表。 定义虚函数的方法实在函数声明前加上关键字 virtual : class Ani...
本项目中,使用单例模式创建日志系统,对服务器运行状态、错误信息和访问数据进行记录,该系统可以实现按天分类,超行分类功能,可以根据实际情况分别使用同步和异步写入两种方式 其中异步写入方式,将生产者-消费者模型封装为阻塞队列,创建一个写线程,工作线程将要写的内容push进队列,写线程从队列中取出内容,写入日志文件 日志系统大致可以分成两部分,其一是单例模式与阻塞队列的定义,其二是日志类的定义...
定时器信号 信号处理逻辑太复杂怎么办 Linux下的信号采用的异步处理机制,信号处理函数和当前进程是两条不同的执行路线。具体的,当进程收到信号时,操作系统会中断进程当前的正常流程,转而进入信号处理函数执行操作,完成后再返回中断的地方继续执行。 为避免信号竞态现象发生,信号处理期间系统不会再次触发它。所以,为确保该信号不被屏蔽太久,信号处理函数需要尽可能快地执行完毕。 一般的信号处理函...
Linux 提供了三种定时的方法: socket 选项 SO_RECVTIMEO 和 SO_SNDTIMEO SIGALRM 信号 I/O 复用系统调用的超时参数 三种方法没有一劳永逸的应用场景,也没有绝对的优劣。TinyWebServer 中用的 SIGALRM 信号,利用 alrnm 函数周期性地出发 SIGALRM 信号,信号处理函数利用管道通知主循环,主循环接收到...
由于 Chirpy (cotes.page) 作者提供的文章阅读量统计太麻烦,而且好像还需要国外的 visa 卡才能实现,对于国内的我来说基本上就是可能完成的了。于是就找了一个平替、简单的方法,使用busuanzi。 目前该方法好像已经失效了 而博主又很想实现实现这种功能,于是找了个平替的、简单的方法。 站点总访问量 要显示站点总访问量,复制以下代码添加到你需要显示的位置。如...
strpbrk 函数 strpbrk函数用于在一个字符串中查找给定字符集合中任意一个字符的第一个匹配位置。 函数声明如下: char* strpbrk(const char* str1, const char* str2); 函数参数: str1:指向要在其中搜索的 C 字符串。 str2:指向包含要在 str1 中查找的字符集合的 C 字符串。 函数返回值: ...
epoll_create 函数 函数定义: int epoll_create(int size); 参数: size:epoll 实例能够监听的文件描述符数量的上限。实际上这个值并不是硬限制,内核会为 epoll 实例动态分配内存以适应更多的文件描述符。但 size 参数可以影响 epoll 实例分配内存的方式。 头文件: #include <sys/epoll....
pthread_create 函数 pthread_create 是 POSIX 线程库中用于创建一个新线程的函数。 函数定义: #include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_ro...
发现新版本的内容。