API 学习路线

一、API 介绍 定义:API 是构建应用程序的一组协议和工具 类型: 公共 API(Public API) 私有 API(Private API) 合作伙伴 API(Partner API) 二、API 术语 需要理解的术语: HTTP 版本(1.1、2、3) Cookies 缓存(Caching) 状态码 请求方法(GET、POST、PUT、DELETE 等) 三、API 风格 常见风格: REST SOAP GraphQL gRPC WebSockets 四、API 认证 常用认证方式: Basic Auth Token JWT(JSON Web Token) OAuth Session Auth 五、API 文档 重要性:好的 API 必须易于理解 工具:Swagger, Postman, Redoc, DapperDox 六、API 功能特性 分页(Pagination) 请求参数(Parameters) 幂等性(Idempotency) API 版本控制(Versioning) HATEOAS(Hypermedia as the Engine of Application State) 内容协商(Content Negotiation) 七、API 性能优化技术 缓存(Caching) 限流(Rate Limiting) 负载均衡(Load Balancing) 分页(Pagination) 数据库索引(DB Indexing) 水平/垂直扩展(Scaling) 性能测试(Performance Testing) 八、API 网关 用途:统一管理 API、路由、认证、监控等 常见网关:Amazon API Gateway, Azure API Services, Kong, Nginx 九、API 开发框架 Node.js Spring Flask Django FastAPI 十、API 集成模式 网关模式(Gateway) 事件驱动模式(Event-driven) Webhook 轮询(Polling) 批处理(Batch Processing)

May 18, 2024 · 1 min · 109 words · Guangyang Zhong

数据库数据架构

一、常见索引数据结构 1、跳表(Skiplist) 内存中常用索引类型 典型应用:Redis 特点:快速搜索、插入、删除 2、哈希索引(Hash Index) Map 或 Collection 的常见实现 特点:查找速度快,但不适合范围查询 3、SSTable 不可变的磁盘 Map 实现 特点:高顺序写入效率,适合持久化存储 4、LSM 树(Log-Structured Merge Tree) 结合 Skiplist 和 SSTable 特点:高写入吞吐量,适合写密集型系统 5、B 树(B-Tree) 基于磁盘的索引方案 特点:读写性能稳定,支持范围查询 6、倒排索引(Inverted Index) 用于文档索引 典型应用:Lucene 搜索引擎 特点:快速全文搜索 7、后缀树(Suffix Tree) 用于字符串模式匹配 特点:支持快速子串查询 8、R 树(R-Tree) 多维数据索引,如空间数据(地理坐标) 特点:支持最近邻查询和范围查询

March 30, 2024 · 1 min · 44 words · Guangyang Zhong

数据库锁类型

一、常见锁类型 1、共享锁(Shared Lock, S Lock) 允许多个事务同时读取资源,但不允许修改 其他事务也可以对同一资源加共享锁 2、排他锁(Exclusive Lock, X Lock) 允许事务读取和修改资源 其他事务不能对该资源加任何锁 3、更新锁(Update Lock, U Lock) 用于事务准备更新资源时,防止死锁 4、模式锁(Schema Lock) 用于保护数据库对象的结构(如表结构) 5、大批量更新锁(Bulk Update Lock, BU Lock) 用于批量插入操作,通过减少锁数量提升性能 6、键范围锁(Key-Range Lock) 用于索引数据,防止幻读(事务已读范围内有新行插入) 7、行级锁(Row-Level Lock) 锁定表中的特定行,其他行仍可并发访问 8、页级锁(Page-Level Lock) 锁定数据库中的特定页(固定大小的数据块) MySQL InnoDB 默认不使用页锁,而是使用行锁;MyISAM 使用页级锁 9、表级锁(Table-Level Lock) 锁定整张表 实现简单,但可能显著降低并发性能

March 26, 2024 · 1 min · 44 words · Guangyang Zhong

B-Tree vs LSM-Tress

B-Tree(平衡树) 核心特性 主要应用:几乎所有关系型数据库使用的索引数据结构 存储单元:基本存储单元通常称为"页" 工作原理:通过向下追踪键的范围直到找到实际值 优势特点 读取性能优秀:实现更快的读取速度 范围查询高效:支持顺序扫描 事务友好:天然支持ACID事务 典型应用 MySQL InnoDB、PostgreSQL、Oracle、SQL Server LSM-Tree(日志结构合并树) 核心特性 主要应用:许多NoSQL数据库使用,如Cassandra、LevelDB、RocksDB 数据结构:维护键值对,使用排序字符串表持久化到磁盘 键排序:SSTable中的键保持排序状态 核心机制:合并 合并过程:Level 0段定期合并到Level 1段 目的:减少文件数量,优化存储和读取 优势特点 写入性能极佳:实现快速写入 高吞吐量:适合写密集型场景 顺序写入:追加写入模式避免随机写 典型应用 Cassandra、LevelDB、RocksDB、HBase 核心差异对比 维度 B-Tree LSM-Tree 主要优势 读取更快 写入更快 读取速度 快速 较慢 写入速度 较慢 快速 存储模式 原地更新 追加写后合并 设计哲学 读优化 写优化

