自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FungLeo's Blog

键鼠轻游戏人间 风流谈笑傲江湖

  • 博客(419)
  • 资源 (11)
  • 问答 (1)
  • 收藏
  • 关注

原创 成为全栈·Node 后端篇·框架选型:Express、Koa、Fastify、NestJS 的差异与为何选 Hono

框架选型是后端工程的第一道岔路口。很多教程一上来就说"我们用 Express"或者"我们用 NestJS",却很少讲**为什么**。我更想带你从"我们这个工程到底被什么约束"出发,反推出答案——因为选型从来不是给框架排名,是给约束找最合身的那一个。

2026-08-30 11:11:43 270

原创 成为全栈·Node 后端篇·后端工程从零搭建:TypeScript、目录与热更新

上一篇产品篇里,我把「一个真实的多端文章系统」摊开给你看:七个子项目、一份共享 API 契约、一条共同的版本历史。从这一篇起,我们要钻进其中一个子项目——Node 后端,把它从 `git init` 之后的一张白纸,搭成能跑、能测、能部署的工程。我会用三十一篇讲完它。而所有故事,都从今天这个最朴素的问题开始:一个后端工程,初始化时到底该长什么样?

2026-08-30 11:05:26 209

原创 成为全栈·产品篇·全栈能力地图:你读完这套会拥有什么

在动手之前,先把「终点」亮给你看。这是一张「前端 → 全栈」的能力清单,配上自评标尺。读 [为什么前端工程师要走向全栈](https://blog.csdn.net/fungleo/article/details/164119914) 后紧接这篇,你会清楚整套专栏要把你带到哪;读到 M8 收官时,再回看这张地图逐格打勾。

2026-08-29 11:11:54 560

原创 成为全栈·产品篇·本系列怎么读:主线、支线与学习路径

M0 八篇到这里收尾。这篇给你一张阅读地图——两套编号(主线 M0–M8 / 支线 B)怎么排、两类读者(有前端基础 / 零基础)分别怎么走、以及面对 130 篇的规模该怎么不慌。读完后,你就知道从哪一页开始翻了。

2026-08-29 11:03:04 239

原创 成为全栈·产品篇·工程公约:git tag、仓库组织与 CSDN 发布流程

前面几篇讲了「做什么」——七端、建模、契约。这篇讲「怎么把这一切组织起来,让它能复现」。一套专栏最大的承诺是「读者跟着做能跑起来」,而让这个承诺成立的东西,就是工程公约:monorepo 单仓、里程碑式 git tag、一份 `ARTICLES.md` 对照表、以及 CSDN 发布流程。

2026-08-29 10:53:53 362

原创 成为全栈·产品篇·契约先行:设计一套被七个端复用的 API

实体定好之后,下一步是把它们「暴露」成接口。我会讲清什么是 Contract-First(契约先行)、统一响应怎么设计、错误码为什么分两层、版本化怎么玩,以及为什么这份契约值得用机器去校验。读完你会明白,为什么 [用一个真实系统串起全栈]) 说它是「唯一硬地基」。

2026-08-28 10:34:51 432

原创 成为全栈·产品篇·领域建模:一个文章系统有哪些实体、什么关系

带你做一件当纯前端时几乎从没做过的事——**为数据「建模」,而不是「渲染」**。我会用本系列这个真实文章系统作案例,把核心实体和它们的关系拆给你看,并讲清几个「不对这意味着什么」的建模决策。读完你会明白,为什么说「设计是常量」,而实体关系就是那个不变量。

2026-08-28 10:26:27 287

原创 成为全栈·产品篇·技术选型不是投票

拆清楚这套专栏每个端的技术栈是怎么定的,尤其要把后端栈(Hono + Drizzle + Cloudflare D1/R2)为什么「已经定死」讲透。更重要的是,把背后的**选型方法论**交给你——这套方法能迁移到你自己的任何项目,比记住某个框架名字值钱。

2026-08-27 17:11:40 385

