自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 让你真正的理解Hash

如果不加盐,两个相同密码的用户会有相同的哈希值,攻击者可以用预计算的彩虹表快速破解。它的核心思想是:将服务器节点和数据都映射到一个环形哈希空间,数据沿着环顺时针找到最近的节点。但要注意,Hash 不同于加密(如 AES),加密是可逆的,而 Hash 是不可逆的。### Hash 的经典应用:散列表散列表(Hash Table)是 Hash 最直接的应用。Hash 是一个函数,它把任意长度的输入(如字符串、文件)通过算法映射成固定长度的输出(如 32 位整数、64 位哈希值)。:用多个哈希函数,冲突时切换。

2026-08-05 16:50:56 184

原创 LINQ之路17:LINQ to XML之X-DOM介绍

欢迎来到LINQ之路的第17篇!在之前的文章中,我们深入探讨了LINQ to Objects、LINQ to SQL等核心内容。今天,我们将进入一个非常实用的领域——LINQ to XML,特别是其核心组件X-DOM。X-DOM(XML Document Object Model)是LINQ to XML在.NET中提供的轻量级、高效的XML编程接口,它彻底改变了传统XML处理方式。### 为什么需要X-DOM?(DOM方式)和(流式方式)。前者功能强大但内存占用高、API繁琐;

2026-08-05 16:49:52 260

原创 好菜都得花功夫做

真正的好代码,讲究的是“火候”——结构清晰、逻辑严密、边界处理到位、性能恰到好处。今天,我们就从“炒一盘最简单的菜”开始,一步步把功夫下进去,看看代码怎么从“能吃”变成“好吃”。但如果你认为这就完了,那就错了——真正的大菜,还需要“调味”。如果顾客说“我的西红柿要退”,或者“鸡蛋买二送一”,你的代码能应付吗。—## 总结:好代码,是“炖”出来的从最初的“乱炖”代码,到函数封装,再到异常处理、面向对象、设计模式—— 每一步,都是在“下功夫”下次写代码时,不妨问问自己:“如果这是一道菜,我舍得花功夫吗。

2026-08-04 16:34:04 237

原创 读《Team Leader你会带团队吗?》引发的思考

## 思考二:从“写代码”到“写代码的代码”——元编程思维的启发书中有一段话让我印象深刻:“Team Leader 不应该只做最难的开发任务,而应该思考如何让团队成员更容易地开发。毕竟,最好的 Team Leader,不是团队里最会写代码的人,而是能让团队整体写出更好代码的人。### 思考三:代码评审——Team Leader 的“辅导”时刻书中还有一个观点我很认同:Team Leader 的职责之一是培养团队成员,而代码评审(Code Review)是最有效的辅导场景之一。

2026-08-04 16:32:58 206

原创 .NET陷阱之五:奇怪的OutOfMemoryException——大对象堆引起的问题与对策

小对象堆(SOH)识别大对象。

2026-08-03 15:59:27 251

原创 对jQuery的事件绑定的一些思考

jQuery的这个设计虽然简单,但非常实用,它体现了“最少知识原则”——每个模块只负责自己的事件,互不干扰。这让我想到,在实际开发中,当我们面对浏览器差异或第三方库的API不一致时,我们也可以仿照这种思路,自己写一个薄薄的适配层,把复杂的底层差异隐藏起来,对外暴露简洁的方法。这让我想到设计模式中的“中介者模式”——父元素充当了事件的中转站,既降低了耦合,又提升了灵活性。这在大型项目中尤其有用——比如组件A和组件B都监听了某个按钮的点击,当组件A销毁时,只需要解绑它自己的命名空间事件,而不会误伤组件B。

2026-08-03 15:58:17 214

原创 Lua--协同线程与文件IO

虽然标准库的文件 I/O 是同步的,但协程的设计模式为未来接入真正的异步 I/O(如 libuv、epoll)提供了平滑的过渡。### 4. 高级实战:模拟异步非阻塞文件读取虽然 Lua 标准库的文件 I/O 是同步阻塞的,但我们可以用协程来模拟“异步”效果,这在单线程环境中特别有用。### 5. 性能对比:协程 vs 普通循环为了证明协程在文件处理中的价值,我们做一个简单的性能测试:读取一个 10 万行的文件,分别用普通逐行读取和协程迭代器读取。的第一个返回值是布尔值,必须检查,否则错误会静默丢失。

2026-07-31 19:04:17 164

原创 Java Map 循环:遍历方式与性能对比

但注意 Lambda 有一定的初始化开销,但在大循环中影响很小。不同的遍历方式会带来不同的性能开销,尤其是在处理百万级数据时,选错方式可能导致程序卡顿数秒。### 遍历 Map 的 5 种常见方式#### 1. 使用 entrySet() + 增强 for 循环这是最推荐的方式,因为直接操作键值对,无需额外查找。#### 5. Java 8 的 forEach + Lambda代码简洁,但性能与 entrySet 类似,且无法在 lambda 中直接修改外部变量(除非使用原子类或数组)。

