- 博客(28)
- 收藏
- 关注
原创 Swifter C#之inline还是不inline,这是个问题
内联并不总是好的,内联的确会减少总的运行指令数。看来并不是因为没有内联而造成的性能差异,不禁要深入思考下内联的问题,一定不是所有的函数都会内联的,那么究竟.NET JIT内联的规则是什么呢。内联是诸多影响C#性能中的一个,如果频繁调用的大量小函数没有内联,那么对性能的影响是非常大的,因为建栈、删栈、压栈和跳转的时间加起来很可能比实际执行函数体的时间还长。3.内联可能带来更好的优化的情况更可能被内联,比如值类型参数的函数更可能被内联,因为内联值类型参数的函数通常可以带来更好的优化效果。
2026-07-05 13:53:34
257
原创 TDD in HTML & JavaScript 概述
谈到应用程序的UI,其实包括两个方面的内容:一方面是纯图形的look & feel;另一方面,则是用户和应用程序的交互。用户和应用程序的交互往往同时导致图形界面的变化,并且,转换到新的交互行为。由于工作实践中主要是基于WEB的HTML和JavaScript的项目,这里对TDD in UI的讨论,将focus在基于HTML和JavaScript的UI。同时,一般来讲,WEB程序的表现层主要有客户端代码和服务端代码,而服务端代码,相对来说,更容易被测试。所以,本文讨论的重点,主要focus在客户端代码。
2026-07-05 13:52:51
298
原创 流畅接口不仅可以构造复杂的层次抽象
上面的代码只是一句Javascript语句,但从另一个角度看它却像一段描述异步调用的DSL程序。它通过流畅接口定义了begin when end的语法结构,begin后面跟的是启动异步调用的代码;而begin when end结构本身是可以嵌套的,比如上面的代码在timeout处理分支中就包含了另一个begin when end结构。通过这个DSL,我们可以比。这个问题从本质上讲和上面HTML的例子一样,是由于多数通用语言并未把异步作为基本元素/语义,许多异步实现模式是向语言的妥协。
2026-07-04 14:07:21
174
原创 下面我们先看一下不打开连接池时,循环执行 SqlConnection.Open 的耗时
这个测试结果看,第一次耗时是119ms,这是因为我在测试代码中,首先运行的是这个测试过程,119 ms 是程序第一次启动时的首次连接耗时,这个耗时可能不光包括连接数据库的时间,还有 ado.net 自己初始化的用时,所以这个用时可以不管。但我们发现一个有趣的现象,10分钟后,首次连接时间变成了6ms,这个和前面不打开连接池的测试用时几乎一样,也就是说10分钟后,物理连接被关闭了,又重新打开了一个物理连接。从这个测试结果看,关闭连接池后,平均每次连接大概要耗时4个毫秒左右,这个就是建立物理连接的平均耗时。
2026-07-04 14:06:22
234
原创 提高代码质量系列之三:我是怎么设计函数的?
所以我们要使函数显得純.第一步就是尽可能避免全局变量,我们分析一个函数,就只分析这个函数的全部代码(有效范围)就好,如果引入了全局变量,我们分析的时候,关注范围也难免会被强制扩大到全局,同理,能声明为静态函数的,就应该避免声明为成员函数,因为成员函数可以访问对象的实例,而该对象在调用成员函数的时候,是个什么状态,有无初始化,函数是否会修改实例(引用类型)的参数,如果我们要对这个函数做重构,就难免会束手束脚.
2026-07-03 16:40:58
232
原创 【调侃】IOC前世今生
最后,不管从架构设计还是开发效率上来说,“IOC反转控制”虽说把变化点从李四的“MessageService”模块反转到了张三的“LogicController”模块当中,但这符合“SOLID面向对象设计”的原则,可以说是一个好的设计,本无可厚非!眼看即将完工,但李四却越看越不顺眼,因为考虑到以后可能再添加新的祝福方式,这种未来的不确定性,一定会让李四现有的枚举SendToolType和 GreetMessageService中的构造函数不断的进行更改,这将会是一个没完没了工作。
2026-07-03 16:40:01
178
原创 日常问题排查-空闲一段时间再请求就超时
问题是喜闻乐见的调用超时。这个问题的显著特征是:一个非常直观的猜想就是服务端关闭了这个链接,请求直接被拒绝了。但熟悉tcp协议的笔者很快否定了这个猜想,如果连接被关闭了,会有下面图中所示的两种情况:serverclientserverclientalt[client未收到FIN包][client收到FIN包]请求正常返回close连接tcp packettcp resetsocket has already closed第一种情况,client端没有收到服务端返回的FIN包,那么在请求发送后应该是直接
2026-07-02 18:12:51
210
原创 tomcat为什么假死了.md
我们生产最近有个服务偶尔会挂掉,接口报错"",上服务器curl也是同样报错,意思连接被server拒绝了。通过dump以及日志分析,我们已经知道了问题代码所在,就是使用easyexcel上传、解析文件,开发同学没有做分页,导致内存溢出。。内存溢出后,触发频繁的full gc,由于gc很难有效回收内存,所以程序抛出了OutOfMemoryError,原因是:Java heap space。内存无法分配新的对象。典型的场景是:内存不足,内存泄漏,分配的对象过大。
2026-07-02 18:11:56
214
原创 2023了,学习深度学习框架哪个比较好?
我们知道AI框架在数学上对自动微分进行表达和处理,最后表示称为开发者和应用程序都能很好地去编写深度学习中神经网络的工具和库,整体流程如下所示:除了要回答最核心的数学表示原理意外,实际上AI框架还要思考和解决许多问题,如AI框架如何对实际的神经网络实现多线程算子加速?如何让程序执行在GPU/NPU上?如何编译和优化开发者编写的代码?下面内容将会去总结AI框架的目的,其要求解决的技术问题和数学问题;了解了其目的后,真正地去根据时间的维度和和技术的维度梳理AI框架的发展脉络,并对AI框架的未来进行思考。
2026-07-01 15:42:03
230
原创 前面定义的一些类也要改一下。
因此,咱们在用的时候,必须先创建新的 Change Token 实例,然后再调用 RegisterChangeTokenCallback 实例的 Cancel 方法。上面代码中,使用了 ChangeToken.OnChange 静态方法,为 Change Token 注册回调委托,本例中回调委托绑定的是 OnCallback 方法,也就是说:当 Change Token 触发后会在文本框中追加文本。最后,又调用 RegisterChangeTokenCallback 方法,实现了无限套娃的逻辑。
2026-07-01 15:41:09
211
原创 剑指offer-69、数字序列中某⼀位的数字 _
/ 数字位数(1位、2位、3位...)// 计算新的位数范围内的总位数。// 减去前一个位数范围的数字总位数。// 当前位数范围内的数字总位数。// 当前位数范围的起始数字。// 添0增加的位数。// 步骤3:确定n在数字中的具体位置并返回。// 通过添0补齐,使所有数字都视为i位数。// 步骤1:确定n所在的数字位数。// 步骤2:确定n所在的具体数字。// 返回第n位字符对应的数字值。// 定位目标数字和具体位置。
2026-06-30 14:17:52
226
原创 用SymPy自动计算抛物线求根、判别式与顶点
SymPy 可以帮我们把求根、判别式计算、顶点坐标求解全部自动化,而且返回精确的符号表达式。# 定义二次函数# 1. 判别式# 2. 求根 —— 一行搞定,自动给出含根号的精确解# 输出:[-b/2 - sqrt(b**2 - 8)/2, -b/2 + sqrt(b**2 - 8)/2]# 3. 求顶点(导数求极值)vertex_y = expr.subs(x, vertex_x) # 代入得到顶点纵坐标solve返回的根自带根号,当判别式<0时,它会变成复数形式(如。
2026-06-29 14:33:35
209
原创 、IntelliJ IDEA 之断点调试
按钮名称功能步过(Step Over)执行当前行的代码,并在下一行代码处暂停。步入(Step Into)如果当前行代码是一个自定义方法的调用,则进入该方法体;否则相当于步过。步出(Step Out)跳出当前方法体。恢复程序(Resume Program)恢复程序运行,不再一步步执行,但如果后面的代码还有断点则停在下一个断点上。停止调试(Stop)结束断点调试过程,正常运行后面的代码。查看断点(View Breakpoints)弹出一个小窗,显示该项目下的所有断点。
2026-06-29 14:32:58
216
原创 【Agentic RL / 强化学习框架】Uni-Agent 深度技术分析
传统 RLHF 的 reward 计算是毫秒级的(调用一次 reward model),但 Agentic RL 的 reward 计算需要在环境中跑测试套件、执行代码、对比结果,耗时为分钟级。这一定位使得它成为目前。模型在真实环境中(代码仓库、终端、浏览器)通过多步交互完成复杂任务,训练目标是让模型学会更好的决策策略——不仅包括"说什么",更包括"何时采取什么行动"。理解了 Agentic RL 要解决的难点之后,我们需要审视 Uni-Agent 的底层依赖——verl——能提供什么,不能提供什么。
2026-06-28 14:54:57
224
原创 Meta Assistant / 告别命令行,我为一堆 Python 脚本做了一个 Windows 任务栏的“家”
Vibe Coding 爆火后,制作 Python 小脚本越来越简单了。每次使用仍然需要找到相应目录需要手动包装脚本 + 加为自启动才能实现开机自启动免不了和命令行打交道针对上述痛点,我打造了,这是一个开源的 Python 脚本启动器,目前支持平台仅限 Windows。
2026-06-28 14:54:09
224
原创 Claude Code 快速开始
建议使用套餐bashnpm install -g @anthropic-ai/claude-code # 安装claude --version # 检查当前版本claude update # 升级到最新版本npx @z_ai/coding-helper # 配置。
2026-06-27 14:24:49
189
原创 最早的起点:对话式 AI 只能解决局部问题
更糟的是,AI 有时会偏离当前目标,不再专注于完成转换,而是“另起炉灶”,试图再生成一个工具来解决问题。在某些场景下,比如只是做原型设计时,其实并不希望执行代码转换,开发者如果想跳过,还需要额外指定 Git 参数,使用成本较高。再者,skill 文件需要放在代码仓库中,如果有更新,还得再同步到用户目录并执行额外操作,维护起来也不方便。为了减少“读代码”带来的不确定性,我设计了一个 MCP Server:它会从 Jenkins 获取产品最新的非混淆包,再通过反射和遍历的方式,构建出一份完整的类型信息集合。
2026-06-27 14:23:58
211
原创 如何在Oracle Agent Factory中配置国内厂商的LLM?
先说我更认同的一个定义。结合现有资料来看,Harness Engineering 本质上是在模型外面补一层“可执行的脚手架”,把 AI 的能力约束成稳定产出。它不只是让模型更聪明,而是让系统更可执行。再直白一点:Harness Engineering 关心的,不是“模型会不会回答”,而是“智能体能不能稳定把事情做完”。如果按现有 Wiki 里的定义来压缩,它至少要满足四件事:有输入、有步骤、有验收、有兜底。我觉得这个定义很准。因为智能体一旦进入真实世界,马上就会遇到几类很具体的问题。
2026-06-25 14:00:31
235
原创 抗差估计与增量式SFM的工程稳健实现一、引言
从理想数据到抗差仿真,再到应对真实世界的种种挑战,SFM的工程实现是一个不断“打补丁”和“做权衡”的过程。本文所实现的抗差估计框架,是构建一个稳健SFM系统最核心、最基础的一步。它确保了算法在面对数据污染时不会轻易崩溃。然而,要打造一个真正能在复杂环境中稳定运行的工业级产品,还需要在上述的漏匹配、不良几何、动态物体和计算效率等问题上投入大量的工程智慧。希望本系列文章能为你提供一个坚实的理论与实践起点,让你在面对这些更高级的挑战时,能够知其然,更知其所以然。
2026-06-25 13:59:10
209
原创 工作和人生意义的本质#
这些层面的递进关系体现了人类需求层次的理论逻辑,同时也反映了个人成长和觉悟的必然路径。从工作层面看当一个人刚开始工作时,首先需要解决生存问题(养家糊口),这是合理的起点。首先,最基础的生存需求要解决,就是平常的吃、穿、住,这 3 样人的基本需求,没有解决这 3 样,其它就是无根之木。然后,随着能力和资源的积累,他开始追求自我展示和成就感(展示才华)。当个人成长到一定阶段,他会意识到个人的成功离不开他人的支持,从而转向帮助他人成长(成就他人)。
2026-06-24 14:39:23
229
原创 最小二乘问题详解19:带先验约束的增量式SFM优化与实现1 引言
Ceres 通过将复杂的联合优化问题分解为一系列独立的、小规模的残差块,巧妙地绕开了直接处理巨大、异构残差向量的难题。每个残差块只需关注自己的局部世界,而 Ceres 负责将它们无缝集成到一个统一的全局优化框架中。这正是现代非线性优化库强大和灵活的核心所在。
2026-06-24 14:37:57
199
原创 为什么选择多智能体架构?
职责耦合:一个模型既要处理闲聊,又要处理导购,还要处理售后,能力边界模糊扩展困难:增加新功能往往需要修改整个系统,牵一发而动全身响应效率低:所有请求都经过同一个处理链路,无法针对性优化多智能体架构将复杂任务拆解为多个专职子智能体,每个智能体只做一件事,但做到足够专业。整体结构大概如图。
2026-06-23 14:41:05
230
原创 为什么选择多智能体架构?
传统的单体智能客服系统存在几个痛点:职责耦合:一个模型既要处理闲聊,又要处理导购,还要处理售后,能力边界模糊扩展困难:增加新功能往往需要修改整个系统,牵一发而动全身响应效率低:所有请求都经过同一个处理链路,无法针对性优化多智能体架构将复杂任务拆解为多个专职子智能体,每个智能体只做一件事,但做到足够专业。整体结构大概如图。
2026-06-23 14:39:28
163
原创 里程碑式更新!Dash 4.2新版本新增websocket型回调
大家好我是费老师。Dash作为流行的Python全栈应用开发框架,于近日刚发布了其4.2.0正式版本,在本次新版本中,新增了颇具里程碑✨意义的websocket型回调函数机制,使得我们可以在Dash应用回调函数逻辑的编写过程中,通过相关方法在服务端回调函数计算过程中,随时随地对客户端进行数据传输&控制更新,极大程度上提升了在Dash中开发各种应用功能的能力上限🚀🚀🚀。今天的文章中,我们就对4.2新版本中最重要的新特性——websocket型回调函数进行简要介绍😉。
2026-06-22 16:57:48
192
原创 RAG系列:#6 一文搞懂RAG存储技术:文件、元数据、切片、向量
上传的未经处理的各类源文件:描述原始文件的属性信息,如文件作者、发布时间、保密级别等:为适配 LLM 输入长度,切割生成的文件文本片段:切片经 Embedding 模型转化而成的高维向量,用于相似度检索单看数据关联逻,四层数据的绑定关系是通过全局唯一 ID 实现的:原始文件的 ID 会作为外键关联到元数据记录;切片记录会同时携带原始文件 ID 和自身切片 ID;向量记录则以切片 ID 作为唯一主键,由此形成完整的、可双向回溯的链路。
2026-06-22 16:56:36
196
原创 从数据库优化到治病(4)---从误诊到康复全过程
时间是从2013年开始,自己有时右下腹痛,有时一直到延到右上腹也痛,肚脐附近也痛,痛的时候去旁边的中医正骨,做个推拿,电疗和艾灸缓解一下,但右下腹时长不舒服,终于到2013年年底一个晚上,自己被右下腹痛醒,发现已经很严重了,没办法赶紧去附近的医院检查,医生又开B超和CT,发现阑尾有比较长的囊肿,还做了增强CT,发现是良性的,很幸运,和医生沟通,就是比较简单的外科阑尾切除手术,这个医院做也没问题。后面右下腹痛治疗过程在。5, 乐观和豁达一些,多想想好的结果,正念,正能量,有时真的是心想事成,梦想成真。
2026-06-21 15:51:47
195
原创 从一段模板说起
概念本质组件注册把配置对象存到字典里,模板解析时查找组件实例根据配置对象 + 父组件上下文 new 出的 VueComponentProps父→子,响应式传递$emit调用父组件绑定的回调函数原型链向上查找Slot父作用域渲染,子组件占位挂载。
2026-06-21 15:51:10
240
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