ONE NOTE

Rage, rage against the dying of the light.

算法

算法的定义

对特定问题求解方法和步骤的一种描述,计算机中是一套指令的序列

算法的特性

  • 有穷性,会在有穷步后结束
  • 确定性,相同的输入得到相同额输出
  • 可行性,可以使用基本操作执行有限次来完成
  • 输入&输出

算法的评价标准

  • 时间线率与空间效率(存储空间),这两者有时会矛盾

事前分析法

算法中简单操作次数*每次操作所需时间

每条语句执行次数*执行一次所需时间

渐进空间复杂度

算法本身占据的空间+算法所需要的辅助空间称之为空间复杂度

为了方便比较,我们一般只比较算法运算次数的数量级,n2一定比n3好。

渐进时间复杂度

随着规模n的增大,算法执行的时间的增长率和fn的增长率相同,他们被称之为渐进时间复杂度。

例题

数据结构的划分

  • 逻辑结构:独立于计算机的数学模型,以不同方式划分为:
    • 线性结构与非线性结构,栈/树
    • 集合/线性/树/图
  • 物理结构:数据在计算机中存储的结构
    • 顺序结构/链式结构/索引结构/散列结构(哈希)

数据类型和抽象数据类型

数据类型

性质相同的值的集合,以及这些值的一组操作

抽象数据类型(ADP)

指一个数据模型以及该数据模型上的一些操作(抽象运算),它是抽象的,不考虑具体计算机实现。

定义格式:

  • 数据对象
  • 数据关系
  • 基本操作
    • 基本操作名(参数表)
    • 初始条件(描述初始条件)
    • 操作结果(描述操作结果)

举例

1
2
3
4
5
6
7
8
9
10
11
12
ADP 圆形{
数据对象:D={r,x,y|r,x,y均为实数}
数据关系:R={<r,x,y>|r是半径,<x,y>是圆心坐标}
基本操作:
Circle(&C,r,x,y)构造一个圆
double Area(C)
初始条件:圆形存在
操作结果:计算面积
double Circumference(C)
初始条件:圆形存在
操作结果:计算周长
}

小结

构想

wordpress的数据分成两个部分:网站目录和sql数据库,将这两个部分定时打包并push到gitee

打包网站目录

1
tar -cvf /home/chlen/my-services/backup/my-blog.tar /var/lib/docker/volumes/eaaf8ee23fdec167e4599903a297ce3fe9c102c0624f063490b1f72d769a5069

打包数据库

1
/usr/bin/mysqldump -u用户名 -p 数据库名 > /home/chlen/my-services/backup/blog-sql.sql

编写自动脚本打包并上传

注意备份数据库时需要手动输入密码,为了能执行自动化而不必输入密码,使用pump代替dump,配置方法如下:

1
2
mysql_config_editor  set --login-path=key --host=localhost --user=root --password
# 这里要手动输入密码来生成密钥

完整的sh脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/sh
cd $(cd `dirname $0`;pwd)

# 备份数据库
mysqlpump --login-path=key 数据库名字 > /home/chlen/my-services/backup/blog-sql.sql

# 备份网页目录
tar -cvf /home/chlen/my-services/backup/my-blog.tar /var/lib/docker/volumes/eaaf8ee23fdec167e4599903a297ce3fe9c102c0624f063490b1f72d769a5069

# 同步到git

git commit -am autosync

git push

部署自动任务

使用root用户来防止没有权限;

考虑到可能的更新频率,设置3天同步一次;

1
2
3
crontab -e;
0 4 * * 1,4 sh /home/chlen/my-services/dev/sync.sh
# 实际是周三,周六各一次

后记

原本打算同步整个docker容器镜像,打包后发现有600m,遂放弃;

(注:docker wordpress博客资源默认存储在数据卷中,所以打包容器是木大的)

又及,mysql的配置文件太多:

博客搭建完成!

架构:基于Docker的wordpress容器以及不基于Docker的mysql

测试图片

1
console.log("Hello World");