删除文章

确定要删除这篇文章吗?

取消
确定

多线程锁key处理

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

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

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

获取本地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
阅读(161)

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
阅读(194)

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

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

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
阅读(554)

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
阅读(569)

C++ 的门门道道 | 技术头条

C++是一门被广泛使用的系统级编程语言,更是高性能后端标准开发语言;C++虽功能强大,灵活巧妙,但却属于易学难精的专家型语言,不仅新手难以驾驭,就是老司机也容易掉进各种陷阱。 本文结合作者的工作经验和学习心得,对C++语言的一些高级特性,做了简单介绍;对一些常见的误解...
2019-05-02 16:42:48
阅读(686)

boost asio获取本机IP地址

直接上代码,这里只获取IPV4的地址,多个IP之间用分号间隔 std::string getLocalIpAddress() { using boost::asio::ip::tcp; std::string result; try { boost::asio::io_service io_service; tcp::resolver resolver(io_service)...
2019-04-19 02:52:18
阅读(1413)

C++保证指针对象正确的销毁

我们知道new一个对象要自己去delete,这样的代码写多了很容易漏掉,常见漏掉的情况如下: 忘了写 写了,但是某个分支提前return了 逻辑中抛出异常,直接跳过正常逻辑 假设有这样一个简单的类: class ConnTest { public: ConnTest() { std::cout << "ConnTe...
2019-04-19 02:09:10
阅读(681)

qpid C++接口简单封装

qpid C++接口简单封装 希望简单的封装能满足大部分场景,并且简单易用。 处理队列请求 如果我想处理某个队列的消息我只需要指定一个队列名和回调处理函数就可以了 server.AddQueueServer("pingpong", [](const Message &msg, Message &reply) { std::cout...
2019-04-12 09:57:21
阅读(739)

Apache Ignite c++ linux 编译安装

Apache Ignite c++ linux 编译安装 不要直接拉github上的代码编译,它上面没有libs库编译成功后运行不起来。 到官网上去下载:https://ignite.apache.org/download.cgibinaries 环境 操作系统:centos6 ignite版本: http://mirrors.shu.edu.cn/apache//ignite/2...
2019-03-29 04:46:18
阅读(981)
 
Keep it simple,stupid
文章数
339
今日访问
757
今日IP数
455
最近评论

liangzi: 不错 谢谢分享
tujiaw: registerThreadInactive:如果当前没有激活的线程,就去激活线程,让等待的线程去执行任务。
hgzzx: 佩服佩服。 请教:registerThreadInactive的作用是什么?
xuehaoyun: 很不错,来围观一下
tujiaw: 抱歉csdn code服务关闭了,这个代码我也找不到了
于淞: 你好,这个文章的源码能分享一下吗,songsong9181@163.com,谢谢了 上面的写错了
回到顶部