原创 成为全栈·产品篇·用一个真实系统串起全栈

给你看清楚这套专栏的「载体」到底是什么——一个真实可运行的多端文章系统,由七个子项目组成。我会把七个子项目逐一亮出来,并回答两个关键问题:为什么是「一个系统七端」而不是七个独立教程?为什么我们一波一波做、不一起上?

2026-08-27 16:47:03 236

原创 成为全栈·产品篇·为什么前端工程师要走向全栈:边界、价值与代价

说清一件事——前端工程师走向全栈,到底扩展了什么能力、值不值得、以及哪类人其实不必转。读完后你会知道,这套专栏打算怎么把你从「调接口的人」托到「设计系统的人」。

2026-08-27 16:23:57 520

原创 React 移动端实战 · 前端报错了先别甩锅后端:一套请求链路分层定位法,少走三天弯路

本文提出一套请求链路分层故障定位方案,解决前端报错就先怀疑后端的惯性思维。完整链路从前到后分为前端渲染状态、前端请求校验、代理网关、后端服务、数据库五层,每层都给出对应的验证手段,排查应当由上游至下游逐步自证清白,依靠实际证据锁定故障层级。文章列举三个实战案例:列表显示暂无数据根源是数据库关联字段为空;分享功能接口返回成功,却因前端缺失字段校验判定失败;后台配置生效但前端提示不可用,由前端完整性校验规则过于严苛引发。文中整理出标准化排查操作清单与实战坑点对照表,同时结合过往代理透传、fail‑closed拦

2026-08-26 11:13:56 413

原创 React 移动端实战 · 接口一直 503,后端却说没挂?聊聊中间件的 fail-closed 设计取舍

本文基于一次联调实战案例,剖析后端服务运行正常、接口却持续返回503的问题根源,引出服务中间件fail‑closed故障关闭设计理念,对比fail‑open故障开放方案的差异。本次故障由两道中间件校验触发:产品认证策略、品牌配置数据缺失时,服务主动拒绝请求返回503,以此规避脏数据、越权等风险。文章分析该设计带来的代价,本地开发缺少初始化种子数据便无法通过校验,并且明确用户端只读、管理端写入配置的职责边界。同时给出一套从前端、代理、后端直至数据库的分层排查流程,整理多项实战踩坑经验,最后总结fail‑clo

2026-08-26 10:40:29 412

原创 React 移动端实战 · 本地开发要对接两个后端,我为什么不用 nginx、不引 http-proxy,偏要手撸零依赖 Node 反代?

本文介绍Next.js本地开发环境下,不使用Nginx与第三方代理库,基于Node内置模块手写零依赖反向代理的实践。项目存在用户端、管理端两套后端服务,生产依靠Nginx网关分流,本地复刻相同路由逻辑,设置独立代理端口作为统一请求入口,前端无需修改业务代码。代理按照请求方法与URL路径完成流量分发,处理各类请求头透传,单独实现WebSocket升级事件转发,并提供健康检查接口便于排错。文章梳理端口冲突、Host头改写、WebSocket断开等实战踩坑点,给出可直接运行的完整代码骨架。该方案规避跨平台工具差异

2026-08-25 10:41:46 481

原创 React 移动端实战 · Next.js 14→16 大版本升级:一份代码级破坏性盘点与两段式落地复盘

本文复盘 Next.js14 升级至 16、同步升级 React19 的实战过程,项目采用两段式升级策略,先升级至 15.5.23 安全补丁版本,再过渡到 16.3.2。升级前通过全局检索盘点项目特性,规避中间件、Server Actions 等高风险模块,核心代码变更为适配 Next15 将 params、searchParams 改为 Promise,对多处路由页面及单元测试做异步改造。React19 迁移以类型更新为主,业务逻辑改动较少。同时独立处理 ESLint9 扁平化配置迁移,解决 React

2026-08-25 10:12:58 422

原创 React 移动端实战 · 前端游客 Token 失效导致 401 死循环:自愈 + 熔断怎么设计

