自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 CSS文本莫名换行?90%的前端都踩过这个坑

在现代 Web 开发中,文本换行问题是一个看似简单却容易被忽视的细节。本文通过对购物车徽章组件的案例分析,深入探讨了 CSS 文本换行的底层机制,特别是绝对定位元素在包含块约束下的宽度计算规则。文章结合 CSS 规范和浏览器渲染原理,系统性地分析了 `white-space` 属性、包含块(Containing Block)概念以及盒模型对文本布局的影响,为前端开发者提供了一套完整的问题分析方法论。

2025-12-24 18:43:49 633

原创 CSS 布局原理:为何“负边距”是栅格系统的基石?

在 H5/CSS 布局中,使用“负边距”来实现多列栅格布局是经典的工程化方案。但许多开发者常因习惯性设置 width: 100% 而导致布局失效。这并非规则的死记硬背,而是 W3C 规范中“七值等式”与“过度约束(Over-constrained)”机制的数学必然。本文将抛弃经验主义,从 CSS 底层计算原理出发,推导 width: auto 的流动性逻辑,并从大厂工程化视角,深度解析为何负边距方案在可维护性上优于 :nth-child,助你攻克面试中的原理难题。

2025-12-21 20:55:26 746

原创 告别 CRUD 工程师:手把手教你设计基于 AOP 思想的权限中间件与业务闭环

你的简历项目是否还停留在简单的“增删改查”?本文通过复盘一个完整的 HRMS(人力资源管理系统)后端开发实战,带你跳出 TODO List 的舒适区。我们将使用最纯粹的 Node.js + SQLite 技术栈,从零复盘三大核心难点:“账号-档案”分离的数据库架构设计、基于 AOP 思想的声明式 RBAC 权限中间件,以及请假审批与考勤统计的业务逻辑闭环。拒绝空洞的理论堆砌,用真实的企业级场景代码,助你完成从“API 搬运工”到“系统设计者”的思维跃迁。

2025-12-20 21:26:01 1013

原创 崩溃!新买的 Mac M5 跑不起老项目?手把手教你复活 Spring Boot 1.5 古董代码

喜提 Mac M5 却跑不起公司老代码?本文带你手把手解决 Spring Boot 1.5 项目在 Apple Silicon 架构下的“水土不服”。重点攻克 Homebrew 误装 Java 25 导致的编译失败、Maven 依赖损坏以及 MySQL 导入报错等疑难杂症。附带详细的操作命令与环境清理指南,助你半小时内搞定环境搭建,告别无效调试!

2025-12-20 21:02:41 728

原创 拒绝臃肿:我为什么坚持用 Vue 3 + 原生 CSS 构建企业级后台系统

拒绝“配置工程师”思维!本文深入复盘了一个零依赖的 HRMS 企业级前端架构。不引入 Element Plus 和 Tailwind,仅依靠 Vue 3 Composition API 和原生 CSS 变量构建由简入繁的设计系统;不使用 vue-i18n,仅用 30 行代码手写响应式国际化核心。文章包含完整的 RBAC 权限控制流程图与源码解析,适合想要摆脱组件库依赖、探究 Vue 底层原理的进阶开发者阅读。

2025-12-19 16:05:32 836

原创 为了偷懒,我写了个Python脚本:一键把群里杂乱的Excel合并成了打印版Word

“为了少复制粘贴一小时,我宁愿花两小时写个脚本。” 临近期末,为了解决群文件里几十个格式混乱的 Excel 题库无法打印的问题,我开发了一个 Python 自动化脚本。它不仅能一键合并所有文件,还能智能识别各种奇葩表头,并直接导出排版整齐的 Word 背诵版。本文将带你复盘从需求分析、架构设计到核心代码实现的完整过程,含智能容错与动态清洗策略详解。

2025-12-18 21:34:20 941

原创 还在手动复制?一键合并零散Excel题库转Word,高数毛概打印全搞定

临近期末,面对老师发的零散Excel题库,你还在机械地Ctrl+C、Ctrl+V手动整理到Word里打印吗?这种重复性劳动不仅浪费复习时间,还容易出错!本文分享一套自动化解决方案,实现**“一键读取Excel题库 -> 智能拼接内容 -> 批量导出Word”**。无论是高数公式还是毛概长文,都能自动排版,让你告别低效复制,5分钟搞定全科复习资料打印,专心备考!

