摘要: Golang Sync.WaitGroup 使用及原理 Golang Sync.WaitGroup 使用及原理 使用 func main() { var wg sync.WaitGroup for i := 0; i < 10; i++ { wg.Add(1) go func() { defer wg.Done() fmt.Println("Hello 阅读全文
posted @ 2022-02-22 15:16 邱佳飞 阅读(981) 评论(0) 推荐(1) 编辑
摘要: Gin 如何动态生成模型 swagger 文档 在做 API 接口开发时, 一般会统一 API 返回格式, 例如 { "code": 200, "data": { //xxxxx //xxxxx }, "message": "OK" } 在后端代码定义中, 也会定义一个结构体来对应这种结构, 并且, 由于 data 字段里的数据是未知的(与具体业 阅读全文
posted @ 2021-12-01 20:31 邱佳飞 阅读(484) 评论(0) 推荐(0) 编辑
摘要: [笔记]数据分区 数据分区(数据密集型应用系统设计第六章) 我们必须摆脱串行的限制. 明确状态定义, 提供优先级与属性描述, 我们必须首先定义清楚关系, 然后才是执行步骤 ​ Grace Murray Hopper, 管理方法以及未来的计算机 面对海量数据或非常高的压力查询, 复制技术还不够, 我们还需要将数据拆分成 阅读全文
posted @ 2021-10-29 16:37 邱佳飞 阅读(250) 评论(0) 推荐(0) 编辑
摘要: [笔记]数据复制 数据复制(数据密集型应用系统设计第五章) 一个可能出错的事物与一个不可能出错的事物之间的主要区别是, 当一个不可能出错的事物出错了, 通常也就意味着不可修复. ​ Douglas Adams, <<基本无害>> (1992) 为什么需要复制: 使数据在地理位置上更接近用户, 从而降低访问延迟 当部分 阅读全文
posted @ 2021-10-29 16:36 邱佳飞 阅读(120) 评论(0) 推荐(0) 编辑
摘要: [笔记]数据存储与检索 数据存储与检索(数据密集型应用系统设计) 如果你把东西整理得井井有条, 下次就不用查找了 ​ 德国谚语 从最基本的层面看, 数据库只需要做两件事情 向它插入数据时, 它就保存数据 查询数据时, 它应该返回需要的数据 数据库核心: 数据结构 世界上最简单的数据库 #!/bin/bash db_set( 阅读全文
posted @ 2021-10-27 16:29 邱佳飞 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 为什么 MySQL 偶尔会选错索引?建表没有创建主键会发生什么?二阶段提交时发生异常数据会一致吗? 阅读全文
posted @ 2021-08-04 20:58 邱佳飞 阅读(84) 评论(1) 推荐(1) 编辑
摘要: 数据库的作用一般是存放应用程序不可丢失的数据, 由于内存的价格和易失性, 所以不能存放长久的数据, 所以需要持久化到硬盘, 但是硬盘的读取速度相较于内存来说相差一个数量级, 所以为了加快硬盘的读写速度, 索引就出现了, 它就像书本的目录一样, 能够快速定位到你想看的地方. 阅读全文
posted @ 2021-08-04 00:02 邱佳飞 阅读(53) 评论(0) 推荐(0) 编辑
摘要: 逃逸分析是 Go 编译器的一部分。它分析源代码并确定哪些变量应该分配到栈上、哪些逃逸到堆上。 阅读全文
posted @ 2021-07-20 16:56 邱佳飞 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 平常开发调试接口请求遇到 https 流量或者 gprc 无法查看网络层, 记录一下防止遗忘 阅读全文
posted @ 2021-07-14 22:48 邱佳飞 阅读(519) 评论(0) 推荐(0) 编辑
摘要: 哈希表的意义不言而喻,它能提供 O(1) 复杂度的读写性能,所以主流编程语言中都内置有哈希表。 哈希表的关键在于哈希函数, 好的哈希函数能减少哈希碰撞,提供最优秀的读写性能。 阅读全文
posted @ 2021-07-12 10:55 邱佳飞 阅读(592) 评论(2) 推荐(0) 编辑