C++智能指针
C++从C++11开始引入了智能指针(std::unique_ptr、std::shared_ptr、std::weak_ptr),并后面的各个版本中对智能指针进行了改进。
C++从C++11开始引入了智能指针(std::unique_ptr、std::shared_ptr、std::weak_ptr),并后面的各个版本中对智能指针进行了改进。
同一个DLL文件可以被多个进程加载。当不同的进程将DLL映射到自己的内存空间时,系统会为DLL中的全局和静态变量创建不同的实例,而不会共享同一个变量实例。
那我们如何实现在进程间共享DLL全局变量呢?
我们可以在DLL中使用如下语句来创建一个段,用来存放那些需要共享的变量:
1 | #pragma data_seg("AnyName") // 开始 |
共享的变量需要被初始化,并且还要设置链接器开关,使该段在所有映射DLL的进程中成为共享读写属性:
1 | // 共享读写 |
经过上述操作,共享的变量就可以跨不同进程进行读写操作了。
Qt 虽然提供了诸如 Qt::FramelessWindowHint 之类的属性可以移除窗体的边框,但是移除边框之后,窗体的一些默认行为同时也被移除了,如鼠标拖动改变大小、双击标题栏最大化等,这些行为需要开发者自己来实现。
本文主要介绍实现无边框窗体的几种方案,并在最后分享了作者实现的方案。
笔者认为,一个完美的无边框窗体解决方案需要支持如下功能:
Hexo是一个快速、简洁且高效的博客框架,使用Hexo可以快速地生成静态博客框架。在框架生成完成后,可以使用任意文本编辑器语法书写博客。我们可以使用Markdown语法书写博客,Hexo在生成博客时会自动将Markdown解析成Html静态页面。
Hexo官网:https://hexo.io/zh-cn/
Hexo中文文档:https://hexo.io/zh-cn/docs/

Watchtower 官网: https://github.com/containrrr/watchtower
Watchtower 可以用于自动更新 Docker 镜像与容器。Watchtower 会监视正在运行的容器以及相关的镜像,当检测到 Registry 中的镜像与本地的镜像有差异时,会拉取最新镜像并使用最初部署时相同的参数重新启动相应的容器。
Redis 是高性能内存键值数据库,支持字符串、哈希等多结构,兼具缓存与持久化能力,广泛用于实时数据处理场景。本文主要介绍 Redis 常见的异常及处理方案。
本文使用的工具都是 Windows SDK 自带的,可以采用单独安装 Windows SDK的方式,也可以通过安装 Visual Studio 来附带安装 Windows SDK。
1 | # 在弹出界面设置密码123456 |
使用 SignTool 工具对 EXE 文件签名:
1 | signtool.exe sign /f test.pfx /p 123456 Setup.exe |