面向bug编程

没有什么深度好文,没有什么高深见解,仅瞎折腾而已!

删除文章

确定要删除这篇文章吗?

取消
确定

多线程锁key处理

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

golang 控制goroutine调度顺序

使用go关键字就可以很容易的启动一个goroutine,启动后他们的执行顺序是不能保证的。如果有多个goroutine,怎样按照我想要的顺序来执行呢? 如: a1在b1和c1后面执行(b1和c1都执行完a1才能执行) d1在a1后面执行(d1执行完才能执行a1) e1在b1或者c1后面执行(b...
2020-07-29 05:54:24
阅读(29)

localtime线程不安全造成的线上问题

线上出现了一个比较奇怪的问题,日期B的时间赋值给了日期A,但是浏览代码发现根本没有这样的逻辑。 经过一番调查基本能确定是localtime函数线程不安全造成的。 下面使用demo来模拟一下出现问题的情况 t1和t2是两个时间,使用GetTimeString转换的时候t2的时间可能会赋...
2020-07-23 08:18:37
阅读(68)

快速遍历磁盘

快速遍历磁盘,不用遍历每个目录,主要使用DeviceIoControl 函数 需要用管理员权限运行 [参考链接](https://docs.microsoft.com/en-us/windows/win32/DevIO/calling-deviceiocontrol) 使用命令行工具也可以遍历出所有文件: 注意C盘需要管理员权限 dir c:...
2020-07-23 02:26:14
阅读(67)

编程语录

纠错前先思考。如果你一头扎进问题中,你可能只解决了当前出现问题的代码,但如果你先思考这个错误,这个 bug 是怎么引入的?你通常发现和纠正一个更高层次的问题,进而改进了系统设计,防止了更多 bug 的出现。 ...
2020-07-06 13:38:46
阅读(84)

golang设置桌面壁纸

golang语言编写,设置windows桌面壁纸,图片来自于必应网站(cn.bing.com) github源码地址:[https://github.com/tujiaw/gowallpaper](https://github.com/tujiaw/gowallpaper) 有兴趣的Star一下吧 编译好的程序:[https://pan.baidu.com/s/1l5OW9GeuUF0r5TFaBW...
2020-07-04 13:21:17
阅读(96)

QWidget QLabel没有响应keyEvent键盘事件

在Qt中我们经常通过重写下面两种虚函数来实现按键事件 virtual void keyPressEvent(QKeyEvent event); bool eventFilter(QObject watched, QEvent event); 但是有时候会遇到无法触发的情况(特别是QWidget,QLabel),这个时候我们会考虑是不是被父窗口给截获了没有传...
2020-06-23 06:42:59
阅读(136)

Mac安装国内版homebrew

HomeBrew是macOS和linux平台的包管理工具 由于大家都知道的原因,安装官方的homebrew下载速度很慢,所以这里找了个国内版本的试下,速度非常快。 安装方法 粘贴下面的脚本到终端命令行界面,直接回车安装,后面选择1就可以了 /bin/zsh -c "$(curl -fsSL https://gi...
2020-06-12 15:48:55
阅读(163)

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

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

vim常用技巧

Linux生产环境上,最常用的一套“vim“技巧原创 -------------------------- 研发线上使用最多的编辑器,就是vi。无论是最快查看某个文件内容,还是快速编辑某个文件,vi都能帮上忙。 软件世界貌似有一些非常长寿的东西,vi算是一个。本篇文章聚焦的是研发线上最常用的一些...
2020-06-06 14:17:15
阅读(189)

netcat网络诊断

Netcat 号称 TCP/IP 的瑞士军刀并非浪得虚名,以体积小(可执行 200KB)功能灵活而著称,在各大发行版中都默认安装,你可以用它来做很多网络相关的工作,熟练使用它可以不依靠其他工具做一些很有用的事情。 最初作者是叫做“霍比特人”的网友 Hobbit hobbit@avian.org 于 ...
2020-06-06 14:09:16
阅读(184)

编写 Bash Shell 脚本的最佳实践

前言 -- 由于工作需要,最近重新开始拾掇shell脚本。虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。毕竟shell脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序...
2020-06-06 13:24:33
阅读(182)
 
Keep it simple,stupid
文章数
338
今日访问
1974
今日IP数
682
最近评论

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