Posts
All the articles I've posted.
golang 控制goroutine调度顺序
Published: at 05:54 AM使用go关键字就可以很容易的启动一个goroutine,启动后他们的执行顺序是不能保证的。如果有多个goroutine,怎样按照我想要的顺序来执行呢? 如: a1在b1和c1后面执行(b1和c1都执行完a1才能执行) d1在a1后面执行(d1执行完才能执行a1) e1在b1或者c1后面执行(b...
localtime线程不安全造成的线上问题
Published: at 08:18 AM线上出现了一个比较奇怪的问题,日期B的时间赋值给了日期A,但是浏览代码发现根本没有这样的逻辑。 经过一番调查基本能确定是localtime函数线程不安全造成的。 下面使用demo来模拟一下出现问题的情况 t1和t2是两个时间,使用GetTimeString转换的时候t2的时间可能会赋...
快速遍历磁盘
Published: at 02:26 AM快速遍历磁盘,不用遍历每个目录,主要使用DeviceIoControl 函数 需要用管理员权限运行 参考链接(https//docs.microsoft.com/en-us/windows/win32/DevIO/calling-deviceiocontrol) 使用命令行工具也可以遍历出所有文件: 注意C盘需要管理员权限 dir c...
编程语录
Published: at 01:38 PM纠错前先思考。如果你一头扎进问题中,你可能只解决了当前出现问题的代码,但如果你先思考这个错误,这个 bug 是怎么引入的?你通常发现和纠正一个更高层次的问题,进而改进了系统设计,防止了更多 bug 的出现。 ...
golang设置桌面壁纸
Published: at 01:21 PMgolang语言编写,设置windows桌面壁纸,图片来自于必应网站(cn.bing.com) github源码地址:https//github.com/tujiaw/gowallpaper(https//github.com/tujiaw/gowallpaper) 有兴趣的Star一下吧 编译好的程序:https//pan.baidu.com/s/1l5OW9GeuUF0r5TFaBW...
QWidget QLabel没有响应keyEvent键盘事件
Published: at 06:42 AM在Qt中我们经常通过重写下面两种虚函数来实现按键事件 virtual void keyPressEvent(QKeyEvent event); bool eventFilter(QObject watched, QEvent event); 但是有时候会遇到无法触发的情况(特别是QWidget,QLabel),这个时候我们会考虑是不是被父窗口给截获了没有传...
Mac安装国内版homebrew
Published: at 03:48 PMHomeBrew是macOS和linux平台的包管理工具 由于大家都知道的原因,安装官方的homebrew下载速度很慢,所以这里找了个国内版本的试下,速度非常快。 安装方法 粘贴下面的脚本到终端命令行界面,直接回车安装,后面选择1就可以了 /bin/zsh -c "$(curl -fsSL https//gi...
malloc_trim和SetProcessWorkingSetSize两个神奇的内存相关函数
Published: at 09:26 AM它们两个其实没有什么关系,相似之处是调用这两个函数后内存会有明显的下降,但是原理完全不同。 malloctrim linux平台的函数,官方的解释是:从堆释放可用内存。 在程序中堆上new或者malloc的内存我们都会delete和free掉,由于linux的机制它们并没有立即将释放的内存...
vim常用技巧
Published: at 02:17 PMLinux生产环境上,最常用的一套“vim“技巧原创 -------------------------- 研发线上使用最多的编辑器,就是vi。无论是最快查看某个文件内容,还是快速编辑某个文件,vi都能帮上忙。 软件世界貌似有一些非常长寿的东西,vi算是一个。本篇文章聚焦的是研发线上最常用的一些...
netcat网络诊断
Published: at 02:09 PMNetcat 号称 TCP/IP 的瑞士军刀并非浪得虚名,以体积小(可执行 200KB)功能灵活而著称,在各大发行版中都默认安装,你可以用它来做很多网络相关的工作,熟练使用它可以不依靠其他工具做一些很有用的事情。 最初作者是叫做“霍比特人”的网友 Hobbit hobbit@avian.org 于 ...