12k 11 分钟

# urfave cli 参考资料 urfave cli 官网:https://cli.urfave.org/ urfave cli github: https://github.com/urfave/cli photoprism (cli 用法参考) : https://github.com/photoprism/photoprism # 简介 cli 是一个用于构建命令行程序的库。 # 快速开始 安装 cli 库,有 v1 和 v2 两个版本。如果没有特殊需求,一般安装 v2 版本: $ go get -u github.com/urfave/cli/v2使用 package...
20k 18 分钟

# MySQL 图解 mysql mysql 源码 # 数据查询过程 连接器:建立连接,管理连接、校验用户身份; 查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行。MySQL 8.0 已删除该模块; 解析 SQL,通过解析器对 SQL 查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型; 执行 SQL:执行 SQL 共有三个阶段: 预处理阶段:检查表或字段是否存在;将 select * 中的 * 符号扩展为表上的所有列。 优化阶段:基于查询成本的考虑, 选择查询成本最小的执行计划; 执行阶段:根据执行计划执行 SQL...
4.3k 4 分钟

算法题 二叉树遍历
二叉树前序遍历
二叉树中序遍历
二叉树后序遍历
二叉树层序遍历
二叉树层序遍历 II
N 叉树的前序遍历
N 叉树的后序遍历
N 叉树的层序遍历
6.2k 6 分钟

# go 协程实现快排 V2 上一期:https://blog.twelveeee.top/2023/Go/go goroutine quicksort/ 使用了 sync.WaitGroup 对 p 的左右两边进行有序的排序 测试出来 使用协程进行排序的效果差于单线程。 现在重新优化了几个版本。 每次递归之后,到最后对于只有几个元素的情况下,再开辟协程进行快排,会大量的创建资源和调用 Goroutine,资源消耗主要不是在排序,而是在创建 Goroutine。所以只有几个元素的情况,会直接使用单线程进行排序。 使用 sync.WaitGroup 的 进行阻塞,在这种情况下不如使用 chan...
13k 11 分钟

# 分布式限流设计与实现 # 常见限流算法 # 固定窗口计数 固定窗口计数器算法概念如下: 将时间划分为多个窗口; 在每个窗口内每有一次请求就将计数器加一; 如果计数器超过了限制数量,则本窗口内所有的请求都被丢弃当时间到达下一个窗口时,计数器重置。 # 滑动窗口计数 滑动窗口计数器算法概念如下: 将时间划分为多个区间; 在每个区间内每有一次请求就将计数器加一维持一个时间窗口,占据多个区间; 每经过一个区间的时间,则抛弃最老的一个区间,并纳入最新的一个区间; 如果当前窗口内区间的请求计数总和超过了限制数量,则本窗口内所有的请求都被丢弃。 # 漏桶算法 漏桶算法概念如下: 将每个请求视作...
-->