- 博客(25)
- 收藏
- 关注
原创 HTML5版3D实验室系列【二】----摄像机、投影、3D旋转以及缩放(演示很多,请自备瓜子眼药水··)
今天咱们来给这毛坯房装上“摄像机”、“投影仪”,再教它“扭秧歌”和“变焦”。放心,代码不多,但视觉效果绝对让你瞪大眼睛,建议备好瓜子可乐,我们边吃边看。### 1. 摄像机:原来我们一直站在原点偷看你有没有想过,我们之前画的立方体,为什么看起来是“正对着”我们的?但玩过《星际公民》的朋友都知道,欧拉角会遇到“万向锁”——两个轴重合后,丢失一个自由度,飞船会像喝醉了一样乱转。### 2. 投影:从3D到2D的“魔法压缩”我们生活在3D世界,但屏幕是2D的。掌握了这些,你已经能搭建一个“可逛”的3D场景了。
2026-08-05 17:39:32
184
原创 C# 温故而知新:Stream篇(二)
## 4. Stream 组合:管道模式现实场景中,我们经常需要将多个流串联起来,比如:从网络流读取压缩数据 → 解压流 → 解密流 → 最终得到明文。但生产环境中的流处理远不止“读字节、写字节”这么简单——性能、异步、缓冲、编码、以及流的组合使用,才是真正影响系统稳定性和响应速度的关键。这在桌面小程序里没问题,但在 Web API 或高并发服务中,同步调用会占用线程池线程,导致吞吐量急剧下降。的默认值,但如果你手动指定了编码,它会优先用你指定的编码,除非文件有 BOM 才覆盖。,但不会保留换行符本身。
2026-08-04 17:22:51
212
原创 ASP.NET的路由系统:路由映射
csharp// 自定义博客路由app.MapControllerRoute( name: "blog", pattern: "blog/{year}/{month}", defaults: new { controller = "Blog", action = "Archive" }, constraints: new { year = @"\d{4}", // 年份必须是4位数字 month = @"\d{1,2}" // 月份可以是1-2位数字 });
2026-08-04 17:21:39
211
原创 OpenCode 对接实践:从独立进程到共享 Runtime 的架构演进
经过多轮迭代,我们最终演进到共享 Runtime 架构,即在宿主进程内直接加载 OpenCode 的核心引擎,实现零拷贝的数据交换和实时响应。更重要的是,在共享 Runtime 中,我们可以实现“实时增量补全”——当用户敲击键盘时,OpenCode 可以直接访问按键事件流,而不需要主应用先保存文件再触发请求。更关键的是,OpenCode 无法利用主应用已有的语法树或符号索引,导致智能度下降。:例如,如果主应用已经加载了项目索引,独立进程无法直接访问,必须重新构建或通过 IPC 复制,导致内存浪费。
2026-07-31 19:51:28
161
原创 十分钟学习 TypeScript
typescript// 定义接口interface Person { name: string;email?: string;// 可选属性 readonly id: number;// 只读属性}// 实现接口let user: Person = { name: "王五", age: 28, id: 1001};// 尝试修改只读属性会报错// user.id = 1002;
2026-07-30 19:04:08
195
原创 PortSwigger SQL注入LAB7 & LAB8 & LAB9
标签内的数据- 注意列数匹配:LAB9需要3个NULL字段## 四、三个LAB的对比总结| LAB编号 | 注入类型 | 核心技巧 | 适用场景 ||---------|---------|---------|---------|| LAB7 | 布尔盲注 | 页面响应差异 | 有可见反馈但无回显数据 || LAB8 | 时间盲注 | SLEEP函数延迟 | 无任何可见反馈 || LAB9 | 联合查询/错误注入 | UNION SELECT + 错误信息 | 有回显字段或错误提示 |
2026-07-30 19:03:01
141
原创 别只盯着GitBook了!这个文档神器让你的笔记秒变网站
主题,你不仅能将Markdown笔记秒变静态网站,还能实现实时预览、自定义主题、集成搜索等高级功能,而且完全免费、开源,无需注册任何账号。相比之下,MkDocs基于Python,轻量、灵活、易上手,而且拥有丰富的插件生态。更重要的是,它生成的静态网站可以直接部署到GitHub Pages、Netlify或Vercel上,无需后端服务器。但时代在变,工具也在进化。运行这个脚本后,它会自动扫描项目中的Python文件,提取函数和类的信息,并生成对应的Markdown文档,放在。,你会看到一个默认的文档网站。
2026-07-28 20:13:01
207
原创 别把 Product Hunt 当成冷启动:独立开发者真正要找的不是流量,而是对的人
在这里,真正重要的不是那几万个眼球,而是那少数几个“对的人”——那些愿意给你反馈、愿意试用你的产品、甚至愿意和你合作的人。这篇文章将带你从基础概念讲起,逐步深入,最终教你如何用代码和策略,在 Product Hunt 上找到你的用户,而不是迷失在流量中。一个简单的“赞”或“评论”背后,可能只是五分钟的好奇心,而不是真正的需求。### 从基础概念讲起:用代码理解“筛选”假设你有一个产品列表,你需要从一堆访问者中筛选出“对的人”——那些停留超过 30 秒、点击了至少两个页面、并且留下了评论的用户。
2026-07-28 20:10:36
195
原创 WebSocket 快速入门教程(附示例源码)
库,基于 asyncio 异步编程- 浏览器端使用原生 WebSocket API,简单直接- 连接管理、错误处理、资源清理是开发中的重点- 广播功能通过维护客户端集合实现通过本文的代码示例,你已经掌握了 WebSocket 的基本使用方法。循环持续接收消息- 对收到的消息进行大写转换后回复- 异常处理确保连接关闭时能正确清理## 客户端实现(JavaScript + HTML)现在创建一个简单的 Web 页面作为客户端,通过浏览器原生 WebSocket API 与服务端通信。:- 使用浏览器原生。
2026-07-27 19:33:58
238
原创 AI 时代的设备所见即用
这不仅是技术范式的转移,更意味着智能设备能够通过感知环境、理解用户意图,自动调用最优的硬件和软件资源,实现无缝的交互体验。## 总结“设备所见即用”是AI时代人机交互的进化方向,它通过端侧AI模型实现环境感知与意图推理,并借助动态资源调度器完成零配置连接。- 实际应用中,需要针对特定设备(如打印机、音箱)微调模型,并使用更高效的推理引擎(如TensorFlow Lite)。未来,随着边缘AI芯片性能和能效比的提升,这一范式将渗透到智能家居、工业自动化等更多领域,真正实现“设备即服务”的愿景。
2026-07-27 19:32:43
226
原创 别再纠结 24 万星 Superpowers 还是 5.8 万星 OpenSpec,有人把他们融合成一个工作流在 Github 开源
在 AI 开源社区的喧嚣中,Superpowers(24 万+ Star)和 OpenSpec(5.8 万+ Star)就像两位“武林盟主”——前者擅长多模态任务编排,后者专注结构化数据智能提取。工作流中,Superpowers 的 Agent 负责调用多模态模型收集原始信息,OpenSpec 的 Spec 引擎负责将这些信息翻译成严格的结构化输出。:比如直接从图片中提取表格时,OpenSpec 无法原生处理图像中的结构化区域——这需要将 Superpowers 的视觉分割结果作为 Schema 的输入。
2026-07-23 18:58:33
153
原创 15天学会AI应用开发(十二)从PDF、WORD、网页构建RAG
在AI应用开发中,RAG(检索增强生成)是一种将外部知识库与语言模型结合的技术,使模型能够基于用户提供的文档(如PDF、Word、网页)生成更准确、上下文相关的回答。## 一、RAG的核心原理与文档处理挑战RAG系统的核心流程包括:文档加载(Document Loading)-> 文本分割(Text Splitting)-> 向量嵌入(Embedding)-> 向量存储(Vector Store)-> 检索(Retrieval)-> 生成(Generation)。使用本地模型,无需联网,适合隐私场景。
2026-07-23 18:57:23
152
原创 深度工作:充分使用每一份脑力
望着平静的湖面陷入沉思:最近要完成的任务,有几种方案,优劣如何,资源是否能到位,会遇到的问题和解决方案,哪个妹子比较好看(又乱入了),进一步地,制定关键节点,任务产出和产生的影响。然而在强手如林的竞争环境下,要想出人头地,就需要对业务,产品和算法有一穿到底的体系化理解,以及深度的工作,主动地行动。更何况,由于人力成本越来越高,AI发展日新月异,速度快成本低,且几乎不会出错,未来大量对脑力要求不高的工作将会被AI取代,尤其入门级的会计,程序员,美工等办公室白领,反而对需要与环境复杂交互的服务业冲击较小。
2026-07-22 16:53:05
199
原创 漫话JavaScript与异步·第三话——Generator:化异步为同步
首先,最后一行it.next()使得Generator内部的代码从头开始执行,执行到yield语句时,暂停,此时可以把yield想象成return,Generator的栈帧需要被弹出,会先计算yield右边的表达式,即执行request函数调用,以获得用于返回给上一级栈帧的值。ES6引入的新特性中,Generator可能是其中最强大也最难理解的之一,即使看了阮一峰老师列举的大量示例代码,知道了它的全部API,也仍是不得要领,这是因为Generator的行为方式突破了我们所熟知的JS运行规则。
2026-07-22 16:52:11
139
原创 首先对比Xml反序列化
/ 第一个User节点的属性转化为实体User的属性,User节点的文本转化为实体User的Name。同一个类可以配置多个解析对象用来把不同格式的Xml转化为相同类型的对象。映射Xml结构 支持属性、子节点和当前节点 支持属性、子节点和当前节点。// Id、Name和Age节点转化为实体User的属性。// 第一个User节点的属性转化为实体User的属性。映射对象 只映射属性 映射属性、字段和构造函数参数。映射的成员可以是属性也可以是字段和构造函数的参数。
2026-07-21 16:10:05
204
原创 推荐系统:从“推什么”到“怎么选”
顺着“做成一个正经系统”的惯性往复杂走(拆多步、加 pipeline、分段 prompt),结果反而退化了:能让用户一眼看清差异的多维详情没了,刚提炼出来的"品类—核心维度"也没进最终输出,只剩卡片上几个标签加一句建议。第二,这一节探的是“上限”——但上限不等于能直接用:这么长、这么重,用户要的是决策,不是一篇游戏论文。它们的类型标签其实是分开的——Roguelike、RPG、弹幕射击——可再往下看玩法,刷关、随机构筑、成长、装备、Build 高度重叠,上手却是三种完全不同的手感。
2026-07-21 16:08:09
236
原创 我们试过三种办法
规则修改可以走 PR,可以 Git blame,不再依赖某个人脑子里的 prompt。OCR 不只是把 diff 丢给模型,而是会按需读取相关代码、类型定义、调用关系,让模型拥有比单纯 diff 更多的信息。于是,我们开始尝试阿里的AI驱动的代码审查 CLI 工具—— Open Code Review(OCR)。Reviewer 已经看过 ESLint,再看一遍 AI 的重复提醒,没有任何增益。准确率最高,但吞吐始终上不去,而且 reviewer 很容易疲劳。真正用下来以后发现,它更多解决的是工程化问题。
2026-07-19 20:55:06
157
原创 【本文核心解决什么问题?】
这篇文章不会让你变成GraphQL的“原教旨主义者”。咱们的目标很纯粹:用最快的速度,搞懂这个“让前端舒服、让后端解脱”的玩意儿到底是什么,怎么在 FastAPI 里把它玩起来,以及那些官方文档里没写的、我自己摔得鼻青脸肿才摸清的坑。🗺️ 【主要内容脉络】🔹 GraphQL到底是什么?为啥它不是“银弹”却很好用?🔹 FastAPI + GraphQL 的神仙组合环境怎么搭?🔹 从写第一行查询到跑通增删改查的实战代码。🔹 那些让你在深夜抓狂的跨域、性能、N+1查询问题,怎么优雅解决?🤔 【第一部
2026-07-19 20:54:15
222
原创 覆盖率看起来很高但上线还是出Bug?
AI生成单测的工具链:今天能落地的三条路先说工具。市面上专注于单测生成的AI工具已经不少,但真正能进工程流水线的,目前稳定好用的主要是三条路:Claude Code(命令行Agent)Claude Code可以以整个代码目录为上下文,批量扫描未覆盖的方法并生成测试。命令行调用,适合集成进CI流程。最大的优势是上下文窗口大,能理解跨文件的依赖关系,生成的测试Mock策略相对合理。
2026-07-18 20:20:41
184
原创 LangChain与LangGraph核心差异与落地选型全解析
配合原生的 Checkpoint 检查点机制,框架会自动记录每一步的运行快照,轻松实现流程暂停、人工介入修改、异常自动重试和断点续跑等高级能力,完美适配生产级长流程任务,极大降低了复杂场景的开发与维护成本。直白地说,LangChain 解决的是「快速落地有无问题」,主打高效、轻量化和低门槛。它的底层执行逻辑依托链式 Pipeline、线性 Workflow 和基础 DAG,是一种典型的「单向流水线」模式:流程从上到下依次执行,节点跑完即结束,没有回头迭代的能力,天生不支持自主循环、动态分支和流程回溯。
2026-07-18 20:19:21
302
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