上一页 1 2 3 4 5 6 7 8 ··· 22 下一页
摘要: 目录总览指示(Directives)实现编译和构建需求可追踪性代码设计规则(Rules)标准C环境未使用代码(Unused code)注释(Comments)字符集和词汇约定(Character sets and lexical conventions)标识符(Identifiers)类型(type 阅读全文
posted @ 2023-05-08 18:00 明明1109 阅读(9409) 评论(1) 推荐(3) 编辑
摘要: 需求 Linux程序中,常有这样的需求:判断当前程序是否为root权限启动。如果是,正常运行;如果不是,则打印日志,退出程序。 root用户特点 要判断是否为root权限启动,可以先看看root用户特点。root用户典型特点:UID(用户id)为0,GID(组id)为0。 每个用户有对应唯一UID值 阅读全文
posted @ 2023-03-30 09:24 明明1109 阅读(1083) 评论(0) 推荐(0) 编辑
摘要: 引出问题 在基于消息包的通信协议中,通常会通过一个id或命令名来标识该消息包,程序需要根据不同的标识进行不同的解析策略,提取出想要的内容。例如,一个典型的FTP请求命令是这样的: USER anonymous\r\n 其中,"USER"是请求命令名,"anonymous"是该命令跟着的参数,"\r\ 阅读全文
posted @ 2023-03-29 21:11 明明1109 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 字面量 字面量是指源码中,固定的常量。比如, const char* p = "abcd"; const std::string s = "efg"; const int v = 10; const double d = 20.1; const unsigned long l = 123465789 阅读全文
posted @ 2023-03-25 17:25 明明1109 阅读(441) 评论(0) 推荐(0) 编辑
摘要: 内存池意义 内存的分配与释放会向系统进行申请,陷入内核,而频繁的内存分配、释放会降低应用程序性能。应用程序通常以特定方式使用内存,因此,能通过开发专门的内存管理器来解决这种情况。内存管理器,通常也称为内存池。 内存管理器需要考虑两方面:大小、并发。 大小 1)固定大小:分配单一固定大小内存块对内存管 阅读全文
posted @ 2023-03-23 19:51 明明1109 阅读(465) 评论(0) 推荐(1) 编辑
摘要: 获取磁盘信息方式 Linux中,可以在终端用df -h,fdisk -l等命令,查看磁盘信息,但C/C++程序中,如何查看呢? 可以使用statvfs, fstatvfs调用。 statvfs, fstatvfs 函数说明 有2个接口能获取磁盘信息方式,statvfs需要传入一个C风格Posix路径 阅读全文
posted @ 2023-03-13 19:43 明明1109 阅读(3342) 评论(0) 推荐(0) 编辑
摘要: 临时对象对开发人员来说,可能是个意外情况,因为是编译器偷偷产生的,并不在源码中出现。由于临时对象可能影响程序性能,本文主要探讨这种额外产生的临时对象。 产生临时对象 假设有理数类Rational: // 有理数 class Rational { friend Rational operator+(c 阅读全文
posted @ 2023-02-25 16:25 明明1109 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 返回值优化(Return Value Optimization, 简称RVO)是通过对源代码进行转换、消除对象的创建来实现加速程序,提升程序性能的优化措施,通常是由编译器实现的优化。 按值返回 假设我们打算实现Complex类,用于实现复数。可以这样设计Complex类: class Complex 阅读全文
posted @ 2023-01-08 23:39 明明1109 阅读(633) 评论(0) 推荐(0) 编辑
摘要: 线程池技术 对于大量并发任务,传统方式处理任务特点: 一个请求一个线程来处理请求任务,大量线程的创建和销毁将消耗过多的系统资源,增加线程上下文切换的开销。 线程池技术特点: 在系统中预先创建一定数量的线程,当任务请求到来时,从线程池中分配一个预先创建的线程去处理任务,线程处理完任务后还可以重用,不会 阅读全文
posted @ 2023-01-06 15:36 明明1109 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 17.3 正则表达式 正则表达式(regular expression)是一种描述字符序列的方法,是一种强大的计算工具。这里重点介绍如何使用C++正则表达式库(RE库)。 头文件:<regex>。 组件: regex 表示有一个正则表达式的类 regex_match 将一个字符序列与一个正则表达式匹 阅读全文
posted @ 2022-12-09 23:31 明明1109 阅读(493) 评论(0) 推荐(0) 编辑
摘要: 目录registry类意义registry类实现registry数据成员registry函数成员构造与析构单例模式全局注册表initialize_logger初始化logger对象全局格式器预置日志等级flush日志等级默认logger在已注册logger上应用函数回溯最近的log消息线程安全错误处 阅读全文
posted @ 2022-11-27 20:47 明明1109 阅读(1126) 评论(0) 推荐(1) 编辑
摘要: 目录相关概念formatter类描述formatter系列类类图关系formatter类pattern_formatter类构造与析构compile_pattern_编译patternhandle_padspec_按pad规格处理handle_flag_ 处理模式标志字符format()格式化log 阅读全文
posted @ 2022-11-19 21:18 明明1109 阅读(1688) 评论(0) 推荐(1) 编辑
摘要: 目录sinks系列类简介特点sinks继承体系sink类sink类声明日志等级阈值sink子类null_sink类模板base_sink类模板basic_file_sink类模板文件工具类file_helperdaily_file_sink类模板dist_sink类模板dup_filter_sink 阅读全文
posted @ 2022-11-08 19:21 明明1109 阅读(2709) 评论(0) 推荐(1) 编辑
摘要: 目录特性类图关系logger数据成员logger函数成员构造与析构构造函数拷贝构造、移动构造交换操作log()记录日志消息格式串普通字符串日志级别宽字符支持sink_it_:将log消息交给sink对象写日志控制线程安全backtracer类错误处理logger类应用创建logger对象同步工厂方法 阅读全文
posted @ 2022-10-30 01:17 明明1109 阅读(2720) 评论(4) 推荐(2) 编辑
摘要: 目录自定义异常类spdlog_ex通用异常系统调用异常what()函数异常的使用抛出异常控制异常使用 自定义异常类spdlog_ex 标准库异常类(std::exception)系列,能满足大多数使用异常的场景,但对系统调用异常及错误信息缺乏支持。spdlog通过继承std::exception,扩 阅读全文
posted @ 2022-10-27 11:21 明明1109 阅读(1106) 评论(0) 推荐(2) 编辑
摘要: 目录线程池thread_pool简介多生产者-多消费者阻塞队列模型阻塞与非阻塞方式插入数据取出数据overrun异常处理机制其他接口环形队列circular_qthread pool模型thread pool实现thread_pool类接口构造与析构构造函数析构函数post_log插入log消息po 阅读全文
posted @ 2022-10-27 01:30 明明1109 阅读(3487) 评论(1) 推荐(2) 编辑
摘要: 目录安装编译、运行平台编译、安装直接拷贝include文件到用户的项目Windows下编译使用spdlogWindows下使用spdlog参考 安装 编译、运行平台 Linux,FreeBSD,OpenBSD,Solaris,AIX Windows(MSVC 2013+,cygwin) MacOS( 阅读全文
posted @ 2022-10-15 22:54 明明1109 阅读(3721) 评论(0) 推荐(0) 编辑
摘要: 目录简介资源 简介 spdlog是一个非常快、基于头文件编译的、跨多平台的C++日志库。 特点: 运行非常快 基于.h头文件(很奇怪是不是)实现 不依赖第三方库(不太严格,只是不需要专门安装,如fmtlib) 支持跨多平台,如Linux、Windows、macOS 32/64bits 支持单线程、多 阅读全文
posted @ 2022-10-15 22:49 明明1109 阅读(1582) 评论(0) 推荐(0) 编辑
摘要: 目录变长函数C中变长参数C++中变长参数变长模板变长模板类变长模板函数变长模板高级功能特殊的包扩展方式"sizeof..."计算参数包参数个数模板参数包是模板最后一个参数吗?小结参考 变长函数 C中变长参数 变长函数(variadic function)是指函数参数个数可变。在C中,有两种方式表示可 阅读全文
posted @ 2022-09-29 22:39 明明1109 阅读(1681) 评论(0) 推荐(0) 编辑
摘要: 顺序一致性 如果只是简单的进行线程间同步数据,而不考虑效率,那么使用原有的原子类型(atomic)即可。因为通常所使用的原子类型,是基于顺序一致性(sequential consistent)的内存模型(memory model)。 什么是内存模型? 通常,内存模型是一种硬件上的概念,表示的是机器指 阅读全文
posted @ 2022-09-28 19:29 明明1109 阅读(1471) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 22 下一页