March 20, 2024 · 1 min · 48 words · Guangyang Zhong

数据库 类型大全

一、关系型数据库(Relational DB) 数据以表格形式组织(Rows & Columns) 遵循严格的模式(Schema) 适合事务处理和结构化数据 例子:MySQL, PostgreSQL, Oracle 二、联机分析处理数据库(OLAP DB) OLAP(Online Analytical Processing):用于数据分析和报表 优化复杂查询和多维分析 适合商业智能(BI)场景 例子:ClickHouse, Amazon Redshift, Google BigQuery 三、NoSQL 数据库 不使用传统 SQL 或严格模式 适合非结构化或半结构化数据 四种主要类型: 1、图数据库(Graph DB) 强调数据之间的关系 常用于社交网络、推荐系统 例子:Neo4j, ArangoDB 2、键值存储(Key-Value Store DB) 每个数据都有唯一键(Key)和对应的值(Value) 访问快速,适合缓存、会话存储 例子:Redis, Memcached 3、文档数据库(Document DB) 数据以文档形式存储,类似 JSON 或 BSON 每个文档可有不同结构,灵活存储半结构化数据 例子:MongoDB, CouchDB 4、列式数据库(Column DB) 数据按列而不是按行存储 适合分析型查询,减少 I/O,提高查询速度 例子:HBase, Cassandra, ClickHouse

March 20, 2024 · 1 min · 59 words · Guangyang Zhong

SQL 执行流程

⚠️ 说明:不同数据库的具体实现架构不同,下图与流程展示的是数据库系统中常见的通用设计思想 Step 1:传输层(Transport Layer) 客户端通过传输层协议(如 TCP)向数据库发送 SQL 语句 负责: 网络通信 请求数据的接收与响应返回 Step 2:命令解析器(Command Parser) 接收 SQL 语句并进行: 语法分析(Syntax Analysis) 语义分析(Semantic Analysis) 分析完成后,生成 查询树(Query Tree) 查询树是 SQL 语句的结构化表示 Step 3:优化器(Optimizer) 接收查询树 根据统计信息和代价模型进行优化 生成 执行计划(Execution Plan) 决定: 使用哪个索引 表的访问顺序 连接方式(如 Nested Loop、Hash Join 等) Step 4:执行器(Executor) 接收执行计划 按照执行计划逐步执行 SQL 不直接访问磁盘,而是通过下层模块获取数据 Step 5:访问方法(Access Methods) 提供 具体的数据访问逻辑 根据执行计划: 决定如何访问数据(全表扫描、索引扫描等) 从存储引擎中 读取或修改数据 Step 6:缓冲区管理器(Buffer Manager,读操作) 适用于 只读查询(如 SELECT) 访问方法判断 SQL 是否为 只读语句 若是 SELECT: ...

March 18, 2024 · 1 min · 114 words · Guangyang Zhong

内存与存储

一、RAM 和 ROM RAM(Random Access Memory) 易失性内存,断电数据丢失 用于存储 CPU 正在使用的数据和程序 ROM(Read-Only Memory) 非易失性内存,断电数据不丢失 存储固件、启动程序等不可修改或少修改的数据 二、DDR4 与 DDR5 DDR4 第四代双倍数据速率内存 主流 PC 和服务器使用 DDR5 第五代双倍数据速率内存 更高带宽,更低功耗,支持更大容量 三、固件与 BIOS 固件(Firmware) 存储在非易失性存储器中的软件 控制硬件的低级操作 BIOS(Basic Input/Output System) 一种固件,初始化硬件,启动操作系统 四、SRAM 与 DRAM SRAM(Static RAM) 静态 RAM,速度快,不需刷新,但成本高,容量小 DRAM(Dynamic RAM) 动态 RAM,需要定期刷新,成本低,容量大,是主流 RAM 类型 五、常见存储设备 HDD(Hard Disk Drive) 机械硬盘,容量大,速度慢 SSD(Solid State Drive) 固态硬盘,速度快,无机械部件 USB Drive 可移动闪存驱动器 SD Card 存储卡,常用于相机、手机

March 18, 2024 · 1 min · 62 words · Guangyang Zhong

Hugo-PaperMod 自定义博客模板

简介 本文档总结了在 Hugo + PaperMod 主题 下自定义博客模板的配置方法,包括静态资源优化、Nginx 部署、缓存策略和图片加速技巧

October 1, 2023 · 1 min · 8 words · Guangyang Zhong

https://www.youtube.com/watch?v=aZjYr87r1b8

1 min · word · Guangyang Zhong

IndexedDB 浏览器数据库

0 min · 0 words · Guangyang Zhong