闭包递归
闭包(lambda/匿名函数)递归调用自己,看似一句"在函数体里调自己",实则暗藏一个根本难题:闭包没有名字,它怎么在自己的函数体里指代自己? 普通函数能递归,是因为它有名字;而闭包的精髓恰恰是"匿名"。这个"自我引用"(self-reference)的矛盾,是几乎所有支持闭包的语言都要面对的经典问题。各语言给出的答案大相径庭–有的...
函数传参
函数传参是每种语言最基础的功能,却也是跨语言理解时最容易踩坑的地方。同样一句"传引用",在 C++ 里是语言级特性,在 Java/Python 里却常常被误用。根本原因在于"变量"和"对象"在不同语言里建模不同–有的语言变量是"装值的盒子",有的则是"贴在对象上的标签"。本文用一个统一的分析框...
C++ 转换运算符
在 C++ 中,转换运算符(conversion operator) 又称用户定义转换函数(user-defined conversion function),是一种特殊的成员函数,用于把当前类类型的对象转换为另一个类型。它的语法形式是 operator 目标类型(),与构造函数形成对称关系:构造函数把"其他类型"构造成"本类型",而转换运算符把&qu...
最佳实践、性能与调试
📚 Rust 课程系列 课程概览 基础语法 函数与输入输出 所有权、借用与生命周期 结构体、枚举与模式匹配 类型系统:泛型、trait 与多态 集合与容器 错误处理与 Panic 恢复 模块、属性与宏 智能指针、迭代器与闭包 并发与异步编程 Unsafe Rust 与常用 trait 详解 工具链、Cargo 与外部 crate 最佳实践、性能与调试(本文) 本章是课程的收尾篇,汇...
工具链、Cargo 与外部 crate
📚 Rust 课程系列 课程概览 基础语法 函数与输入输出 所有权、借用与生命周期 结构体、枚举与模式匹配 类型系统:泛型、trait 与多态 集合与容器 错误处理与 Panic 恢复 模块、属性与宏 智能指针、迭代器与闭包 并发与异步编程 Unsafe Rust 与常用 trait 详解 工具链、Cargo 与外部 crate(本文) 最佳实践、性能与调试 工欲善其事,必先利其器...
Unsafe Rust 与常用 trait 详解
📚 Rust 课程系列 课程概览 基础语法 函数与输入输出 所有权、借用与生命周期 结构体、枚举与模式匹配 类型系统:泛型、trait 与多态 集合与容器 错误处理与 Panic 恢复 模块、属性与宏 智能指针、迭代器与闭包 并发与异步编程 Unsafe Rust 与常用 trait 详解(本文) 工具链、Cargo 与外部 crate 最佳实践、性能与调试 本章覆盖两个进阶主题:...
并发与异步编程
📚 Rust 课程系列 课程概览 基础语法 函数与输入输出 所有权、借用与生命周期 结构体、枚举与模式匹配 类型系统:泛型、trait 与多态 集合与容器 错误处理与 Panic 恢复 模块、属性与宏 智能指针、迭代器与闭包 并发与异步编程(本文) Unsafe Rust 与常用 trait 详解 工具链、Cargo 与外部 crate 最佳实践、性能与调试 Rust 的并发安全由...
智能指针、迭代器与闭包
📚 Rust 课程系列 课程概览 基础语法 函数与输入输出 所有权、借用与生命周期 结构体、枚举与模式匹配 类型系统:泛型、trait 与多态 集合与容器 错误处理与 Panic 恢复 模块、属性与宏 智能指针、迭代器与闭包(本文) 并发与异步编程 Unsafe Rust 与常用 trait 详解 工具链、Cargo 与外部 crate 最佳实践、性能与调试 智能指针提供超越引用的...
模块、属性与宏
📚 Rust 课程系列 课程概览 基础语法 函数与输入输出 所有权、借用与生命周期 结构体、枚举与模式匹配 类型系统:泛型、trait 与多态 集合与容器 错误处理与 Panic 恢复 模块、属性与宏(本文) 智能指针、迭代器与闭包 并发与异步编程 Unsafe Rust 与常用 trait 详解 工具链、Cargo 与外部 crate 最佳实践、性能与调试 当代码量增长,模块系统...
错误处理与 Panic 恢复
📚 Rust 课程系列 课程概览 基础语法 函数与输入输出 所有权、借用与生命周期 结构体、枚举与模式匹配 类型系统:泛型、trait 与多态 集合与容器 错误处理与 Panic 恢复(本文) 模块、属性与宏 智能指针、迭代器与闭包 并发与异步编程 Unsafe Rust 与常用 trait 详解 工具链、Cargo 与外部 crate 最佳实践、性能与调试 Rust 把错误分成两...
集合与容器
📚 Rust 课程系列 课程概览 基础语法 函数与输入输出 所有权、借用与生命周期 结构体、枚举与模式匹配 类型系统:泛型、trait 与多态 集合与容器(本文) 错误处理与 Panic 恢复 模块、属性与宏 智能指针、迭代器与闭包 并发与异步编程 Unsafe Rust 与常用 trait 详解 工具链、Cargo 与外部 crate 最佳实践、性能与调试 集合(容器)是日常编程...
类型系统:泛型、trait 与多态
📚 Rust 课程系列 课程概览 基础语法 函数与输入输出 所有权、借用与生命周期 结构体、枚举与模式匹配 类型系统:泛型、trait 与多态(本文) 集合与容器 错误处理与 Panic 恢复 模块、属性与宏 智能指针、迭代器与闭包 并发与异步编程 Unsafe Rust 与常用 trait 详解 工具链、Cargo 与外部 crate 最佳实践、性能与调试 Rust 的类型系统是...
结构体、枚举与模式匹配
📚 Rust 课程系列 课程概览 基础语法 函数与输入输出 所有权、借用与生命周期 结构体、枚举与模式匹配(本文) 类型系统:泛型、trait 与多态 集合与容器 错误处理与 Panic 恢复 模块、属性与宏 智能指针、迭代器与闭包 并发与异步编程 Unsafe Rust 与常用 trait 详解 工具链、Cargo 与外部 crate 最佳实践、性能与调试 结构体与枚举是 Rus...
所有权、借用与生命周期
📚 Rust 课程系列 课程概览 基础语法 函数与输入输出 所有权、借用与生命周期(本文) 结构体、枚举与模式匹配 类型系统:泛型、trait 与多态 集合与容器 错误处理与 Panic 恢复 模块、属性与宏 智能指针、迭代器与闭包 并发与异步编程 Unsafe Rust 与常用 trait 详解 工具链、Cargo 与外部 crate 最佳实践、性能与调试 所有权(ownersh...
函数与输入输出
📚 Rust 课程系列 课程概览 基础语法 函数与输入输出(本文) 所有权、借用与生命周期 结构体、枚举与模式匹配 类型系统:泛型、trait 与多态 集合与容器 错误处理与 Panic 恢复 模块、属性与宏 智能指针、迭代器与闭包 并发与异步编程 Unsafe Rust 与常用 trait 详解 工具链、Cargo 与外部 crate 最佳实践、性能与调试 函数是组织代码的基本单...
Rust 基础语法
📚 Rust 课程系列 课程概览 基础语法(本文) 函数与输入输出 所有权、借用与生命周期 结构体、枚举与模式匹配 类型系统:泛型、trait 与多态 集合与容器 错误处理与 Panic 恢复 模块、属性与宏 智能指针、迭代器与闭包 并发与异步编程 Unsafe Rust 与常用 trait 详解 工具链、Cargo 与外部 crate 最佳实践、性能与调试 Rust 是一门注重内...
Rust 课程概览
📚 Rust 课程系列 课程概览(本文) 基础语法 函数与输入输出 所有权、借用与生命周期 结构体、枚举与模式匹配 类型系统:泛型、trait 与多态 集合与容器 错误处理与 Panic 恢复 模块、属性与宏 智能指针、迭代器与闭包 并发与异步编程 Unsafe Rust 与常用 trait 详解 工具链、Cargo 与外部 crate 最佳实践、性能与调试 这是一门面向已有编程基...
C++ 宏的常见用法与现代替代
C 预处理器宏是 C/C++ 中最古老也最具争议的特性之一。它发生在编译之前——纯文本替换,没有类型检查、没有作用域、调试时不可见。尽管现代 C++ 已为绝大多数宏场景提供了更安全的替代方案,宏仍大量存在于系统编程、跨平台代码和第三方库中。理解宏的常见用法,既是阅读遗留代码的必备技能,也是避免在新代码中误用的前提。 常量定义 最古老的用法——用宏定义编译期常量: 1234#define PI...
C++ 视图
C++ 里的“视图”不是某一个单独类型,而是一类共同思想:用一个轻量对象描述一段数据或一段计算,不拥有数据,尽量不复制,按需访问。它们把“我想看哪一段、以什么方式看”从“数据本身如何存储”里拆出来。 常见视图有三类: 类型 标准 作用 是否拥有元素 能否修改元素 std::string_view C++17 只读地观察一段字符 否 否(只读) std::span C++20...
Redis 底层原理与架构
Redis 是基于内存的键值存储,常被当作缓存、消息队列、分布式锁甚至轻量数据库使用。它之所以通用,关键在于其丰富的数据结构与精巧的底层实现。本文聚焦 Redis 的"内部"——数据结构的底层编码、Lua 执行模型、过期与淘汰机制、持久化、集群架构与故障转移;命令用法与适用场景见姊妹篇《Redis 使用手册》。 全局视角 Redis 的 key 是二进制安全的字符串,va...
golang-arch
写 Go 的人大多停在"写代码 → go build → 跑起来"这一层。但真要追问"go build 到底产出了什么?二进制里塞了哪些东西?程序被 OS 拉起来之后,CPU 第一条指令落在哪?goroutine 又是怎么’凭空’跑起来的?"——能讲清楚的人并不多。 这篇文章把 Go 从源码到执行的全链路拆开:编译格式 → 二进制格式 → 运行时格式 ...
MCP 协议详解:从架构到原语的设计拆解
Model Context Protocol(MCP)是 Anthropic 在 2024 年底推出的开放协议,目标是给 LLM 应用和外部数据源、工具之间定一个标准化的接驳方式。它借用了 Language Server Protocol(LSP)的思路——LSP 让任意编辑器对接任意语言服务,MCP 则让任意 AI 应用对接任意工具与上下文。 这篇文章不写"怎么装一个 MCP S...
Redis 使用手册
Redis 是基于内存的键值存储,常被当作缓存、消息队列、分布式锁甚至轻量数据库使用。它之所以通用,关键在于其丰富的数据结构——选对结构,命令和场景往往自然成立。本文是 Redis 使用侧手册,系统梳理各数据结构的核心命令与适用场景;底层编码、Lua 执行模型、过期淘汰、持久化与集群架构等原理见姊妹篇《Redis 底层原理与架构》。 全局视角 Redis 的 key 是二进制安全的字符串,v...
TypeScript 与 React 实战
📚 TypeScript 教程系列 入门与配置 基础类型与变量声明 函数 流程控制与运算符 集合类型 异步编程与错误处理 接口与类 泛型与类型组合 高级类型 模块、装饰器与工程化 TypeScript 与 Bun 实战 TypeScript 与 React 实战(本文) 前面的章节我们系统掌握了 TypeScript 的类型系统,并在 Bun 服务端场景里落地。本篇把 TypeSc...
TypeScript 与 Bun 实战
📚 TypeScript 教程系列 入门与配置 基础类型与变量声明 函数 流程控制与运算符 集合类型 异步编程与错误处理 接口与类 泛型与类型组合 高级类型 模块、装饰器与工程化 TypeScript 与 Bun 实战(本文) TypeScript 与 React 实战 前面的章节我们系统学习了 TypeScript 的类型系统与工程化能力,但一直停留在"编译成 JS 后...
TypeScript 模块、装饰器与工程化
📚 TypeScript 教程系列 入门与配置 基础类型与变量声明 函数 流程控制与运算符 集合类型 异步编程与错误处理 接口与类 泛型与类型组合 高级类型 模块、装饰器与工程化(本文) TypeScript 与 Bun 实战 TypeScript 与 React 实战 ⚠️ 来源声明:本文内容参考自 菜鸟教程 TypeScript 教程,仅供学习交流,版权归原作者所有。 本篇聚...
TypeScript 高级类型
📚 TypeScript 教程系列 入门与配置 基础类型与变量声明 函数 流程控制与运算符 集合类型 异步编程与错误处理 接口与类 泛型与类型组合 高级类型(本文) 模块、装饰器与工程化 TypeScript 与 Bun 实战 TypeScript 与 React 实战 ⚠️ 来源声明:本文内容参考自 菜鸟教程 TypeScript 教程,仅供学习交流,版权归原作者所有。 Typ...
TypeScript 泛型与类型组合
📚 TypeScript 教程系列 入门与配置 基础类型与变量声明 函数 流程控制与运算符 集合类型 异步编程与错误处理 接口与类 泛型与类型组合(本文) 高级类型 模块、装饰器与工程化 TypeScript 与 Bun 实战 TypeScript 与 React 实战 ⚠️ 来源声明:本文内容参考自 菜鸟教程 TypeScript 教程,仅供学习交流,版权归原作者所有。 Typ...
TypeScript 接口与类
📚 TypeScript 教程系列 入门与配置 基础类型与变量声明 函数 流程控制与运算符 集合类型 异步编程与错误处理 接口与类(本文) 泛型与类型组合 高级类型 模块、装饰器与工程化 TypeScript 与 Bun 实战 TypeScript 与 React 实战 ⚠️ 来源声明:本文内容参考自 菜鸟教程 TypeScript 教程,仅供学习交流,版权归原作者所有。 Typ...
TypeScript 异步编程与错误处理
📚 TypeScript 教程系列 入门与配置 基础类型与变量声明 函数 流程控制与运算符 集合类型 异步编程与错误处理(本文) 接口与类 泛型与类型组合 高级类型 模块、装饰器与工程化 TypeScript 与 Bun 实战 TypeScript 与 React 实战 ⚠️ 来源声明:本文内容参考自 菜鸟教程 TypeScript 教程,仅供学习交流,版权归原作者所有。 Jav...
TypeScript 集合类型
📚 TypeScript 教程系列 入门与配置 基础类型与变量声明 函数 流程控制与运算符 集合类型(本文) 异步编程与错误处理 接口与类 泛型与类型组合 高级类型 模块、装饰器与工程化 TypeScript 与 Bun 实战 TypeScript 与 React 实战 ⚠️ 来源声明:本文内容参考自 菜鸟教程 TypeScript 教程,仅供学习交流,版权归原作者所有。 Typ...
TypeScript 流程控制与运算符
📚 TypeScript 教程系列 入门与配置 基础类型与变量声明 函数 流程控制与运算符(本文) 集合类型 异步编程与错误处理 接口与类 泛型与类型组合 高级类型 模块、装饰器与工程化 TypeScript 与 Bun 实战 TypeScript 与 React 实战 ⚠️ 来源声明:本文内容参考自 菜鸟教程 TypeScript 教程,仅供学习交流,版权归原作者所有。 Typ...
TypeScript 函数
📚 TypeScript 教程系列 入门与配置 基础类型与变量声明 函数(本文) 流程控制与运算符 集合类型 异步编程与错误处理 接口与类 泛型与类型组合 高级类型 模块、装饰器与工程化 TypeScript 与 Bun 实战 TypeScript 与 React 实战 ⚠️ 来源声明:本文内容参考自 菜鸟教程 TypeScript 教程,仅供学习交流,版权归原作者所有。 Typ...
TypeScript 基础类型与变量声明
📚 TypeScript 教程系列 入门与配置 基础类型与变量声明(本文) 函数 流程控制与运算符 集合类型 异步编程与错误处理 接口与类 泛型与类型组合 高级类型 模块、装饰器与工程化 TypeScript 与 Bun 实战 TypeScript 与 React 实战 ⚠️ 来源声明:本文内容参考自 菜鸟教程 TypeScript 教程,仅供学习交流,版权归原作者所有。 Typ...
TypeScript 入门与配置
📚 TypeScript 教程系列 入门与配置(本文) 基础类型与变量声明 函数 流程控制与运算符 集合类型 异步编程与错误处理 接口与类 泛型与类型组合 高级类型 模块、装饰器与工程化 TypeScript 与 Bun 实战 TypeScript 与 React 实战 ⚠️ 来源声明:本文内容参考自 菜鸟教程 TypeScript 教程,仅供学习交流,版权归原作者所有。 Typ...
Java25 新特性
Java 25 是继 Java 21 之后的又一个长期支持(LTS)版本,于 2025 年 9 月 16 日发布,包含 18 个 JEP。Java 21 引入的虚拟线程、记录模式等在 25 中继续打磨成熟,同时 25 带来了模块导入、紧凑源文件、作用域值正式化等一批新特性,并在 AOT 提前编译、对象头压缩、JFR 可观测性等方面有显著提升。以下是对 Java 25 相比 Java 21 的...
Java Class
类(class)是 Java 面向对象编程的基本构建单元,它既是数据抽象的载体,也是行为封装的边界。理解 class 的核心内容,本质上是理解 Java 如何用类型系统组织数据与行为。本文从现代 Java(25 LTS)视角出发,梳理 class 设计的核心要素。 类的本质:状态与行为的封装 一个 class 由两部分构成:字段(状态)和方法(行为)。封装的目的是把可变状态收敛到最小范围,对...
Intel TBB
TBB (Threading Building Blocks) 是 Intel 出品的 C++ 并行编程库,也贡献给了 oneAPI 项目(oneAPI TBB)。它提供了高层抽象的任务并行、并行算法、并发容器和同步原语,让开发者不用直接操作 pthread/win32 thread 就能写出跨平台的高效并行程序。 安装与配置 获取方式 oneAPI TBB(推荐):https://git...
Vite 构建工具指南
开发时利用浏览器原生 ESM 按需加载,生产时交给 Rollup 打包。它不像 Webpack 那样在开发阶段先打成一个大包,而是让浏览器直接加载源码模块——项目越大,体验差异越明显。 启动快:不用全量打包,直接提供原生 ESM 模块。 HMR 快:热更新只影响变化的模块,不受应用规模影响。 开箱即用:TypeScript、JSX、CSS、静态资源开箱支持。 插件生态清晰:兼容 Rollu...
前端调试技巧与工具大全
浏览器开发者工具 Chrome DevTools 核心功能 Console 面板 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828...
包管理器完全指南:NPM、Yarn、PNPM、Bun
NPM (Node Package Manager) NPM 是 Node.js 默认的包管理器,也是世界上最大的软件注册表。 安装与初始化 123456789101112131415# 检查版本npm --version# 或npm -v# 初始化项目(交互式)npm init# 快速初始化(使用默认值)npm init -y# 安装所有依赖npm install# 或npm i 包安装 ...
前端性能优化实战指南
性能优化概述 前端性能优化的目标是提升用户体验,让页面加载更快、响应更及时、交互更流畅。 核心 Web 指标 (Core Web Vitals) LCP (Largest Contentful Paint): 最大内容绘制,衡量加载性能,应在 2.5 秒内 INP (Interaction to Next Paint): 交互到下次绘制,衡量响应性,应在 200 毫秒内 CLS (Cumu...
JavaScript 核心要点详解
ES6+ 关键特性 解构赋值 解构赋值是一种从数组或对象中提取值并赋给变量的语法糖。 数组解构 1234567891011121314151617181920212223242526// 基本数组解构const [a, b, c] = [1, 2, 3];console.log(a, b, c); // 1, 2, 3// 跳过某些元素const [first, , third] = [1,...
前端工程化工具链:ESLint、Prettier、Biome、Tailwind CSS
ESLint ESLint 是 JavaScript 和 TypeScript 的代码检查工具,用于发现和修复代码中的问题。 安装与配置 12345678# 安装 ESLintbun add -d eslint# 初始化配置(交互式)bunx eslint --init# 或手动安装推荐的配置bun add -d eslint @eslint/js typescript-eslint ESL...
C++ STL 容器
标准库容器是 C++ 日常 80% 工作的载体,但很多人对它们的认知停留在"vector 快、list 能随便插"。真正决定选型的,是三件事:内存布局(连续 or 节点)、迭代器失效规则、各操作的复杂度保证。这篇把这三件事讲透,给一张能照着选的决策表。容器的内存分配细节见 C++ STL Allocator,这里聚焦容器本身。 容器的分类 STL 容器按组织方式分三大类:...
Codex CLI 使用技巧
Codex CLI 不只是一个“在终端里聊天的 AI”。把它用顺手之后,它更像一个可配置、可约束、可脚本化的本地编码代理:能读写仓库、在沙箱里执行命令、调用 MCP 工具、用 AGENTS.md 沉淀规则,也能在 CI 或脚本里以 JSON 输出工作结果。 这篇不是入门教程。安装、登录、第一次提问这些内容只保留最低限度;重点放在日常高强度使用时真正影响效率和安全性的东西:审批与沙箱、配置作用...
Spring Boot Bean 使用规范
理解 Spring Boot 的 Bean 加载原理后,更重要的是在实际开发中正确使用。本文从用户角度出发,总结 Bean 的使用规范和最佳实践。 Bean 定义方式 Spring 提供了多种定义 Bean 的方式,各有适用场景: 123456789101112131415161718192021222324252627282930313233343536373839404142434445...
OpenCode 源码解析:从一次提问到工具调用的完整链路
OpenCode 是 SST 团队开源的 AI 编程助手,定位与 Claude Code 类似,但用 TypeScript + Bun 实现,并基于 Effect 与 Vercel AI SDK 构建了一套相当工程化的运行时。这篇以 sst/opencode 的真实源码为依据,逐机制拆解它"为什么是这样设计的"。 本文所有结论均来自 github.com/sst/open...
Java Guava
Google Guava 是 Google 开发的 Java 核心库,提供了集合、缓存、并发、字符串处理、I/O 等领域的增强工具。相比 Apache Commons,Guava 更现代化,设计理念更接近函数式编程风格。 概述 Guava 的设计哲学: 不可变优先:大量使用不可变集合 预防式设计:快速失败(fail-fast),尽早暴露问题 函数式风格:Predicate、Function...
Java Apache Commons
Apache Commons 是 Apache 软件基金会提供的一系列 Java 工具库,它们是 Java 生态中最成熟、使用最广泛的基础设施之一。本文介绍几个最常用的 Commons 库。 概述 Apache Commons 项目起源于 Jakarta 项目,目的是提供可复用的 Java 组件。这些库填补了 JDK 标准库的空白,提供了大量实用工具方法。 核心价值:减少样板代码、处理边界...
Logback 详解:Java 日志框架的核心与实践
Logback 是 Java 生态系统中使用最广泛的日志框架之一,作为 Log4j 的继任者和 SLF4J 的原生实现,它以其卓越的性能、灵活的配置和丰富的功能成为现代 Java 应用的首选日志解决方案。 Logback 简介 什么是 Logback Logback 由 Log4j 创始人 Ceki Gülcü 开发,设计上分为三个核心模块: 模块 作用 logback-cor...
mybatis
什么是 MyBatis MyBatis 是一个半自动化的持久层框架,它将 SQL 语句从 Java 代码中解耦出来,放在 XML 配置文件或注解中。与 Hibernate 等全自动 ORM 框架不同,MyBatis 不会自动生成 SQL,而是让开发者直接编写 SQL,从而获得更高的灵活性和性能控制。 MyBatis 的核心组件 组件 作用 生命周期 SqlSessionFact...
Spring Boot Common Annotations
SpringBoot 的注解系统是其"约定优于配置"哲学的核心体现。这篇文章不讲虚的,只讲实际开发中真正会用到的注解。我会按照功能分类,每个注解都配上最简示例。 核心启动注解 @SpringBootApplication 这是 SpringBoot 应用的入口注解,一个组合注解,等价于三个注解的叠加: 123456@SpringBootApplicationpublic ...
Spring Boot Startup
Spring Boot 中的各种原理解析说一说 Spring Boot 启动原理 入口点:SpringApplication.run() 123456@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplic...
Golang Struct Tag
Struct Tag 是 Go 语言中一个简洁但极其强大的特性。它允许你为结构体字段附加元数据,这些元数据可以被反射读取,广泛用于序列化、ORM、验证等场景。 基本语法 Struct Tag 是紧跟在字段类型后面的反引号字符串: 12345type User struct { Name string `json:"name"` Age int...
Golang Versions
1.27 Go 1.27(预计 2026 年 8 月发布) 延续了 1.26 “把痛点都修了"的路线,并在语言表达力和标准库上来了两记重拳:泛型方法终于落地、encoding/json/v2 正式进标准库。如果说 1.26 是"最舒服的小版本”,1.27 就是"标准库开始换代"的版本。 下面按重要程度捋一捋最值得关注的点(基于官方 tip 文档 dra...
Claude Code 高阶玩家手册
Claude Code 不只是一个“在终端里聊天的 AI”。把它用顺手之后,它更像一个可配置、可约束、可编排的本地开发代理:能读写仓库、执行命令、调用 MCP 工具、运行子代理、触发 Hooks,也能在 CI 或脚本里以 JSON 输出工作结果。 这篇不是入门教程。安装、登录、第一次提问这些内容只保留最低限度;重点放在日常高强度使用时真正影响效率和稳定性的东西:上下文、权限、配置、自动化、并...
Rust Tips
& 的各种用法 不可变引用(借用) 最基本的形式,用于借用所有权而不转移: 1234567fn print_length(s: &String) { println!("{}", s.len());} // s 在这里归还,不影响原数据let s = String::from("hello"...
C++11 - 现代 C++ 的开端
📑 C++ 演进系列:总览 | C++11 | C++14 | C++17 | C++20 | C++23 | C++26 C++11 是 C++ 历史上最重要的标准之一,它彻底改变了 C++ 的编程方式,被称为"现代 C++"的起点。在 C++11 之前,C++98/03 沿用了十余年,语言表达力落后于时代。C++11 一次性引入了自动类型推导、Lambda、智能...
Cpp Timeline
📑 C++ 演进系列:总览 | C++11 | C++14 | C++17 | C++20 | C++23 | C++26 C++: 从 C++11 到 C++26 的演进之路 C++ 从 2011 年开始进入了快速发展的时代,每三年一个新标准,带来了大量现代特性。本文将梳理 C++11 到 C++26 的主要特性和常用特性。 详细指南 C++11 - 现代 C++ 的开端 C++...
C++20 - 革命性更新
📑 C++ 演进系列:总览 | C++11 | C++14 | C++17 | C++20 | C++23 | C++26 C++20 是继 C++11 之后最大的更新,引入了模块、协程、概念和 ranges 等重大特性。它从四个方向重塑了 C++: Concepts 让模板约束成为一等公民、Ranges 让算法与数据以管道组合、协程把异步/生成器纳入语言、模块从根本上改善编译模型。此...
C++17 - 重大更新
📑 C++ 演进系列:总览 | C++11 | C++14 | C++17 | C++20 | C++23 | C++26 C++17 带来了许多重要的新特性,显著提升了 C++ 的表达力和安全性。它虽不如 C++11/C++20 那般颠覆,但落地了大量"早就该有"的实用特性:结构化绑定、optional/variant/any/string_view、文件系统、并...
C++23 - 最新特性
📑 C++ 演进系列:总览 | C++11 | C++14 | C++17 | C++20 | C++23 | C++26 C++23 是当前已发布的最新标准,继续完善和扩展 C++ 的功能。它在 C++20 的基础上查漏补缺:补齐 Ranges/Concepts/Modules 留下的短板,新增一批面向实际工程痛点的小特性(错误处理、格式化输出、容器适配),并进一步向"零开...
C++14 - 增量改进
📑 C++ 演进系列:总览 | C++11 | C++14 | C++17 | C++20 | C++23 | C++26 C++14 是一个较小的更新,主要是对 C++11 的改进和补充。它没有引入颠覆性概念,而是填补 C++11 留下的缺口、放宽不必要的限制、补齐明显缺失的工具(如 make_unique)。这种"查漏补缺"的版本让 C++11 的新特性更易用、...
C++26 - 下一个里程碑
📑 C++ 演进系列:总览 | C++11 | C++14 | C++17 | C++20 | C++23 | C++26 C++26 已于 2025 年年中完成特性冻结(feature freeze),预计 2026 年正式发布。它继续强化元编程、安全性、并发和标准库表达能力。下面逐个特性展开,讲清它解决的问题、背后的设计以及使用时要注意的语义。 静态反射(Static Reflec...
Java Containers
Java 容器:别只盯着接口,看实现 Java 的 java.util 集合框架(JCF)是每个 Java 程序员的必修课。但如果你只是机械地记忆 List、Set、Map,那你根本不懂容器。容器的本质是数据结构在内存中的组织方式。 核心架构:从混乱到有序 Java 集合框架主要分为两大支系: Collection:存储单值元素。 Map:存储键值对(Key-Value)。 在 Java...
Kubernetes 架构与底层实现详解
Kubernetes(K8s)是容器编排的行业标准。本文重点剖析其架构和核心组件底层实现原理。 为什么 Kubernetes? 声明式 API:定义期望状态,系统自动维护 强一致性存储:etcd + Raft 分布式调度与控制器模式 插件化:CRI/CNI/CSI 整体架构 核心概念概览 在深入Kubernetes架构之前,我们需要理解几个核心概念: 概念 定义 作用 Po...
Java juc
JUC 是 java.util.concurrent 的缩写,它是 Java 标准库中一个至关重要的包,专门用于支持并发编程。从 Java 5 开始引入,JUC 极大地简化了多线程开发的复杂性,并提供了更强大、更灵活、更安全的并发工具。 可以毫不夸张地说,掌握 JUC 是从“会用多线程”到“精通并发编程”的必经之路。 为什么需要 JUC ? 在 JUC 出现之前,我们主要依赖 synchro...
Java gc
Java 8 (2014年) 是一个里程碑式的版本,其 GC 组合(Parallel GC + CMS/G1)在当时非常经典。但从 Java 9 开始,GC 领域进入了快速迭代和创新的时期,核心目标是:降低停顿时间、提高吞吐量、更好地适应现代大内存和多核硬件,并简化 GC 的使用和调优。 核心思想转变:从“选择”到“自适应” 在 Java 8 之前,你需要根据应用场景(吞吐量优先还是低延迟优...
C++ std::print
C++23 引入了 std::print 和 std::println,这是现代 C++ 对格式化输出的重大改进。相比传统的 printf,这些新函数提供了类型安全、性能优异且易于使用的格式化输出方案。 基本用法 简单输出 1234567891011#include <print>int main() { // 基本输出 std::print("H...
Java 模块系统
Java 模块系统(Java Platform Module System,简称 JPMS)是 Java 9(2017 年发布)引入的一项重大特性,也被称为 Project Jigsaw。该系统旨在解决 Java 早期版本中类路径(classpath)管理的痛点,如 JAR Hell(依赖冲突)、模块化不足和封装性弱等问题。通过模块化,Java 应用可以更好地组织代码、提高安全性、减少依赖并...
C++ Asio
Asio 是一个跨平台的 C++ 库,用于网络和低级 I/O 编程,提供了一套异步操作的框架。Boost.Asio 是其最知名的版本,但独立(standalone)版本的 Asio 允许在不依赖 Boost 的情况下使用。 Asio 库概述 Standalone Asio 是一个轻量级的网络编程库,设计目标是提供高效、异步的 I/O 操作。它支持以下功能: 网络编程:TCP、UDP、ICM...
Python 推导表达式
推导表达式(Comprehensions)是 Python 最优雅的特性之一:用单行代码完成循环、过滤、转换三件事。它不是语法糖,而是一种声明式的思维方式——你告诉 Python 你要什么,而不是怎么做。 列表推导 语法:[expression for item in iterable if condition] 123456789# 传统方式:命令式,告诉 Python "怎么做...
sort summary
好的,这里为您总结了 C++、Java、Python、Golang 和 Rust 这些主流语言的排序方法,特别是自定义排序的实现方式。 概述 语言 内置排序方法 主要特点 自定义排序核心 C++ std::sort 非常高效,通常是 IntroSort 函数对象 (Functor)、Lambda、普通函数 Java Arrays.sort(), Collections.so...
sort summary
好的,这里为您总结了 C++、Java、Python、Golang 和 Rust 这些主流语言的排序方法,特别是自定义排序的实现方式。 概述 语言 内置排序方法 主要特点 自定义排序核心 C++ std::sort 非常高效,通常是 IntroSort 函数对象 (Functor)、Lambda、普通函数 Java Arrays.sort(), Collections.so...
Java Concurrency
Java 线程是并发编程的核心,允许程序同时执行多个任务。虚拟线程相关内容 线程概述 线程(Thread)是操作系统能够进行运算调度的最小单位。在 Java 中,线程由 JVM 管理为轻量级执行单元:多个线程共享同一进程的内存空间(堆、方法区),但各有独立的栈空间(局部变量、方法调用栈)。Java 线程基于操作系统原生线程实现,通过 java.lang.Thread 和 java.lang....
Java Stream
Java Stream 是 Java 8 引入的一个功能强大的工具,用于处理集合数据(如 List、Set 等)或数组的声明式操作。它提供了一种函数式编程风格的方式,让开发者能够以简洁、可读性高且高效的方式处理数据。Stream 的核心思想是将数据操作分为一系列中间操作和终端操作,通过链式调用实现复杂的处理逻辑,同时支持并行处理以提高性能。 Stream 的核心概念 Stream 的设计灵...
Java Lambda
Java Lambda 表达式是 Java 8 引入的一项重要特性,用于简化函数式编程的实现。它允许开发者以更简洁的方式编写代码,特别是在处理集合操作、事件监听或函数式接口时。 什么是 Lambda 表达式? Lambda 表达式是一种匿名函数,它提供了一种简洁的方式来表示函数式接口(Functional Interface)的实例。函数式接口是只包含一个抽象方法的接口,例如 Runnabl...
Java Virtual Threads
Java 虚拟线程(Virtual Threads)是 Java 19 引入的一项特性,并在 Java 21 成为正式特性。虚拟线程是轻量级的线程实现,旨在提高 Java 程序在高并发场景下的性能和可扩展性,特别适合处理大量并发任务(如 I/O 密集型任务)。它通过将用户线程与平台线程(OS 线程)解耦,极大降低了线程创建和管理的开销。 虚拟线程的核心概念 什么是虚拟线程? 虚拟线程是...
C++ optional & expected
在 C++ 中,std::optional 和 std::expected 是两个用于处理可能不存在的值或可能失败的操作的现代工具,它们在 C++17 和 C++23 中分别引入,提供了更安全和表达力更强的错误处理机制。以下是对它们的详细说明,包括定义、用途、特性、用法、差异以及实际代码示例。 std::optional 定义 std::optional 是 C++17 引入的标准库组件,定...
C++ RTTI
下面把 C++ 的 RTTI(Run-Time Type Information,运行时类型信息)系统一次讲清楚,覆盖原理、用法、细节与坑,并给出精简示例。内容“精准”,不绕弯。 什么是 RTTI RTTI 是编译器在多态场景下,为对象保留其动态类型信息,以便在运行时查询和安全转换。标准接口主要有两件事: typeid:拿到对象(或类型)的类型描述 std::type_info。 dyna...
C++ Const Pointer
C/C++ 中 const 与指针的组合只有三种形态: 指向 const 的指针 1const T *ptr; // 等价于 T const *ptr; 指针指向的数据只读:*ptr = value 报错。 指针本身可变:ptr = &other 合法。 1234int a = 10, b = 20;const int *ptr = &a;// *ptr = 15; ...
C++ xxx_cast
在 C++ 中,提供了四种主要的类型转换操作符(cast),它们统称为 _cast 函数,用于在不同类型之间进行显式类型转换。这些操作符分别是 static_cast、dynamic_cast、const_cast 和 reinterpret_cast。它们取代了 C 风格的强制类型转换(如 (type)expression),提供了更安全、更清晰的类型转换方式。以下是对这四个 _cast ...
C++ Tips
收集一下奇奇怪怪的玩意(包括冷门用法)。。。。 1. 虚函数的默认参数 123456789101112131415161718192021222324252627#include <iostream>using namespace std;class Base {public: virtual void show(int x = 10) = 0; virtu...
C++ CRTP
CRTP CRTP = Curiously Recurring Template Pattern。核心形式是:让派生类把自己作为模板参数传给基类 1234template<typename Derived>struct Base { /* 使用 static_cast<Derived*>(this) 调用派生接口 */ };struct Deriv...
C++ Ranges 完全指南
为什么需要 Ranges? 传统 STL 处理数据序列冗长且易错: 123456// 传统方式:需要中间容器或繁琐的迭代器对std::vector<int> result;std::copy_if(nums.begin(), nums.end(), std::back_inserter(result), [](int n) { return n % 2 == 0;...
C++ Concept
Concept 是 C++20 对模板参数的命名约束。它解决了模板编程的核心痛点:错误信息晦涩、约束表达隐式、SFINAE 代码难以维护。 核心语法 12template<typename T>concept ConceptName = constraint_expression; 定义示例: 123456789101112131415template<typename ...
简明Rust语法介绍
Rust 是一门注重内存安全、性能和并发性的系统编程语言。以下是其核心语法的扩展介绍,涵盖更多细节和实用特性,适合初学者快速了解并深入掌握。 变量与常量 变量:使用 let 声明,默认不可变。使用 mut 允许修改。变量可以被遮蔽(重新声明)。 1234let x = 5;let x = x + 1; // 遮蔽,创建新变量let mut y = 10;y = 15; 常见场景与注意事项...
golang context
在 Go(Golang)中,context 是一个标准库提供的重要机制,用于控制协程(goroutine)之间的取消、超时、截止时间传递,以及上下文数据传递。它是并发编程中管理协程生命周期和避免资源泄漏的核心工具之一。 context 的主要用途 取消协程(Cancellation) 设置超时时间或截止时间(Timeout / Deadline) 跨 API 传递请求范围的数据(如认证信息...
分布式架构知识体系
问题 何为分布式,何为微服务? 为什么需要分布式? 分布式核心理论基础,节点、网络、时间、顺序,一致性? 分布式系统有哪些设计模式? 分布式有哪些类型? 如何实现分布式? 关键词 节点,时间,一致性,CAP,ACID,BASE,P2P,机器伸缩,网络变更,负载均衡,限流,鉴权,服务发现,服务编排,降级,熔断,幂等,分库分表,分片分区,自动运维,容错处理,全栈监控,故障恢复,性能调优 全文...
浅谈分布式存储的发展和演进
注:本文来源于组内的一次分享,属于综述性质,内容由互联网资料整理所得,感谢阅读。 发展历史 Google、Amazon、Alibaba等互联网公司的发展催生了大数据和云计算两大热门领域。今天我们使用的各种互联网产品,其底层的基础存储设施都是建立在低成本、高性能、高可靠、高可用、可扩展的分布式存储系统之上。分布式系统从最早的数据共享需求,发展到现在的 serverless 架构。它伴随着技...
golang channel
在 Go 语言(Golang)中,Channel 是一种强大的并发原语,用于在不同的 Goroutine 之间进行安全的通信和同步。它是 Go 语言并发模型(CSP,Communicating Sequential Processes)的核心组成部分之一,旨在通过消息传递实现并发,而不是通过共享内存来实现并发。以下是对 Channel 的详细讲解,包括其概念、用法、特性、以及一些高级用法和注...
C++ move_only_function
在C++中,std::move_only_function 是C++23引入的标准库功能,用于表示仅支持移动语义的函数对象(callable object)。它是std::function的变种,但与std::function不同的是,std::move_only_function不要求存储的函数对象是可拷贝的,仅要求可移动,从而支持更广泛的用例,例如存储只支持移动语义的对象(如std::u...
Java21 新特性
Java 21 是继 Java 17 之后的又一个长期支持(LTS)版本,于 2023 年 9 月 19 日发布,相较于 Java 17 引入了许多新特性和改进,涵盖语言特性、性能优化、并发模型、API 增强等方面。以下是对 Java 21 相比 Java 17 的主要新特性的详细总结,重点突出其提升,并尽量简洁: 语言特性改进 虚拟线程(Virtual Threads,JEP 444,J...
Java17 新特性
Java 17 相对于 Java 8 的提升主要体现在语言特性、性能、API 增强、安全性以及生态系统的改进上。以下是详细对比,涵盖主要方面的提升: 语言特性的改进 Java 17 引入了多项新特性,许多是 Java 8 之后逐步引入并在 Java 17(长期支持版本,LTS)中稳定或正式化的功能: 密封类(Sealed Classes,JEP 409,Java 17 正式化) 允许限...
Java11 新特性
Java 11 是继 Java 8 之后的另一个长期支持(LTS)版本,于 2018 年 9 月 25 日发布,相对于 Java 8 引入了多项重要的语言特性、性能优化、API 改进和模块化支持。以下是对 Java 11 相比 Java 8 的主要新特性和提升的简洁总结,涵盖核心变化: 语言特性改进 局部变量类型推断(var,JEP 323,Java 10 引入) 使用 var 关键字...
Java8 新特性
Java 8 的主要新特性,深入每个特性的背景、用法、实际应用场景,并提供代码示例,力求全面且易懂。Java 8(2014年3月发布)是 Java 语言的一次重大升级,引入了函数式编程、现代化 API 和性能优化,极大地提升了开发效率和代码可读性。以下是详细内容: Lambda 表达式 背景: Lambda 表达式是 Java 8 引入的函数式编程核心特性,旨在减少样板代码,允许将行为作为参...
C++ Move Semantics
移动语义(Move Semantics)是 C++11 引入的特性,核心目的:在资源传递时“窃取”而非“拷贝”,把 O(n) 的深拷贝降为 O(1) 的指针转移。适用于动态内存、文件句柄、智能指针等可窃取的资源。 类比“搬家”:不是复制一套家具,而是直接把原家具搬走,让原房变空。 背景:拷贝语义的代价 C++98 中对象传递依赖拷贝语义——返回局部对象会触发拷贝构造,复制全部资源。对大...
golang tips
Go 的 gc Go 的垃圾回收器(Garbage Collector)是 Go 运行时的重要组成部分,它自动管理内存回收,让开发者无需手动释放内存。 核心特性 三色标记清除算法:Go 使用并发三色标记清除算法,在程序运行时并发执行垃圾回收,减少 STW(Stop-The-World)时间 并发标记:标记阶段与用户程序并发执行,只有短暂的停止阶段 分代回收:虽然不是严格分代,但会对新分配的...
Zig 基础语法详解
Zig 是一门现代化的系统级编程语言,由 Andrew Kelley 创建。它的设计理念强调显式优于隐式、编译时代码执行、零成本抽象以及与 C 语言的完美互操作性。本文将全面介绍 Zig 的基础语法。 变量与常量 变量声明 Zig 使用 var 声明可变变量,使用 const 声明常量: 1234567891011121314const std = @import("std&qu...





























