tcmalloc的memory heap profiler
摘要:在写C++程序时,有时候会出现内存问题,例如当程序的负荷升高时,内存占用不断升高,但是,当程序的负荷下降时,内存占用也没有降低,这种情况对于标准的malloc内存分配,很有可能是内存泄漏,而对于tcmalloc来说,也可能只是内存没有被放回系统分配器。对于tcmalloc的内存分配机制,可以参考 h
阅读全文
posted @
2021-01-16 19:40
月落无影
阅读(1360)
推荐(0)
gdb打印map成员显示python错误的可能解决办法,以及如何只让调试线程运行
摘要:错误显示: (gdb) p *(events.get())Python Exception <class 'TypeError'> expected string or bytes-like object:Error while executing Python code. 解决办法: disabl
阅读全文
posted @
2020-12-23 21:29
月落无影
阅读(413)
推荐(0)
如何计算动态粗略计算99%分位,99.9%分位
摘要:假设你写了一个程序作为http客户端,进行webhook的请求,你会计算每个http请求所需要的时间,然后把这些信息打印在日志里,但是把信息写到日志里,从而查看程序的http请求情况,用来监控自己的程序和对端的http server的运行状况。当程序部署太多,到每台机器上看这些日志信息,会很麻烦,你
阅读全文
posted @
2020-12-19 22:13
月落无影
阅读(895)
推荐(0)
通过c++11的condition_variable实现的有最大缓存限制的队列
摘要:之前曾写过一个通过C++11的condition_variable实现的有最大缓存限制的队列,底层使用std::queue来实现,如果想要提升性能的话,可以考虑改用固定的长度环形数组。环形数组实现如下: 关于上面的环形数组,简单的单元测试代码如下,这里使用了catch2,如下代码需要放在.cpp文件
阅读全文
posted @
2019-04-26 23:08
月落无影
阅读(518)
推荐(0)
通过c++11的condition_variable实现的有最大缓存限制的队列
摘要:通过condition_variable实现的有最大长度限制的队列: 由于需要控制队列的长度, 所以没有使用二级缓存, 也就是说, 没有在消费线程使用std::vector之类的进行二级缓存, 使用二级缓存需要考虑均匀分布的问题. 当然, 就算使用二级缓存, 也可以控制待处理的数据的长度, 但是处理
阅读全文
posted @
2019-02-03 10:44
月落无影
阅读(1132)
推荐(0)
C/C++中的volatile简单描述
摘要:首先引入一篇博客: 1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:
阅读全文
posted @
2018-07-14 11:35
月落无影
阅读(528)
推荐(0)
C++ Programming Language中的narrow_cast实现
摘要:在C++中,各种数值类型的转化是C++编译过程中警告的主要来源,但是,很多时候,我们需要使用各种数值类型,例如我们用数组的某一位表示大小为对应序号的值,这种情况下,经常会涉及多种数值类型。根据C++ Programming Language中的建议,在数值类型转换时,使用narrow_cast来实现
阅读全文
posted @
2018-06-16 11:51
月落无影
阅读(2104)
推荐(0)
iterator简单描述
摘要:Item 26. Prefer iterator to const iterator, reverse_iterator, and const_reverse_iterator. 上面一段话,是《Effective STL》中的一节。我在下面简单摘抄了一下: 我之所以要将上述图片贴在这里,是因为,我
阅读全文
posted @
2018-06-05 22:03
月落无影
阅读(434)
推荐(0)
VC的function类说明 -- 继续
摘要:我在之前的随笔中介绍了function如何保存参数,如何实现调用相关知识。对于一个函数对象或者函数指针来说,应该很容易理解。不过对于如何在function中保存类的成员函数,这个还是值得一说的。 还是按照之前的方式,通过boost的type_index,我们可以比较容易的知道function的父类是
阅读全文
posted @
2018-05-23 00:15
月落无影
阅读(413)
推荐(0)
引用文章 如何在lambda中引入递归调用
摘要:// clang++ 3.5 // maybe gcc 4.9 support it, but I don't test it #include int main() { auto fac = [&](auto&& self, int x)->int{ return x template struct wrapper_type { Functor functor...
阅读全文
posted @
2018-05-18 19:53
月落无影
阅读(215)
推荐(0)
VC中function函数解析
摘要:C++标准库是日常应用中非常重要的库,我们会用到C++标准库的很多组件,C++标准库的作用,不单单是一种可以很方便使用的组件,也是我们学习很多实现技巧的重要宝库。我一直对C++很多组件的实现拥有比较强的兴趣。最近花了一些时间,查看了C++中function类的实现,将其中的要点,写在这里(这里只介绍
阅读全文
posted @
2018-05-17 00:05
月落无影
阅读(1348)
推荐(0)
folly无锁队列正确性说明
摘要:folly无锁队列是facebook开源的一个无所队列,使用的是单向链表,通过compare_exchange语句实现的多生产多消费的队列,我曾经花了比较多的时间学习memory_order的说明,对release-acquire语义,自认为还是比较了解。如果一个atomic对象使用std::mem
阅读全文
posted @
2018-05-06 23:36
月落无影
阅读(1382)
推荐(0)
C++ Programming Language中的Calculator源代码
摘要:C++ Programming Language 4th中的Calculator源代码整理,因为在C++ Programming Language中,涉及了很多文件位置之类的变化,所以,这里只是其中的一个版本: error.h Table.h Lexer.h Parser.h Driver.h Er
阅读全文
posted @
2018-05-06 13:02
月落无影
阅读(448)
推荐(0)
C++根据传入的函数指针来解析需要的参数
摘要:C++可以根据传入的函数指针,获取自己需要的参数类型,然后根据参数源中获取需要的参数,这里我用tuple作为演示,不过,只要可以根据序号,或者顺序方式等获取实参,都可以使用类似的方式实现: 先给出一个辅助函数: 下面给出实际的实现函数: 下面是测试用例: 通过使用lambda表达式,我们可以很方便的
阅读全文
posted @
2018-05-06 12:52
月落无影
阅读(733)
推荐(0)
C++虚析构函数
摘要:我知道,对于存在虚函数的基类,一般需要将基类的析构函数定义为虚函数,从而实现资源的合理释放,而且我也知道派生类在重载时,只需要清理自己的对象,不过,有时候还是会有些疑惑感,所以写了一个简单的例子,来消除疑惑。下面是实例内容: 下面是调用的地方的代码: 这种情况下,会执行正确的清理操作: 这种情况下,
阅读全文
posted @
2018-05-02 10:29
月落无影
阅读(7783)
推荐(0)
Windows和pthread中提供的自旋锁
摘要:Windows和POSIX中都提供了自旋锁,我们也可以通过C++11的atomic来实现自旋锁。那么两者性能上面是什么关系?先引入实现代码: 下面给出一个简单测试,两组线程,一组用来插入,另外一组用来取出。测试结果显示: (1)无论是Windows,还是POSIX提供的C语言版本的自旋锁,都和C++
阅读全文
posted @
2018-04-17 23:47
月落无影
阅读(1058)
推荐(1)
简单演示通过模板元编程计算容器大小
摘要:源代码: 实现代码: 上面只是自己随便写的关于模板元编程的简单例子,可以用在希望在堆栈上创建数组的情况下,用来简化使用。
阅读全文
posted @
2018-04-13 14:28
月落无影
阅读(310)
推荐(0)
模板中如何添加不定个数的常数
摘要:简单实现: 简单使用: 在这里记下来,需要的时候,可以看一下。
阅读全文
posted @
2018-04-12 11:43
月落无影
阅读(221)
推荐(0)
SFINAE简单实例
摘要:SFINAE(Substitution failure is not an error),是C++11以来推出的一个重要概念,这里,只是简单举一个例子,可能会有人需要。
阅读全文
posted @
2018-03-20 09:26
月落无影
阅读(291)
推荐(0)
hierarchical_mutex函数问题(C++ Concurrent in Action)
摘要:C++ Concurrent in Action(英文版)书上(No.52-No.53)写的hierarchical_mutex函数,只适合结合std::lock_guard使用,直接使用如果不考虑顺序,可能会出现问题。 参看hierarchical_mutex类的代码: 测试代码: 正确时,输出值
阅读全文
posted @
2018-03-18 16:09
月落无影
阅读(842)
推荐(0)