2025-12-18 14:08:52 1387

原创 拒绝死记硬背!我是如何通过“内存引用图”彻底终结闭包困惑的?

闭包的本质不是“函数套函数”,而是堆内存中对词法环境(Lexical Environment)的持久化引用。本文试图跳出传统的语法解释,从 V8 内存模型 的视角重新审视闭包。通过复盘我对于 debounce 实现的误解,深度剖析了“作用域链”与“垃圾回收可达性”的关系,并用 Mermaid 图表揭示了闭包“去中心化”直连的底层真相。

2025-12-17 09:45:17 634

原创 每次重启终端都要重新输 Token?Claude Code 环境变量永久配置指南

刚配好了 Claude Code 的 API Key,怎么关掉窗口再打开就报错了?难道每次写代码都要重新输一遍 export 吗?别再做重复劳动了!这篇文章带你通过一张图看懂为什么你的配置会“消失”,并手把手教你如何修改 Shell 配置文件,让你的环境变量永久生效。无论你是 macOS 还是 Linux 用户,都能在这里找到答案。

2025-12-16 15:31:06 978

原创 闭包里的变量到底存哪了?图解 JS 词法环境与内存引用链路

很多开发者在理解闭包时,容易陷入“代码即内存”的静态误区,误以为变量存储在函数代码内部。本文拒绝死记硬背,通过详细的内存模型图,深入 JavaScript 运行底层:揭示“代码逻辑(堆内存)”与“变量状态(环境记录)”的分离存储机制,并图解 [[Environment]] 内部指针是如何物理连接这两者,从而形成闭包的。读完本文,你将能从内存引用的视角,彻底看透作用域链的本质。

2025-12-16 10:04:09 561

原创 为什么明明节流了,函数还是执行了两次?——深挖 Lodash 防抖节流的 Leading 与 Trailing 策略

在前端高频交互(如 scroll、mousemove)的性能优化中,throttle 是必不可少的工具。然而,很多开发者在使用 Lodash 等库的默认配置时,会遇到一个反直觉的现象:明明设置了节流,但在操作彻底停止后,函数依然会“幽灵般”地执行最后一次,导致 UI 呈现出怪异的滞后感。这并不是 Bug,而是为了保证“数据最终一致性”的设计策略。本文将从一个真实的鼠标跟随动画案例出发,结合 Mermaid 时序图与 Lodash 源码逻辑,深度剖析 leading 与 trailing 两个参数背后的运

2025-12-15 09:48:38 763

原创 写了“死循环”?为什么 setTimeout 无限递归不会导致栈溢出?

在 JavaScript 中使用 setTimeout 实现无限循环调用(如动态时钟)时,许多开发者会本能地担心两个问题:无限递归会不会导致栈溢出(Stack Overflow)?频繁创建对象会不会引发内存泄漏?本文通过深入分析 JavaScript 的**事件循环(Event Loop)机制和调用栈(Call Stack)原理,配合直观的 Mermaid 流程图,揭示了异步调度与同步递归的本质区别。同时,文章也解释了浏览器垃圾回收(GC)**机制如何保障内存安全,彻底消除你对 setTimeout 递归调

2025-12-14 10:15:26 659

原创 别再混淆了!一张图彻底搞懂 proto 和 prototype 的区别

JavaScript 中的原型(Prototype)和原型链一直是前端学习道路上的“拦路虎”,尤其是 __proto__ 和 prototype 极其相似的命名常常让人混淆。本文不堆砌晦涩的定义,而是通过一个通俗易懂的“Pig 构造函数”实例,配合 Mermaid 流程图,从内存引用的角度为你拆解它们的三角关系。无论你是初学者还是正在准备面试,读完本文,你将能清晰地理解“公共仓库”与“查找线索”的区别,真正掌握 JavaScript 的继承机制。

2025-12-13 10:14:17 1205

原创 别再把图片存进数据库了!从全栈视角看 OSS 的架构本质

做全栈项目时,用户上传的图片该存哪里?是直接存入数据库,还是存服务器本地硬盘?本文从一个真实的部署场景出发,分析了传统存储方案在性能与扩展性上的痛点,并结合清晰的架构图与时序图,通俗易懂地讲解了 OSS(对象存储)的本质及其在现代 Web 架构中的核心作用,帮助开发者理解“动静分离”的架构思想。

