CURL远程下载PDF
远程调用携带 Token 下载 PDF 注意 这里的生成的$file的名称如果是多个请求下载,可能会名称重复,还需要设置一个不重复的名称比较保险

wxvirus2022年7月18日
小于 1 分钟
多协程执行收集结果的技巧
多协程的好处 比如,此时有一个任务 我们手动加了耗时操作,我们使用正常的方式来进行获取。 这样下来运行的耗时是需要 2s 多一点的。 初级版本 我们接下来使用sync.WaitGroup + goroutine 来优化 这样,使用了协程 来处理之后,耗时变成了501.338458ms 再次优化,我们可以加上channel 这样也会得到以下结果 优雅版本 优雅

wxvirus2022年6月24日
大约 1 分钟
数据库权限
总结 数据的权限主要分为六个层级: 第一层是登录验证,验证失败则立即退出;; 第二层的权限为全局权限,这个层级的权限覆盖整个数据库;; 第三层的权限是数据库级别的权限,这个层级的权限是针对于某一个数据库的;; 第四层级是数据表级的权限,这个层级的权限主要针对于数据表;; 第五层权限是字段级的权限,主要针对于某一个字段的,需要注意的是字段级的权限需要依赖于第四

wxvirus2022年6月22日
小于 1 分钟
SQL的生命周期
执行流程 由上图,可以得出:在 MySQL 中,我们大致可以分为三个部分,分别是 MySQL 客户端、MySQL 服务端和存储层。其中,存储层主要是硬件层面,不在今天讨论的范围内,所以这里我们主要讨论前两者。 一、MySQL 客户端 MySQL 数据库支持很多编程语言的 API 接口,其实这句话底层的含义是很多编程语言是内置 MySQL 客户端。除此之外,M

wxvirus2022年6月22日
大约 8 分钟
vscode生成自己的代码片段
设置 vue 快速生成 data 到了代码里就可以直接输入 vdata,会有一下效果: 光标会停留在冒号前面,按下tab之后光标会移动到冒号后面让你输入value值。

wxvirus2022年6月19日
小于 1 分钟
策略模式
引入 " 假设一开始我们对一个int数组进行排序" 但是,此时此刻,我们又需要进行double类型的数组进行排序。再写一个排序类么?但是如果不是一个可以进行数值比较的类型呢,如果是自定义的数据类型呢?就需要去实现compareTo方法 长此以往,有更多的类型,进行排序,把类型换成Object[]?,但是它没有compareTo方法。所以我们换成Compara

wxvirus2021年11月30日
大约 3 分钟
MySQL事务并发问题
脏读(Dirty read) " 当一个事务正在访问的数据并且对数据进行了修改 ,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没提交的数据,那么另外一个事务读取到的这个数据是"脏数据",依据"脏数据"所做的操作可能是不正确的。" 时间点 事务 A 事务 B :----: :--------------

wxvirus2021年11月28日
大约 2 分钟
分布式事务
分布式事务 讲到事务,基本就是经典的转账问题 支付宝账户表:A(id, user_id, amount) 余额宝账户表:B(id, user_id, amount) 用户的user_id = 1,从支付宝转账 1 万到余额宝分为 2 个步骤: 1. 支付宝表扣除 1 万: 2. 余额宝表增加 1 万: 如何保证一致性呢? " 单个数据库,我们保证ACID使用

wxvirus2021年10月24日
大约 9 分钟