Clay 的技术空间

用进废退 | 艺不压身

查询各种 SQL 的执行频率

语法:show [session|global] status like ‘% Com_%’;
mysql-optimize-1

查询示例:

1
2
3
4
5
6
7
8
# 查询当前数据库执行CRUD操作的次数
show global status like 'com_select';
show global status like 'com_insert';
show global status like 'com_update';
show global status like 'com_delete';

# 查看当前数据库的连接数
show global status like 'connections';
阅读全文 »

系统环境

1
2
CentOS Linux release 7.6.1810 (Core)
Linux centos7 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

安装 Supervisor

1
2
3
4
5
6
7
8
9
10
11
12
13
# 提示:supervisor主要用于管理nginx的开机自启动(带守护进程)

# 安装
# yum install -y supervisor

# 开机自启动
# systemctl enable supervisord

# 启动服务
# systemctl start supervisord

# 查看服务状态
# systemctl status supervisord
阅读全文 »

大纲

概述

Java 中 ScheduledExecutorService 是基于线程池设计的定时任务接口,其中的一个实现类是 ScheduledThreadPoolExecutor。每个调度任务都会分配到线程池中的一个线程去执行,也就是说任务是并发执行的,互不影响。

阅读全文 »

前言

Webdis 是一个非常简单的 Web 服务器,专门为 Redis 提供 HTTP 接口,使用 hiredis、jansson、libevent、http-parser 等组件。下面将介绍 Docker 安装部署 Webdis 与 Redis,由于篇幅有限不会详细介绍部署过程,但会给出 Docker 相关的主要配置内容。如需更详细的教程内容,可参考 Webdis Github 上的说明文档。

软件环境

环境名称版本
docker-ce18.09.3
docker-compose1.24.0-rc1
linux 发行版 CentOS Linux release 7.6.1810 (Core)
阅读全文 »

此 文 章 限 制 访 问.
阅读全文 »

系统环境

1
2
CentOS Linux release 7.6.1810 (Core)
Linux 3.10.0-957.12.2.el7.x86_64 #1 SMP Tue May 14 21:24:32 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

系统安装 OpenSSL

1
2
3
4
5
# 更新系统
# yum update

# 安装openssl
# yum install openssl openssl-devel

Nginx 安装 SSL 模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 配置编译
# ./configure \
--user=nginx \
--group=nginx \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_concat_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_upstream_consistent_hash_module

# 编译安装,会覆盖已安装的Nginx
# make && make install
阅读全文 »

如何评价一个算法的好坏

一个算法的好坏是通过时间复杂度和空间复杂度来衡量的。

  • 时间复杂度:就行执行算法的时间成本。
  • 空间复杂度:就行执行算法的内存空间成本。
阅读全文 »

缓存

Docker 的优点之一是提供缓存,帮助你更快地迭代镜像构建。在构建映像时,Docker 按步骤遍历 Dockerfile 中的指令,按顺序执行每个指令。在检查每个指令时,Docker 会在其缓存中寻找一个可以重用的现有中间镜像,而不是创建一个新的 (重复的) 中间镜像。如果缓存无效,让无效的指令和所有后续 Dockerfile 指令生成新的中间镜像。因此,从 Dockerfile 的顶部开始,如果基础镜像已经在缓存中,那么它将被重用。然后将下一条指令与从该基础镜像派生的缓存中的所有子镜像进行比较。比较每个缓存的中间镜像,看指令是否在缓存命中。如果缓存失败,则缓存无效。重复相同的过程,直到到达 Dockerfile 的末尾。

缓存陷阱

大多数新指令只是简单地与中间镜像中的指令进行比较。如果匹配,则使用缓存的副本。例如,当在 Dockerfile 中找到 RUN pip install -r requiremtes .txt 指令时,Docker 会在本地缓存的中间镜像中搜索相同的指令。不比较新旧 requirements.txt 文件的内容。如果使用新包来更新 requirements.txt 文件,并使用 RUN pip install 并希望使用新包名称重新运行包安装,则此行为可能会出现问题。后续会展示一些解决方案。与其他 Docker 指令不同,ADD 和 COPY 指令确实需要 Docker 查看文件的内容,以确定是否存在缓存命中。将引用文件的校验和与现有中间镜像中的校验和进行比较。如果文件内容或元数据发生了更改,则缓存无效。

阅读全文 »

前言

safe-rm 是一款用来替代不安全 rm 的开源软件,可以在 /etc/safe-rm.conf 文件中配置保护名单,定义哪些文件不能被 rm 删除,可用于防止执行 rm -rf 命令导致文件被误删的发生。

安装 safe-rm 工具

1
2
3
4
5
6
7
8
9
10
11
12
# 下载文件
# wget https://launchpadlibrarian.net/188958703/safe-rm-0.12.tar.gz

# 解压文件
# tar -xvf safe-rm-0.12.tar.gz

# 拷贝可执行文件
# cd safe-rm
# cp safe-rm /usr/local/bin/

# 建立软链接
# ln -s /usr/local/bin/safe-rm /usr/local/bin/rm
阅读全文 »