- 博客(38)
- 资源 (1)
- 收藏
- 关注
原创 从 prototype 到 V8,看懂 JavaScript 原型链
从一个实例属性查找题出发,讲清 prototype、[[Prototype]]、constructor、new、属性查找、class 和 instanceof,再结合 ECMAScript 规范与 V8 源码理解浏览器里原型链如何工作。
2026-06-23 16:03:44
368
原创 从v8源码和react深入浅出理解 JavaScript 作用域链与闭包
从一道作用域输出题出发,理解 JavaScript 的词法作用域、词法环境、V8 Context、闭包保存变量的原因,再结合 React Hooks 解释 stale closure、useCallback、useRef 和 useEffectEvent。
2026-06-22 16:22:50
452
原创 深入浅出 call、apply、bind
从一道 this 输出题出发,重新理解 call、apply、bind 的真实作用,再结合 ECMAScript 规范和 V8 源码解释 thisArg、类数组参数、Bound Function、TypeScript 函数类型与手写实现边界。
2026-06-18 13:35:35
218
原创 深入理解 JavaScript 之 new 原理及模拟实现
从构造函数的基础用法出发,深入理解 JavaScript new 运算符在对象创建、原型链接、this 绑定和返回值处理上的完整过程,并手写一个更接近真实行为的模拟实现。
2026-06-17 15:17:52
160
原创 深入浅出理解浏览器事件循环:从一道输出题讲到 Chrome 源码
从日常代码出发,深入浅出理解浏览器事件循环,再结合 Chromium/Blink/V8 源码解释 task、microtask、HTML 解析、requestAnimationFrame 和渲染之间如何互相让路。
2026-06-12 15:15:24
659
原创 AI 写代码越快,程序员越要知道自己到底值钱在哪
AI 编程真正昂贵的不是某一次生成代码,而是长期运行的 Token、上下文、工具调用、重试和验收成本。程序员未来值钱的地方,不是比 AI 更快敲代码,而是能定义问题、控制成本、设计边界、验证结果,并为系统长期后果负责。
2026-05-29 13:27:41
375
原创 本地 AI 编码助手从 0 配起来:先选模型,再接 Ollama、VS Code、Claude Code 和 Codex
本地 AI 编码助手不是先下载最大模型,而是先用 CanIRun.ai 看硬件边界,再用 Ollama 把模型、上下文和 API 跑稳,最后用配置文件接进 VS Code、Claude Code 和 Codex。
2026-05-21 15:03:27
641
原创 完全开源、本地 SQLite 管理一切:我写了一个桌面邮件客户端 OneMail
添加 Gmail、Outlook、QQ、163 这类邮箱时,通常需要先在服务商后台打开 IMAP,再按服务商要求生成应用密码或授权码。工作可能在 Outlook,个人可能在 Gmail,国内服务还会挂 QQ 邮箱、163 邮箱,项目里再来几个自定义域名 IMAP。你在意远程图片和邮件隐私;写信窗口贴近 Gmail:浮层窗口,顶部可以展开或还原,收件人行可以按需展开抄送和密送,底部有发送、格式栏、附件、链接、保存草稿和丢弃草稿。数据库就是一个本地 SQLite,导出、保存、换机器导入,路径清楚,边界也清楚。
2026-05-19 12:13:11
633
原创 Nginx CVE‑2026‑42945:隐藏18年高危漏洞被曝光(附解决方案)
CVE-2026-42945 不是简单的低版本问题,而是 ngx_http_rewrite_module 在特定 rewrite 组合下的堆溢出。本文记录触发条件、风险复现思路、Debian 包版本坑,以及升级到 nginx 官方 mainline 1.31.x 的完整修复过程。
2026-05-15 10:51:39
1595
原创 邮件中点击“加载图片”,你的IP地址已经被泄漏
邮件里那句“加载图片”看起来只是补全内容,实际会触发一次对外 HTTP 请求。只要请求打到发件人控制的服务器,对方就可能记录你的 IP、打开时间、User-Agent、语言环境、Referer、唯一追踪 ID,甚至把这次请求绑定回具体收件人
2026-05-14 16:02:48
411
原创 多对象存储多账号太分散,我写了一个单 SQLite 的统一上传入口
最近整理公司对象存储上传流程,真正麻烦的不是上传文件,而是多家对象存储、多账号、多 bucket 分散管理。于是顺手写了 OneFile,用一个单容器、单 SQLite 的后台接住 S3、R2、B2、OCI、OSS、COS。
2026-05-07 19:51:02
269
原创 程序员做副业最容易亏的地方:把写代码当成全部
程序员做副业最容易亏的,不是技术不够,而是把副业当成一个工程项目来做:只算写代码的时间,不算需求、分发、交付和维护这几笔账。
2026-05-03 06:23:31
380
原创 产品说“这个需求很简单”的时候,开发已经开始防御性微笑
一个“给新生互相认识用的小程序”,在群里听起来只是登录、看同学、聊聊天、自动加群。真正紧张的不是某一个开发,而是整个研发侧都会意识到:每一句“很简单”背后都有没说清楚的边界、责任和异常场景。
2026-04-28 11:33:50
356
原创 Next.js SSR 为什么对 SEO 更友好:从原理、实现到页面选择一次讲明白
很多人把“页面能打开”和“搜索引擎能高效抓到内容”当成一回事。可在 Next.js App Router 项目里,真正该想明白的是:哪些内容该预渲染,哪些内容该按缓存周期刷新,哪些内容才应该留到请求时处理。这篇把 Next.js SSR 对 SEO 的帮助、边界和主流写法一次讲清楚。
2026-04-22 10:34:56
386
原创 网络七层到底怎么落到一次前端请求上:从浏览器到网卡,再到远端服务器
把一次 `fetch` 沿着时间轴拆开,浏览器缓存、DNS、ARP、TCP、TLS、IP、以太网、网卡、路由器、NAT、负载均衡和服务端内核分别在什么时候出手,七层模型怎么一层层落到实物上。
2026-04-20 21:06:30
536
原创 CSS Houdini 到底能不能用:从浏览器渲染原理、兼容性到实际场景,一次讲明白
CSS Houdini 当年被很多人讲成“CSS 超能力”,可真到项目里,问题反而更现实:它到底解决了什么旧问题,为什么它比传统 polyfill 更靠近浏览器渲染管线,哪些 API 现在真的能用,哪些还只是适合看 demo。这篇我会把 Houdini 放回 style、layout、paint、composite 这条链里讲,也会顺手把一件事讲清楚:今天谈它,离不开兼容性判断,更离不开渐进增强。
2026-04-19 13:20:20
254
原创 本地明明好好的,怎么一上线就跨域了?把同源策略、前后端分工和 CORS 一次讲明白
很多跨域问题,不是代码上线才突然坏掉,而是你本地开发时被 dev server 和代理暂时“护住了”。真想把这事搞明白,第一步不是搜 React、Vue、Next.js 跨域怎么配,而是先用大白话把浏览器同源策略想通:它到底在防什么、没有它会怎样、前后端各自该怎么处理。
2026-04-18 15:06:06
270
原创 大文件上传最难的,不是切片,是认文件:秒传、续传和文件指纹怎么做
很多教程在“前端切片、后端合并”这一步就收了,可真正难的问题往往出在第二次上传和页面刷新的时候:能不能秒传,能不能断点续传,刷新后怎么恢复,超大文件到底怎么“认”。这篇先用 Node.js 把一套自建大文件上传方案顺一遍,再把 `resumeKey`、`fileFingerprint` 和 `fullHash` 这几层标识讲透,最后再对照 Amazon S3 看它为什么会成为事实上的行业标准。
2026-04-18 14:52:31
378
原创 m3u8 视频怎么下载?为什么 B 站只给你一个 blob:把 HLS、DASH、MSE 这条前端链路讲透
真把“怎么下载 m3u8 视频”讲深,第一步不是写脚本,而是先承认不是所有网页视频都在用 `m3u8`。我在 2026-04-17 抓了一条 B 站公开页,页面里给出的已经是 `dash.video[]` 和 `dash.audio[]`,再加 `SegmentBase.Initialization`、`indexRange` 和签名 URL,最后播放器才通过 `MediaSource` 生成一个 `blob:` 地址挂到 `<video>` 上。也就是说,`blob:` 往往是最后一步,不是第一步。
2026-04-17 18:46:19
783
原创 设计模式和管理能力,才是 AI Vibe Coding 时代真正的自救:AI 不会提醒你系统正在散架
AI Vibe Coding 最大的错觉,是把“能很快写出来”误当成“系统仍然可控”。这篇不复读 23 个模式,而是挑 8 个最适合 AI 编程场景的设计模式,说明它们如何帮你守住边界、变化点和协作关系。再往下一层,真正稀缺的是管理复杂度的能力,而这恰好最不会被 AI 主动提醒。
2026-04-17 13:45:48
395
原创 前端难点在哪?
如果只拿一个静态页面来定义前端,那前端当然显得很简单。可一旦你把真实项目里的工程化、运行时、复杂交互、复杂渲染、跨平台和协作成本都摆出来,你会发现它根本不是“把页面做出来”这么一句话能概括的。前端不是把设计稿翻译成 HTML。前端是在不同宿主环境里,把业务、交互、渲染和工程约束组织成一个可长期运行的用户界面系统。这也是为什么它总被低估。因为它最复杂的部分,往往不在你第一眼看见的地方。如果你现在正准备学前端,我会很直接地建议一句:别只盯着框架和页面。尽早把工程化、Node.js。
2026-04-16 15:24:30
428
原创 面试官:如何让AI稳定回复JSON?
这题真正难的,不是说一句“请严格返回 JSON”,而是把大模型为什么天然不稳定、ChatGPT 的 `json_schema` 和 `strict: true` 底层怎么做,以及线上系统该怎么兜底,顺着一轮面试追问讲清楚。
2026-04-16 09:55:01
410
原创 前端工程化到底是什么:会写 HTML CSS JavaScript,为什么一进项目还是一脸懵
你明明会写 HTML、CSS、JavaScript,自己做几个页面也能跑,可一进真实项目就先被 `package.json`、Vite、TypeScript、`.env`、CI/CD 砸得发懵。前端工程化不是背工具名,而是学会用模块化、构建、环境管理、规范和自动化,把“能写页面”变成“能接项目、能协作、能稳定交付”。
2026-04-15 19:45:35
399
原创 多智能体协作,不是多开几个 Agent:从中介者模式看 OpenClaw 和 Hermes Agent
多智能体不是多开几个 Agent,而是把软件行业过去二十年已经踩明白的网关、工作流、监督树和控制回路重新搬回 LLM 时代。结合 OpenClaw 和 Hermes Agent 这两条路线,这篇文章从中介者模式、业务架构演进和伪代码三个层面,解释多智能体真正的竞争点为什么会落在编排、隔离、上下文治理和失败恢复上。
2026-04-15 10:34:28
1785
原创 Axios 投毒复盘:攻击者只改了一个 package.json,为什么整台开发机都要按失陷处理
复盘 axios@1.14.1 和 0.30.4 两个恶意版本如何借助 plain-crypto-js@4.2.1 的 postinstall 下发跨平台 RAT,以及为什么这次事件应该按整台开发机失陷来处置。
2026-04-14 09:49:45
427
原创 OpenClaw 教程:新 Mac 从 0 配到国产 AI、飞书微信和无人值守
这篇默认按一台全新的 macOS 机器来写,顺着更真实的上手顺序往下走:先装 OpenClaw、跑通 Gateway,再接国产 AI 和飞书微信,然后把基础配置、记忆、ClawHub Skills、配置目录和无人值守一步步配顺。
2026-04-13 18:19:32
545
原创 一句 hi,为什么让 Codex 吃掉 14770 个输入 token:逐字段拆解一次真实请求
本文揭示了一个看似简单的AI交互背后隐藏的复杂机制。当用户仅输入"hi"时,模型实际接收的是一整套包含14667字符的指令集、12个工具定义和详细环境上下文,总请求包达66KB。分析显示,大部分计算资源消耗在模型初始化、环境加载和工具准备阶段,而非处理用户输入本身。这种代理模式的工作机制与普通聊天截然不同,其核心成本来源于系统初始化而非具体交互内容。
2026-04-10 18:36:49
643
原创 一周 AI 产品速览:从模型升级到落地场景的新观察
本文提出一个系统化观察AI产品动态的框架,建议每周从三个层面梳理:1)模型层关注能力升级、成本优化和多模态扩展;2)应用层聚焦场景化工具和现有工作流整合;3)工作流层追踪全流程AI改造。作者强调实践优于收藏,建议每周至少深度试用1-2个工具,将有效用法固化为可复用的模板。对团队应用,主张从小场景试点开始,建立可衡量的评估指标,持续优化人机分工边界。通过这种结构化观察方法,既能把握快速迭代的AI发展,又能将技术转化为实际生产力。
2026-04-08 19:10:49
401
原创 看完claude code源码 这几条少烧token的方法你一定要知道
本文分析了Claude Code会话中token消耗高的主要原因,并提供了优化建议。核心问题在于每轮请求都会重复携带系统提示、工具描述、历史消息等上下文内容。源码显示,动态header切换可能消耗5-7万token,单个工具结果限制5万字符,大日志会持续消耗token。 主要优化建议: 避免长会话切换不同任务,任务变更时开新线程 精选日志内容,避免整段粘贴 按需使用工具和技能,避免加载无用功能 合理使用多agent,注意隔离噪音 控制记忆文件大小,按需分层使用 及时分拆过长的会话 未来可改进方向包括toke
2026-04-04 17:03:26
608
原创 从 Apifox CDN 投毒事件,看 AI 全栈时代的开发工具供应链风险
Apifox供应链攻击事件揭示了AI全栈时代的安全隐患。攻击者通过篡改Apifox官方CDN入口文件,在合法事件追踪脚本中植入恶意代码,利用Electron的高权限环境实现主机级入侵。攻击链包含四阶段:CDN投毒、环境探测与身份补全、分层载荷下载、持续数据窃取。该事件凸显了开发者终端作为"权限聚合点"的风险——随着研发链路集中,单点突破可能导致整个研发环境沦陷。安全边界重建速度滞后于职责合并速度,使这类供应链攻击在AI全栈时代更具破坏性。
2026-04-03 10:22:22
369
原创 mac包管理器
NPM本文对mac上npm开发的一些使用和配置分享,假定阅读者已经有一定shell基础和前端工作流的知识。Pack 管理器 brew安装:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"命令注释brew –hel...
2019-07-29 16:25:16
1243
原创 域名添加ssl证书 https
序言环境:CentOS Linux release 7.5.1804 (Core)阿里云 服务器正文进入阿里云后台 进入管理控制台>域名点击蓝色域名进入下面页面免费开启SSL证书>选择证书>填写要申请的前缀(例如: api 证书:api.XXX.com)4. 下载证书选择服务器类型下载完是zip文件 文件名的三段代表 id_域名_服务器 重命名文件和文...
2019-04-15 10:44:28
6502
原创 动态加载script 加载完成回调事件
序言网页中有很多的第三方插件都是通过直接引入script库的方式进行加载,由于加载脚本需要时间,如果script还没有加载完成,便使用库中的对象就会有错误。解决方案获取script DOM 对象绑定onload事件异步回调总体的思路是这样子 asyncComplete() { return new Promise((reject, resole) => {...
2019-02-27 10:41:20
7061
原创 小技巧:使用命令行打开vscode 以及其他工具
vscode手动打开vscodecommand + shift + p 打开命令面板(或者点击菜单栏 查看>命令面板)输入shell(选择"install code command in PATH")打开终端 进入需要用IDE打开的文件夹 输入"code ."sublime打开终端输入命令行ln -s "/Applications/Sublime Text.app/C...
2018-11-30 14:35:04
17114
1
针式打印机使用指南
2018-12-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