Clay 的技术空间

用进废退 | 艺不压身

如何评价一个算法的好坏

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

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

缓存

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
阅读全文 »

系统环境

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主要用于管理redis的开机自启动(带守护进程)

# 安装
# yum install -y supervisor

# 开机自启动
# systemctl enable supervisord

# 启动服务
# systemctl start supervisord

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

Jpegoptim 压缩 JPG 图片

1
2
3
4
5
6
7
8
# 安装jpegoptim
# yum install jpegoptim

# 压缩jpg图片
# jpegoptim ttlsa.jpg

# 批量压缩某目录下所有jpg图片
# for i in /data/site/image.ttlsa.com/images/*.jpg; do jpegoptim $i; done
阅读全文 »

第一步:注册 NPM 仓库帐号

第二步:创建 NodeJS 项目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 创建项目的根目录
$ mkdir test-module

# 进入项目的根目录
$ cd test-module

# 初始化当前项目,根据提示填写项目信息
$ npm init

# 初始化后,最终生成package.json文件,文件内容示例如下:
{
"name": "test-module",
"version": "1.0.0",
"description": "0.0.1",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Clay",
"license": "MIT"
}
阅读全文 »

Gulp 压缩代码

版本说明

主要模块的版本号分别为: gulp 3.9.x,gulp-babel 7.x,babel-core 6.x

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
"babel-core": "^6.26.3",
"babel-loader": "^7.1.5",
"babel-preset-env": "^1.7.0",
"babel-preset-es2015": "^6.24.1",
"gulp": "^3.9.1",
"gulp-babel": "^7.0.1",
"gulp-cache": "^1.1.1",
"gulp-changed": "^3.2.0",
"gulp-clean": "^0.4.0",
"gulp-debug": "^4.0.0",
"gulp-htmlclean": "^2.7.22",
"gulp-htmlmin": "^5.0.1",
"gulp-imagemin": "^5.0.3",
"gulp-minify-css": "^1.2.4",
"gulp-uglify": "^3.0.2",
"gulp-util": "^3.0.8",
"imagemin-pngquant": "^7.0.0"
阅读全文 »

清理垃圾或者无效的谷歌搜索记录

清理步骤如下:

  • 为垃圾或者无效的搜索记录链接制作 301 跳转
  • 在 robots.txt 中添加禁止收录或者无效的搜索记录的链接
  • 重新生成新的站点地图文件,并提交到 Google 站长平台

删除谷歌搜索记录

由于上面的步骤做完还需要一段时间才能生效,而且每次使用谷歌搜索还是可以看到自己的网站挂着垃圾或无效链接,此时可以使用谷歌站长平台的 “移除网址” 功能来删除搜索记录。进到谷歌站长平台的操作后台,找到谷歌索引 -> 移除网址。在谷歌搜索框中输入”site:xxx.com” 查看自己站点的收录结果,把不想被收录的 URL(不包含 http://域名,例如填写 /posts/6edb1958/ 即可)提交到移除网址里面,生效时间一般是 1-6 小时。
google-index-remove-urls

阅读全文 »

百度站长死链提交工具介绍

  • 死链提交工具生效时间为 3 天
  • 死链提交有两种方式:文件提交、规则提交
  • 死链提交工具仅识别 404 数据,请提交 404 数据;如误使用本工具,且站点内容不为死链,则提交不会生效
  • 死链提交工具是网站向百度提交死链的数据推送工具,被推送死链将被百度搜索屏蔽。网站存在大量死链,将影响网站的站点评级

百度站长平台提交死链

注册百度站长平台帐号,然后登录进去找到” 数据引入” -> “死链提交”。
baidu-zhanzhang-1

阅读全文 »