- 博客(18)
- 收藏
- 关注
原创 C++ Lambda表达式原理、使用、以及GDB调试技巧
C++ Lambda表达式原理与调试技巧 Lambda表达式本质是编译器生成的匿名类实例,包含重载的operator()。核心原理: 捕获列表决定匿名类成员变量,按值捕获生成副本成员,按引用捕获生成引用成员 mutable关键字移除operator()的const限定,允许修改值捕获的副本 QEventLoop等不可复制对象必须使用引用捕获,但需确保生命周期安全 调试技巧: Lambda内部的this指向编译器生成的匿名类实例 在x86-64架构中,this指针通过rdi寄存器传递 使用GDB的x命令可检查
2025-09-02 14:16:50
1058
原创 TCP粘包 问题复现分析解决
TCP网络通信中粘包/拆包问题是因TCP字节流特性导致的数据重组问题。文中通过C++代码示例演示了客户端快速发送多条消息时,服务端可能一次性收到合并数据的情况。针对该问题提出三种解决方案:1)固定长度法,简单但浪费空间;2)分隔符法,需处理转义问题;3)长度前缀法,需额外存储长度。三种方法各有优劣,开发者可根据实际场景选择最合适的处理方式。
2025-08-25 15:54:55
244
原创 Qt的信号槽机制原理分析
摘要:Qt信号槽机制基于元对象系统实现,通过MOC生成元数据代码。核心流程包括:1) Q_OBJECT宏定义元对象接口;2) MOC生成字符串表和元数据数组;3) qt_static_metacall处理信号/槽调用;4) QMetaObject::activate触发连接槽函数。支持直接/队列/自动等线程安全连接方式,通过函数指针连接优化性能,实现类型安全的跨线程通信。整个机制通过编译时元信息生成和运行时元对象查询,完成从信号发射到槽函数调用的完整链路。
2025-08-25 15:48:15
364
原创 QProcess源码分析
fork() 创建子进程: forkfd() (内部调用 fork()) 是创建子进程的关键。管道用于通信: 管道用于父进程和子进程之间的标准输入、标准输出和标准错误流的通信。exec() 替换进程映像: execChild() 内部会调用 execv() (或类似的函数) 来使用新的程序替换子进程的内存空间。QSocketNotifier 用于事件处理: QSocketNotifier 用于监听管道上的数据和子进程的死亡信号,并将这些事件传递给 Qt 的事件循环。
2025-02-13 19:43:25
969
原创 Doc文档分割
推荐一个网站:https://products.conholdate.app/zh/splitter/word。但是目前doc分割工具较少 大部分采用直接复制粘贴的方式 很复杂。在进行doc翻译时 免费的网站常常会限制doc翻译大小。网站有个缺点 分页时是一个一个选择页数 仍然很麻烦。所以需要写一个js脚本 批量点击所需的页数就可以了。所以选择对doc进行分割以减小每份的大小。
2023-07-10 14:54:21
289
原创 Socket编程时传输多种类型数据
1.创建一个结构体 将需要通过socket发送的数据定义在结构体中。2.对结构体进行序列化,拿到序列化指针。2.接收到的数据进行反序列化。1.创建相同的结构体。
2023-07-06 20:48:16
216
原创 Python模板代码库Cheetah介绍及使用
文本占位符:在填充模板时将查找的变量指令:在模板被填充时要执行的命令,或者是给Cheetah编译器的指令。
2022-10-30 20:06:07
1932
原创 Linux学习笔记(长期更新 值得收藏!)
进入man指令的功能后, 你可以按下“空白键”往下翻页, 可以按下“ q ”按键来离开man的环境。当是[ c ]则表示为设备文件里面的序列埠设备, 例如键盘、 鼠标( 一次性读取设备)。info与man的用途其实差不多, 都是用来查询指令的用法或者是文件的格式。当是[ b ]则表示为设备文件里面的可供储存的周边设备( 可随机存取设备)[Tab] 接在一串指令的第一个字的后面, 则为“命令补全”;[Tab] 接在一串指令的第二个字以后时, 则为“文件补齐”!列出所有的文件详细的权限与属性。
2022-09-23 14:01:13
405
转载 Xposed模块编写方法
引自https://www.cnblogs.com/zuimeiyujianni/p/8511719.htmlpublic class Main implements IXposedHookLoadPackage{ /* 拦截方法一: 实现hook操作:使用hook类的名称进行内部查找 hook_method(类型,类加载器,方法名,参数类型和调用 ) ...
2019-06-06 21:42:58
756
原创 关于安卓记住密码功能的实现 以及一些小细节
首先初始化控件什么的就不多说了 接下来加一个小判断preferences = this.getSharedPreferences("userinfo", Context.MODE_PRIVATE); //必须加 不然会空指针 if (preferences.getBoolean("checkboxBoolean", false)) { use...
2019-05-26 13:09:08
385
原创 Handler初探(一)
Hello 优快云 各位大佬们我是初入安卓坑的小白 可能有不正确之处 希望大家能斧正 为了方便认识和理解 特意查了一下handler的意思 handler可以解决安卓只能在主线程操作ui的难题 下面先说一下小Demo的code 首先在activity_main中新建一个TextView并将id命名为main_text 下面是MainActivity code...
2019-01-28 19:39:47
200
51实验项目电子万年历(LCD1602显示)带整点报时
2022-11-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
11