# popring.cn > Harry(popring)的个人博客:全栈 + 增长工程师。内容覆盖前端/全栈开发、增长工程与 A/B 实验、AI 工具实战(Claude Code 等)、读书笔记与年度总结。中文写作。 - [博客列表](https://popring.cn/blog) - [RSS](https://popring.cn/rss) ## 增长 - [AARRR 五个阵地:增长工程师到底做什么](https://popring.cn/blog/growth-engineering-battlefields): AARRR 模型在工程侧怎么落地?按拉新、激活、留存、推荐、变现五个阵地,逐段说清增长工程师背什么指标、改哪些代码、踩过什么坑。 ## 读书 - [《金字塔原理》读书笔记:一个工程师真用得上的部分](https://popring.cn/blog/pyramid-principle-reading-notes): 《金字塔原理》的核心其实一句话——结论先行、自下而上思考、自上而下表达。这篇只记我真用得上的三个点(金字塔结构、SCQA、MECE),加上周会同步和写文档怎么落地,以及哪些章节可以直接跳过。 - [2025 年读书笔记汇总](https://popring.cn/blog/2025-reading-notes): 2025 年读书笔记汇总入口,收录《增长黑客》《认知觉醒》《GTD 方法》三本书的语雀笔记链接,方便统一回查当年的阅读沉淀。 - [《蛤蟆先生去看心理医生》读书笔记:一本伪装成小说的心理学入门](https://popring.cn/blog/frog-sees-therapist): 《蛤蟆先生去看心理医生》表面是童话,内核是一整套心理咨询方法——三种自我状态、人生坐标、心理游戏。这篇笔记拆它真正在讲什么,以及为什么它适合当心理学的第一本。 ## 思考 - [从 Prompt 到 Agent:这几年我们是怎么学会"用"大模型的](https://popring.cn/blog/from-prompt-to-agent): 模型一直在变强,但更有意思的是另一条线——我们驾驭它的方式,三年里换了三种打法。 - [AI 时代如何真正提升自己,而不是成为 Prompt 指令师](https://popring.cn/blog/growing-in-ai-era): AI 用得越多,能力反而可能在退化?Anthropic 研究:重度依赖 AI 的工程师测验分数低 17 分。这篇讲一个采纳 AI 代码前的小习惯——Predict-Before-Run,让你用 AI 提效的同时,自己也真的在成长。 ## 视觉动效 - [重学 Web 动画(二):Motion 入门](https://popring.cn/blog/web-animation-motion-basics): Motion(曾叫 framer-motion)入门:从 React 状态变化出发,理解 initial / animate / transition、手势动画、AnimatePresence 离场动画、variants 编排和 layout 布局动画。 - [CSS 动画怎么做才不卡?transition、animation、@keyframes 速查|重学 Web 动画(一)](https://popring.cn/blog/web-animation-css-basics): 按属性回顾 CSS 动画 —— opacity、transform、transition、animation、@keyframes、clip-path —— 以及性能优化和无障碍的常用要点。 ## 生活 - [家庭组网踩坑:用两台路由器实现 iPhone 无缝漫游](https://popring.cn/blog/home-network-issues): 只要保证两台路由器的 SSID(Wi-Fi 名称)、密码和协议完全一致,设备基本都能实现自动无缝切换。更关键的是让它们处于同一网段——这样切换时内网 IP 不变,体验才真正丝滑。 - [三阶魔方还原教程](https://popring.cn/blog/rubiks-cube-tutorial): 层先法三阶魔方还原教程:只用右手、左手两组基础公式,从白色十字、第一二层到黄色十字、黄面及角块棱块归位,分七步讲完整个还原流程。 ## AI - [一文讲清 CLAUDE.md、Skills、MCP、Hooks 的实战用法](https://popring.cn/blog/claude-md-skills-mcp-hooks-guide): 用通俗类比讲清 Claude Code 四件套的分工:CLAUDE.md 管背景知识、Skills 管流程、MCP 给能力、Hooks 做自动化,附三个实战编排场景与上下文成本管理技巧。 - [什么是向量检索(Vector Search)?从 Embedding 到 RAG 的原理](https://popring.cn/blog/what-is-vector-search): 背景 最近面试了一位候选人,聊到了向量检索在组件库文档搜索中的实践。听起来很高级,但本质上是个很实用的技术。这篇文章用最通俗的话解释一下。 ## 前端 - [UTM Tracking 规范整理:从概念到命名规则](https://popring.cn/blog/utm-tracking-guide): UTM 追踪规范整理:五个核心参数的含义、命名规则与团队词汇表,配邮件、广告投放、KOL 推广等真实场景示例,并记录站内链接加 UTM 导致来源失真等踩坑教训。 - [Three.js 3D 开发入门指南](https://popring.cn/blog/3d-threejs-tutorial): Three.js 入门学习笔记:梳理 Scene、Camera、Mesh 等核心概念,BufferGeometry 自定义几何体、UV 纹理与动画写法,并汇总课程、GUI 调试和纹理素材资源。 - [JavaScript AOP 面向切面编程实践](https://popring.cn/blog/frontend-aop): JavaScript 面向切面编程笔记:梳理 AOP、DI、IoC 三个概念的定义与相互关系(IoC 是基础、DI 是手段、AOP 依赖两者),并整理 opensumi/di、meld 等 JS 实现库。 - [SEO 入门学习笔记:ahrefs 系列要点整理](https://popring.cn/blog/seo-beginner-guide): SEO 入门学习笔记:总结 ahrefs 系列文章的技术 SEO(抓取索引、关键词研究、页面与元标签优化)与 UX 侧的 CTR、跳出率、参与度三大行为信号,并整理 GSC、Ahrefs 等常用工具。 - [命令式调用弹窗:Vue 与 React 实现对比](https://popring.cn/blog/modal-vue-react-comparison): 用函数命令式打开弹窗的实现对比:Vue 用 createApp 动态挂载组件,React 用 createRoot 渲染,讲清创建实例、挂载 DOM、关闭后卸载的完整流程,附 vant 与 antd 源码参考。 - [使用骨架屏优化首屏白屏问题](https://popring.cn/blog/skeleton-screen-optimization): 用骨架屏优化 SPA 首屏白屏的实践:讲解骨架屏原理与三种生成方式,基于 Vite 插件实现两版注入方案,并解决路由异步加载导致的闪烁问题,附完整源码。 - [Next.js 拦截路由怎么用?点击弹 Modal、直达渲染详情页(附 Vue 对照实现)](https://popring.cn/blog/keep-layout-on-route-change): 对比 Next.js 拦截路由与 Vue 嵌套路由的两种实现:点击图片以 Modal 展示详情、直接访问 URL 则渲染完整页面,路由切换时保留列表页上下文,附完整示例代码。 - [通过 Webpack Loader 实现打包优化](https://popring.cn/blog/webpack-loader-optimization): 用 webpack 自定义 pitching loader 跳过非当前业务目录的文件,实现大型单仓 SPA 在开发模式下的按需打包提速,附完整 loader 实现代码与配置方式。 - [TypeScript 学习总结](https://popring.cn/blog/typescript-summary): TypeScript 学习资源收藏清单:入门教程、类型编程进阶文章、官方 Cheat Sheets,以及 type-challenges、typehero 等类型体操通关挑战,按入门与练习两类整理。 - [Vue 父子组件生命周期执行顺序](https://popring.cn/blog/vue-lifecycle-order): Vue 父子组件生命周期执行顺序实测:首次挂载、props 更新、销毁三个阶段各钩子的先后次序,先给结论再附完整实验代码和在线示例,并解释背后的设计原因。 - [防止按钮重复点击的几种方案](https://popring.cn/blog/prevent-button-double-click): 表单提交因网络慢被用户连点多次怎么办:给出禁用按钮加 loading、移除点击事件、两者结合以及在 Vue 中封装 ajax 的四种防重复点击方案,附完整示例代码。 - [React + TypeScript 项目重构记录](https://popring.cn/blog/react-typescript-refactor): 用 TypeScript 重构 React 后台管理项目的记录:自定义 CRA 配置、webpack 与 tsconfig 别名、索引签名等 TS 用法,以及几个常用 Hook 的上手体会。 - [CSS3 新特性总结](https://popring.cn/blog/css3-new-features): CSS3 新特性学习笔记:scroll-behavior 平滑滚动、clip-path 裁剪、background-clip、::selection 与 ::placeholder 五个属性的用法示例。 - [React + Antd 项目实战笔记](https://popring.cn/blog/react-antd-practice): 学 React 时用 antd 写后台管理项目的实战笔记:生命周期梳理、this 指向问题、父子组件通信与方法调用、Context、Fragments,以及 webpack 路径别名等踩坑记录。 - [Vue 入门学习笔记](https://popring.cn/blog/vue-beginner-notes): Vue 2 入门学习笔记,按天整理:常用指令、computed 与 watch、生命周期、组件通信(props、$emit、事件总线)、插槽、路由配置及 Vuex 基础用法,示例齐全。 - [Axios 使用指南](https://popring.cn/blog/axios-guide): Axios 入门使用总结:从安装、请求方法别名、baseURL 全局配置到请求/响应拦截器,并给出在 Vue 和 React 项目中封装挂载的完整示例。 - [Vue 项目踩坑记录:Vue-cli 配置和 Vuex](https://popring.cn/blog/vue-cli-vuex-pitfalls): 仿去哪儿网项目的踩坑记录:Vue-cli 2.x 与 3.x 配置 webpack 别名、stylus 路径引用、keep-alive 缓存机制,以及 Vuex 状态管理和路由懒加载的用法。 - [微信小程序开发踩坑指南](https://popring.cn/blog/wechat-miniprogram-pitfalls): 微信小程序开发踩坑笔记:rpx 尺寸换算、事件传参 data-*、wxs 的限制、自定义组件数据监听器等,另附 WEPY 框架的项目搭建与 mixin 抽离实践。 - [JS 中 substr、substring 和 slice 的区别](https://popring.cn/blog/substr-substring-slice): 对比 JS 三个字符串截取方法 substr、substring、slice 的参数含义与差异,说明 substr 已不被推荐,附示例代码和 MDN 文档链接,帮你不再混淆。 - [scrollTop 值为 0 等浏览器兼容问题](https://popring.cn/blog/scrolltop-browser-compat): 踩坑记录:获取 scrollTop 在 IE、Edge、Safari、Firefox、Chrome 下取值方式各不相同甚至为 0,整理各浏览器的兼容写法并给出一行代码的通用解法。 ## 转载 - [[转] 走出困境的最佳方式](https://popring.cn/blog/best-way-out-of-dilemma): 原文:How to Do Great Work 这篇文章探讨了当我们在学习、工作或创作中遇到瓶颈时,如何快速摆脱困境。作者分享了一种心理学驱动的策略,帮助人们在思维受阻时找到突破口。 - [[转] 我的几何人生 - 丘成桐](https://popring.cn/blog/geometry-life): 转载自人民日报丘成桐《我的几何人生》:从香港农村的清贫少年到师从陈省身、开创几何分析学科,回顾父亲的家国教诲与“标心于万古之上”的治学志向。 - [[转] 如何做出伟大的工作](https://popring.cn/blog/how-to-do-great-work): 原文:How to Do Great Work Paul Graham 在《How to Do Great Work》这篇文章中探讨了如何创造出卓越的工作。他提出了一些关键理念,旨在帮助读者理解成就伟大工作的核心因素。以下是文章中的主要观点及其分析: - [[转] 如何快速学习新知识](https://popring.cn/blog/how-to-learn-fast): 原文:how-to-learn-stuff-quickly 总结文章《How to Learn Stuff Quickly》(如何快速学习) - [[转] 通配符(Wildcard)使用指南](https://popring.cn/blog/wildcard-guide): 转载自 Computer Hope 的通配符科普:星号与问号分别匹配任意多个和单个字符,介绍通配符在文件搜索与模糊匹配中的常见用法和适用场景。 - [[转] 对贡献有激情,对回报有信心](https://popring.cn/blog/passionate-contribution): 本文摘录自是一位前辈的Blog 一般的生意人,都在反复评估,自己的贡献和回报的关系。如果贡献大于回报,就说是吃亏了。贡献小于回报,就说占了便宜。 - [好文推荐合集](https://popring.cn/blog/recommended-articles): 个人收藏的好文合集:涵盖职场效率与技术分享、前端监控体系、设计模式、Google 技术写作、提问的智慧、大数据渲染性能优化及系统设计面试题等主题的文章链接。 ## 年度总结 - [2023年度总结](https://popring.cn/blog/2023-annual-review): 2023 年度总结:读完《高效能人士的七个习惯》等几本书,技能上入门 Next.js 并对后端产生兴趣,用运动和正念冥想调节健康与压力,展望 2024 的四个目标。 - [2022年度总结](https://popring.cn/blog/2022-annual-review): 2022 年度总结:一年状态低迷的自我剖析,整理了四代时间管理理论与费曼学习法两套方法论,并立下读书与练字的新年计划。 - [2021年度总结](https://popring.cn/blog/2021-annual-review): 2021 年度总结:从厦门实习辞职备战春招,拿到 offer 后入职上海开始 996,沉淀了 B 端业务认知、工作节奏与沟通方法,附求职心态与面试技巧复盘。 - [2020年度总结](https://popring.cn/blog/2020-annual-review): 2020 年度总结:疫情下写毕设、十月才开始的秋招与厦门实习经历,读完《深入浅出Node.js》《白帽子讲Web攻防》,并养成了早睡早起的习惯。 - [2019年度总结](https://popring.cn/blog/2019-annual-review): 2019 年度总结:上半年实习备考,下半年用 Vue 做旅游项目、React 全家桶写后台管理,复盘箭头函数兼容性等踩坑,并立下学 TypeScript 和后端的新年计划。 - [每周总结(二)](https://popring.cn/blog/weekly-summary-2): 每周总结第二篇:Yarn 的安装、换源与常用命令(附 npm 命令对照表),以及 Ajax 中 XMLHttpRequest 与 Fetch 的写法对比和各自优缺点。 - [每周总结(一)](https://popring.cn/blog/weekly-summary-1): 2019 年首篇每周总结:webpack 入口、出口、loader、plugin 核心概念,CSS 盒模型与 box-sizing,小程序 request 封装,以及 LeetCode 有效括号题解。 ## 软素质 - [OKR 目标管理法简介](https://popring.cn/blog/okr-intro): OKR(目标与关键结果)目标管理法的简短介绍,收录了一份了解 OKR 基本概念与用法的入门参考资料入口。 - [六顶思考帽:多角度思考问题](https://popring.cn/blog/six-thinking-hats): 爱德华·德博诺提出的平行思维工具——用六种颜色的帽子代表六种思维模式,帮助我们跳出单一视角,系统地分析问题。 - [优势管理:发现并发挥你的优势](https://popring.cn/blog/strengths-management): 围绕优势管理的成长笔记:用乔哈里窗认识自己,拆解自我认知五大误区与职业发展三个迷思,最后给出 TPA 三步反思法,帮你在最强的方面持续进步。 - [职场效率提升工具汇总](https://popring.cn/blog/workplace-productivity-tools): 汇总常用职场效率方法论:SMART 目标、PDCA 循环、5W2H、SWOT、金字塔原理、WBS、甘特图、时间管理矩阵、DISC 与麦肯锡七步分析法,每个附要点解读。 - [职场新人必备锦囊](https://popring.cn/blog/workplace-newcomer-guide): 职场新人沟通与做事的三个锦囊:互惠原则与 DISC 差异化沟通、PREP 归纳法与数据说话、认知清晰与价值制胜的做事心法,条目式速读。 ## 面试 - [为什么 setTimeout 会有延迟?](https://popring.cn/blog/why-settimeout-delay): JS 面试题:setTimeout 的延迟从哪来——HTML 标准规定嵌套调用达 5 次后强制 4ms 最小超时,加上并发任务、上下文切换与设备性能等影响因素。 - [什么是可替换元素和不可替换元素?](https://popring.cn/blog/replaced-vs-non-replaced-elements): HTML 面试题:什么是可替换元素与不可替换元素。解释浏览器如何根据标签属性决定 img、input 等置换元素的显示内容,以及为什么这类内联元素能设置宽高。 - [GET 和 POST 请求有什么区别?](https://popring.cn/blog/get-vs-post): 面试常问的 GET 与 POST 区别:从缓存、URL 长度限制、编码方式、历史记录、安全性等九个角度对比,并补充 GET body 传参和 URL 长度限制的真相。 - [HTTPS 握手过程详解](https://popring.cn/blog/https-handshake): 面试常考的 HTTPS 握手过程梳理:从客户端发起连接到用三个随机数生成会话密钥的完整流程,并说明证书验证走非对称加密、后续通信走对称加密。 - [从输入 URL 到页面显示发生了什么?](https://popring.cn/blog/url-to-page-render): 经典浏览器面试题梳理:从输入 URL 到页面显示的完整流程,覆盖 DNS 解析、TCP 握手、缓存检查、DOM 与 CSSOM 构建、渲染树生成到布局绘制的十个环节。 - [Vue 双向数据绑定是什么原理?|前端面试题(十二)](https://popring.cn/blog/frontend-interview-daily-12): 前端面试题第十二篇:RESTful API 设计要点(HTTP 动词、版本号、资源命名),Vue 基于 Object.defineProperty 的双向绑定原理,以及 margin/padding 百分比的基准。 - [2021 春招前端面经](https://popring.cn/blog/2021-spring-frontend-interview): 2021 春招前端面经,记录微店一面二面完整题目:深浅拷贝、HTTPS 建立过程、HTTP 缓存与状态码、Vue 原理、长列表优化、微前端等考点。 - [2020 秋招实习前端面经](https://popring.cn/blog/2020-autumn-frontend-interview): 2020 秋招前端实习面经,记录阿里、腾讯、猫眼等十余家公司的面试与笔试真题:跨域与 JSONP、HTTP 缓存、事件循环、Vue 原理、XSS/CSRF、手写发布订阅等考点。 - [v-if 和 v-show 有什么区别?](https://popring.cn/blog/v-if-vs-v-show): Vue 高频面试题:v-if 与 v-show 的区别——DOM 渲染销毁机制、初始与切换开销、回流重绘影响,以及频繁切换场景下该选哪个的判断依据。 - [visibility:hidden、display:none、opacity:0 有什么区别?](https://popring.cn/blog/visibility-display-opacity): CSS 面试题实验对比:visibility:hidden、display:none、opacity:0 三种隐藏方式在占位布局、回流重绘、事件触发上的区别,用代码实验逐一验证并给出结论。 - [Promise、Generator、async/await 有什么区别?|前端面试题(十一)](https://popring.cn/blog/frontend-interview-daily-11): 前端面试题第十一篇:从回调、Promise 到 async/await 的异步编程演进,load 与 DOMContentLoaded 触发时机,箭头函数特性及 for...of 和 for...in 的区别。 - [JavaScript 继承有哪几种实现方式?|前端面试题(十)](https://popring.cn/blog/frontend-interview-daily-10): 前端面试题第十篇:JavaScript 六种继承写法逐一对比优缺点,另覆盖 HTTP 报文与 get/post 区别、XSS/CSRF、浏览器渲染重排重绘及前端错误监控上报。 - [JavaScript 原型链是怎么工作的?|前端面试题(九)](https://popring.cn/blog/frontend-interview-daily-9): 前端面试题第九篇:标准与 IE 盒模型及 JS 获取宽高的四种方式、DOM 事件级别与捕获冒泡流程、原型链关系图解、instanceof 原理与手写 new 实现。 - [display:none 和 visibility:hidden 有什么区别?|前端面试题(八)](https://popring.cn/blog/frontend-interview-daily-8): 前端面试题第八篇:display:none 与 visibility:hidden 的三点区别——是否占据布局位置、属性继承行为差异、修改后是否触发重新渲染,配代码对比演示。 - [三栏自适应布局有哪几种实现?|前端面试题(七)](https://popring.cn/blog/frontend-interview-daily-7): 前端面试题第七篇:两种遍历统计文档内所有 DOM 标签的写法,以及三栏自适应布局的五种实现:float、绝对定位、flex、table 与 grid,附完整可运行代码。 - [React setState 是同步还是异步?|前端面试题(六)](https://popring.cn/blog/frontend-interview-daily-6): 前端面试题第六篇:通过三道编程题拆解 React setState 在合成事件与 setTimeout 中的“异步”差异、Hooks 闭包陷阱,以及 useEffect 清除函数的执行时机。 - [HTTP 304 是什么?协商缓存是怎么工作的?|前端面试题(五)](https://popring.cn/blog/frontend-interview-daily-5): 前端面试题第五篇:结合 ETag/If-None-Match 抓包演示 304 状态码原理,并梳理 HTTP 0.9 到 2.0 的版本演进:持久连接、管道机制、多路复用与头信息压缩。 - [z-index 层叠顺序是怎么计算的?|前端面试题(四)](https://popring.cn/blog/frontend-interview-daily-4): 前端面试题第四篇:CSS 放头部 script 放底部的原因、@import 与 link 的区别、z-index 层叠顺序经典题解析、flex-shrink 缩放计算,以及连续赋值与 let/var 输出题。 - [JavaScript 闭包是什么?有什么实际用途?|前端面试题(三)](https://popring.cn/blog/frontend-interview-daily-3): 前端面试题第三篇:三种垂直水平居中写法、闭包经典循环问题与解法、强缓存与协商缓存机制(Expires/Cache-Control/ETag),以及前端性能优化清单。 - [跨域有哪几种解决方案?|前端面试题(二)](https://popring.cn/blog/frontend-interview-daily-2): 前端面试题第二篇:content-box 与 border-box 盒模型、常见 CSS 布局方式、JSONP 与 CORS 跨域方案、XSS/CSRF 防御,以及防抖和节流的手写实现。 - [call、apply、bind 有什么区别?|前端面试题(一)](https://popring.cn/blog/frontend-interview-daily-1): 前端面试题第一篇:BFC 的创建条件与 margin 重叠、首页白屏优化、函数柯里化实现、bind/apply/call 区别,以及浏览器与 Node 事件循环机制的差异。 - [em、rem 和 vw/vh 有什么区别?](https://popring.cn/blog/em-rem-vw-vh): 面试常考的 CSS 相对单位对比:em 相对父元素字体大小、rem 相对根元素、vw/vh 相对视口宽高,配 CodePen 示例讲清三者的换算规则与使用差异。 ## 工具 - [Linux 实战技能学习笔记](https://popring.cn/blog/linux-practical-notes): Linux 入门实战笔记:常用文件命令、tar 打包解压、用户与权限管理(chmod/chown)、网络配置排查、yum 软件安装、单用户模式重置 root 密码,以及 shell 脚本基础。 - [Vim 常用命令速查](https://popring.cn/blog/vim-cheatsheet): Vim 常用命令速查表:normal 模式下的光标移动、查找、删除粘贴、插入换行等基础操作逐条注释,文末附 openvim、vim-adventures 等入门练习资源。 - [Mac 使用技巧汇总](https://popring.cn/blog/mac-tips): Mac 日常使用技巧汇总:brew 安装软件与 services 管理服务、iTerm2 和 Vim 的常用快捷键,以及几个 macOS 系统快捷键的速查表。 - [Git 入门教程(三):代理配置](https://popring.cn/blog/git-tutorial-3-proxy): Git 入门系列第三篇:配置用户名邮箱、生成 SSH key 连接 GitHub,并为 Git 配置 HTTP/HTTPS/SSH 代理,附中文文件名乱码的解决办法。 - [Git 入门教程(二):进阶用法](https://popring.cn/blog/git-tutorial-2-advanced): Git 进阶篇:本地仓库关联远程的完整流程,clone/push/fetch/merge/pull 等常用命令示例,以及 cherry-pick、rebase 用法和 rebase 与 merge 的取舍对比。 - [Chrome DevTools 调试技巧](https://popring.cn/blog/chrome-devtools-tips): Chrome DevTools 调试技巧速查:八大面板概览、copy/clear 等 Console 工具函数、live expression,以及打开控制台、调整数值、隐藏 DOM 元素的常用快捷键。 - [PowerShell 常用命令速查](https://popring.cn/blog/powershell-cheatsheet): PowerShell 常用命令速查笔记:记录以管理员模式启动 PowerShell、强制删除文件夹等 Windows 命令行的日常操作写法。 - [Git 入门教程(一):基础操作](https://popring.cn/blog/git-tutorial-1-basics): Git 入门第一篇:从 git init 与用户配置讲起,覆盖 add/commit/status、.gitignore、log 与版本回退、分支创建合并,到 push/pull 与 GitHub 远程协作。 ## JavaScript - [你必须知道的14个JavaScript函数(翻译)](https://popring.cn/blog/14-javascript-functions): 翻译自 bytefish 的 14 个必知 JavaScript 函数一文,手写实现 map/filter/reduce/flat、柯里化、防抖节流、图片懒加载、洗牌算法等常用工具函数。 ## 算法 - [LeetCode 70:爬楼梯](https://popring.cn/blog/leetcode-70-climbing-stairs): LeetCode 70 爬楼梯题解,用 JavaScript 依次给出朴素递归、记忆化递归、动态规划和 O(1) 空间的斐波那契优化四种解法,并标注各自的时间空间复杂度。 ## 后端 - [Go 语言入门笔记](https://popring.cn/blog/go-beginner-notes): Go 入门第一步的环境配置:开启 GO111MODULE 并把 GOPROXY 换成国内源,覆盖 macOS/Linux/Windows 三种写法,附一份 Go 入门学习资料清单。 - [Node.js 学习笔记](https://popring.cn/blog/nodejs-notes): 早期学 Node.js 的系统笔记:CommonJS 模块机制、path/Buffer/events/fs 核心模块、回调地狱的解决方案、ESLint 等工程化配置,以及静态资源服务器与 Mocha 测试入门。 ## 编程语言 - [C语言 第十章 文件操作](https://popring.cn/blog/c-lang-ch10-file-io): C 语言第十章文件操作笔记:文本文件与二进制文件的区别,fopen 打开模式,fgetc/fputs/fscanf/fread 等读写函数,以及 fseek/ftell 位置指针定位。 - [C语言 第九章 结构体](https://popring.cn/blog/c-lang-ch9-structs): C 语言第九章结构体笔记:结构体的定义、初始化与嵌套,结构体指针的 -> 用法,typedef 起别名,malloc/free 内存管理与单向链表的创建插入删除。 - [C语言 第八章 指针(下)](https://popring.cn/blog/c-lang-ch8-pointers-2): C 语言第八章指针(下)笔记:指针做函数参数交换变量、数组传参写法、字符串指针与输入输出,附字符串连接倒序套路和 strlen/strcpy 等常用函数速查。 - [C语言 第八章 指针(上)](https://popring.cn/blog/c-lang-ch8-pointers-1): C 语言第八章指针(上)笔记:地址与指针基本概念、取地址和间接访问两个运算符、指针的加减与关系运算,以及一维/二维数组与指针互换的重要公式。 - [C语言 第七章 函数](https://popring.cn/blog/c-lang-ch7-functions): C 语言第七章函数笔记:函数定义与声明、形参实参、返回值规则、递归求阶乘,局部/全局变量作用域与存储类别,以及宏定义等编译预处理。 - [C语言 第六章 数组](https://popring.cn/blog/c-lang-ch6-arrays): C 语言第六章数组笔记:一维数组的定义、初始化与下标使用注意点,结合成绩统计、元素插入删除、选择排序等例题,以及二维数组的存储与定义规则。 - [C语言 第五章 循环结构](https://popring.cn/blog/c-lang-ch5-loops): C 语言第五章循环结构笔记:while、do-while、for 三种循环的执行顺序与区别,break/continue 的用法,并以素数判断为例演示穷举法。 - [C语言 第四章 选择结构](https://popring.cn/blog/c-lang-ch4-selection): C 语言第四章选择结构笔记:关系与逻辑运算符、运算符优先级速查、三目条件运算符,以及 if 和 switch 语句的写法与注意点。 - [C语言 第三章 顺序结构](https://popring.cn/blog/c-lang-ch3-sequential): C 语言第三章顺序结构笔记:语句与头文件基础,putchar/getchar、printf/scanf 格式化输入输出的用法口诀,附 sqrt、pow 等常用数学库函数速查表。 - [C语言 第二章 数据类型和运算符](https://popring.cn/blog/c-lang-ch2-data-types): C 语言第二章数据类型和运算符笔记:整型/浮点/字符类型与常量后缀、ASCII 码与转义字符、自增自减与逗号表达式,以及按位运算和移位的规则。