c++
文章平均质量分 85
c++20,stl,模板,对象模型
你听不到
这个作者很懒,什么都没留下…
展开
-
grpc与brpc等rpc框架总结
rpc原创 2022-03-15 20:05:36 · 6584 阅读 · 0 评论 -
glibc,ptmalloc,tcmalloc与jemalloc
glibc,malloc原创 2022-02-25 11:30:38 · 1664 阅读 · 0 评论 -
高性能服务器编程,网络库
网络编程伪共享问题两线程分别需要处理两个内存邻近的变量,看起来是互不干涉,但是即使两线程分别在两个不同的cpu核上执行,两个变量分别放到两个核的cacheL1的一行cache line上,mesi协议更新任意一个都会invalidate所有cpu自己的cacheL1这一行的数据,cache失效导致频繁需要从内存重新加载,性能很差。sendfile零拷贝技术,内核中实现了两个文件描述符的缓冲区拷贝。mmap共享内存splice也是两个文件描述符直接的零拷贝,但是必须有一个是管道文件描述符。te原创 2022-02-22 19:19:45 · 879 阅读 · 0 评论 -
c++陷阱
技巧1.使用外覆代理类,只有方法和指向要代理对象的一个指针,构造初始化这个指针,这样耦合性很低。代理类可以加上RRID,资源释放即析构。还可以进一步优化使用raii的指针对象,自动释放对象。2.动态多态和静态多态:C++中的动态多态有如下优点: 可以很优雅的处理异质集合。 可执行文件的大小可能会比较小(因为它只需要一个多态函数,不像静态多态那样,需要为不同的类型进行各自的实例化)。 代码可以被完整的编译;因此没有必须要被公开的代码(在发布模板库时通常需要发布模板的源代码实现)。C++原创 2022-02-21 15:51:08 · 577 阅读 · 0 评论 -
c++20,对象模型,并发编程总结
c++20,对象模型,并发编程总结原创 2022-02-18 20:00:25 · 651 阅读 · 0 评论 -
c++语言
文章目录普通、标准布局、POD强制转换运算符用于编译时封装的 Pimpl普通、标准布局、POD普通类型(is_trivial)普通类型具有普通默认构造函数、普通复制构造函数、普通复制赋值运算符和普通析构函数。 在各种情况下,“普通”意味着构造函数/运算符/析构函数并非用户提供(=default)。1.没有虚函数或虚基类。2.没有具有相应非普通的 构造函数/运算符/析构函数 的基类。3.没有具有相应非普通的 构造函数/运算符/析构函数 的类类型的数据成员。(注意:成员可以有不同访问权限,pri原创 2022-01-04 18:15:39 · 710 阅读 · 0 评论 -
linux性能分析工具
linux静态分析性能工具linux性能测试工具linux性能优化工具linux性能监测工具:sarlinux性能监测工具:pertoolslinux bcc/BPF跟踪工具bpftrace/eBPF工具新的BPF性能分析工具c++开发常用开源性能分析工具重点研究这几种1.valgrind很占用内存,测试环境可以使用。Memcheck 检测内存泄漏;Callgrind 分析函数调用,可以用来分析开源项目的源码;Cachegrind 分析cpu的cache L1 L原创 2021-12-29 12:51:42 · 2748 阅读 · 1 评论