本文复盘游客Token失效引发接口持续401死循环的前端工程问题。渠道归因上报接口使用独立游客Token鉴权,本地缓存的失效Token未做校验,叠加多层重试机制、闭包捕获旧Token,形成无限请求,该问题和常规登录态Token刷新并发问题存在区别。文章提出双层防护方案:收到401后清除失效Token、重新签发完成自愈重试;若依旧失败则添加会话级熔断标记,终止本会话持续请求。同时修复定时器过期闭包缺陷,每轮请求实时读取最新Token,并补充单元测试纳入CI校验。案例表明仅校验本地Token存在不可靠,前端需设

2026-08-24 11:06:35 502

原创 React 移动端实战 · 移动端视频自动播放为何总是失效?muted 竞态 + 浏览器 Autoplay 策略 + 退避重试

本文围绕移动端H5沉浸流视频自动播放失效问题展开复盘,讲解浏览器自动播放底层策略:无用户手势仅支持静音播放,带声播放需依托用户手势解锁。作者梳理项目中叠加的四类代码缺陷,分别为按钮展示逻辑未区分场景、muted状态同步产生竞态冲突、播放请求失败直接终止流程、重试机制过于短促。文中给出对应修复方案,拆分按钮渲染条件,为副作用增加执行门控,设计快速退避搭配慢速轮询的重试策略,并完成多轮真机验证。文章总结开发要点,提醒开发者遵循浏览器播放规范,规避副作用冲突,依靠合理重试机制适配弱网、链路抖动等复杂网络环境。

2026-08-24 10:50:23 450

原创 React 移动端实战 · 你以为 build 完就能发?APK 签名与发布流水线里藏着三个真坑

本文讲解 Capacitor+React 项目完整 APK 签名发布流程,剖析三大发布隐患。正式包签名密钥不可丢失,需妥善离线保管,禁止提交版本库,密码通过环境变量注入避免明文泄露。文章梳理编译、同步、打包的完整执行脚本,明确 versionCode 必须单调递增,否则安装和上架会被拦截。开启 ProGuard 代码混淆时,需补充保留规则,防止 Capacitor 原生桥接类被误删,引发功能静默异常。文中还介绍多渠道打包方案,并整理发版前置检查清单,规范发布流程规避线上故障。

2026-08-23 09:52:34 464

原创 React 移动端实战 · Web 技术栈能读手机通话记录吗?手撸一个 Capacitor 原生插件给你看

本文介绍基于Capacitor手写自定义原生插件,让React移动端应用读取安卓通话记录的完整实现。Web本身无法访问通话记录,官方缺少适配插件,文章搭建插件目录,编写TS桥接层与Java原生代码,处理安卓运行时权限申请,借助ContentResolver查询通话数据,并设计号码归一化、末位模糊匹配算法,解决号码格式不一致难以匹配的难题。文中说明iOS受平台限制无法实现该能力,梳理代码同步、SDK版本等常见踩坑点,给出整套可复用代码,完成Web与原生能力的桥接开发。

2026-08-23 09:47:59 471 1

原创 React 移动端实战 · 弹层一滑,背后的列表跟着滚?移动端滚动穿透,我让 AI 改了三次才改对

本文围绕移动端弹层滚动穿透问题展开复盘,介绍 AI 两次修复均失败的案例,剖析事件拦截、设置 body 溢出隐藏两种方案存在的缺陷。滚动穿透本质是弹层与底层页面共用滚动根,滚动链发生冒泡。文章给出完整可行方案:通过自定义 Hook 将 body 设为 fixed 并保存偏移锁定底层滚动,弹层配置样式作为独立滚动容器,遮罩添加属性拦截手势,同时避免限制面板内部局部滚动。整套方案兼容 iOS 惯性滚动,保留页面滚动位置,附带可直接复用的代码,解决滚动穿透与滚动功能误伤问题。

2026-08-22 10:28:35 479

原创 React 移动端实战 · 弱网下提交的数据说没就没?离线优先队列 + 客户端幂等,移动端补传一次说清

