Tag: C/C++
All the articles with the tag "C/C++".
QWebEngineView支持https
Published: at 02:11 AM问题 我有个本地网页,里面有https地址的图片,使用QWebEngineView load本地网页后图片显示不出来。 解决 从QWebEnginePage类派生出WebPage类实现certificateError接口,然后将WebPage设置给QWebEngineView。 代码 WebPage代码: // .h class WebPage publi...
Qt启动第三方控制台程序并读取输出内容
Published: at 09:42 AM使用QProcess来启动程序,下面使用同步方式来启动: 1. 准备好工作目录,将需要运行的程序放在工作目录下 2. 准备启动的命令行(如果有参数,要拼装好参数) 3. 设置工作目录(很重要) 4. 启动命令 5. 等待执行完成 6. 读取输出结果 代码演示了调用uploadimg.exe工具来...
jemalloc C++实践
Published: at 10:13 AMjemalloc是一种通用的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 ...
C++11 实现defer
Published: at 01:56 AMdefer函数功能还是蛮常用的,它是在出当前作用域的时候执行,用来回收资源非常合适,可惜C++里面没有,以前实现起来都比较别扭现在用C++11实现后看起来简单多了。 此defer内部lambda表达式捕获的是引用; 同一个作用域内先定义的defer后执行; 使用define以及xy连...
Qt json文件读写
Published: at 02:48 AMQt提供了处理JSON数据的支持。JSON是一种数据编码格式派生自Javascript,现在在internet上广泛用作数据交换格式。 Qt中的JSON支持提供了一个易于使用的C++ API来解析、修改和保存JSON数据。 它还支持以二进制格式保存数据,这种格式可以直接“mmap”,而且访问速度非常快。 简...
QtCharts使用
Published: at 01:38 AMQtCharts是Qt的图表模块在Qt5.7版本之后才包含进来的,之前的版本需要下载源码单独编译。 介绍几个重要的类: QChart:Qt图标的核心类,建立在图形视图之上的,管理各个图表部件 QChartView:是一个独立的widget用来展示QChart QDateTimeAxis:日期时间轴 QValue...
Expression _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
Published: at 01:44 PM用新的visual studio 2017或者2019来编译老代码(vs2013),Debug的时候发现QString的toStdString和toStdWString方法触发以上错误(Release没有问题),换成下面两个转换函数就没问题了: stdwstring towstring(const QString& str) { stdwstring result; resul...
多线程锁key处理
Published: at 02:38 AM目的是要保证多个线程处理同一个key的消息时是线程安全的,同时是顺序的。 1. 收到网络过来的消息,将消息缓存到total msg cache里 2. 解析业务消息找到每条数据的key(可能一条或多条)存储在set中 3. 将所有key进行hash,对最大线程数进行取余,获取所有线程索引stdse...
localtime线程不安全造成的线上问题
Published: at 08:18 AM线上出现了一个比较奇怪的问题,日期B的时间赋值给了日期A,但是浏览代码发现根本没有这样的逻辑。 经过一番调查基本能确定是localtime函数线程不安全造成的。 下面使用demo来模拟一下出现问题的情况 t1和t2是两个时间,使用GetTimeString转换的时候t2的时间可能会赋...
malloc_trim和SetProcessWorkingSetSize两个神奇的内存相关函数
Published: at 09:26 AM它们两个其实没有什么关系,相似之处是调用这两个函数后内存会有明显的下降,但是原理完全不同。 malloctrim linux平台的函数,官方的解释是:从堆释放可用内存。 在程序中堆上new或者malloc的内存我们都会delete和free掉,由于linux的机制它们并没有立即将释放的内存...