2026-07-31 19:03:06 248

原创 哈哈哈哈哈打不过我吧,没有办法我(vllm)就是这么强大!

随着序列增长,缓存膨胀迅速,导致内存碎片和显存溢出。策略:- 新请求到达时,如果显存足够,立即分配页并加入执行队列。- 如果显存不足,调度器会暂停(preempt)某些低优先级请求,回收其页资源,给高优先级请求腾空间。### 原理剖析想象一下,传统缓存像连续的内存块(类似数组),每次扩展都需要重新分配和拷贝,效率极低。实际vLLM中,页大小可配(默认256个token),并且支持跨序列页共享(如beam search中的公共前缀)。:可以看到,当显存不足时(步骤2),调度器暂停了请求1,释放资源给请求3。

2026-07-30 18:12:29 200

原创 从数据库优化到治病(4)---从误诊到康复全过程

不要急于下结论。

2026-07-28 19:18:09 149

原创 Vue 组件的本质

组件是一个特殊的“函数”

2026-07-28 19:17:08 176

原创 【Agent Harness】Gliding Horse L2 作战地图深度优化:给多 Agent 上下文装上“精准导航”

核心收获。

2026-07-27 18:37:39 163

原创 无需安装 Office,用 Python 轻松替换 Excel 数据

等方法替换数据- 处理多工作表场景- 将修改后的数据保存为新文件核心优势在于:无需安装任何 Office 软件,只需一个 Python 环境,就能实现自动化的数据替换任务。例如,将成绩表中所有低于 60 分的成绩替换为“不及格”,60-79 分的替换为“及格”,80-89 分的替换为“良好”,90 分以上的替换为“优秀”。在日常工作中,我们经常需要处理 Excel 文件中的数据。## 进阶操作:替换指定数据现在,我们想要将表格中所有“语文”成绩低于 80 分的同学,在“语文”列中标记为“需补考”。

2026-07-27 18:36:26 218

原创 【探索】自动报警的验证码

那么,如果我们能让验证码具备“自动报警”的能力,当检测到异常行为时,立即触发警报并记录攻击者信息,岂不是可以大大提升系统安全性?: - 我们定义了一个简单的验证码验证接口,接收用户输入、当前错误次数、IP和User-Agent。### 扩展:更复杂的异常检测与报警上述示例只使用了错误次数作为报警条件,但实际攻击场景中,攻击者可能使用自动化工具(如Selenium)快速提交验证码。### 后端实现:基于Python Flask的报警逻辑首先,我们构建一个简单的后端服务,用于处理验证码验证和报警记录。

2026-07-26 17:27:08 235

原创 使用 .NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序

控件信息记录代码生成器。

2026-07-26 17:26:03 228

原创 聊一聊数据库中的锁

例如:- 事务A锁住行1,等待行2- 事务B锁住行2,等待行1解决办法是:按照固定的顺序获取锁,或者使用超时机制。锁的粒度可以从行级别到表级别,甚至到数据库级别。## 锁的实战演示:MySQL中的行锁MySQL的InnoDB引擎支持行级锁,这是最常用的锁类型之一。线程1将库存减为7,线程2将库存减为8,但最终结果取决于线程执行顺序,可能为7或8,而不是预期的5(10-3-2)。### 示例1:模拟并发更新导致的数据竞争在这个示例中,我们将模拟两个并发事务同时更新同一行数据,没有使用锁时会导致数据不一致。

2026-07-25 18:25:49 213

原创 一文详解微服务架构

学习要点回顾。

2026-07-25 18:24:40 169

原创 一款接入20+免费大模型渠道的AI编程工具

ModelProvider接口。

2026-07-24 21:38:20 151

原创 响应式原理 —— 数据变了,视图怎么知道?

整个过程是自动且高效的,因为系统只会在数据实际发生变化时通知视图,避免了不必要的渲染。如果你用过 Vue 或 React,你一定见过这样的场景:在 JavaScript 里改了一个变量,页面上的内容就自动更新了。这个神奇的过程,就像变魔术一样。今天,我们就来揭开这个系统的面纱,看看数据变了,视图到底是怎么知道的。—## JavaScript 中的应用:Vue 2 vs Vue 3真实的框架(如 Vue)也是基于同样的原理,但实现上更复杂。:在读取属性时,响应式系统会将当前的视图更新函数注册为该属性的依赖。

2026-07-24 21:30:03 167

原创 从零构建 Windows 桌面 RPA 框架:Go 与 .NET 的跨语言协奏

模块化。

2026-07-23 18:05:14 209

原创 Python 实现Kafka SASL认证生产消费

认证机制选择。

2026-07-23 18:01:21 218

原创 【软工作业&思考】关于软工的一些概念性理解暨第一次阅读

