- 博客(31)
- 收藏
- 关注
原创 当系统不再“透明”:从 Java 技术体系看大型工程的可观测性与可掌控性
软件系统可以复杂,但不能不可见。无法观测无法解释无法验证那么它就不再是工程对象,而是风险源。真正成熟的系统,必须具备一个能力:👉随时知道它在做什么。Java 技术体系的长期价值,正体现在这里:👉它不仅让系统运行,更让系统“被看见”。而一旦系统可以被看见,它就可以被理解、被分析、被持续优化。这,才是复杂工程真正的掌控方式。
2026-04-04 21:43:45
297
原创 系统越复杂,越需要“边界感”:从 Java 体系理解大型工程的可维护性本质
复杂并不可怕,可怕的是:👉没有边界的复杂。清晰的模块划分明确的职责边界稳定的运行规则被理解被修改被长期维护Java 技术体系所带来的,不只是开发能力,而是一种工程原则:👉在复杂性中,坚持结构与边界。而这,正是大型系统能够长期稳定运行的关键。
2026-04-04 21:42:07
299
原创 当系统开始“依赖经验”而不是规则:从 Java 技术体系看复杂工程的可治理性
软件系统的终极目标,不只是运行,而是:👉长期可维护、可演进。而这一切的前提是:👉系统必须始终可以被理解。只能运行,不能解释只能使用,不能修改只能依赖人,而不能依赖规则那么它终将成为负担。Java 技术体系所提供的,不只是工具和框架,而是一种工程能力:👉在复杂系统中,持续维持“理解”的可能性。这,才是大型工程真正的稳定基础。
2026-04-04 21:40:10
342
原创 大型系统的真正难点,从来不是写出来,而是“敢不敢改”:Java 体系下的复杂性治理
软件工程的终极约束,其实不是硬件,也不是语言,而是:👉人的认知能力。系统可以变复杂,但必须满足一个前提:👉始终可以被理解。修改变成风险问题无法定位团队失去信心系统就不再是资产,而是负担。Java 技术体系长期存在的原因,并不是因为它最先进,而是因为它始终坚持一个原则:👉在复杂性之中,为人保留理解系统的能力。
2026-04-04 21:33:52
255
原创 系统真正的瓶颈不是性能,而是“可理解性”:从 Java 体系看复杂工程的稳定边界
软件系统可以复杂,但不能混乱。架构可以庞大,但不能失控。所有工程的底层约束其实只有一个:👉系统必须始终处在人类可以理解的范围内。一旦系统突破这个边界:修改变得危险问题无法解释团队失去信心系统就从资产变成风险。Java 技术体系真正沉淀下来的,并不是某个语法或框架,而是一种工程哲学:👉 在承认复杂性的前提下,始终保持系统可理解、可推理、可控制。而这,才是大型工程能够长期演进的真正基础。
2026-04-04 21:30:51
278
原创 使用Scalar.AspNetCore来管理你的OpenApi
技术上,Chatflow将用户输入(sys.query)与对话历史结合,动态生成个性化回复,实现真正的"对话式AI"体验。在传统客服系统中,用户每问一个问题,系统就"忘记"之前的对话,导致重复输入和低效交互。",系统都能基于对话历史提供准确回答,客户满意度提升40%。例如,AI助手回答"正在为您查询订单...",然后显示"订单已确认",最后显示"预计3天内送达"。Workflow就像餐厅的后厨流水线,你一次性把100个订单交给后厨,后厨按照流程把100个订单都做好,最后告诉你"100个订单已全部完成"。
2026-03-11 11:32:08
230
原创 创业两年半,我好像又回到了原点。。。
拦钠仕牙it(原名 lit-element + lit-html)并不是一个“对标 React/Vue 的框架”,而是一套围绕 Web Components 的最小化渲染与响应式方案。Lit = Web Components + lit-html + 响应式封装。五、lit-html 的底层渲染流程(Importance)Lit 没有虚拟 DOM 层,这是理解其底层原理的关键。三、Web Components 是 Lit 的根基。lit-html 是一个“模板驱动的定点更新引擎”
2026-03-11 11:27:11
187
原创 从w到w播放量,我的一点思考。
那二者的区别是啥呢?除了 LangChain4j 的使用复杂之外,源代码量很大,LangChain4j 的文档也不全,要么是没有关键实现代码案例、要么是干脆文档写的都是错的,LangChain4j 的坑比较多,最后只能通过看最新的源码才能解决和使用相关功能,所以 LangChain4j 学习和使用成本是非常高的。ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat") //使用完整地址(而不是 api_base)
2026-03-10 13:15:30
215
原创 Ks注解的指令模式:元数据如何控制集群行为
但是,当我们有很多个并列最小的数时,对这些数删除的顺序是有讲究的。每次只能删除最左边或最右边的数,否则一定会产生两个相等的数交换位置的情况。这样,才能保证后面被删除的数是最优的。,然后再将前后的数合并,即将要删掉的数删掉。对一个序列分成三段,一段为要删的数前的数,一段为其自己,一段为其后面的数,启动次数就是前面的数的。其实树状数组也可以用,又快又好些,吹普常数大的没边,但我是范浩强吹普死忠粉,我就要用。小 D 认为一个整数序列是好的,当且仅当它先(不严格)上升,后(不严格)下降。,他想让这个序列变成好的。
2026-03-10 13:09:58
145
原创 XML数据库与dbo的简要对比
那二者的区别是啥呢?除了 LangChain4j 的使用复杂之外,源代码量很大,LangChain4j 的文档也不全,要么是没有关键实现代码案例、要么是干脆文档写的都是错的,LangChain4j 的坑比较多,最后只能通过看最新的源码才能解决和使用相关功能,所以 LangChain4j 学习和使用成本是非常高的。ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat") //使用完整地址(而不是 api_base)
2026-03-09 13:10:07
171
原创 Google wave 的技术分析- Google 企业应用的桥头堡(Web . in Ente
但是,当我们有很多个并列最小的数时,对这些数删除的顺序是有讲究的。每次只能删除最左边或最右边的数,否则一定会产生两个相等的数交换位置的情况。这样,才能保证后面被删除的数是最优的。,然后再将前后的数合并,即将要删掉的数删掉。对一个序列分成三段,一段为要删的数前的数,一段为其自己,一段为其后面的数,启动次数就是前面的数的。其实树状数组也可以用,又快又好些,吹普常数大的没边,但我是范浩强吹普死忠粉,我就要用。小 D 认为一个整数序列是好的,当且仅当它先(不严格)上升,后(不严格)下降。,他想让这个序列变成好的。
2026-03-09 13:05:03
148
原创 合理利用现有技术构建高性能Web应用,兼为这两天的战帖添把火
那二者的区别是啥呢?除了 LangChain4j 的使用复杂之外,源代码量很大,LangChain4j 的文档也不全,要么是没有关键实现代码案例、要么是干脆文档写的都是错的,LangChain4j 的坑比较多,最后只能通过看最新的源码才能解决和使用相关功能,所以 LangChain4j 学习和使用成本是非常高的。ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat") //使用完整地址(而不是 api_base)
2026-03-08 11:19:37
181
原创 PDC :微软采用HTML 搞砸自己Web战略个原因[原文]
但是,当我们有很多个并列最小的数时,对这些数删除的顺序是有讲究的。每次只能删除最左边或最右边的数,否则一定会产生两个相等的数交换位置的情况。这样,才能保证后面被删除的数是最优的。,然后再将前后的数合并,即将要删掉的数删掉。对一个序列分成三段,一段为要删的数前的数,一段为其自己,一段为其后面的数,启动次数就是前面的数的。其实树状数组也可以用,又快又好些,吹普常数大的没边,但我是范浩强吹普死忠粉,我就要用。小 D 认为一个整数序列是好的,当且仅当它先(不严格)上升,后(不严格)下降。,他想让这个序列变成好的。
2026-03-08 11:13:54
192
原创 如何快速成为javascript高手的思考
那二者的区别是啥呢?除了 LangChain4j 的使用复杂之外,源代码量很大,LangChain4j 的文档也不全,要么是没有关键实现代码案例、要么是干脆文档写的都是错的,LangChain4j 的坑比较多,最后只能通过看最新的源码才能解决和使用相关功能,所以 LangChain4j 学习和使用成本是非常高的。ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat") //使用完整地址(而不是 api_base)
2026-03-07 12:55:37
183
原创 读《Team Leader你会带团队吗?》引发的思考
但是,当我们有很多个并列最小的数时,对这些数删除的顺序是有讲究的。每次只能删除最左边或最右边的数,否则一定会产生两个相等的数交换位置的情况。这样,才能保证后面被删除的数是最优的。,然后再将前后的数合并,即将要删掉的数删掉。对一个序列分成三段,一段为要删的数前的数,一段为其自己,一段为其后面的数,启动次数就是前面的数的。其实树状数组也可以用,又快又好些,吹普常数大的没边,但我是范浩强吹普死忠粉,我就要用。小 D 认为一个整数序列是好的,当且仅当它先(不严格)上升,后(不严格)下降。,他想让这个序列变成好的。
2026-03-07 12:50:00
150
原创 从中间件的历史来看移动App开发的未来
那二者的区别是啥呢?除了 LangChain4j 的使用复杂之外,源代码量很大,LangChain4j 的文档也不全,要么是没有关键实现代码案例、要么是干脆文档写的都是错的,LangChain4j 的坑比较多,最后只能通过看最新的源码才能解决和使用相关功能,所以 LangChain4j 学习和使用成本是非常高的。ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat") //使用完整地址(而不是 api_base)
2026-03-06 12:53:54
161
原创 Golang的CSP很酷?其实.NET也可以轻松完成
但是,当我们有很多个并列最小的数时,对这些数删除的顺序是有讲究的。每次只能删除最左边或最右边的数,否则一定会产生两个相等的数交换位置的情况。这样,才能保证后面被删除的数是最优的。,然后再将前后的数合并,即将要删掉的数删掉。对一个序列分成三段,一段为要删的数前的数,一段为其自己,一段为其后面的数,启动次数就是前面的数的。其实树状数组也可以用,又快又好些,吹普常数大的没边,但我是范浩强吹普死忠粉,我就要用。小 D 认为一个整数序列是好的,当且仅当它先(不严格)上升,后(不严格)下降。,他想让这个序列变成好的。
2026-03-06 12:48:46
186
原创 、判断影响、优化测试”的关键驱动因素。通过引入该技术,企业能够构建更智能、更敏捷、更具洞察力的测试体系,为软件质量提供强有力的保障。 ...
那二者的区别是啥呢?除了 LangChain4j 的使用复杂之外,源代码量很大,LangChain4j 的文档也不全,要么是没有关键实现代码案例、要么是干脆文档写的都是错的,LangChain4j 的坑比较多,最后只能通过看最新的源码才能解决和使用相关功能,所以 LangChain4j 学习和使用成本是非常高的。ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat") //使用完整地址(而不是 api_base)
2026-03-05 12:11:27
191
原创 Java变量与常量全解析(包含常量类、interface 与 final 的比较)
但是,当我们有很多个并列最小的数时,对这些数删除的顺序是有讲究的。每次只能删除最左边或最右边的数,否则一定会产生两个相等的数交换位置的情况。这样,才能保证后面被删除的数是最优的。,然后再将前后的数合并,即将要删掉的数删掉。对一个序列分成三段,一段为要删的数前的数,一段为其自己,一段为其后面的数,启动次数就是前面的数的。其实树状数组也可以用,又快又好些,吹普常数大的没边,但我是范浩强吹普死忠粉,我就要用。小 D 认为一个整数序列是好的,当且仅当它先(不严格)上升,后(不严格)下降。,他想让这个序列变成好的。
2026-03-05 12:05:27
231
原创 使用FastApi构建python后端,并部署在免费服务器Render/Replit上
那二者的区别是啥呢?除了 LangChain4j 的使用复杂之外,源代码量很大,LangChain4j 的文档也不全,要么是没有关键实现代码案例、要么是干脆文档写的都是错的,LangChain4j 的坑比较多,最后只能通过看最新的源码才能解决和使用相关功能,所以 LangChain4j 学习和使用成本是非常高的。ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat") //使用完整地址(而不是 api_base)
2026-03-04 12:06:23
208
原创 Uniswap core源码学习
但是,当我们有很多个并列最小的数时,对这些数删除的顺序是有讲究的。每次只能删除最左边或最右边的数,否则一定会产生两个相等的数交换位置的情况。这样,才能保证后面被删除的数是最优的。,然后再将前后的数合并,即将要删掉的数删掉。对一个序列分成三段,一段为要删的数前的数,一段为其自己,一段为其后面的数,启动次数就是前面的数的。其实树状数组也可以用,又快又好些,吹普常数大的没边,但我是范浩强吹普死忠粉,我就要用。小 D 认为一个整数序列是好的,当且仅当它先(不严格)上升,后(不严格)下降。,他想让这个序列变成好的。
2026-03-04 12:00:54
166
原创 下一代AI Agent: EDA(事件驱动架构)与AI Agent(智能体)的融合
那二者的区别是啥呢?除了 LangChain4j 的使用复杂之外,源代码量很大,LangChain4j 的文档也不全,要么是没有关键实现代码案例、要么是干脆文档写的都是错的,LangChain4j 的坑比较多,最后只能通过看最新的源码才能解决和使用相关功能,所以 LangChain4j 学习和使用成本是非常高的。ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat") //使用完整地址(而不是 api_base)
2026-03-03 22:02:27
196
原创 Power BI制作指标达成跟踪器
但是,当我们有很多个并列最小的数时,对这些数删除的顺序是有讲究的。每次只能删除最左边或最右边的数,否则一定会产生两个相等的数交换位置的情况。这样,才能保证后面被删除的数是最优的。,然后再将前后的数合并,即将要删掉的数删掉。对一个序列分成三段,一段为要删的数前的数,一段为其自己,一段为其后面的数,启动次数就是前面的数的。其实树状数组也可以用,又快又好些,吹普常数大的没边,但我是范浩强吹普死忠粉,我就要用。小 D 认为一个整数序列是好的,当且仅当它先(不严格)上升,后(不严格)下降。,他想让这个序列变成好的。
2026-03-03 21:52:04
221
原创 - NGP Token 攻击事件:价格维持机制为攻击者做了嫁衣
那二者的区别是啥呢?除了 LangChain4j 的使用复杂之外,源代码量很大,LangChain4j 的文档也不全,要么是没有关键实现代码案例、要么是干脆文档写的都是错的,LangChain4j 的坑比较多,最后只能通过看最新的源码才能解决和使用相关功能,所以 LangChain4j 学习和使用成本是非常高的。ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat") //使用完整地址(而不是 api_base)
2026-03-02 12:49:03
252
原创 [汽车] 智能网联汽车-智能驾驶-综述
但是,当我们有很多个并列最小的数时,对这些数删除的顺序是有讲究的。每次只能删除最左边或最右边的数,否则一定会产生两个相等的数交换位置的情况。这样,才能保证后面被删除的数是最优的。,然后再将前后的数合并,即将要删掉的数删掉。对一个序列分成三段,一段为要删的数前的数,一段为其自己,一段为其后面的数,启动次数就是前面的数的。其实树状数组也可以用,又快又好些,吹普常数大的没边,但我是范浩强吹普死忠粉,我就要用。小 D 认为一个整数序列是好的,当且仅当它先(不严格)上升,后(不严格)下降。,他想让这个序列变成好的。
2026-03-02 12:43:44
286
原创 大卫小东(Sheldon)
那二者的区别是啥呢?除了 LangChain4j 的使用复杂之外,源代码量很大,LangChain4j 的文档也不全,要么是没有关键实现代码案例、要么是干脆文档写的都是错的,LangChain4j 的坑比较多,最后只能通过看最新的源码才能解决和使用相关功能,所以 LangChain4j 学习和使用成本是非常高的。ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat") //使用完整地址(而不是 api_base)
2026-03-01 11:13:22
347
原创 【GitHub每日速递 】AI时代必备!Stagehand浏览器自动化框架解锁高效新玩法
但是,当我们有很多个并列最小的数时,对这些数删除的顺序是有讲究的。每次只能删除最左边或最右边的数,否则一定会产生两个相等的数交换位置的情况。这样,才能保证后面被删除的数是最优的。,然后再将前后的数合并,即将要删掉的数删掉。对一个序列分成三段,一段为要删的数前的数,一段为其自己,一段为其后面的数,启动次数就是前面的数的。其实树状数组也可以用,又快又好些,吹普常数大的没边,但我是范浩强吹普死忠粉,我就要用。小 D 认为一个整数序列是好的,当且仅当它先(不严格)上升,后(不严格)下降。,他想让这个序列变成好的。
2026-03-01 11:06:39
228
原创 AI Agent 产品推荐方案:从需求分析到落地开发
在现实世界,Node 节点可以是一台物理服务器,一台 VM 虚拟机(一个 Node 节点严格对应一台“计算实例”),但是注意,Node 节点不是容器(Node 是运行容器的宿主机)。每个 node 上有一个 Kubelet(负责每个节点的运行状态,以及与 master 节点通信,执行 master 节点的指令),同时 Node 节点上至少还需要运行 container runtime(比如 docker,这样才能够运行相关镜像)。如果简单的理解,你就可以把他看成一个 docker,可以运行相关的镜像。
2026-02-28 21:33:36
313
原创 你的程序为何卡顿?从LINUX I/O三大模式寻找答案
在实用性能上,它在OmniDocBench基准测试中,仅用100个视觉token就超越需256个token的GOT-OCR2.0,用少于800个视觉token超越平均需6000+个token的MinerU2.0,且单A100-40G显卡日生成20万+页LLM/VLM训练数据,代码和模型权重已开源(http://github.com/deepseek-ai/DeepSeek-OCR),为LLM长上下文压缩、记忆遗忘机制研究及实际OCR任务提供重要价值。配置:AdamW优化器,步长调度器,初始学习率3e-5;
2026-02-28 21:31:06
341
原创 JSAPIThree 标签使用学习笔记:在地图上添加文字和图标
{ name: '餐厅', type: 'restaurant', position: [116.414, 39.925] },{ name: '图书馆', type: 'library', position: [116.404, 39.915] },今天在文档里看到了"标签"这个词,一开始我还以为是 HTML 的标签,结果查了一下才知道,原来这是在地图上显示文字和图标的功能!我的理解:engine.rendering.label 适合添加少量的、独立的、需要精确控制的标签,不需要配置数据源。
2025-12-14 22:31:46
345
原创 客观科学分析Golang Green Tea GC和dotNet GC哪个性能更好
但是,Go 依然需要扫描所有活跃对象(因为它不分代),如果你的堆里有 1000 万个长活对象,Go 每次 GC 都要“看”它们一遍(虽然是并发的),而 .NET 的 Gen 0 GC 完全忽略它们。因此,在 大堆 + 低延迟 要求下,Green Tea 后的 Go 是极佳选择。Green Tea 表现: 在大流量下,Green Tea 降低了 GC 的 CPU 占用率,这意味着在高并发场景下,Go 服务能维持低延迟的同时,处理更多的 QPS(因为 CPU 没被 Cache Miss 浪费掉)。
2025-12-14 22:31:08
573
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