Coding
共 24 篇文章
Mac 编译 Protobuffer Universal 的 dylib
最近在适配 Mac 客户端(x86_64、Arm64),项目里引用了 Protobuffer,因为整个工程最终产物就是 Universal 的,想着是编一个 Universal 的 Protobuffer 库,这样引用也比较方便。查了一圈网上没有,最后找 AI 解决的。
Qt 在线安装包及维护工具换源
在国内下载 Qt,如果使用在线安装包,下载经常会失败,主要是连接 Qt 官方源不够稳定。本文记录换源的具体操作方法……
浅谈 .NET 与 Qt Timer 实现
前两天刚好跟同学提起如何实现一个 Timer 。提到了 Kafka 的时间轮和 Go 语言的四叉堆实现。所以就看了下 .NET 是如何实现 Timer 的。
谈谈 DLL 注入的几种方式
云游戏的键鼠捕捉用到了 Hook 这个技术,就顺便翻了一下核心编程,写下来备忘。
极简 OBS 编译流程
最近在搞 Nimo 主播端,主要是基于 OBS 魔改。所以就给组里同事写了一个极简的 OBS 编译流程。
DLL 导出符号的两种方式
最近恰好需要用 C++ 实现一个供 C .NET 调用的模块,用dllexport导出符号的时候出现了一点问题,明明已经看到了导出符号,但是 .NET 在调用的时候,就是找不到方法。然后用 def 文件的方式导出符号就正常,突然对这两种方式的区别产生兴趣,之前一直没有研究过,就仔细了查阅一番。
bcrypt 死锁探秘
产品经理反馈程序经常失去响应,从他那里创建了 dump 文件,取回来,用 windbg 分析一番。感慨颇多。
【Qt源码笔记】简要说说 Qt5 中的 HighDPI 支持
想起之前在公司做的关于 HighDPI 的适配,在 Qt4 下可以说是比较繁琐,代码敲到手疼。早就听说 Qt5.6 开始支持了 HighDPI ,一直没机会看详细的代码。一直到开始做 Gal(https://github.com/ehnap/gal/releases) ,才刚好在 Qt5 下需要 H
【Qt源码笔记】深谈 Qt 绘制
之前写了一篇 浅谈Qt控件绘制(https://blog.ehnap.com/posts/Coding/Qt%20%E6%BA%90%E7%A0%81%E7%AC%94%E8%AE%B0/qt-source-paint-control.html) 。之所以叫浅谈是因为调用都是比较表层的调用。其实 Q
【Qt源码笔记】浅谈 Qt 中的控件绘制
在工作中经常要根据 UI 提供的稿子做自绘控件,而且在新项目中,我自己基于 Qt 做了一套项目自用控件库,还会涉及到换肤,所以对 Qt 的控件绘制,着重的研究了一下。看过代码之后,觉得 Qt 项目本身,确实是做 UI 发家,绘制流程清晰,可以说是做界面的范本了。将流程梳理记录一下。
【Qt源码笔记】 QImage 源码探究过程中的记忆碎片
在公司曾经做有关图片的一个新项目。当时仔细研究了一下QImage的源码,将一些碎片化的东西记录在了某个平台上,如今翻出来了,感觉这些内容还可以再细化细化,有时间的话,详细整理,先将以前的碎片在此记录下来。
Effective Qt
标题是非常的哗众取宠了。这里主要是用来记录一些使用 Qt 的小经验。之前在工作中,会有一些关于 Qt 的经验总结,加之平时自己写一些小东西也有使用 Qt ,所以使用起来会有一些经验教训,聚集起来,姑且叫做 Effective Qt 了。随时想到会随时更新内容。(注:这里会有一些代码设计的思路,不存在
说说 Windows 编程中 /MT、/MD 的区别
Windows 编程中无法绕开的编译开关 /MT、/MD 其实还有一个 /LD,不过后者很少见。之前对这些一直没有一个清晰的概念,所以就查阅了相关资料。算是对这块有了一个粗浅的认识。 其实最直观的资料还属 MSDN(https://docs.microsoft.com/en-us/cpp/buil
浅谈 Windows 编程中的 Thread
线程对于 Windows 编程人员来说,并不陌生,但是一直以来,我对它的了解也只是基本的使用层面。对于很多细节,也并不是很了解。这作为一个 Windows 客户端开发人员,可以说是非常尴尬了。所以,抽了一点时间,仔细梳理了一下线程相关的内容。顺便记录下来。
浅谈 Windows 编程中的堆
提起堆,大部分人都不陌生,但是其实很多人也不见得就很了解。我见过的大部分人,对堆的理解其实还停留在,全局的一种内存,速度没有栈快,不会自动销毁,需要开发人员自己管理。这其实不怪 Windows,怪就怪面试人员水平参差不齐,五百年了,问堆还是,堆栈究竟有什么区别。然后在中国这个应试教育横行的地方,也必
Qt5 中的 Json 模块与 JsonCpp 的对比
工作中有幸做过关于 Qt5 Json 模块向 Qt4 的移植。做过有关 Qt Json 与 JsonCpp 的对比,并做过相关的兼容工作。所以着重研究了一下有关 Json 解析器的相关内容。注:大家常说的 QJson 其实并不是 Qt 中的模块,而是在 Qt4 没有 Json 模块的年代,一个非官方
【Qt源码笔记】关于 QTimer 在 Windows 下实现的杂谈
关于 QTimer 的具体实现,翻看源码源于一次面试经历。被问到 QTimer 的问题,我随口说了一句:Windows 平台下是用 Windows API 实现的,然后便引起了怀疑,不过我据理力争,便也作罢。所以回来之后,就又确认了一下。
【Qt源码笔记】万般皆是int main
经常写 Qt 的程序,就会发现,不管是写控制台程序还是带窗体的应用程序,在 Qt 中的入口都是int main()。但实际上抛开其他平台不说,就是在 Windows 平台上,二者的入口就是有区别的。之前只是略知一点,今天翻看了一下代码,算是了解了一下。
Windows 编程中的字符编码
经常在写代码的时候需要处理宽字符,ASCII 字符,在代码中看到 wchar、char 等等。一般都是处理一个方法的时候发现需要的是某字符串,然后这边有什么字符串,之后查一个转换方法。还有对于 Unicode 、ANSI 这些不太分得清,所以花了一点时间看了一看。做个小结。
面试问题整理
最近一段时间整理了一些我遇到的面试题,各个方面都有,写在这里,做个记录。大厂偏好算法和数据结构,小厂偏好项目经验。这算是一个比较鲜明的特点了。
AVL树(自平衡二叉树)
特点 二叉树 同节点左右子树高度差不超过1
【Qt源码笔记】Qt事件与Windows消息循环的联系
上次研究了一下Qt是如何对Win32初始化程序进行包装的。这次研究下Qt的事件循环和Windows消息循环之间的联系。 上次说到QApplication注册了一个qt_internal_proc方法来处理消息循环,但是在这个方法中并没有看到一些关于Qt事件的蛛丝马迹。例如鼠标事件、键盘事件等。
【Qt源码笔记】从WinMain说起
Qt在各个平台下都是对平台API进行了一些包装。Windows下是对Win32API的封装。如果是Windows平台的GUI Application就一定是从WinMain开始。 不难发现WinMain就在qtmain_win.cpp中。
编译Qt
参考: Building-Qt5-from-Git Windows 下自己准备自己想要的编译器。编译自己想要的 Qt 版本 最近 5.6 出来了,有好多新的变化,第一时间准备尝鲜。 我自己的是 MSVC2015 Qt5.6