Shell(一)常用命令

find + xargs将当前目录下.bak 的文件,移动到临时/tmp 下面 find . -name "*.bak" | xargs -I '{}' mv {} /tmp 移动到/tmp 临时目录下,不要使用 rm -rf 命令防止误删,其中-I ‘{}’标识占位符 awk分隔字符串,排序 grep charles /home/zhangcheng.log | awk '{split($0,a,",");if (index(a ...

短链生成

背景当前短地址发号使用 hbase 的 increament 指令, 每个转短请求都会做一次操作, 当 qps 超过 1k 时, 会造成 hbase 机器报警, 需要减少 hbase 的 increament 指令调用 方案修改为每个请求在本地取号, 当本地无号可取时请求 hbase 发号, 每次在 hbase 中调用 increament 时取 100 个号, 回到本地 具体代码流程 加全局锁, 所有转短请求在取号前通过全局锁串行 尝试本地取号, 如果不成功, 去 hbase 取号 100 个, 放入本地缓存 解锁, 并继续原有转短流程 待确认的点,全局锁是否需要公平 公平锁的性能是否满足 ...

MySQL B+树深度的了解

https://zhuanlan.zhihu.com/p/444448405 以下从 B+树深度简单模拟计算,有两个主要特征决定了 B 树(或 B+ 树)的深度。 数据库中的行数。我们将其称为 N。 索引键的大小。让我们称 B 为适合 B 树节点的键数。(有时 B 用于指代节点大小本身,而不是它持有的键数,但我希望这样看起来更直观。) 给定这些数量,B 树的深度是 log B 为下标 N。那只是 (log N )/log B。现在我们可以注意到小键意味着更大的 B,这会减少 (log N )/log B。如果我们将键的字节大小减半,那么 B 树的深度将从 (log ...

MySQL表碎片

原文链接:https://www.percona.com/blog/2020/06/24/mysql-table-fragmentation-beware-of-bulk-insert-with-failure-or-rollback/ 当心批量插入失败或者回滚时带来的 MySQL 表碎片,通常,DBA 都了解使用 DELETE 语句会产生表碎片。在大多数情况下,当执行大量的删除时,DBA 总会重新构建表以回收磁盘空间。但是,您是否认为只有删除才会导致表碎片?(答案:并不是)。在这篇博文中,我将解释插入如何会带来碎片。 在讨论这个主题之前,我们需要了解 MySQL,有两种碎片: 在表中的 ...

MVCC多版本并发控制

https://cloud.tencent.com/developer/article/1488871https://zhuanlan.zhihu.com/p/40208895https://blog.csdn.net/u014532775/article/details/107018538https://www.jianshu.com/p/0ef46997c300 https://blog.csdn.net/fuzhongmin05/article/details/91351933redolog 和 undologhttps://www.cnblogs.com/f-ck-need-u/arc ...

InnoDB中的页合并与分裂

原文链接:https://www.percona.com/blog/2017/04/10/innodb-page-merging-and-page-splitting/https://www.percona.com/blog/2020/06/24/mysql-table-fragmentation-beware-of-bulk-insert-with-failure-or-rollback/ 如果您遇到了全球(为数不多的)MySQL 顾问之一并要求他/她审查您的查询和/或模式,我相信他/她会告诉您有关良好主键设计的重要性的一些信息. 特别是在 InnoDB 的情况 ...

Spring Bean的生命周期

要彻底搞清楚 Spring 的生命周期,首先要把这四个阶段牢牢记住。实例化和属性赋值对应构造方法和setter 方法的注入,初始化和销毁是用户能自定义扩展的两个阶段。 实例化->Instantiation 属性赋值->Populate 初始化->Initialization 销毁->Destruction 实例化 -> 属性赋值 -> 初始化 -> 销毁 1、影响多个 Bean 的接口实现了这些接口的 Bean 会切入到多个 Bean 的生命周期中。正因为如此,这些接口的功能非常强大,Spring 内部扩展也经常使用这些接口,例如自动注入以及 AO ...

Spock 基于BDD测试

Spock 测试框架基于 Groovy 并吸收了 Junit、TestNG、Mockito 等测试框架的优点。 Spock 编写的单元测试层次清晰,代码量少,可读性好,Groovy 最终会编译为 class 文件,支持各种集成开发环境(eclipse,Intellij Ieda), 尤其是 Intellij idea 已经集成支持 Groovy 的插件,也支持 maven-surefire-plugin、jacoco 等 maven 插件。 Spock 官网,必读书籍《Java Testing with Spock》, 如要速成只需要阅读以下两篇文章 5 分钟入门 Groovy 一篇非常 ...