本文针对外勤场景移动端弱网提交易丢失数据的问题,讲解离线优先队列搭配客户端幂等的实现方案。方案采用 localStorage 构建本地队列,提交数据优先本地持久化,应用启动或监测网络恢复时自动补传。文中梳理实操难题,通过提交时生成 clientRequestId 实现幂等去重,补传前校验必填项避免队列阻塞,同时补充脏数据处理、缓存刷新等优化手段,整理完整自查清单,提供可复用代码,解决弱网下数据丢失、重复提交等问题。

2026-08-22 10:23:54 387

原创 React 移动端实战 · 一个人用 AI 做完一个能上架的移动 App 靠谱吗?codex + Stitch 实战复盘

本文复盘借助 codex、Stitch 与接口文档,单人依靠 AI 开发可上架 React 移动端 App 的实践,证实该方式可行,但不可放任 AI 自主开发。项目明确分工:Stitch 输出 UI 稿,接口文档规范数据,codex 负责编码;同时制定开发约束,坚持分阶段开发验收,规避代码架构失控问题。文章梳理协作痛点:AI 易编造接口、缺少移动端原生开发能力,打包发布也依赖人工把控。最终提出,AI 可落地既定开发工作,架构规划、规则约束、底层开发与验收决策仍需人主导。

2026-08-22 10:19:32 658 1

原创 React 管理后台实战 · 同一份数据,列表更新了下拉却没动?React Query 多 key 缓存一致性踩坑

本文分享了在React管理后台开发中遇到的一个隐蔽缓存问题:同一份项目数据被两个不同的queryKey缓存,导致更新时只有部分界面刷新。作者详细分析了问题根源——React Query以queryKey为缓存标识,['projects']和['filter-options','projects']被视为独立缓存。当创建项目后仅失效了其中一个key,导致下拉选项仍显示旧数据。 文章提出了三种解决方案: 手动同时失效两个key(存在维护成本) 将queryKey提取为共享常量统一管理 使用predicate按前

2026-08-21 10:49:01 466

原创 React 管理后台实战 · 列表里突然出现一堆空白行?PIPL 擦除后前端怎么处理才不露馅

本文探讨了在React管理后台中处理个人数据擦除(PIPL合规)的前端解决方案。当用户或合规要求擦除个人数据时,后端会置空敏感字段并标记erasedAt,前端需配合实现以下功能: 列表过滤:默认查询添加erased:0参数,避免显示已擦除的空记录,同时提供切换查看已擦除记录的开关。 详情处理:使用erasedAt标记控制显示,已擦除记录显示占位符"—"和"已擦除"标签,并禁用相关操作按钮。 权限控制:仅租户管理员可见擦除按钮,普通员工无法操作。 客户端脱敏:准备脱敏函数作为第二道防线,确保即使后端返回明文数

2026-08-21 10:45:02 394

原创 React 管理后台实战 · 后台列表的筛选条件,刷新就丢了?URL 做单一数据源彻底解决

本文分享了在React管理后台开发中解决列表页筛选条件丢失问题的实战经验。文章首先分析了筛选条件在页面刷新、链接分享和前进后退时丢失的根本原因——筛选状态仅存储在组件内存中,未与URL同步。作者提出将URL作为筛选条件的唯一数据源,并实现了一个useUrlListState自定义Hook来统一管理状态。 该Hook核心功能包括:从URL解析当前筛选条件(自动回退默认值)、整体更新筛选参数到URL、管理分页状态(自动清理page=1的冗余参数)。文章还通过一个真实案例,展示了如何解决"从其他页面跳转带预设筛选

2026-08-20 10:45:54 512

原创 React 管理后台实战 · 前端怎么解析 Excel 做批量导入?CSV/XLSX 双格式 + 智能列映射实战

