- 博客(26)
- 收藏
- 关注
原创 哪里是乐土?--关于团队良性循环
早上,开发者打开 IDE,代码规范清晰,测试快速通过,CI 绿色,同事的代码评审意见是建设性的。这种状态,就是“乐土”。当循环转动起来,你会发现,乐土就在你的团队里,就在每一次代码提交和每一次协作的细微之处。而有的岛屿上,架构清晰,协作流畅,每个人都像在乐土上耕种。这种循环,从代码规范、自动化测试,到知识分享、反馈机制,环环相扣,最终形成一种自我强化的正向飞轮。### 一、良性循环的起点:代码规范与可读性想象一个团队,每个人都有自己的代码风格:有人喜欢用单字母变量,有人执着于超长函数,有人从不写注释。
2026-08-05 16:13:19
202
原创 你真的理解 volatile 关键字了吗?
在并发编程的世界里, 是一个既熟悉又陌生的关键字。很多初学者可能只知道它“能保证可见性”,但真正理解它的人却不多。今天,我们就从零开始,循序渐进地揭开 的面纱。本文将以 Java 为例(C/C++ 中也有类似概念,但语义略有不同),但核心思想同样适用于其他语言。—### 1. 从硬件层面看:为什么需要 volatile?现代计算机的 CPU 为了提升性能,会在每个核心中引入多级缓存(L1/L2/L3)。当多个线程运行在不同 CPU 核心上时,它们操作的是各自核心的缓存,而不是直接操作主内存。问题来了:如果
2026-07-31 18:26:14
194
原创 AI 测试全场景提效:功能 / 性能 / 安全 / 自动化,用 AI 重塑测试工作流
原本需要 30 分钟编写的边界用例,AI 在 5 秒内生成 80% 的覆盖,剩余 20% 由工程师补充关键业务逻辑,显著降低重复劳动。### 安全测试:AI 驱动的漏洞扫描与语义分析安全测试中,AI 不仅能扫描已知漏洞,还能通过代码语义分析发现逻辑缺陷。:1. 从单点场景(如 AI 生成用例)切入,验证 ROI 后再扩展2. 建立“AI 生成 + 人工复核”的机制,避免盲目信任3. 所有 AI 决策都要可回滚、可审计测试的未来,不是“全自动”,而是“人机协同的智能测试”。
2026-07-31 18:25:09
280
原创 我用自己的微信聊天记录,微调了一个“数字分身”
最近,我决定用自己真实的微信聊天记录,微调一个开源的语言模型,打造一个“数字分身”。运行后,你会发现模型生成的句子风格很像你——比如“今天心情不错”可能回复“是啊,阳光明媚,适合出去玩”。## 总结通过这篇文章,我用自己的微信聊天记录微调了一个GPT-2模型,打造了一个“数字分身”。最终模型能模仿我的语气生成回复。未来,你可以尝试用更大的模型(如LLaMA-7B)或更精细的对话结构(如角色扮演),让它更像“你”。比如,如果我的聊天记录是连续的,我可以构建成“用户: 你好\n助手: 你好呀”这样的对话对。
2026-07-30 17:38:03
228
原创 告别 “cd /var/log“ !用 journalctl 统一掌控 Linux 日志
内核日志这种方式的缺点显而易见:- 日志分散,难以统一检索- 需要记住不同日志文件的路径和名称- 日志文件可能被轮转(rotate),增加查找难度- 缺乏结构化的元数据(如时间戳、优先级等)而 systemd-journald 服务将日志集中存储在二进制格式的 journal 文件中,并通过。,不仅仅是命令的替换,更是日志管理思维的升级。journalctl 的优势在于:- 统一接口:所有日志通过单一命令查询,无需记忆不同文件路径- 强大过滤:按时间、服务、优先级、字段等条件精确检索- 实时监控:通过。
2026-07-30 17:36:59
220
原创 世界杯一粒进球被吹掉,背后可能有多少 AI?
真实场景中,这个逻辑会复杂得多:AI 需要同时处理 22 个球员的骨骼点、球的轨迹、传球时间戳(由 VAR 系统标记),并结合 FIFA 规则(如“干扰比赛”判定)。:球员是否故意手球(通过肌肉运动追踪)这些数据通过注意力机制(Attention)融合,输出“有效/无效”的概率。比如,2022 年世界杯阿根廷对阵沙特的越位判罚,AI 通过半自动越位技术(SAOT)精确到毫米,但引发了“是否干扰门将”的讨论。下次看世界杯时,不妨留意 VAR 屏幕后的 AI 逻辑,它们正在以毫秒级的速度,决定一粒进球的命运。
2026-07-28 18:40:28
236
原创 python自动化测试(2)-自动化基本技术原理
本文将从底层原理切入,深入剖析 Python 自动化测试的核心技术——元素定位、事件模拟、等待机制与断言。#### 2.1 常用定位策略| 策略 | Python By 类 | 浏览器底层方法 | 适用场景 ||------|-------------|---------------|---------|| ID |时,Python 客户端将命令序列化为 JSON,通过 HTTP 请求发送给浏览器驱动(如 chromedriver),驱动再将其转换为浏览器内部的操作指令,最终执行对应的 DOM 操作。
2026-07-26 16:46:23
230
原创 [MAF预定义ChatClient中间件-02]FunctionInvokingChatClient——实现ReAct循环和人机交互的大功臣
基于反馈继续推理,直到完成任务从简单的计算器到复杂的多工具协作场景,我们看到了这个中间件的强大能力。在构建智能对话系统时,我们往往希望AI不仅能"说话",还能"行动"——比如查询数据库、调用外部API、执行计算任务。## 三、深入ReAct循环:多步推理与工具调用现在让我们看一个更复杂的场景,AI需要多次调用不同工具才能完成任务。,你就掌握了让AI从"空谈"走向"实干"的关键技术。: - 每个函数职责单一,描述清晰 - 参数类型明确,避免歧义 - 返回结构化数据,便于AI理解2.
2026-07-24 19:33:52
195
原创 Redis通关手册(三):Redis Geo实现地理位置检索
在现代应用中,地理位置检索(Geo-location lookup)已经成为一个核心功能,例如查找附近的餐馆、计算两个地点之间的距离,或者在地图上显示附近的用户。## Redis Geo 的数据结构与核心原理Redis Geo 的底层实现依赖于有序集合(Sorted Set),每个成员(member)关联一个分数(score)。这个编码过程基于 Geohash 算法,它将二维的地理坐标(经度、纬度)转换为一个一维的字符串,同时保留了空间邻近性——即在地理上相邻的点,其 Geohash 编码的前缀也相同。
2026-07-23 17:27:27
222
原创 支撑亿级文件规模:途虎养车 JuiceFS + Ceph RADOS 存储优化实践
JuiceFS 是一个面向云原生的高性能 POSIX 文件系统,它将数据与元数据分离:元数据存储在 Redis 或 SQL 数据库中,数据则存储在对象存储(如 S3、Ceph RADOS)中。- JuiceFS + Ceph:总耗时 12 秒(平均 120ms/文件)- NFS:总耗时 58 秒(平均 580ms/文件)## 遇到的大坑与解决方案### 坑 1:Redis 内存爆炸现象:文件数超过 5 亿时,Redis 内存使用达 200GB,导致 OOM。对于亿级文件,我们调整了缓存策略:- 开启。
2026-07-23 17:26:18
193
原创 图解 | 原来这就是网络
开头的,统一从路由器出去发给某一群设备(后面会提到这其实是子网的概念),那你就需要要求某一子网下统统买一个厂商制造的设备,要么你就需要要求厂商在生产网络设备烧录 MAC 地址时,提前按照你规划好的子网结构来定 MAC 地址,并且日后这个网络的结构都不能轻易改变。随着越来越多的人加入,你发现身上开的网口实在太多了,而且网线密密麻麻,混乱不堪。你的 MAC 地址是 aa-aa-aa-aa-aa-aa,你的伙伴 b 的 MAC 地址是 bb-bb-bb-bb-bb-bb,以此类推,不重复就好。
2026-07-22 16:11:24
203
原创 第一出:record 类型
一个应用/服务由多个Actor组成,每个Actor都是一个独立的运行单元,拥有隔离的运行空间,在隔离的空间内,其有独立的状态和行为,不被外界干预,Actor之间通过消息进行交互,而同一时刻,每个Actor只能被单个线程执行,这样既有效避免了数据共享和并发问题,又确保了应用的伸缩性。目前官方已经提供了Go,Node,Python,.NET,Java, C++,PHP,Rust,Javascript的Sdk,简化Dapr的集成。了解了Dapr是什么,以及其提供的特性,那Dapr的应用场景就一目了然了。
2026-07-22 16:10:45
188
原创 记一次 Cloudflared Tunnel 在 Docker 中 DNS 解析异常的排查与解决
近期在家庭 NAS(Debian 12)上通过 Docker 部署 Cloudflare Tunnel(cloudflared),用于将内网服务安全暴露到公网。按照官方文档编写的 docker-compose.yml 启动后,容器却一直报错,无法连接 Cloudflare 边缘节点。经过一系列排查,最终定位到 Docker 内部 DNS 解析机制的异常,并通过挂载宿主机 /etc/resolv.conf 绕过了问题。本文将完整记录排查过程、原理分析和最终方案,希望对遇到类似问题的朋友有所帮助。环境信息。
2026-07-21 15:32:23
261
原创 借助游戏预启动提前加载游戏,读条快人一步
若在应用实现尤其预启动过程中,未检测到异常状态,那么游戏引擎会开始自渲染并运行到登录页或大厅界面,之后开发者可以调用completeGamePrelaunch接口,自主决定预启动到达的最终阶段,并在到达该阶段后及时通知启动加速服务游戏预启动已完成。在应用实现游戏预启动的过程中,可能会遇到资源更新、用户未同意隐私协议等场景,此时开发者可以调用terminateGamePrelaunch接口,通知游戏启动加速服务终止当前预启动。// 若当次非预启动运行,游戏启动完成后不进行任何处理。
2026-07-21 15:31:45
211
原创 ScreenCapture
取景框,支持快捷键复制 RGB 颜色(Ctrl+R)、 HEX 颜色(Ctrl+H)与 CMYK 颜色(Ctrl+K)。撤销(Ctrl+Z)、重做(Ctrl+Y)、保存为文件(Ctrl+S)、保存到剪贴板(Ctrl+C或双击)。绘制填充、非填充的椭圆、正圆(按住Shift)、矩形、正方形(按住Shift)、箭头、标号等。绘制曲线、直线(按住Shift)、马赛克、橡皮擦、文本。滚动截图(截长图)、屏幕录制(输出Gif\Mp4格式)。截图、绘图标注、滚动截图(截长图)、录屏。// 显示托盘图标(默认)
2026-07-19 17:02:26
170
原创 LangChainJs之基础模型(一)
而 LangChain 另辟蹊径,它并不试图改变模型的“思维”,而是为其“长出手脚”——通过集成网络搜索、本地知识库检索(即 RAG)、文档编辑等外部工具,让大模型能够利用外部信息源进行推理与行动,从而极大地扩展了其应用边界。这一设计让模型能够清晰区分“谁在说”、“说了什么”,从而真正理解对话的上下文,实现连贯的多轮交互。LangChain 是一个专为智能体(Agent)设计的开发框架,其核心价值在于为大模型赋予“连接外部工具”的能力,从而突破其固有的“大脑”(大模型)边界。
2026-07-18 15:58:33
175
原创 Hermes 上下文压缩架构:长任务 Agent 不失忆的几个关键设计
一次真实的工具型会话里,系统提示、历史消息、工具调用、终端输出、文件读取结果、截图、代码片段都会在每一轮重新塞回模型。provider 返回 413、context overflow,或 Anthropic 长上下文层的 429 时,Hermes 会进入错误恢复压缩。压缩刚结束时,系统还没拿到下一轮 provider 的真实 usage,此时把 token 视为 0,避免刚压完就被 schema 粗估拉回压缩循环。gateway 如果也按 50% 触发,长会话会在很多轮里提前压缩,成本高,信息损耗也大。
2026-07-18 15:57:44
320
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