删除文章

确定要删除这篇文章吗?

取消
确定

jemalloc C++实践

jemalloc是一种通用的malloc(3)实现,优点是避免内存碎片和可伸缩并发支持。 下载源码 wget https://github.com/jemalloc/jemalloc/releases/download/5.2.1/jemalloc-5.2.1.tar.bz2 解压 tar -jxvf jemalloc-5.2.1 编译安装 cd jemalloc-5.2.1 ...
2020-11-27 10:13:03
阅读(125)

C++11 实现defer

defer函数功能还是蛮常用的,它是在出当前作用域的时候执行,用来回收资源非常合适,可惜C++里面没有,以前实现起来都比较别扭现在用C++11实现后看起来简单多了。 此defer内部lambda表达式捕获的是引用; 同一个作用域内先定义的defer后执行; 使用define以及xy连...
2020-11-25 01:56:34
阅读(131)

Qt json文件读写

Qt提供了处理JSON数据的支持。JSON是一种数据编码格式派生自Javascript,现在在internet上广泛用作数据交换格式。 Qt中的JSON支持提供了一个易于使用的C++ API来解析、修改和保存JSON数据。 它还支持以二进制格式保存数据,这种格式可以直接“mmap”,而且访问速度非常快。 简...
2020-09-22 02:48:39
阅读(36)

QtCharts使用

QtCharts是Qt的图表模块在Qt5.7版本之后才包含进来的,之前的版本需要下载源码单独编译。 介绍几个重要的类: QChart:Qt图标的核心类,建立在图形视图之上的,管理各个图表部件 QChartView:是一个独立的widget用来展示QChart QDateTimeAxis:日期时间轴 QValue...
2020-09-03 01:38:17
阅读(106)

Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

用新的visual studio 2017或者2019来编译老代码(vs2013),Debug的时候发现QString的toStdString和toStdWString方法触发以上错误(Release没有问题),换成下面两个转换函数就没问题了: std::wstring towstring(const QString& str) { std::wstring result; resul...
2020-08-31 13:44:42
阅读(95)

多线程锁key处理

目的是要保证多个线程处理同一个key的消息时是线程安全的,同时是顺序的。 1. 收到网络过来的消息,将消息缓存到total msg cache里 2. 解析业务消息找到每条数据的key(可能一条或多条)存储在set中 3. 将所有key进行hash,对最大线程数进行取余,获取所有线程索引std::se...
2020-07-30 02:38:08
阅读(169)

malloc_trim和SetProcessWorkingSetSize两个神奇的内存相关函数

它们两个其实没有什么关系,相似之处是调用这两个函数后内存会有明显的下降,但是原理完全不同。 malloc_trim linux平台的函数,官方的解释是:从堆释放可用内存。 在程序中堆上new或者malloc的内存我们都会delete和free掉,由于linux的机制它们并没有立即将释放的内存...
2020-06-11 09:26:55
阅读(319)

获取本地IP地址

首先来一种windows和linux平台都支持的 ifdef WIN32 include <boost/asio.hpp> include <boost/asio/io_service.hpp> else include <stdio.h> include <sys/types.h> include <ifaddrs.h> include <netinet/in.h> include <string.h> include <arpa/inet.h>...
2020-04-28 02:38:07
阅读(248)

amqp:connection:framing-error: Expected AMQP protocol header

使用qpid proton的demo去连接qqpidd (qpid-cpp) version 1.39.0的时候报如下错误: amqp:connection:framing-error: AMQP header mismatch: Pre standard AMQP connection ['AMQP\x01\x01\x00\x0a'] 版本信息如下: Qpid Proton 0.31.0 qpidd (qpid-cpp) vers...
2020-04-23 03:21:31
阅读(284)

linux C++进程CPU占用100%排查

现象 使用top -c命令查看发现某个进程的CPU一直100%以上,第一反应就是查看日志,如果发现某一处频繁打印日志,那么恭喜你很容易就定位到问题所在了,如果查看日志发现没什么异常请继续往下看。 出现问题的线程 进程ID你应该已经知道了,下一步要找到出现问题的线程ID,...
2019-09-04 07:42:29
阅读(738)

linux C++内存优化

在linux上你会发现明明我的内存都释放了但是进程占用的内存还是没降下来,而在windows上就没有这种情况。这涉及到linux上内存分配原理([参考](http://blog.sina.com.cn/s/blog_b4ef897e0102vg0l.html))。 在linux系统下,一块内存被C的free函数或者C++的delete函数显式释...
2019-08-30 02:42:28
阅读(649)

C++ 智能指针简单实现

此实现仅做学习之用,生产中不要使用,可以使用std::shared_ptr和boost::shared_ptr。 代码很少相信大家都看得懂。 template<class T> class SmartPtr { struct Counter { Counter() : count(1){} int count; }; public: Smart...
2019-08-05 06:02:06
阅读(682)
 
Keep it simple,stupid
文章数
362
今日访问
185
今日IP数
65
最近评论

在家赚钱: 在家赚钱 <a href="http://www.265250.com/" >在家赚钱</a> 已阅,感谢站长分享!
liangzi: 不错 谢谢分享
tujiaw: registerThreadInactive:如果当前没有激活的线程,就去激活线程,让等待的线程去执行任务。
hgzzx: 佩服佩服。 请教:registerThreadInactive的作用是什么?
xuehaoyun: 很不错,来围观一下
tujiaw: 抱歉csdn code服务关闭了,这个代码我也找不到了
回到顶部