2021小结 2022-01-01 Tips 这是一篇想到哪写到哪的流水账,和技术无关和工作无关,就是想写点东西。 让我想想从哪里开始写起,那就从春节开始说起吧,今年春节我们家贴了一副非常可爱的“牛转乾坤”春联。 熟悉我的朋友都知道今年我出版了一本书,也是我的第一本书,其实整个期间我是很忐忑的,所以从2020年的10月开始我...
DPC++中的现代C++语言特性 2021-12-01 C++ Ⅰ DPC++简介DPC++是Data Parallel C++(数据并行C++)的首字母缩写,它是Intel为了将SYCL引入LLVM和oneAPI所开发的开源项目。SYCL是为了提高各种加速设备上的编程效率而开发的一种高级别的编程模型,简单来说它是一种跨平台的抽象层,用户不需...
补编-模块(C++20) 2021-11-02 C++ 声明:这是一篇对《现代C++语言核心特性解析》中模块小节的补充,因为在我写模块的时间点实验环境并不理想,所以写的比较简单,也有读者提出了疑问,所以这里写一篇补充文来展示C++20中模块这个新特性。 一直以来,在我的个人世界中,C++编译器就是最强大的编译器,它们灵活、稳定并且...
《现代C++语言核心特性解析》上架感言 2021-10-07 C++ 还记得2015年的时候,在下班回家的地铁上跟好朋友聊起C++11标准引入的一系列新特性,当时我已经学习过一阵这些有趣的新功能了,所以聊天的时候也是信手拈来,也就是这个时候朋友跟我提了一句,要不你去写一本书吧。虽然当时并没有把这句话放在心上,但是也算是在心中埋藏了一颗种子。 时间一...
QMutex中的优化小细节 2021-09-12 C++ 在这篇文章中,我们要讨论的并不是QMutex的原理或者是应该如何使用,而是QMutex中一个很少被提到的优化细节。 我们知道在QT中,QMutex通常会和QMutexLocker一起使用,主要的用途是保护一个对象、数据结构或代码段,以便一次只让一个线程可以访问它们。 这一点对于多...
指向实现的指针Pointer to implementation 2021-08-05 C++ 写这篇文章缘于我的一个朋友的故事: 插件业务部门线上发布插件,发布之后经过用户反馈得知用户那更新插件后出现程序崩溃。检查原因是某个基础模块用导出类的方式导出接口,但是基础部门最近改动了基础模块某个类的内存布局,即头文件中类的定义发生了变化。 导出类作为接口是一个比较考验编程经...
Qt的隐式共享和写时拷贝 2021-07-11 C++ 不得不说Qt为了提高代码的运行效率做了很多伟大的工作,引入隐式共享和写时拷贝技术就是其中之一。该技术十分值得我们学习,一方面是因为它也可以运用到我们的代码中提高代码的运行效率,另一方面我们在理解其原理之后才能够更加高效的使用Qt。 Qt中的隐式共享是指类中存在一个共享数据块指针,...
使用Q_DECLARE_TYPEINFO让Qt优化容器算法 2021-06-15 C++ 如果需要使用Qt容器,那么使用Q_DECLARE_TYPEINFO让Qt了解容器内元素的类型特征是一个不错的做法。因为Qt可以通过识别Q_DECLARE_TYPEINFO给定的类型特征,在容器中采用不同的算法和内存模型以达到计算速度和内存使用上的优化。 Q_DECLARE_TYP...
QList 的工作原理和运行效率浅析 2021-05-29 C++ 我们知道Qt为了在一些没有STL的环境中运作,开发了一套相对完整的容器。大部分Qt的容器我们都能够招到对应STL容器,例如QVector对应std::vector, QMap对应std::map,不过这其中也有一些特例,例如QList在STL中就没有应该的容器,std::list...