本文分享了React管理后台中实现Excel批量导入功能的关键技术点,包括CSV/XLSX双格式解析、智能列映射和批量提交策略。文章重点解析了前端处理Excel文件的难点:如何识别表头、处理空格干扰、实现列名智能匹配,以及解决列映射组件中的常见问题。同时介绍了多列拆分和变量模板等高级功能,并强调了与后端分片提交的配合。文章指出实际开发中最大的挑战往往来自细节问题,如空格导致的匹配失败和列映射组件状态同步问题。最后预告下一篇将探讨进度条真实性和结果汇总展示的实现。

2026-08-20 10:26:45 397 2

原创 React 管理后台实战 · 列表批量操作总被后端拒?一个 runBatchChunks 兜住 50 条上限

摘要 本文针对管理后台中批量操作接口的常见问题,提出了一个通用的前端分片提交解决方案。当用户选择大量数据进行批量操作时,直接发送所有ID可能导致接口失败或部分执行。作者通过实际案例说明后端可能对批量操作设置上限(如50条/次),并分享了可复用的runBatchChunks工具函数。该工具支持:按配置大小分片、串行提交避免并发压力、批间休眠减轻后端负担、进度回调展示处理状态。文中特别强调分片大小必须可配置,避免后端调整上限时前端同步不及时的问题,同时区分了读取和写入操作的不同上限要求。最后指出分片工具需与后端

2026-08-20 10:22:07 359

原创 React 管理后台实战 · 多角色后台的菜单和路由怎么按角色收口?配置表驱动,新增权限不碰业务代码

本文介绍了一种基于配置表驱动的React管理后台多角色权限管理方案。通过定义角色类型、用户接口和三张核心配置表(角色默认首页映射、菜单分组可见性、业务细粒度判定助手),实现了权限管理的集中化。文章重点阐述了路由守卫组件的实现,并分享了四个线上踩坑经验:菜单显隐硬编码问题、403/404混淆风险、平台角色tenantId为null的处理、以及特定角色登录拦截。方案通过配置表将权限逻辑收敛,新增角色只需修改1-2处配置,避免了业务代码的散落修改,提高了系统的可维护性和安全性。

2026-08-19 15:53:06 504

原创 React 管理后台实战 · 后端异步导出做好了,前端下载却总是失败?轮询进度 + 双形态下载一次搞定

本文分享了React管理后台中异步导出功能的前端实现经验,重点解决轮询进度和文件下载两个关键问题。通过React Query的动态轮询机制优化性能,根据任务状态智能调整轮询间隔(10秒一次),避免不必要的后端请求。针对文件下载环节,作者发现统一请求层处理JSON响应的问题,提出双形态下载方案:预签名直链(形态A)和CSV流(形态B)需分别处理,特别强调使用<a>标签模拟点击而非window.open来确保下载触发。文章还总结了任务状态机和错误码处理规范,为类似场景提供了完整解决方案。

2026-08-19 14:37:55 468

原创 React 管理后台实战 · 前端请求层怎么写?401 静默刷新、token 并发竞争、强制改密拦截一次说清

本文介绍了React管理后台中前端请求层的封装实践,重点解决了401静默刷新、token并发竞争、强制改密拦截等核心问题。文章首先列出了请求层需要处理的五大关键维度:鉴权头注入、401静默刷新、并发刷新控制、特殊状态码拦截和响应数据解包。然后通过代码示例详细展示了如何实现这些功能,特别是针对多个请求同时401时只刷新一次的并发控制机制,以及防止递归刷新的安全护栏设计。文章还强调了423强制改密等业务场景的全局拦截方案,确保用户体验的一致性。这些实践来自真实上线项目,可直接应用于生产环境。

2026-08-19 14:18:26 684

原创 Node 后端实战 · 多租户 SaaS 怎么防止租户串数据?接口门禁 + 租户隔离 + 行级权限三层实战

