- 博客(75)
- 收藏
- 关注
原创 C++ 宏生成访问函数的代价:访问权限、调试和类型检查
一个宏可以少写成员变量和 set/get。展开后成员仍是 private,公开的是这对函数;宏结尾停在 public,紧跟在后面的手写成员会变成公开的。类型参数在预处理阶段按逗号切开,带逗号的类型传不进去。文章从预处理、编译、链接到运行说明这些边界。
2026-10-26 14:46:20
197
原创 通过界面操作让AI debug 解决方案
通过界面操作定位一次点击有没有生效。外部工具记录窗口和焦点控件,SWT 进程记录这次监听器调用是否写上配置。两边按时间对齐,选中了但没写上的那一步就是断点。
2026-10-21 12:53:07
186
原创 JRuby 多线程反引号偶发 127:GC 提前释放了 posix_spawn 的 argv
JRuby 里多线程用反引号执行外部命令,偶发退出码 127、命令名变成乱码。原因是 jnr-ffi 交给 posix_spawnp 的 argv 在子进程读取前就被 GC 释放,分配器又把下一个空闲块的地址写了进去。文章说明这个字节为什么看起来像乱码,并给出只改并行用例的 ProcessBuilder 写法。
2026-10-15 14:20:58
119
原创 给 Konsole 的提示符和输入命令加上对比色
深色 Konsole 里,提示符、输入的命令和命令输出常常是同一种颜色。这篇说明为什么换终端解决不了,以及怎样用 Bash 的 PS1 和 PS0 把提示符和输入分成两种对比色。
2026-10-12 14:35:43
147
原创 二进制兼容分析:C++ 类加成员后,旧 .so 为什么对不上
本文深入分析C++动态库升级时因公开头文件中类增加数据成员引发的ABI不兼容问题:对象长度和成员偏移被硬编码在插件.so的指令中,旧插件仍按原布局分配内存,而新库按新布局读写,导致内存越界、构造/析构错位与崩溃。重点涵盖对象内存布局、.so段结构、编译-加载-运行三阶段行为及安全修改边界。
2026-10-08 16:18:05
292
原创 VS Code Remote SSH Markdown 预览白屏排障
排查 Remote SSH 下 VS Code 原生 Markdown 预览白屏及 Service Worker 注册失败,区分本地 Webview 与远端扩展问题并给出缓存修复步骤。
2026-09-28 14:39:46
334
原创 一次由 mount 引发的 Linux 文件系统“错觉”
不是里“少了一个目录”,而是从来就不是它的目录。这是 Linux mount 机制 + 工程环境设计共同作用下产生的非常合理但极易迷惑人的现象。
2026-04-27 17:20:03
204
原创 VNC使用
vncserver -list 在当前用户名下的VNC会话。kill <PID> 例:kill 2396849。vncserver :2创建。display与端口的关系。如果要启动一个新的vnc。
2026-04-27 17:00:25
43
原创 AI相关论文小记
GPT-3 证明了:当模型规模足够大时,可以通过上下文进行“推理时适配”(inference-time adaptation),从而在不更新参数的情况下完成新任务,这本质上将机器学习从“训练问题”转变为“输入设计问题”。它让“模型能力”从参数空间,转移到了“上下文空间”。这直接导致了:prompt engineering 的兴起agent / tool / MCP 的发展LLM 从模型问题变成系统问题真正的竞争力,不在模型本身,而在你如何使用模型。把“人类偏好”引入模型优化目标。
2026-04-13 14:40:00
418
原创 AI模型基础
权重:类似pth里的一串数字[0.123, -0.98, ...],算是模型学到的东西。是结构+权重+计算图,可以脱离python,c++可用(libtorch)python里:结构 + 权重 + tokenizer + 框架。AI模型 ≠ 文件(.pt / .pth / .onnx)结构:几层,attention怎么做,embedding多大。AI模型 = 数学结构 + 参数(权重) + 计算逻辑。没有结构,没有完整计算图,只有参数。得到:结构+权重+标准化计算图。.pth:最原始的权重文件。
2026-04-09 17:35:48
88
原创 mcp demo python转c++ ,程序优化个人总结分析
之前只知道怎么让模型跑起来,不知道深层原理,个人写了一个最简单的mcp demo,但是在knowledge sharing之后被提出了一些问题,会后我尝试将python程序转成c++,遇到了许多问题,在这里做了一个总结。多个请求同时跑模型,cpu被抢,频繁地上下文切换,每个请求都变慢,总体吞吐率下降,gpu情况更严重。:替代当前的 “一个任务一个进程”,创建固定数量的进程池,避免频繁创建 / 销毁进程的开销,提升性能。是结构+权重+计算图,可以脱离python,c++可用(libtorch)
2026-04-09 17:20:21
427
原创 std::function ,多态,dynamic_cast
如果系统是行为可插拔,回调,策略切换,比如指令处理,流程节点,事件回调,更倾向于std::function,来一个指令,我就执行一个行为。普通函数,lambda,仿函数(operator),bind结果。如果系统是对象建模为核心,比如设备,模块,实体关系,用传统多态。不存在父子类,不存在“调用子类特有的方法”,不需要类型判断。我不关心你是什么类型,我只关心你“能不能被调用”。传统多态:继承,虚函数,父类指针引用,虚函数表。1.为什么会衍生出dynamic_cast?只要能调用,不关心你什么类型。
2026-01-31 15:25:47
235
原创 指针&引用,练习默写
引用:引用变量是别名,即已存在变量的另一个名称。对于编译器来讲,引用和指针一样,也是通过存储对象的地址来实现的,实际可以将引用视为具有自动间接寻址的常量指针,编译器会自动为引用使用*运算符。指针:一个变量,保存另一个变量的内存地址,需要使用*运算符才能访问它指向的内存位置。
2026-01-04 15:28:38
251
原创 librespeed-cli连接超时原因分析
换上专网后,我的后端尝试调用librespeed失败,使用终端命令行连接远端服务器接口显示连接超时。100%复现。
2025-12-24 10:50:22
356
原创 流量监控前端不显示问题
前端界面显示上下行速率有问题,有时候是0有时候有数字。通过接口定位到以下代码:.h文件看代码后问题显而易见:只有在以下条件时,才会看到非 0:网卡此刻刚好有流量线程刚好按近似 1 秒跑HTTP 线程刚好没读到写一半的 string在demo里能跑,但是在生产环境必出问题。
2025-12-16 15:38:36
210
原创 adb安装和调试基本指令
adb devices 列出已连接的安卓设备。adb version 查看自身版本。ip route 查看路由规则。adb shell 进入设备。里面的指令和linux类似。
2025-12-02 15:28:38
127
原创 nginx匹配优先级问题
网关ip是192.168.2.1,在浏览器输入192.168.2.1没办法去到我想要的前端,去到了nginx默认页面,输入localhost才能去到我想要的界面。但是等我reload时发现报错,因为 include /etc/nginx/sites-enabled/*也有一个default server;我在思考,明明我的server是写在前面,为什么用的是include的conf文件。同事有新的配置需求,导致80端口直接用了include里的conf文件,可以重新进入到我想要的前端界面。
2025-11-27 10:10:30
200
原创 github使用问题
git remote add origin "git@github.com:runningSherry/netDetectRequest.git" (这里写Code复制的SSH链接)把"ssh-rsa A......."这段文字全部记录下来,这个就是ssh-key公钥。回到主页面,点击设置,找到SSH and GPG key,add SSH key。现在进入你想备份的代码的机子里,我这边是linux系统,执行。点击个人头像,设置,public profile就可以修改。回到页面,可以看到你的提交。
2025-11-25 14:15:45
429
原创 C++ 杂项讨论
在 C++ 中Handle 类指:一个类内部只包含一个指针,真正的数据存在堆里。// handle → 指向真正的对象data不是“字符串本体”。data只是一个“指针”(handle),指向真正存放字符串的“内存区域”(真正的对象)。String 对象本身:▼│ 'H''i''\0' │ ← 字符串真正储存在这里也叫:指针语义(pointer semantics)智能指针(也算一种 Handle)句柄类(handle class)
2025-11-23 18:06:40
88
原创 C++ 定制new和delete 理解
分配内存(malloc)在那块内存上构造对象(调用构造函数)而// malloc只是分配原始内存,这个内存啥也没有,不是一个widget对象placement new 做的事只有两步1. 不分配内存(跳过 operator new)直接使用传进去的mem2. 在那块内存上调用构造函数构造一个 Widget 对象含义:“不要帮我分内存,我已经有内存了,你只负责在这块内存上构造对象。
2025-11-23 17:41:24
78
原创 C++ 模板与泛型编程 理解
如果你写一个模板类,并且这个类需要支持隐式类型转换(例如用于运算符重载),那么相关的运算符函数应该写成“非成员函数(friend或外部函数)”,而不是成员函数。(看不懂啊看不懂)原因:成员函数不支持两边的隐式转换,而非成员函数可以。成员函数 operator*只能让右边的操作数发生隐式类型转换。但不能让左边发生转换,因为左边被绑定成了this,必须已经是类类型。public:// 成员版本的 operator*private:T n, d;函数名重载的是operator+加法。
2025-11-23 16:35:09
142
原创 C++ 继承与面向对象设计 理解
如果一个函数在基类里不是 virtual,就不要在派生类中重新定义它。原因:这样做不会产生多态效果反而会导致调用行为和你预期的不一致。public:它在编译期就绑定了函数地址。换句话说:不管对象的真实类型是什么,只要用Base*或Base&调用,永远执行。如果在派生类里“重定义”public:Derived d;b->say();//?d.say();//?你以为这是“重写(override)”,其实这是“隐藏(hiding)”!这两个函数完全是不同的两个函数。
2025-11-11 14:25:13
975
原创 C++ 实现 理解
换句话说,不要一开始就定义变量,而是等到真正需要它的时候再定义。错误示范:提前定义的缺点:1.性能浪费2.逻辑不清晰3.构造函数浪费正确是示范:好处:1.只在必要时创建对象2.对象生命周期更短,作用域更小3.可减少构造/析构的性能开销。4.代码逻辑更清晰吗,异常安全性更高tips:构造成本高的对象要延后,延后定义还能防止“未初始化使用”但有时候提早定义反而更高效,比如改成:二、尽量少做转型动作(Effective C++ 27)c++中的类型转换是危险的,应尽量避免,如果一定要用
2025-11-09 17:00:13
1050
原创 可变参数模板
TArgs...T打印出命令类型名称,方便调试Args...表示。这个函数可以接收的参数,参数类型也被自动推导为不同类型的组合:调用1 →调用2 →Args...args...“我定义了一个模板类型包Args...“我同时定义了一组实参args...,它们的类型由Args...决定”。
2025-11-07 16:21:22
261
原创 Socket vs WebSocket
握手成功后,HTTP连接升级为 WebSocket 通道(TCP 长连接),之后就可以实时收发数据。WebSocket 本质上是用 HTTP 协商,然后在 TCP Socket 上跑自定义的帧格式。之间的字节流,谁都可以定义内容(比如你定义 JSON 协议、自定义命令)。Socket 是“机制”,WebSocket 是“协议”2、WebSocket 是建立在 HTTP 上的一种。它定义了“浏览器如何与服务器保持长连接”的标准做法。1、Socket 是操作系统提供的。它是“怎么通信”的底层通道。
2025-11-07 11:14:01
414
原创 C++ 设计与声明 理解
所以你要像设计语言内建类型(int、double、std::string)那样去思考:“别人会怎么使用它?我应该限制、提供哪些操作?换句话说:一个 class 不只是代码,它是一个“概念的抽象 + 使用契约”。当你定义一个 class 时,要考虑以下问题:1. 对象的创建与销毁你要控制对象如何“出生”和“死亡”。
2025-11-03 13:48:48
1009
原创 C++ 资源管理 理解
目录一、以对象管理资源(Effective C++ 13)二、在资源管理类中小心 copying 行为(Effective C++ 14)三、在资源管理类中提供对原始资源的访问(Effective C++ 15)四、成对使用 new 和 delete 时要采取相同形式(Effective C++ 16)五、以独立语句将 newed 对象置入智能指针(Effective C++ 17)在对象的构造函数中获得资源,在析构函数中释放资源。这样,当对象生命周期结束的时,资源会自动释放。换句话说:资源的生命周期=对象
2025-11-02 13:54:23
1083
原创 C++ 构造/析构/赋值运算 理解
栈展开:当异常被抛出后,程序未来找到合适的catch块,会依次退出当前函数调用栈中的函数,并在退出的过程中自动调用已构造对象的析构函数。一旦定义了自己的拷贝构造函数或operator=,编译器就不会再自动生成默认版本,而默认版本里才会包含”基类+成员“的完整拷贝逻辑。因为在 C++ 中,如果析构函数在栈展开(stack unwinding)过程中抛出异常,简单说,就是从抛出点开始,一层层弹出函数调用栈,清理已创建的局部对象。这个就是自我赋值,如果没有处理好,就可能在赋值过程中把自己给毁掉了。
2025-10-31 15:28:00
1072
原创 protected,private,public三者的区别
限定符谁能访问常用位置用途public所有人类接口提供功能protected自己 + 子类基类方法继承扩展private仅自己数据成员封装隐藏public 人人能看,protected 儿孙能看,private 自家能看。protected 用来干嘛?用来让基类保留“对子类开放”的接口,而仍然对外部隐藏。比如虚函数模板方法模式(Template Method)。在模板方法模式中,父类定义流程,子类填细节。控制继承范围:让子类访问内部工具函数。防止外部直接创建或销毁资源。
2025-10-27 14:05:14
344
原创 三种智能指针不用和用的写法
类型所有权能否复制能否共享是否自动释放常见用途unique_ptr独占❌(只能移动)❌✅独占资源、局部对象shared_ptr共享✅✅✅(计数归零时)资源共享weak_ptr无(观察)✅✅❌防循环引用、检测有效性独占用unique_ptr共用用shared_ptr只看不用用weak_ptr。
2025-10-27 13:51:20
392
原创 构造函数,拷贝构造函数,析构函数,赋值运算符重载
区别于拷贝构造函数:拷贝构造是在创建时复制;赋值运算符是在已有对象上复制。(离开作用域或被 delete)时自动调用,用于。:在创建对象时自动调用,用来。(如内存、文件句柄等)。
2025-10-25 12:50:12
198
原创 socket TCP基本参数解析
AF_INET, SOCK_STREAM, 0, IP地址, 端口号这些共同决定了通信是:基于 IPv4 的 TCP 长连接远程传输。
2025-10-21 10:12:01
514
原创 模型的微调和蒸馏过程(简要)
维度微调 Fine-Tuning蒸馏 Distillation目标适配任务模仿教师输入真实数据教师输出(软标签)输出定制化模型小型模型优点性能强速度快、体积小缺点计算开销大需要教师模型微调让模型懂新任务,蒸馏让小模型学会大师的思考方式。
2025-10-18 18:12:30
849
原创 FTP 和 SFTP 的区别:一文读懂两种文件传输协议
特性FTPSFTP协议类型应用层基于 SSH端口21 / 20+随机端口22数据传输明文加密安全性低高防火墙配置较复杂简单使用场景内网或低安全需求公网或高安全需求核心结论:如果你在公网环境传输敏感文件,建议使用 SFTP;FTP 更适合内部快速传输或历史系统兼容需求。
2025-09-22 13:40:37
917
原创 技术产品负责人学习经验和总结
2.每周与供应商和团队内成员(同事+领导)同步颗粒度,问进展,定时间节点和里程碑。3.说话不说绝对,需要调理清晰,把话讲清楚,定期与相关人员总结(设备数,bug)。4.和领导汇报前需要考虑领导可能需要什么,会问什么。一定要找领导有时间的时候汇报。6.所有说出去的话需要确认,没有确定的话不要说出口。5.有风险除了及时汇报外,想想解决方案。1.样机到了必须自己手头使用测试。7.管理好供应商和领导的预期。
2025-09-21 19:17:01
163
原创 串口连接失败排坑步骤
设备已正确识别(可见)有足够权限访问设备(非 root 用户加入 dialout 组)波特率 / 数据位 / 校验位 / 停止位完全匹配AT 指令包含正确结束符(\r或\r\n读写前清空缓冲区使用 select 设置合理超时时间禁用不需要的硬件流控。
2025-09-19 17:05:42
1360
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