2025-12-12 08:58:38 611

原创 深入理解前端体系:为什么 DOM 属于 BOM,我们却要先学 DOM?

为什么 DOM 明明挂在 window 下,却从来不被视为 BOM 的一部分?这是历史遗留,还是工程设计的巧思?这篇文章将带你从浏览器架构、W3C 标准、宿主环境差异三个层面,重新理解 JavaScript 体系的“三大核心”:ECMAScript、DOM、BOM。看完你会完全理解它们的本质关系。

2025-12-11 08:55:17 769

原创 为什么 `/牛?/` 能匹配“牛牛”?

本文通过一个经典困惑案例 /牛?/ 匹配 "牛牛",深入解析了正则表达式中量词的作用范围。文章讲解了问号、星号、加号等常用量词的区别,以及为什么量词默认只作用于前一个字符或单元。进一步说明了整体匹配(^$)的使用方式,并通过示例帮助读者快速理解正则量词的正确用法,让你在编程实践和面试中不再被困惑。

2025-12-10 16:57:53 286

原创 一文读懂 IaaS、PaaS、Serverless:从 Docker 到 K8s 的架构演进

在云原生时代,IaaS、PaaS、Serverless 各种名词层出不穷,很多开发者只会用却不懂背后的架构演进。本文拒绝枯燥的概念堆砌,通过“租房”、“点餐”等通俗易懂的生活案例,结合高清架构图,带你一文彻底搞懂从 Docker 到 K8s 的底层逻辑与选型策略。面试、架构选型必读!

2025-12-10 09:51:18 1221

原创 本地 localhost 怎么给别人看?一文读懂 ngrok 内网穿透原理

日常开发中,我们经常使用 ngrok 将本地 localhost 映射为公网 URL 进行调试。但你是否好奇,它是如何在没有公网 IP 且被防火墙阻挡的情况下实现外部访问的?本文将透过现象看本质,结合清晰的 Mermaid 时序图,深度解析 ngrok 背后的“反向代理”与“TCP 长连接隧道”机制,带你彻底理解“内网穿透”的技术原理。

2025-12-09 09:01:24 432

原创 浏览器事件流的隐藏规则:为什么进入子元素也算“离开父元素”?

很多前端都遇到过这种情况:鼠标进入子元素却触发了父元素的 mouseout,导致悬停菜单闪烁、Tooltip 乱跳。其实这是 DOM 事件流和浏览器渲染机制共同造成的“反直觉现象”。本文通过可视化流程图深入解析问题根源,并提供稳定可控的解决方案。

2025-12-08 20:00:00 590

原创 什么是SDK?它和API、Library有什么区别?(通俗理解版)

最近在整理项目部署文档时,频繁接触到 SDK 这个词。起初对它和 API 的概念有些混淆,经过查阅资料和项目实战,我有了一些具体的理解。为了防止遗忘,也为了帮助有同样困惑的开发者,我将这些概念整理成文,尝试用最通俗的例子把它们讲清楚。

2025-12-07 08:29:13 715

原创 我的全栈项目云端部署实录 (DevLog)

写在前面项目背景:这是一个基于 Vue3 + Node.js + SQLite 的企业级 HRMS 系统。记录初衷:本文记录了我将本地项目从零部署到腾讯云的全过程。这不仅仅是一份操作手册,更是我从写代码到理解架构、解决系统瓶颈的思考复盘。前端:https://github.com/Marshmallowc/hrms-frontend后端:https://github.com/Marshmallowc/hrms-backend镜像类型适合人群我的评价.NET开发/需要图形界面。

2025-12-06 10:37:29 770

原创 操作系统是如何一步步被逼出来的?

在现代计算机体系中,操作系统几乎被视为理所当然的存在。但在 1950 年代初期,计算机并不存在操作系统,程序的编写、输入、运行和输出完全依赖人工完成。本文以“计算 1 + 2”为例,系统回顾了人工操作方式下的完整编程流程:从手工编写机器指令、制作打孔卡,到由操作员启动计算机并获取输出结果,深入分析了这一阶段计算效率低下、程序与硬件强耦合等核心问题。理解这一历史阶段,有助于真正理解操作系统、批处理系统以及自动化程序管理机制诞生的必然性。

2025-05-04 11:32:47 399

空空如也

空空如也

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

TA关注的人

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