本文总结了一套 Node 后端实现多租户 SaaS 系统数据隔离的三层防护方案: 接口级角色门禁(RBAC) - 通过角色白名单控制不同层级用户(平台/租户)的操作权限 租户隔离 - 所有查询强制绑定租户ID,防止跨租户数据泄露 行级权限 - 限制同租户内用户只能访问自己相关的数据,防止水平越权 文章特别强调: 水平越权比垂直越权更隐蔽且容易被忽视 详情接口必须二次校验数据归属 身份认证层需要区分access/refresh token 超管账号需要特殊处理租户隔离 这套方案从接口到数据层构建了完整的权限体

2026-08-18 10:19:54 441

原创 Node 后端实战 · 老系统数据迁移怎么不出乱子?V1→V2 重构实战与 3 个生产坑

这篇文章分享了作者将一个运行多年的老系统(V1)数据迁移到新开发的多租户SaaS系统(V2)的实战经验,重点解决了数据模型重构、字段映射和生产环境迁移过程中遇到的三大坑。主要内容包括: 数据模型重构:将V1的单张大宽表拆分为V2的多张规范化表(如leads、call_records等),处理一对多关系拆分。 关键映射决策: 状态字段需要根据业务规则重新推导 识别并修正字段命名与实际内容不符的情况 三大生产坑: 空字符串导致唯一约束冲突 网络中断导致孤儿记录 时区问题造成时间戳偏移8小时 边缘数据库约束:D1

2026-08-18 09:59:42 482

原创 Node 后端实战 · 列表查询到底怎么写?一个通用 DSL 封装,过滤分页排序一次搞定

本文介绍了一种Node后端列表查询的通用DSL封装方案,通过声明式查询层解决传统实现中的重复代码、安全隐患和易漏问题。核心思路是: 采用字段白名单机制,严格定义每张表的可查询字段及其类型、敏感属性和操作符,从源头确保安全性; 实现解析器buildListQuery,将URL参数转换为标准化的查询条件,支持过滤/排序/分页/投影等功能,自动处理敏感字段和参数校验; 设计执行器runList,强制注入基础条件(如租户隔离),统一控制查询行为; 提供完整的安全防护,包括:防SQL注入、防敏感字段反查、手机号标准化

2026-08-17 10:11:05 565

原创 Node 后端实战 · 边缘 Cron 定时任务怎么写?Cloudflare 三个实战任务与踩坑

本文介绍了在 Cloudflare Workers 边缘环境下实现定时任务的实战经验。作者分享了四个定时任务的设计与实现: 架构特点:边缘 Cron 不同于传统定时任务,具有分布式、非精确触发的特性,要求任务设计必须幂等。 通用框架: 使用 KV 存储实现分布式锁(best-effort) 记录详细的执行日志 错误信息脱敏处理 四个核心任务: 预聚合统计:通过并行查询和 GROUP BY 优化性能 拦截名单对账 审计日志冷热分层 导出文件清理 关键技术点: 幂等设计应对可能的重复执行 分批处理大数据量任务

2026-08-17 09:53:38 375

原创 Node 后端实战 · Cloudflare Workers 限流总误伤?用内存固定窗口替代 KV 实战

本文分享了在 Cloudflare Workers 边缘计算环境下实现限流功能的实战经验。作者通过对比 KV 中央计数、Durable Objects 和实例内存固定窗口三种方案,最终选择了基于实例内存的固定窗口算法,因其在"防刷不精算"的需求场景下具有零延迟、零额外成本等优势。文章详细介绍了具体实现代码,包括如何利用 globalThis 保持计数器、按 IP/用户分档限流策略,以及开发环境短路等优化技巧,同时提供了内存清理机制防止 Map 膨胀。这种方案虽然无法实现全局精确限流,但能有效防止资源滥用,适

2026-08-15 10:16:22 494

原创 Node 后端实战 · 后端敏感数据怎么防泄露?PII 自动脱敏与审计日志实战

