- 博客(369)
- 问答 (10)
- 收藏
- 关注
原创 记一次 CI 构建事故:vant 把 `workspace:` 协议发布到了 npm,Jenkins 直接崩了
<think>我们根据内容生成摘要,不超过150字。需要概括事故原因、解决方案和教训。注意简洁。</think>Jenkins 构建因 npm 解析到 vant@4.10.1 携带的 workspace: 协议而报错,该版本满足 ^4.10.0 范围且无 lock 文件。解决方案:精确锁定版本为 4.10.0,等待上游修复,并统一使用 pnpm 及锁文件。教训:版本声明与锁文件缺一不可,CI 须与本地包管理器一致。
2026-08-31 13:58:50
280
原创 Linux SSH 使用与免密登录全面指南
本文讲 SSH 免密登录:基于非对称加密,`ssh-keygen -t ed25519` 生成密钥,`ssh-copy-id` 推送公钥,配 `~/.ssh/config` 用别名直连;并给出改端口、禁 root、关密码登录等加固项及 `.ssh` 权限(700/600)排查要点。
2026-08-31 08:40:49
324
原创 Linux 防火墙基础
本文讲 Linux 防火墙:底层均为内核 Netfilter「四表五链」,对比静态 `iptables` 与动态 `firewalld`,演示开放/封禁端口、`--permanent` 加 `--reload` 生效、富规则与端口转发,并提醒远程配置前先放行 22 端口。
2026-08-31 08:39:48
129
原创 Linux 网络常用命令
本文按连通性、端口、路由抓包、HTTP 调试四个维度,介绍 `ping`、`dig`、`ss`、`nc`、`traceroute`、`tcpdump`、`curl` 等 Linux 网络排查命令及对应场景。
2026-08-31 08:38:50
374
原创 Linux 系统日志查看
本文讲 Linux 双轨日志体系:`/var/log` 明文日志(syslog、auth.log、dmesg)配合 `tail -f`、`grep`、`zgrep` 排查,`journalctl` 按服务、时间、级别查 systemd 日志;实战演示 SSH 爆破统计与 OOM 排查,并介绍 `logrotate` 轮转与 `journalctl --vacuum` 清理。
2026-08-31 08:37:16
209
原创 Linux 磁盘与文件系统管理
本文梳理 Linux 磁盘管理全链路:物理盘→分区→格式化→挂载,介绍设备命名、MBR/GPT 与 ext4/xfs;监控用 `df -hT`、`df -i`、`du`、`lsblk`;实战演示新盘经 `fdisk`、`mkfs`、`mount` 挂载,并以 UUID 写入 `/etc/fstab` 后用 `mount -a` 校验;最后解答「文件已删空间未释放」由进程占用句柄所致,用 `lsof | grep deleted` 排查。
2026-08-31 08:35:51
384
原创 Linux 定时任务:cron 与 crontab
本文系统讲解了 Linux 自动化运维的核心机制——cron 定时任务,先阐明后台守护进程 `crond` 每分钟轮询与通过 `crontab` 命令管理任务列表(`-e` 编辑、`-l` 查看、`-r` 高危清空)的基本方式,再详解由"分、时、日、月、周"五字段构成的 5 颗星表达式及 `* / , -` 等符号,并给出每分钟/每 5 分钟/每天凌晨/工作日整点等高频实用案例;最后针对生产环境两大常见坑点——因环境变量缺失导致命令找不到、输出未重定向造成邮件堆积或静默失败——给出"显式指定 `PATH`、
2026-08-30 08:24:34
343
原创 Linux 系统服务管理:systemd 与 systemct
本文系统讲解了现代 Linux 默认的 systemd 系统与服务管理器及其核心工具 `systemctl`,首先阐明 systemd 作为 PID 1 的初始化进程与 Unit(尤其是 `.service`)概念,随后梳理了 start/stop/restart/reload/status/enable 等常用管理命令,并详解 `systemctl status` 诊断输出(`Loaded`/`Active`/`Main PID` 等字段)与 `journalctl -u/-f/-b` 日志查看方法;最后
2026-08-30 08:22:17
154
原创 Linux 进程管理:ps、top 与 kill
本文系统讲解了 Linux 进程管理的三大核心命令——`ps`、`top` 与 `kill`,从进程基础概念(PID、PPID 及 R/S/Z 状态)切入,分别介绍了 `ps aux`/`ps -ef` 捕获静态快照以结合 `grep` 定位服务与 `top` 实时动态监控(含 `load average`、`%Cpu` 的 `wa` 磁盘瓶颈判断及 `P`/`M`/`k` 等交互快捷键),并详解了 `kill`/`killall`/`pkill` 的信号机制(默认 `SIGTERM(15)` 优雅停机、`
2026-08-30 08:20:01
207
原创 Linux 环境变量与软硬链接
本文从底层原理到实操命令,系统讲解了 Linux 中两个高频核心概念——环境变量与软硬链接:环境变量方面,剖析了 `PATH` 等核心变量如何决定命令的查找与运行,并演示了临时设置与通过 `~/.bashrc`、`/etc/profile` 永久配置的方法;链接方面,先回顾 Inode 机制,再对比硬链接(同一 Inode 的"别名",防误删但不可跨文件系统/目录)与软链接(独立 Inode 的"快捷方式",可跨文件系统、原文件删除后失效),结合 `ln -s` 命令验证与生产场景(多版本软件无缝切换、自定
2026-08-29 09:41:27
193
原创 Linux 包管理器使用(apt / yum)
本文系统讲解了 Linux 两大主流包管理器——Debian/Ubuntu 系的 `apt` 与 Red Hat/CentOS/Rocky 系的 `yum`/`dnf`,从软件源与依赖解析的核心逻辑出发,分别梳理了二者的常用命令(更新索引、安装、卸载、清理等)、国内镜像源替换与 EPEL 扩展源配置,并给出 apt 与 yum 的命令对照速查表及在 Ubuntu 和 Rocky Linux 上部署 Nginx 的生产实战案例,最后总结出"先 update 后 install""`remove` 与 `pur
2026-08-29 09:40:02
287
原创 Linux 文件权限与用户管理
需求场景推荐命令 / 权限值说明赋予脚本执行权限或chmod 755保证当前用户或所有人能够直接运行保护敏感配置文件/密钥防止敏感数据被其他人或组外成员读取修改网站静态资源归属让 Nginx/Apache 进程拥有对网页目录的访问权限解决 Permission denied排查ls -l查看当前身份对应的r/w/x权限优先通过chmod或chown精确赋权,**切忌盲目💡安全提示:不要给生产环境的文件随意使用chmod 777(这会让所有用户都具备读、写、执行权限)。
2026-08-29 09:37:27
185
原创 Linux 目录结构与基础命令
场景需求核心命令常用参数/组合示例我知道我在哪pwd我想去别的地方cdcd -(返回上一步) /cd ~(回家目录)我想看有什么lsls -lah我想建目录/文件mkdirtouch我想看日志tail我想找文件find我想搜内容grep熟练掌控 Linux 的第一步就是不再恐惧黑乎乎的命令行。建议在虚拟机或测试服务器中,顺着上面的实操案例亲自敲一遍命令,感受文件系统的树状流转!想了解更多?📖我的博客网站| 记录思考,分享干货🏡我的个人主页| 关于我、开源项目。
2026-08-28 11:03:09
264
原创 Linux 简介与常见发行版
- **Linux 内核(Kernel)**:由林纳斯·托瓦兹(Linus Torvalds)于 1991 年发起并开源。它是系统的底层核心,专门负责管理硬件资源(CPU、内存、磁盘、网络等)与进程调度。- **操作系统(GNU/Linux)**:只有内核是无法直接作为完整系统给用户使用的。将 Linux 内核与 GNU 项目的命令行工具(Shell、核心工具链)、包管理器及桌面环境打包在一起,才构成了可用的系统。
2026-08-28 11:00:28
340
原创 Pydantic 数据验证讲解
Pydantic 是 Python 中最流行的数据验证与设置管理库,深度结合类型注解,能自动做类型转换、数据校验、生成文档和序列化。它是 FastAPI 的核心依赖,也广泛应用于配置管理、API 接口、数据处理等场景。当前主流版本是 Pydantic v2(性能大幅提升,API 更清晰)。传统手动验证:使用 Pydantic 后:优点:三、基础模型(BaseModel)常用方法(Pydantic v2):常用约束参数:2. 模型级验证器()用于跨字段校验: 在验证前处理原始数据, 在字段验
2026-08-27 08:21:50
173
原创 Python 函数与装饰器入门
函数是 Python 中最核心的抽象工具之一,装饰器则是在函数基础上发展出来的强大语法糖。掌握这两部分,能让你写出更清晰、可复用、可扩展的代码。在 Python 中,函数可以像普通变量一样被传递、赋值、作为参数和返回值。:默认参数只计算一次,不要用可变对象(list、dict)作为默认值。内部函数可以记住并访问外部函数的变量,即使外部函数已经执行完毕。它用来在不修改原函数代码的情况下,增加额外功能。这是装饰器和很多高级用法的基础。直接写装饰器会丢失原函数的。| 记录思考,分享干货。| 关于我、开源项目。
2026-08-27 08:20:36
172
原创 Python requests 与 httpx 讲解
Python发送HTTP请求主要使用requests(同步)和httpx(支持同步/异步)两个库。requests简单易用,适合同步场景;httpx功能更现代,支持异步和HTTP/2,推荐新项目使用。两者API相似,但httpx通过AsyncClient提供异步支持,适合高并发场景。基本功能包括GET/POST请求、参数设置、会话管理、错误处理等。最佳实践建议使用Client/Session、设置超时、处理HTTP状态异常,异步场景直接使用httpx+asyncio。新项目优先选httpx,老项目可沿用re
2026-08-26 08:22:12
294
原创 Python SQLAlchemy 与数据库操作讲解
本文介绍了Python中强大的SQL工具包SQLAlchemy 2.0的核心用法。主要内容包括:SQLAlchemy支持ORM和Core两种风格,现代项目推荐使用2.0版本;核心概念如Engine、Session、Model的说明;安装方法和基本配置;模型定义和CRUD操作示例;关系查询技巧;在FastAPI中的集成方式;事务处理和异常管理;以及推荐使用Alembic进行数据库迁移。文章提供了大量代码示例,适合开发者快速上手SQLAlchemy 2.0的基本用法。
2026-08-26 08:21:21
337
原创 Python 面向对象基础讲解
面向对象编程(OOP)是把数据和操作数据的方法组织在一起的编程方式。Python 对面向对象的支持非常灵活,既有完整的 OOP 特性,也保留了函数式的简洁。
2026-08-25 08:27:42
214
原创 Python 异常处理讲解
当 Python 无法继续正常执行时,就会**抛出(raise)**一个异常。:除以 0ValueError:值不合适TypeError:类型不匹配:文件不存在KeyError:字典键不存在IndexError:列表索引越界open("不存在的文件.txt") # FileNotFoundError通过继承Exception"""余额不足异常"""super().__init__(f"余额不足:当前。
2026-08-25 08:26:39
161
原创 Python with 语句与上下文管理讲解
with 语句是 Python 用于资源管理的语法结构,能确保资源正确释放(如文件、锁等)。它通过上下文管理器协议(__enter__和__exit__方法)实现自动清理,即使发生异常也能保障资源关闭。开发者可通过类或@contextmanager装饰器自定义上下文管理器。标准库中的contextlib模块提供实用工具(如异常抑制、输出重定向等)。典型应用场景包括文件操作、数据库连接、线程锁管理等。最佳实践包括优先使用with管理资源、避免在上下文方法中编写复杂逻辑等,这种模式能显著提升代码健壮性和可读性。
2026-08-25 08:26:09
315
原创 nodejs - koa 框架基础入门
Koa 是由 Express 原班人马打造的新一代 Node.js Web 框架,定位是。它充分拥抱,通过洋葱模型让中间件的控制流更加清晰。
2026-08-24 15:34:18
200
原创 pnpm 原理解析:内容寻址存储 + 硬链接
pnpm通过独特的存储和链接机制解决了传统包管理工具的痛点。它采用内容寻址存储和硬链接技术,实现以下优势: 节省磁盘:相同文件全局只存一份,通过硬链接共享,避免重复复制。 安装更快:依赖解析后直接链接现有文件,减少下载和复制开销。 消除幽灵依赖:非扁平化结构严格隔离间接依赖,确保仅声明依赖可用。 高效更新:内容寻址仅存储变更文件,未改动部分直接复用。 相比npm/yarn的扁平化复制方案,pnpm通过三层链接结构(符号链接→硬链接→全局存储)实现高效、隔离的依赖管理,成为现代前端项目的优选工具。
2026-08-24 14:42:58
467
原创 npm / yarn / pnpm 完整对比
幽灵依赖(Phantom Dependencies):代码里可以import一个没有在中声明的包。原因是 npm / Yarn Classic 会把间接依赖提升到顶层。危害本地能跑,换环境或依赖升级后可能突然报错依赖关系不清晰,不利于维护pnpm通过非扁平的严格结构,从根源上阻止了这个问题——只有你明确声明的依赖才能被访问。npm:官方默认,最稳最省心,适合入门和追求兼容的场景。Yarn:曾经解决了 npm 的速度和确定性问题,现在 Berry 版本功能强大,尤其适合喜欢插件和 PnP 的团队。
2026-08-24 14:41:42
944
原创 获取本地时区与公网 IP 的实用方法
摘要 本文介绍了前端开发中获取用户本地时区和公网IP的两种方法。获取本地时区推荐使用Intl.DateTimeFormat()获取IANA时区名称(如"Asia/Shanghai"),或通过getTimezoneOffset()计算UTC偏移量(如UTC+8)。获取公网IP需要调用第三方API,文中提供了多个支持CORS的免费接口(如ipify.org)。文章包含可直接运行的HTML示例,展示时区、UTC偏移、本地时间和公网IP信息,并提供刷新按钮重新获取数据。完整代码采用现代CSS设计,包含响应式布局和友
2026-08-20 10:12:57
236
原创 Promise 静态方法详解与实战场景
本文介绍了 JavaScript 中 Promise 的四种核心静态方法及其使用场景: Promise.all - 所有 Promise 成功才返回结果数组,任意失败立即整体失败,适用于需要全部成功的并行请求场景。 Promise.allSettled - 等待所有 Promise 完成(无论成功失败),返回每个结果状态,适用于需要统计批量操作结果的场景。 Promise.race - 返回最先完成的 Promise 结果,常用于超时控制和竞速场景。 Promise.any - 返回第一个成功的 Promi
2026-08-20 10:05:29
435
原创 React 18 并发特性核心:useTransition 讲解
React 18 引入的 useTransition 解决了同步渲染导致的性能瓶颈,通过将非紧急更新(如数据筛选、复杂渲染)标记为低优先级任务,确保用户交互(如输入、点击)的流畅性。其核心原理是基于 Fiber 架构的并发渲染机制,允许中断后台任务以优先处理高优先级更新。典型应用场景包括高频搜索过滤、复杂页面切换等,结合 isPending 状态可提供优雅的加载反馈。该 Hook 显著提升了大型应用的响应速度与用户体验。
2026-08-12 15:01:53
340
原创 react - useSyncExternalStore 使用指南
本文介绍了React 18引入的useSyncExternalStore Hook,它专为订阅外部数据源(如全局状态管理库或浏览器API)设计,解决了并发渲染中的“撕裂”问题。通过同步读取数据快照,确保UI一致性。文章解析了API语法(subscribe、getSnapshot、getServerSnapshot),并提供了两个实战案例:订阅浏览器网络状态和实现简易全局Store。关键注意事项包括避免死循环(保持引用一致性)和不可变数据。相比useState,它更适合管理React外部的数据源,是状态管理库
2026-08-11 15:20:53
344
原创 CSS 原子化
CSS 原子化是一种新兴的前端样式架构范式,其核心是将样式拆分为单一功能的原子类(如Tailwind CSS、UnoCSS)。通过对比传统CSS和原子化CSS实现卡片组件的代码示例,展示了原子化CSS简洁、高效的特性。文章分析了CSS范式的演进历程,指出原子化CSS在体积优化、开发效率等方面的核心优势,同时也探讨了其HTML冗余、学习成本等争议点。最后介绍了主流框架Tailwind CSS和UnoCSS的特点,并给出组件化封装等工程实践建议,帮助开发者在项目中合理应用这一技术。
2026-08-11 15:11:21
369
原创 React 严格模式下组件渲染两次的原因及解决方案
React 严格模式下组件会重复渲染两次,这是 React 故意设计的行为,用于在开发环境中检测潜在问题。双重渲染分为两个阶段:1)检查渲染函数的纯函数特性,确保相同输入产生相同输出且无副作用;2)测试 Effect 的清理逻辑,模拟组件卸载重挂场景。常见问题包括重复 API 请求、外部变量修改和定时器重复注册,解决方案包括使用 AbortController、保持渲染纯净、完善清理函数等。虽然可以移除 StrictMode 关闭该行为,但不推荐。该机制只在开发环境生效,生产环境不影响性能。
2026-08-11 15:04:10
715
原创 JS异步机制与Event Loop解析
JavaScript 异步机制解析:从调用栈到 DOM 渲染 本文深入解析 JavaScript 的异步运行机制,通过四个关键部分揭示了其工作原理: 调用栈:采用后进先出原则处理函数嵌套调用,确保内层函数执行后能返回正确上下文。 事件循环架构:由调用栈、Web API线程池、微任务队列和宏任务队列四方协作,按照"执行同步代码→清空微任务→可能渲染→执行一个宏任务"的循环规则运行。 网络请求机制:主线程委托网络请求后继续执行,操作系统底层通过中断机制通知结果,回调被放入微任务队列等待执行。 await本质:只
2026-08-10 14:18:21
381
原创 前端图片瀑布流实现方案详解
本文介绍了瀑布流布局的原理与实现方案。瀑布流是一种多列不等高的卡片布局方式,通过"哪里矮往哪里放"的分配策略实现视觉平衡。文章对比了四种主流实现方案:CSS多列、JS绝对定位、网格列+JS贪心分配(推荐方案)以及现成组件库,并重点讲解了方案C的实现步骤:1)响应式确定列数;2)估算卡片高度;3)使用贪心算法将卡片分配到最短列;4)通过CSS Grid渲染布局。该方案在排序控制、性能表现和响应式支持等方面具有优势,适合需要高度自定义的场景。文章附有可直接运行的演示代码,帮助开发者理解实现细节。
2026-08-10 10:11:23
431
原创 前端图片加载优化全链路方案
前端图片加载优化全链路方案 本文系统梳理了前端图片优化的完整链路,从「图片为什么慢」出发,提出了全链路优化方案: 上传压缩:从源头控制图片体积,推荐使用 TinyPNG、Squoosh 等工具或 browser-image-compression 库 格式选择:根据场景选择最优格式,优先级 AVIF > WebP > JPEG > PNG 按需缩放:通过 OSS 图片处理服务动态生成合适尺寸,避免下载原图 加载时机:首屏关键图优先加载,非首屏图片懒加载 长缓存:设置 Cache-Control 和 immu
2026-08-10 09:35:13
713
原创 后端专用AGENTS.md模板
本文档为Python和Node.js后端开发团队的核心规范指南,主要内容包括: 通用规范 强制类型安全(Python类型注解/TypeScript) 统一代码风格(PEP8/ESLint) 路径规范(禁止相对路径,使用别名) API请求必须包含userId并处理异常 统一错误和成功响应格式 定期清理无用代码 Python专项规范 分层项目结构(API路由层/业务逻辑层/数据层) 函数必须包含详细文档字符串 IO操作强制使用异步(async/await) Node.js专项规范 类似Python的分层结构 函
2026-08-08 08:48:40
274
原创 前端专用AGENTS.md模板
本文档为前端开发团队的核心规范,主要针对React和Vue3项目,强调代码质量、一致性和可维护性。核心规范包括: 类型安全:强制使用TypeScript,禁用any类型 代码风格:统一使用函数组件+Hooks(React)和组合式API(Vue3),禁用相对路径 API规范:必须处理loading/error状态,响应格式标准化 组件开发:严格目录结构,组件必须包含完整注释 样式管理:优先SCSS,BEM命名规范,避免全局污染 安全要求:参数化查询、CSRF防护、XSS防护等 开发流程:从需求分析到自检的完
2026-08-08 08:47:18
390
原创 什么是 AGENTS.md
文章摘要: AGENTS.md 是专为AI编程助手设计的“行为规范”文件,用于解决AI在项目中乱改依赖、破坏代码风格、误删文件等问题。它类似于人类开发者的README.md,通过明确技术栈、禁用操作(如禁止修改.env)、自动化校验(如必须跑测试)等规则,约束AI行为。目前该文件正成为跨平台开放标准,支持Cursor、Claude Code等主流工具。文章提供了前后端专用模板,帮助开发者快速创建。 核心要点: 功能:规范AI助手操作,避免代码混乱。 内容:定义技术栈、红线规则、自动化验证流程。 趋势:统一碎
2026-08-08 08:34:46
154
原创 Skill 从零编写到发布上线
这篇文章详细介绍了如何从零开发、打包到发布一个完整的CodeBuddy Skill(技能)的全流程。主要内容包括: 设计阶段:明确技能边界、编写清晰描述、规划目录结构 开发阶段:编写SKILL.md文件,包含YAML元数据和Markdown指令 打包阶段:配置npm包结构,添加自动安装/卸载脚本 发布阶段:发布到npm仓库的步骤和验证方法 自动化配置:通过GitHub Actions实现"打tag自动发布"功能 文章以作者开发的"xinjie-review"全能代码审查技能为实例,提供了可复制的代码和配置文
2026-08-07 15:50:36
349
原创 Skill(技能)详解
本文详细介绍了AI编程助手(如CodeBuddy/Codex/Claude)中的Skill机制。Skill是一种扩展能力系统,本质是为AI提供专业培训手册和工作流模板,使其在特定领域表现如专家。文章对比了Skill与斜杠命令的区别,解析了Skill的目录结构、文件格式(SKILL.md的YAML Frontmatter+Markdown指令)及调用流程(分三阶段:启动注册、按需加载、运行时引用)。最后介绍了Skill的发布共享方式和最佳实践,包括如何编写有效的SKILL.md和安全注意事项。Skill机制通
2026-08-07 15:47:16
419
原创 MCP从零编写到发布上线
本文介绍了如何从零开发一个本地时间查询的MCP Server,并发布到npm的完整流程。主要内容包括: MCP协议简介:一种让AI助手通过标准输入输出调用外部工具的开放协议,类比"餐厅服务员与后厨"的关系 开发过程关键点: 实现核心时间查询功能 设计可测试的模块结构(isMain判断) 本地测试方案(直接测试函数+协议层验证) 发布流程: 完善package.json配置 npm账号注册与2FA处理 首次发布与问题修复 CI/CD自动化发布 典型问题解决方案: 跨平台路径处理 测试覆盖率 版本管理 文章提供
2026-08-07 08:49:01
353
原创 MCP端到端流程
本文是MCP协议的流程指南,详细解释了从启动到关闭的完整交互过程。文章以CodeBuddy+local-time MCP Server为例,将MCP生命周期划分为启动阶段(自动完成)和调用阶段(用户提问触发)。启动阶段包括进程启动、握手协议和工具发现;调用阶段则展示了大模型推理、工具调用和结果返回的完整链条。文中提供了配置示例、协议字段详解以及真实交互报文,帮助开发者理解MCP的工作机制。配套图表将复杂流程简化为清晰的时间线,适合快速掌握MCP核心流程。
2026-08-07 08:47:00
448
空空如也
h5页面通过Scheme无法直接唤起APP
2024-01-27
在移动端IOS上获取video视频的第一帧为黑屏
2022-11-10
怎么使用冒泡排序实现时间戳从小到大的排序?
2022-04-28
怎么把Jsonp的异步请求变为同步的
2021-09-13
IE9及以下浏览器请求后端接口报错 statusText"[object Error]"
2021-08-27
ie9及以下 ajax post请求给后台传递的参数,后台拿到为空,其他浏览器都正常?
2021-08-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