- 博客(28)
- 收藏
- 关注
原创 Means:基于 .NET 10 打造的开源自部署 S3 兼容对象存储服务
ans 应运而生——它是一个基于 .NET 10 / ASP.NET Core 构建的、可自部署的 S3 兼容对象存储服务。你可以把它理解为一个 .NET 版的 MinIO:完全兼容 S3 API,支持单节点多盘部署,提供 Web 管理控制台,同时提供 C# 和 TypeScript SDK。一、为什么需要一个 .NET 原生的对象存储?统一技术栈:如果你的团队以 .NET 为主,Means 可以无缝融入现有运维体系,无需额外学习 Go/Java 生态的运维工具。
2026-07-10 14:46:53
260
原创 Vibe Coding -- 小项目实战
4 Claude Code 实战工作流3.4.1 官方推荐工作流:Explore → Plan → Implement → CommitClaude Code 的常见推荐工作流可以概括为 四阶段:Explore(探索):Plan Mode 下读代码、搜引用,搞清楚现状Plan(规划):出方案、评估边界情况,你审核Implement(实施):切出 Plan Mode,按方案执行Commit(提交):生成 commit message,提交一轮结束后,回到第 1 步开始下个任务。
2026-07-09 16:14:19
267
原创 碎片装箱问题的贪心下界
的容量为11,目标是把所有物品放进若干箱子,使得每个箱子内物品大小之和不超过11,并最小化箱子数量。这个问题很适合讲近似算法。它足够简单,简单到你可以在十分钟内写出好几个贪心版本;但它也足够刁钻,刁钻到“看起来很合理”的策略会在某些输入上稳定翻车。这是一个 NP-hard 问题严格地说,优化版本的 Bin Packing 是 NP-hard;对应的判定版本是:给定物品大小和整数�B,是否能用不超过�B 个箱子装下所有物品?
2026-07-09 16:13:45
158
原创 做共享目录实时同步,踩过这些坑
为了后面好排查问题,我们没有把监听、解析、补偿都塞进一个类里,而是拆成了几个比较明确的组件。组件职责基于做实时监听,负责递归注册子目录做事件防抖、路径解析,以及把文件事件转换成业务处理做停机补偿和定时快照比对把文件快照持久化到 MySQLdoc:第一阶段我们只开dry-run,先把日志打全:监听到了什么文件、解析出了哪个知识库、会触发什么动作。路径解析和去重逻辑都确认没问题后,再打开真实写入。
2026-07-08 14:44:20
209
原创 Mysql事物的持久性及原子性
1. 为什么需要 NO-FORCE 与 Redo Log?绝大多数数据库都采用 NO-FORCE 策略来优化 I/O 性能。为了实现它,就需要引入 Redo Log。即使修改数据时系统崩溃了,重启后数据库可以根据 Redo Log 恢复现场。通俗理解:我先把要改的东西记录在日志里,再根据日志统一写到磁盘中。万一我在写入磁盘的过程中“晕倒”(宕机)了,等我“醒来”(重启)的时候,照着日志重新做一遍,也能成功。2. 为什么需要 STEAL 与 Undo Log?
2026-07-08 14:43:07
181
原创 为什么 SSR 一定会有 hydration mismatch?
客户端“重新执行一遍渲染逻辑”,并且结果必须和服务端完全一致 (在不重建 DOM 的情况下,让 JS 接管已有 HTML (即使这些内容完全静态,也要执行 hydration。Islands 本质是在逃避 hydration。hydration 天然昂贵且天然存在一致性问题。既然如此,最好的办法不是优化它,而是减少它。并不是所有 HTML 都需要变成交互页面。减少需要 hydration 的范围。为了一个按钮,整页都要重复执行一遍。hydration 本质是重复计算。HTML 先渲染,JS 再接管整页。
2026-07-07 14:56:41
166
原创 底解决大模型 JSON 报错:提示词 + 硬约束 + 兜底的全链路修复方案
大模型 JSON 输出异常,本质是模型幻觉与业务确定性需求的矛盾。通过「事前引导→事中约束→事后补救」的全链路解决方案,可实现 JSON 输出稳定合规,适配不同场景、不同类型大模型。事前引导:通过明确字段规则、提供 Few-Shot 示例、添加校验指令,低成本引导模型输出合规 JSON;事中约束:借助JSON Mode,实现硬约束,从源头杜绝异常;
2026-07-07 14:56:05
249
原创 Visual Studio 2008 可扩展性开发(六):操作Solution Explorer
也许比预想的要复杂些,主要的原因是解决方案文件夹的存在,解决方案文件夹本身也被看作Project对象,同时它又可以包含其它真正的项目,所以在查找项目的时候要分两种情况。先查找解决方案下面的项目,然后再查找解决方案文件夹下面的项目。项目刚开始的时候,项目的数量也许还不太多,随着程序规模的增大,项目数量也会不断增加,这时要找到某个项目或者某个文件,就变得越来越麻烦,你得先把大量的项目折叠起来。这里的思路很简单,只要找到所有的项目节点,依次查看每个项目,如果项目展开了,就把它折叠起来。
2026-07-06 15:14:50
169
原创 谈表达式树的缓存(4):使用二叉搜索树(AVL树)
不过如果需要进行比较,那么这么做几乎是必须的,所以这点对于我们的使用来说并不成为问题,就不作处理了。因此在CompreType方法中,在大部分情况下就已经能够通过两个对象的Hash Code中得到它们的大小关系,只有在“万中无一”的情况下,两个不同的Type对象才会有相同的HashCode,那么我们再进行低效的字符串比较。现在,我们可以轻松的得到两个表达式树的大小关系,就可以像之前谈到的那样,构造一个排序的线性表,并且使用二分法进行查询,这样查询性能便可以控制在O(log(n))了。
2026-07-06 15:14:10
245
原创 PyTorch KernelAgent 源码解读 ---(6)--- Composer
user/compose_end_to_end.py 是 Fuser 管道中的最后一个关键步骤,它将分散的、针对特定子图优化的 Triton 内核无缝地整合成一个单一的、高性能的端到端 Triton 内核,同时确保其功能与原始 PyTorch 实现的数值等价性。Composer的架构图如下,其功能概括是一句话:把所有验证通过的子图内核+原问题喂给LLM拼成单文件。也会把错误日志让LLM修,最多重试 max_iters轮,并自动 patch 常见 Triton 陷阱。
2026-07-05 14:29:38
157
原创 Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!
前者适合"你确定要这么做吗",后者适合"做完了,你看看结果对不对"。把它设为 ["tools"],意思是 Agent 调用完模型、决定要用哪个工具之后,先别急着执行,停下来等人发话。刚才说的是"事前审批"——工具还没跑,先问问人。print(f"Agent 已暂停,最后消息: {result['messages'][-1].content[:100]}...")print(f"Agent 已暂停,最后消息: {result['messages'][-1].content[:100]}...")
2026-07-04 16:50:21
168
原创 如何编写一个SpringBoot项目告警推送的Starter
这个项目从想法到真正做完,中间也拖了挺久。很多自己以前想做的东西,真到动手的时候,总会因为工作忙、事情杂、优先级靠后,一直放在那里。这次把它真正整理成一个开源项目,对我自己来说还是挺有意义的。因为它不是那种只适合演示的代码,而是可以真正拿到业务里去用。
2026-07-04 16:49:43
181
原创 做了个Claude Code CLI 电子宠物:程序员的实体监工代码搭子
为了治这种焦虑,我给 Claude Code 做了个「实体监工搭子」—— 一个跑在 ESP32 上的电子宠物,能实时同步 Claude 的状态,所有高危操作,必须经过它点头才放行。不用再刷日志找进度,瞟一眼小屏幕,就知道 Claude 现在是在摸鱼还是在干活。Claude Code 自带的审批提示,很容易被日志刷过去漏看。而我的 Buddy,把审批流程从 “终端弹窗” 搬到了claude很多人问我:“不就是个连蓝牙的小屏幕?有必要写这么多代码吗?
2026-07-03 16:48:22
183
原创 SharpDbg 与 netcoredbg 深度对比分析
SharpDbg 的 DAP 实现覆盖了调试会话的全生命周期:initialize(初始化)、launch/attach(启动/附加)、setBreakpoints(断点设置)、continue/next/stepIn/stepOut(执行控制)、threads/stackTrace/scopes/variables(状态查询)、evaluate(表达式求值)、以及 disconnect/terminate(会话终止)。在轻量级容器、CI/CD 代理、嵌入式设备等场景中,额外的运行时安装可能构成负担。
2026-07-03 16:47:38
157
原创 PostgreSQL 主从集群一键部署工具
目是一个,用于快速部署 PostgreSQL 数据库的单机实例或一主多从流复制集群。:开发测试环境、生产环境快速搭建 PG 集群,尤其适合需要批量部署多套集群的运维场景。
2026-07-02 16:11:18
214
原创 洛谷P5908 猫猫和企鹅
1 号居住区外,每个居住区住着一个小企鹅,有一天一只猫猫从 1 号居住区出发,想要去拜访一些小企鹅。可是猫猫非常的懒,它只愿意去距离它不大于 � 的小企鹅们。猫猫非常的懒,因此希望你告诉他,他可以拜访多少只小企鹅。
2026-07-02 16:10:38
243
原创 SpringBoot对接黄金白银期货数据API
请求市场列表,通过名称(如 "Gold" 或 "Silver")筛选出对应的。作为资深后端,推荐使用。
2026-07-01 17:09:25
221
原创 Apache DolphinScheduler 与 Flink Spark 数据引擎的边界、协同与最佳实践
一管理不同计算引擎的执行细节。短期来看似乎提升了效率,但从长期来看,这种设计往往会让系统变得高度耦合、难以维护,甚至在规模上来之后失去稳定性。因此,在讨论具体实践之前,我们必须先把一件事情讲清楚:调度系统与数据引擎之间的边界。要理解整个体系的运行方式,可以先记住一个非常核心的原则:调度系统只负责“什么时候运行”和“依赖关系”,而具体“如何计算”,必须交给 Spark、Flink 或 SeaTunnel 这样的执行引擎。换句话说,DolphinScheduler 是流程的编排者,而不是计算的执行者。从工程视角
2026-07-01 17:08:46
188
原创 python3.14版本的free-threading功能体验
free-threading版本的python旨在提供与启用GIL功能python版本类似的线程安全行为,通过内部锁来实现dict、list 和 set这些内置数据类型的线程安全。从3.13版本开始,python引入了free-threading功能,其中GIL可被关闭,python线程可充分利用多核cpu资源,这里做下简单介绍。这里使用源码编译的方式安装python3.14.0版本,如果嫌麻烦,可直接下载预编译的二进制文件。1)通过源码安装时,需要添加 --disable-gil 标志;
2026-06-30 22:32:24
200
原创 思路及解答
我们以[8,6,4,2,7,5,3,1] ,实际上分为 [8,6,4,2] 和 [7,5,3,1] ,逆序的个数为第⼀部分 [8,6,4,2] 中的逆序个数+第⼆部分 [7,5,3,1] 中的逆序个数,还有第三部分是 [8,6,4,2] 中的元素相对 [7,5,3,1] 的逆序个数。如果第⼆个数组中的元素⼩于第⼀个数组中的元素,那么就构成了逆序对,逆序对的个数:如果中间分隔是索引是 mid ,那么构成逆序对的个数为 mid-i+1。⾸先,也就是数组中任意两个数,只要前⾯的数⼤于后⾯的数,就是逆序对。
2026-06-30 22:31:31
212
原创 GDB函数调用栈管理
当程序进行函数调用时,系统需要保存该函数调用过程中的上下文信息,例如:函数是从哪里被调用的、传入了哪些参数、局部变量有哪些、函数返回后应该回到哪里继续执行,以及部分寄存器状态等。程序运行时,如果函数 A 调用了函数 B,那么在调用 B 的过程中,会产生 B 对应的栈帧;这也是切换栈帧的重要作用:可以回到某一层函数调用现场,查看当时传入了什么参数、局部变量是什么值,从而分析程序为什么会执行到当前位置。切换栈帧后,GDB 的上下文也会切换到对应函数中。切换到1号栈帧中,查看1号栈帧的上下文信息。
2026-06-29 16:35:15
217
原创 语音克隆模型的难点之一:音素对齐及交叉注意力早期失效问题 (兼论旋转位置编码)——F5-TTS、SupertonicTTS、VoxFlash-TTS 对比
Concat 之后,文本和音频在同一个序列内,自注意力中的位置编码(RoPE)直接编码了两者的相对位置关系。音素 token 和对应音频帧在序列中的位置已经预先对齐,自注意力不需要学习"哪个音频帧对应哪个音素"——位置关系已经由 Concat 的构造方式隐式决定。位置 0.3 的音频帧,通过 RoPE 的旋转操作,会在注意力计算中与位置 0.3 附近的文本音素产生更高的相似度。三种先验的强度依次递增:Concat 是最弱的隐式约束,LARoPE 是中等强度的位置约束,显式对齐是最强的硬约束。
2026-06-29 16:34:36
210
原创 写页面时别再把 Element Plus 整个搬进来啦!Vue3按需加载的坑我帮你踩平了
前提是你项目里已经装了 ESLint 和 Prettier 依赖(比如 eslint、prettier、eslint-plugin-vue、@vue/eslint-config-prettier 这些),VS Code 也装了对应的插件。如果项目需要深度定制,还可以配合 unplugin-element-plus 的 importStyle: 'sass' 选项,从 SCSS 源码级修改,不过这就进阶了,咱们改天细聊。这招简单粗暴,但等于把 100 多个组件全注册了,哪怕你只用了一个按钮。
2026-06-28 15:36:38
212
原创 Docker--容器常用命令
原来显示的是【root@docker~】,现在变为root@de0940ad17dd:/#,这就是docker生成的伪客户端,而数字de0940ad17dd 表示docker容器ID。上面的方法是进入到容器之后才对容器进行操作,其实也可以不进入容器直接对容器进行操作。-d 表示以分离模式运行容器,即命令在后台运行,命令的运行和宿主机的运行分离开来。通过ls -l 命令查看tomcat 根目录下的文件,注意,不支持ll命令。此时的容器附加了标准输出,只不过,其输出的是tomcat的启停日志信息。
2026-06-28 15:35:59
192
原创 DeepSeek V4模型的Agent能力实测
2) 基于调研写一篇标题、正文、话题标签的笔记草稿,保存到本地;:从零构建 Model Context Protocol (MCP) 主题的知识库,要求联网调研、整理 4 个主流 MCP Server + 2 个客户端,按索引页 + 分类目录 + 交叉链接的方式组织,最后更新知识库顶层索引。的 Web 端进行。:在全新 session 里,Flash 只用 2 次工具调用就把品牌的全部细节拿出来了,视觉色(雾霾蓝 #6B8FA8)、供应商(普洱孟连老黑寨合作社)、租金、店长候选人薪资全部一字不差,并且。
2026-06-23 14:24:50
301
原创 当我第一次打开 Java 项目
写了这么多,我想回到开篇的比喻:镜子。Java 之于前端,不是一座需要征服的山,而是一面需要理解的镜子。我们熟悉的 React Context,在 Java 里叫我们熟悉的 Redux Action,在 Java 里叫我们熟悉的 useEffect cleanup,在 Java 里叫我们熟悉的 Vite Hot Module Replacement,在 Java 里叫我们熟悉的 TypeScript Interface,在 Java 里叫我们熟悉的 npm audit,在 Java 里叫。
2026-06-23 14:24:05
268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