摘要:SaaS系统敏感数据防泄露实战方案 本文针对多租户SaaS系统中的敏感数据(PII)泄露风险,提出了一套完整的防护方案。通过集中管理敏感字段清单、按角色控制明文访问边界、审计日志递归脱敏三层防护机制,有效防止用户隐私数据泄露。关键措施包括: 建立单一敏感字段清单(如手机号、微信等),统一管理脱敏规则 列表接口强制脱敏,按业务角色开放明文访问权限 审计日志自动递归脱敏,避免二次泄露 采用纯函数式脱敏处理,确保原始数据不受影响 方案已在生产环境验证,兼顾业务需求与安全合规要求,符合《个人信息保护法》相关规

2026-08-15 10:06:34 881

原创 Node 后端实战 · Serverless 导出 CSV 总超时?用 Queue + R2 异步任务彻底解决

这篇文章探讨了在Serverless边缘运行时(Cloudflare Workers)中实现大批量数据导出CSV的解决方案。主要挑战包括: 边缘环境的硬性限制:CPU时间短(约50ms)、内存小(128MB)、实例生命周期不可靠,导致同步导出方案不可行 提出的异步导出解决方案: 通过Queue+R2实现任务分解 采用游标分页而非OFFSET实现高效断点续传 R2分片上传结合状态持久化,解决跨调用续传问题 设计完整的任务状态机(pending/processing/done/failed/expired) 关

2026-08-14 10:18:23 549

原创 Node 后端实战 · 多租户 SaaS 的数据隔离:让 A 租户永远看不到 B 租户的一行数据

本文介绍了多租户SaaS系统中实现数据隔离的三层防线架构。首先选择"共享库共享表+tenantId列"方案,在表结构层面强制每个业务表包含tenantId字段并建立复合索引。其次通过中间件注入租户ID并进行状态门控检查。最重要的是查询层确保每条SQL都包含租户过滤条件,并通过代码规范和测试保障执行。文章还特别强调了边界场景的处理,如平台级共享数据、文件存储隔离和管理员权限分离等。这种"结构+流程+纪律"的三层防护体系能有效防止租户间数据泄露风险。

2026-08-14 09:53:31 325

原创 Node 后端实战 · JWT 双密钥轮转与 token 版本号:多租户 SaaS 如何不停机换密钥、一键踢全设备

这篇文章分享了在多租户SaaS系统中实现JWT密钥轮换和token版本控制的实战经验。作者采用双密钥候选列表实现密钥平滑轮换,通过token版本号(tv)与KV存储比对实现全设备一键登出。具体方案包括: 密钥轮换:使用当前密钥+上一轮密钥的双密钥验证机制,通过环境变量分步替换实现零停机轮换 token管理: 采用access(1h)/refresh(7d)双token结构 通过jti黑名单实现单设备吊销 通过tv版本号比对实现全设备登出 边界处理: KV无CAS时的安全优先设计 强制改密场景的特殊豁免 方案

2026-08-13 10:24:12 737

原创 Node 后端实战 · D1 那些坑:100 参数上限逼出的批量写入重构

本文讲述了在使用Cloudflare D1数据库构建SaaS后端时遇到的三个核心问题及解决方案: 100参数上限问题:D1单条SQL语句最多支持100个绑定参数,导致27列的宽表单次只能插入3行数据。解决方法是通过动态计算分批大小,按表列数自动调整每批插入的行数。 原子性缺失问题:D1不支持真正的事务,解决方案是使用db.batch()模拟事务,并放弃物理外键约束,转为应用层保证数据一致性。同时需要注意batch内语句无法相互读取结果,且单批操作有1000条语句的隐性限制。 不一致的查询API:Drizzl

2026-08-13 09:57:28 428

原创 Mac 本地部署 AI 生图:从零跑通 FLUX 与 Z-Image 的完整步骤(附完整脚本)

本文提供了一份在 Apple Silicon Mac 上本地部署 AI 生图工具 FLUX 和 Z-Image 的完整指南,包含以下关键内容: 硬件要求:仅支持 Apple M 系列芯片,建议 16GB+ 内存 安装步骤: 通过 Python venv 创建隔离环境 安装 MLX 推理引擎 mflux 模型配置: FLUX 需 HuggingFace 授权登录 Z-Image 可直接使用 使用技巧: FLUX 需英文提示词 提供中文翻译方案(Qwen2.5-1.5B) 优化建议: 4bit 量化节省内存 封

