Cargo.toml 配置速查
Cargo.toml 是 Cargo 项目的清单文件(TOML 格式),描述包名、版本、依赖、特性、编译目标等。本文给出常用配置速查。 最小示例 1234567[package]name = "myapp"version = "0.1.0"edition = "2021"[dependencies]serde = { ve...
C++17 any 与 variant
在 C++ 中,我们经常需要“用一个变量持有多种可能的类型”。C 风格的 union 和 void* 是最早的答案,但它们既不安全(不记录当前存的是哪种类型),也缺乏面向对象的扩展能力。C++17 引入了 std::any 和 std::variant,从两个不同方向填补了这块空白: std::any:类型擦除(type erasure)——持有一个任意类型的值,但“忘记”了它的静态类型,...
Python collections 包详解
Python 内置的 dict、list、set、tuple 已经覆盖了绝大多数日常需求,但一旦遇到"按出现次数统计"“给元组字段起名字”“双端高效增删”"层叠的配置查找"这类场景,手写往往既啰嗦又容易出错。标准库的 collections 模块正是为此而生:它在内置类型之上提供了一批专门化的容器,既保留 Pythonic 的简洁,又补齐了数据结构层面...
FastAPI 快速上手
FastAPI 是一个基于 Python 类型标注的现代 Web 框架,底层是 Starlette(ASGI)和 Pydantic(数据校验)。它的核心思想很纯粹:你写在函数签名上的类型标注,就是一切契约的来源——路由参数解析、请求体校验、响应序列化、自动生成的 OpenAPI 文档,全部从同一份标注推导出来。写一次标注,得到校验、文档和编辑器补全,这是它对「动态语言写后端」这件事的最大重构...
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...
前端工程化工具链: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...
JavaScript 核心要点详解
ES6+ 关键特性 解构赋值 解构赋值是一种从数组或对象中提取值并赋给变量的语法糖。 数组解构 1234567891011121314151617181920212223242526// 基本数组解构const [a, b, c] = [1, 2, 3];console.log(a, b, c); // 1, 2, 3// 跳过某些元素const [first, , third] = [1,...
包管理器完全指南: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...
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 Startup
Spring Boot 中的各种原理解析说一说 Spring Boot 启动原理 入口点:SpringApplication.run() 123456@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplic...
Spring Boot Common Annotations
SpringBoot 的注解系统是其"约定优于配置"哲学的核心体现。这篇文章不讲虚的,只讲实际开发中真正会用到的注解。我会按照功能分类,每个注解都配上最简示例。 核心启动注解 @SpringBootApplication 这是 SpringBoot 应用的入口注解,一个组合注解,等价于三个注解的叠加: 123456@SpringBootApplicationpublic ...
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"...
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++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++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、智能...
C++20 - 革命性更新
📑 C++ 演进系列:总览 | C++11 | C++14 | C++17 | C++20 | C++23 | C++26 C++20 是继 C++11 之后最大的更新,引入了模块、协程、概念和 ranges 等重大特性。它从四个方向重塑了 C++: Concepts 让模板约束成为一等公民、Ranges 让算法与数据以管道组合、协程把异步/生成器纳入语言、模块从根本上改善编译模型。此...
C++23 - 最新特性
📑 C++ 演进系列:总览 | C++11 | C++14 | C++17 | C++20 | C++23 | C++26 C++23 是当前已发布的最新标准,继续完善和扩展 C++ 的功能。它在 C++20 的基础上查漏补缺:补齐 Ranges/Concepts/Modules 留下的短板,新增一批面向实际工程痛点的小特性(错误处理、格式化输出、容器适配),并进一步向"零开...
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++26 - 下一个里程碑
📑 C++ 演进系列:总览 | C++11 | C++14 | C++17 | C++20 | C++23 | C++26 C++26 已于 2025 年年中完成特性冻结(feature freeze),预计 2026 年正式发布。它继续强化元编程、安全性、并发和标准库表达能力。下面逐个特性展开,讲清它解决的问题、背后的设计以及使用时要注意的语义。 静态反射(Static Reflec...
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...
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...




























