- 博客(30)
- 收藏
- 关注
原创 对SCHEME的一些理解
尾调用优化scheme;;朴素递归:计算阶乘,但n较大时会栈溢出(define (factorial n) (if (= n 0) 1 (* n (factorial (- n 1)))));;尾递归版本:使用累加器参数(define (factorial-tail n) (define (iter n acc) (if (= n 0) acc (iter (- n 1) (* n acc))));递归调用是最后一个操作 (iter n 1));;测试(factorial-tail 10000);
2026-08-05 16:58:24
188
1
原创 LINQ之路16:LINQ Operators之集合运算符、Zip操作符、转换方法、生成器方法
的一个重要特性:它会以两个序列中较短的那个长度为标准,多余的元素会被忽略。### 转换方法:从一种类型到另一种类型转换方法在LINQ中扮演着“桥梁”的角色,它们让我们可以在不同的序列类型之间切换。(Distinct、Except、Intersect、Union):帮助我们处理序列之间的集合关系,非常适合做数据对比和去重。### 生成器方法:创造序列的魔法生成器方法让我们不用实际的数据就能生成序列,这在测试、模拟数据时特别有用。:返回第一个序列中有但第二个序列中没有的元素(差集)。: 将序列转换为List-
2026-08-05 16:57:17
392
原创 Sql Server查询性能优化之不可小觑的书签查找
当查询的WHERE条件命中了非聚集索引,但所需的列却不在该索引的键或包含列中时,SQL Server必须通过索引中的“行定位器”(即聚集索引键或RID)回到基表或聚集索引中,去抓取缺失的数据行。书签查找只是性能优化中的一个环节,但“小细节,大影响”,它往往就是压垮性能的最后一根稻草。—### 优化方案2:使用聚集索引作为主键的巧妙设计在某些场景下,如果查询的WHERE条件本身就能命中聚集索引,那么就不会有书签查找。然而,有一个细节——是聚集索引的最左列,查询直接使用聚集索引查找,天然避免了书签查找。
2026-08-04 16:40:03
179
原创 写给开发者看的关系型数据库设计
它不仅仅是存储数据的仓库,更是一套严谨的数学逻辑(关系代数)的工程实现。### 一、从存储引擎说起:行存储 vs 列存储关系型数据库的核心是表,但表的底层存储方式决定了性能的天花板。### 五、实战案例:从需求到建表假设我们要设计一个博客系统,包含用户、文章、标签。### 三、范式与反范式:平衡的艺术教科书上的三大范式(1NF、2NF、3NF)旨在消除数据冗余。### 六、总结关系型数据库设计不是一门“玄学”,而是基于存储引擎、索引结构、事务模型和业务特点的系统工程。中冗余标签名,或者使用缓存。
2026-08-03 16:06:30
249
原创 Javascript执行效率小结
在绝大多数业务场景下,写清晰、简洁的代码,引擎已经能跑得很快。最后,保持对引擎工作原理的好奇心——理解 V8 如何“看”你的代码,你就能写出它最喜欢的样子。但实际上,现代 JS 引擎(如 V8、SpiderMonkey)通过 JIT(即时编译)、隐藏类、内联缓存等技术,已经把执行速度优化到了接近原生代码的水平。### 6. 工具与度量:别猜,量化“优化”的前提是“测量”。### 5. 内存管理:GC 的隐形压力垃圾回收(GC)是自动的,但。即使是“高效”的代码,如果一次性执行太久,用户也会感到卡顿。
2026-08-03 16:05:23
211
原创 大数据没那么远:把散乱数据理顺,让业务敢用
大数据没那么远,它不在遥远的集群里,而在你每天面对的那堆“脏乱差”的数据里。### 1. 问题现场:数据散乱到业务不敢用先看一个真实场景:你是一家电商公司的数据工程师,业务方每天要“订单转化率”,但数据来自三个地方:- 订单表在 MySQL(### 5. 总结:理顺数据的核心不是技术,而是“信任”回头看,我们没用 Hadoop,也没用 Spark,就用。:把聚合逻辑藏起来,业务方只面对一个简单的宽表。这篇文章,我从实战角度,用代码带你走一遍“理顺数据”的完整链路,你会发现:大数据没那么远,它就在你的。
2026-07-31 19:11:22
204
原创 和AI一起搞事情#5:技能进阶与Claude Design初体验
从单纯的“对话”进阶到“系统化设计”,这期我们来实战一把,用代码说话,顺便带你体验一把Claude Design(Claude的设计模式)到底是个什么味。### 从“聊天”到“工程化”:AI代码生成的两大痛点很多人觉得AI写代码就是“我要个爬虫,写一下”,然后复制粘贴。下次当你觉得AI写的代码“不可控”时,不妨先给自己写一份“契约层”,再让AI动手。这就是“设计模式”给AI的“记忆锚点”。### 实战二:用“装饰器模式”让AI生成可扩展的中间件第二个痛点:AI生成的代码经常“粘成一坨”。
2026-07-31 19:10:12
171
原创 把 TeXstudio / LaTeX 工程交给 AI:texstudio-mcp 功能详解
简单来说,它把 TeXstudio 的内部状态(光标位置、文档结构、编译错误等)暴露给 AI,同时让 AI 能够执行编译、导航、修改文件等操作。## 常见问题与解决策略| 问题 | 原因 | 解决方案 ||------|------|----------|| 编译超时 | 大型文档或复杂图表 | 增加 MCP 超时设置至 120s || 引用失效 | 文件移动后未更新 | 使用。## 高级应用:自定义工作流除了基础的编译和修复功能,texstudio-mcp 还支持高度可定制的工作流。
2026-07-30 18:20:21
204
原创 终于!我造了个「AI代驾」级别的AutoBuilder,一键干掉80%的重复CRUD工作
模型解析代码输出python# models.py - 用户模型定义from dataclasses import dataclassfrom typing import Optional@dataclassclass User: id: Optional[int] = None username: str = "default_user" # 默认值 email: str is_active: bool = True。
2026-07-28 19:24:09
197
原创 嵌入式应用开发笔记之web端设备控制台
- 智能家居中的灯控系统- 工业自动化中的远程监控- 物联网设备的调试和配置### 2. 搭建基础:使用Python Flask创建简单控制台首先,我们从一个最简单的例子开始:使用Python Flask框架构建一个嵌入式的Web控制台。### 3. 进阶实践:添加实时数据更新与WebSocket基础示例依赖于页面刷新更新状态,但在实际嵌入式应用中,我们需要实时显示数据(如传感器读数)。通过本教程,你已掌握了构建Web控制台的核心技能,接下来可以探索更多高级主题,如MQTT集成或设备固件远程升级。
2026-07-28 19:23:05
199
原创 一次给女朋友转账引发我对分布式事务的思考
在多个独立节点(服务、数据库)之间,保证数据最终一致性2PC分布式事务的核心不是避免错误,而是优雅地处理错误。
2026-07-25 18:33:35
216
原创 【Azure App Service】应用服务(Web App)实战:用 .NET 代码把 Connection 耗尽与 SNAT 耗尽演练一次
数据库连接定义连接耗尽。
2026-07-24 22:03:21
217
原创 AI不是从天而降,它经历了七十年三起三落:通过图灵测试读懂AI
然而,AI 并非从天而降的奇迹,它经历了七十年的跌宕起伏,三起三落,才走到今天。这段历史,从“图灵测试”开始,深刻揭示了AI的本质——不是魔法,而是人类智慧的逐步映射。### 总结AI的七十年历史,从图灵测试的朴素实验,到规则系统的兴起与衰落,再到机器学习与深度学习的突破,是一部“三起三落”的奋斗史。作为编程讲师,我希望你通过本文的代码示例,看到AI的底层逻辑:它不是玄学,而是数学和计算的结合。在早期AI中,这种基于规则的方法被称为“符号主义”,它导致了第一次AI浪潮的兴起,但也因规则过于僵化而陷入低谷。
2026-07-24 22:00:19
236
原创 每个进程分别初始化自己的模型
为此我编写了一个python文件来对一个分类模型进行服务化,文件首先进行模型初始化,之后每次web请求,对请求中的数据data利用模型进行预测,返回其对应的标签。
2026-07-22 16:31:22
144
原创 分布式系统关注点(8)——99%的人都能看懂的「熔断」以及最佳实践
但是,由于分布式系统被建立在一个并不是100%可靠的网络上,所以上述的情况总有发生,因此我们不能将偶发的瞬时异常等同于系统“不可用”(避免以偏概全)。甚至,一旦服务A的启动预热过程耗时过长,问题会更严重,大量请求会阻塞,产生级联影响,导致整个系统卡慢。举个夸张的例子来形容:一幢楼的下水管是从最高楼直通到最低楼的,这个时候如果你家楼下的管道口堵住了,那么所有楼上的污水就会倒灌到你家。切断联系要尽可能的“果断”,既然已经认定了对方“不可用”,那么索性就默认“失败”,避免做无用功,也顺带能缓解对方的压力。
2026-07-22 16:30:33
176
原创 GitZip Pro 源码解析:一个 GitHub 文件/文件夹下载扩展是如何工作的(一)整体架构与扩展入口
结合后面的源码可以看到,GitHub 页面增强发生在 content.js,GitHub API 请求发生在 downloader.js,而授权相关能力会牵涉到 options 页面中的 token 配置逻辑。最后才是 content.js,它负责把前面的能力接到 GitHub 页面上。options.js 是一个体量很大的文件,它承担了 GitZip Pro 的配置中心角色:主题、语言、按钮位置、文件大小显示、双击选择、token 模式、命名规则、忽略规则、下载历史、统计面板和首次欢迎弹窗都在这里。
2026-07-21 15:49:35
184
原创 OPPO R9st 获取Root权限
成功安装后,我们的手机在设备管理器中会由“其他设备”中的“QUSB_BULK”变成“端口(COM和LPT)”中的“Qualcomm HS-USB QDLoader 9008(COM3)”,名称中的“COM3”会根据每个人的电脑情况进行随机设置的,我这里的是“COM3”,可能你们的不一样,“COM4”或者“COM5”这样,这是正常的,这个编号我们可以留意一下,待会儿可以用到。解压“OPPO R9st 线刷包”,找到“R9st_11_A.04_170414.rar”,右键,选择“解压到当前文件夹”。
2026-07-21 15:48:46
247
原创 能用 Native AOT 吗?——TDS 项目的实战尝试
实际上,当直接试对 winform 项目执行 dotnet publish 开启 AOT 时,SDK 会抛出一个 NETSDK1175 错误,提示语是"Windows Forms is not supported or recommended with trimming enabled". 但这个措辞在社区里有不少争议,有人提了 PR 要求改成偏向"not recommended"而非"not supported", 因为在一些场景下,winform项目修改修改是能够AOT发布的。//挂载资源到控件中。
2026-07-19 20:25:59
270
原创 给 Claude Code 布置任务,它为什么总是理解错——我找到原因了
你的任务描述,可能少了这些东西有个反直觉的现象:越是有经验的工程师,越容易在给 Coding Agent 布置任务时出问题。原因是:我们已经习惯了隐式传递信息。和同事沟通时,「加个用户登录功能」这几个字背后有大量你们共享的上下文——你们用同一套技术栈,你知道他知道代码规范,他知道数据库的表结构……这些东西你不用说,他自然懂。但 Coding Agent 不是你的同事,它在没有你告诉它的情况下,对这些上下文一无所知。
2026-07-19 20:24:37
176
原创 第一关:蘑菇王国的入口
负一世界(Minus World):选错管道会进入传说中的「-1 关」水下世界,低重力漂浮、四只Blooper鱼追踪你、气泡粒子特效,致敬原版最著名的 bug。像素全手绘:马里奥的红帽子、胡子、背带裤,栗宝宝的呆萌眼神,金币的旋转光泽——全部用 fillRect 一格一格画出来,4 帧跑动动画 + 朝向翻转。「World 1-2 地下关卡,150 列,蓝色砖块配色,天花板砖块层贯穿,col 128-129 放出口管道,按 DOWN 进入地面段」地下配色:蓝色砖块、蓝色管道、蓝色地面,天花板砖块层贯穿全程。
2026-07-18 16:34:28
169
原创 第一关:蘑菇王国的入口
负一世界(Minus World):选错管道会进入传说中的「-1 关」水下世界,低重力漂浮、四只Blooper鱼追踪你、气泡粒子特效,致敬原版最著名的 bug。像素全手绘:马里奥的红帽子、胡子、背带裤,栗宝宝的呆萌眼神,金币的旋转光泽——全部用 fillRect 一格一格画出来,4 帧跑动动画 + 朝向翻转。「World 1-2 地下关卡,150 列,蓝色砖块配色,天花板砖块层贯穿,col 128-129 放出口管道,按 DOWN 进入地面段」地下配色:蓝色砖块、蓝色管道、蓝色地面,天花板砖块层贯穿全程。
2026-07-18 16:33:49
358
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