2026-08-12 12:44:22 506

黑苹果USB无线网卡驱动,适用于mac10.15.x的版本,祝大家好用!

之前分享过10.12的无线网卡驱动,大家用了很好用,今天分享一个10.15的最新的驱动。希望能够帮助到大家。

2020-08-04

黑苹果mac无线网卡USB驱动,适用于mac sierra 10.12版本

黑苹果mac无线网卡USB驱动,适用于mac sierra 10.12版本

2017-02-26

win10系统iis伪静态配置安装文件64位版

在微软的网站上搜啊,找了好几个不能用的,最终,找到正确的了.此版本仅用于win10系统自带的IIS,其他系统我没测试过啊.为了便于自己以后下载.也共享出来给大家.此为64位版本.现在没人用32位系统了吧.

2015-12-17

黑苹果 Clover 引导编辑器 Mac 版本

黑苹果 Clover 引导编辑器 Mac 版本,用于调整Clover相关配置的工具。适用于 MacOS 10.15.4 版本,之前的老版本也可以用,但具体支持到哪个老版本我就不知道了。

2020-05-03

MAC上连接windows服务器的管理软件

MAC上连接windows服务器的管理软件

2017-02-26

Sip 软件免费版,MacOS 下好用的屏幕取色软件

Sip 软件是苹果系统下一款非常好用的屏幕取色软件,我提供的是4.5.2 的版本。这个版本是完全免费的版本,没有任何功能限制。现在 Sip 官方版本升级了,升级后变成了共享软件,虽然功能更强大了,但是也要钱了。这个版本功能足够我们日常使用,而且免费,没有试用期限限制,我放上来也是为了自己下载方便,特地分享给大家。现在网上真不好找这个版本的。

2020-05-03

文本替换专家2.5(无需注册版|非破解)

现在网上提供下载的“文本替换专家”都是5.0以上版本,这些都需要注册后才能使用。而我提供的是文本替换专家较老的版本,也就是2.5版本。此版本短小精悍,而且不用注册,可以免费使用。这个软件非常实用,推荐大家下载

2015-11-24

让黑苹果系统,支持安卓手机分享USB网络 HoRNDIS-9.2

安装后,可以用安卓手机用USB数据线连接黑苹果电脑后,分享网络给黑苹果系统使用。解决黑苹果无线网卡没有搞好之前的上网问题。

2020-09-01

用于 MAC上卸载 Creative Cloud 的工具

Adobe官方出品,专门用于 MAC上卸载 Creative Cloud 的工具,解压后是一个Creative Cloud Uninstaller.dmg 镜像,挂载后打开,运行里面的程序,稍等2分钟就卸载掉啦!

2017-02-27

FengFocus jQuery焦点图插件

1、html 结构异常简单,除了少数优秀的焦点图插件,大多数都是HTML异常复杂而功能单一的。 2、表现形式完全css化,有很多焦点图插件将表现形式写在了js中,优点是只要一个文件,而不用管css。缺点就是,修改样式异常困难,为我不喜。 3、切换效果简单,只采用了 jQuery 自带的 slideDown 和 fadeIn 这两个效果。当然,一般情况下 fadeIn 其实就够用了。如果需要更加复杂的切换效果,可以使用 jQuery Easing 插件来简单拓展 4、单一页面重复使用,严格的将所有动作控制在目标元素之内,不会与其他代码产生冲突。单一页面可以多次使用。

2015-09-04

Sublime Text 3/64 精心调配版 by FungLeo

安装插件如下:Emmet\less\sass\scss\jquery\colorpicker\side bar\sublime tmpl等前端常用插件。 风格暗色系。同事都说我调的好使。 ps: 1、 基于64位调配,32位系统无法使用。 2、 已经注册。

2015-08-26

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除