Go urfave cli 使用
# 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...
more...MySQL 详解
# MySQL 图解 mysql mysql 源码 # 数据查询过程 连接器:建立连接,管理连接、校验用户身份; 查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行。MySQL 8.0 已删除该模块; 解析 SQL,通过解析器对 SQL 查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型; 执行 SQL:执行 SQL 共有三个阶段: 预处理阶段:检查表或字段是否存在;将 select * 中的 * 符号扩展为表上的所有列。 优化阶段:基于查询成本的考虑, 选择查询成本最小的执行计划; 执行阶段:根据执行计划执行 SQL...
more...Go 协程实现快排 V2
# go 协程实现快排 V2 上一期:https://blog.twelveeee.top/2023/Go/go goroutine quicksort/ 使用了 sync.WaitGroup 对 p 的左右两边进行有序的排序 测试出来 使用协程进行排序的效果差于单线程。 现在重新优化了几个版本。 每次递归之后,到最后对于只有几个元素的情况下,再开辟协程进行快排,会大量的创建资源和调用 Goroutine,资源消耗主要不是在排序,而是在创建 Goroutine。所以只有几个元素的情况,会直接使用单线程进行排序。 使用 sync.WaitGroup 的 进行阻塞,在这种情况下不如使用 chan...
more...