在人的团队中,虽然没那么复杂,但是大致道理也是类似的——如果一个团队,没有一个明确的领头羊的话,那么这个团队的秩序将是很大的问题。就笔者本身而言,笔者也曾在整体实力较强的团队里面待过(在那个团队里面,几乎所有人都有和笔者差不多少的实力),然而那个团队依然是有个leader的存在,统筹规划着整个团队的事务进展,一板一眼调配着资源。各方的立场与利益不太可能总是一致,既然不一致,那么在这样的体制下,不同势力之间的通力协作将变得几乎不可能,反而完全变成了权力的博弈战,内耗极其严重。本质上,都不过是供求关系而已。

2026-07-22 16:27:56 181

原创 为啥程序会有bug?

但是,1+1=2,并且1*1=1,并且1/1=1,。但是外部环境在不断变化,新事物总会被动的需要去接纳(技术的更新越来越快,趋势不可逆),然而对新事物的接受能力又得不到锻炼,一旦遇到这种情况,在接触新事物的时候会产生更多的问题(欠下的债总要还的)。任何一个「问题」的产生,本身是没有好坏之分的,但是为什么会有的就不被care,甚至还会很喜欢,而有的会被吐槽呢?第三步,“将相关的元件实现并进行组合,完成建设”这就是实际的coding过程,而coding是一个主观的,完全由人主观掌控的事情。

2026-07-22 16:27:07 165

原创 机器人 / 强化学习】QAM:基于伴随匹配的 Q-learning 流策略优化

0x00 概要有了 DIVL 提供的价值函数,下一步是策略提升——如何让 VLA 策略输出更高价值的动作?这就是 QAM(Q-learning with Adjoint Matching)要解决的问题。它巧妙地将 Flow Matching 的表达能力与 Q-learning 的优化目标结合,同时解决了扩散模型在强化学习中通过时间反向传播(BPTT)带来的不稳定问题。1.1 核心问题:Flow 策略的优化困境1.1 为什么 Flow 策略难以用 RL 优化?

2026-07-21 15:45:08 213

原创 从理念到工程的鸿沟

wiki 理念的核心洞察是:RAG 每次查询从零推导,什么都不积累。LLM Wiki 预编译、持续维护,知识随时间复利。理念很清晰,但从"用 LLM 维护一个 wiki"到"让 Agent 真正用上这个 wiki",中间有一道工程鸿沟:规模问题:wiki 膨胀到数百页后,index.md 本身就撑爆 context window精度问题:grep + 正则只认字面命中,语义检索能力不足效率问题:Agent 每次都要读全量内容,Token 消耗失控。

2026-07-21 15:44:33 192

原创 精简组件臃肿

Claude 有时会构建比实际需要更大的组件。一个任务卡片组件可能同时处理渲染、状态切换、删除、编辑和动画,全部塞在一个 200 行的文件里。这本身没错,但成本很高。每次 Claude 因任何原因读取该文件时,它都要读取全部 200 行。告诉 Claude:“检查项目中的每个组件。如果任何 组件超过 100 行,建议如何将其拆分为更小、更专注的组件。并实施拆分。这个目标并非随意设定,而是出于实用考虑。更小的组件意味着 Claude 每项任务读取的内容更少。

2026-07-19 20:20:32 229

原创 systemd-networkd

工具介绍:以服务的方式管理网卡,默认有关 新增网卡、配置 ip、配置路由 都是通过创建相应的配置文件来实现的。配置文件:├── lib/systemd/network/ <-- 1. 系统/发行版默认配置(优先级最低)│├── run/systemd/network/ <-- 2. 动态运行时配置(优先级中,临时有效)│└── etc/systemd/network/ <-- 3. 管理员自定义配置(优先级最高,最重要)

2026-07-19 20:19:43 208

原创 用 Solon AI ReActAgent 落地智能客服工单处理

public String get_logistic_status(@Param(description = “物流单号”) String trackNo) {public String get_order(@Param(description = “订单号”) String orderId) {return “{“status”: “lost”, “info”: “包裹在上海分拨中心丢失”}”;+ ““trackNo”: “track_123”, “sku”: “智能耳机”}”;

2026-07-18 16:23:56 147

原创 从库复制又延迟了?GreatSQL 8.4.4-5 让并行回放“不再堵车“

问题就出在"等"这个动作上——传统实现里,一旦碰到有依赖关系的事务,协调线程(coordinator)会直接卡住,连带后面的 binlog 读取和调度全被堵在门口。冲突事务交给 worker 自己等:给需要等待的事务打上 need_wait 标记,由领到活的 worker 线程执行 wait_for_last_committed_trx,自己等自己的前置事务;WAIT_ON_WORKER_THREAD:新行为模式,推荐值,等待逻辑下沉到 worker。备节点并行回放并行度提升,能同时跑的事务更多;

2026-07-18 16:22:57 264

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除