Skip to content

Commit

Permalink
修改 readme.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Jackson0714 committed Jul 23, 2024
1 parent 1a14bb6 commit 2ae2fa8
Show file tree
Hide file tree
Showing 944 changed files with 5,864 additions and 8 deletions.
Empty file modified .gitattributes
100644 → 100755
Empty file.
Empty file modified .gitignore
100644 → 100755
Empty file.
Empty file modified .obsidian/app.json
100644 → 100755
Empty file.
Empty file modified .obsidian/appearance.json
100644 → 100755
Empty file.
Empty file modified .obsidian/core-plugins-migration.json
100644 → 100755
Empty file.
Empty file modified .obsidian/core-plugins.json
100644 → 100755
Empty file.
Empty file modified .obsidian/workspace.json
100644 → 100755
Empty file.
Empty file modified .vscode/settings.json
100644 → 100755
Empty file.
Empty file modified LICENSE
100644 → 100755
Empty file.
Empty file modified README.md
100644 → 100755
Empty file.
Empty file modified code/01.Threads/.idea/.gitignore
100644 → 100755
Empty file.
Empty file modified code/01.Threads/.idea/artifacts/01_Threads_ear_exploded.xml
100644 → 100755
Empty file.
Empty file modified code/01.Threads/.idea/misc.xml
100644 → 100755
Empty file.
Empty file modified code/01.Threads/.idea/modules.xml
100644 → 100755
Empty file.
Empty file modified code/01.Threads/.idea/uiDesigner.xml
100644 → 100755
Empty file.
Empty file modified code/01.Threads/.idea/vcs.xml
100644 → 100755
Empty file.
Empty file modified code/01.Threads/01.Threads.iml
100644 → 100755
Empty file.
Empty file modified code/01.Threads/META-INF/application.xml
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified code/02.TestPlan/Test Plan.jmx
100644 → 100755
Empty file.
Empty file modified code/static/css/me.css
100644 → 100755
Empty file.
Empty file modified code/static/css/notosanssc.css
100644 → 100755
Empty file.
Empty file modified code/static/css/sidebar-folder.min.css
100644 → 100755
Empty file.
Empty file modified code/static/css/sidebar.min.css
100644 → 100755
Empty file.
Empty file modified code/static/css/style.css
100644 → 100755
Empty file.
Empty file modified code/static/css/sweetalert.min.css
100644 → 100755
Empty file.
Empty file modified code/static/css/vue.css
100644 → 100755
Empty file.
Empty file modified code/static/css/vue2.css
100644 → 100755
Empty file.
Empty file modified code/static/css/waifu.css
100644 → 100755
Empty file.
Empty file modified code/static/js/L2Dwidget.0.min.js
100644 → 100755
Empty file.
Empty file modified code/static/js/L2Dwidget.0.min.js.map
100644 → 100755
Empty file.
Empty file modified code/static/js/L2Dwidget.min.js
100644 → 100755
Empty file.
Empty file modified code/static/js/L2Dwidget.min.js.map
100644 → 100755
Empty file.
Empty file modified code/static/js/autoload1.0.js
100644 → 100755
Empty file.
Empty file modified code/static/js/autoload1.1.js
100644 → 100755
Empty file.
Empty file modified code/static/js/autoload1.2.js
100644 → 100755
Empty file.
Empty file modified code/static/js/busuanzi.pure.mini.js
100644 → 100755
Empty file.
Empty file modified code/static/js/click_heart.js
100644 → 100755
Empty file.
Empty file modified code/static/js/docsify-copy-code
100644 → 100755
Empty file.
Empty file modified code/static/js/docsify-pagination.min.js
100644 → 100755
Empty file.
Empty file modified code/static/js/docsify-plugin-flexible-alerts.min.js
100644 → 100755
Empty file.
Empty file modified code/static/js/docsify-plugin-flexible-alerts.min.js.map
100644 → 100755
Empty file.
Empty file modified code/static/js/docsify-sidebar-collapse.min.js
100644 → 100755
Empty file.
Empty file modified code/static/js/docsify.min.js
100644 → 100755
Empty file.
Empty file modified code/static/js/emoji.js
100644 → 100755
Empty file.
Empty file modified code/static/js/index.js
100644 → 100755
Empty file.
Empty file modified code/static/js/live2d.min.js
100644 → 100755
Empty file.
Empty file modified code/static/js/prism-bash.min.js
100644 → 100755
Empty file.
Empty file modified code/static/js/prism-c.min.js
100644 → 100755
Empty file.
Empty file modified code/static/js/prism-cpp.min.js
100644 → 100755
Empty file.
Empty file modified code/static/js/prism-java.min.js
100644 → 100755
Empty file.
Empty file modified code/static/js/prism-json.min.js
100644 → 100755
Empty file.
Empty file modified code/static/js/prism-python.min.js
100644 → 100755
Empty file.
Empty file modified code/static/js/search.js
100644 → 100755
Empty file.
Empty file modified code/static/js/sweetalert.min.js
100644 → 100755
Empty file.
Empty file modified code/static/js/waifu-tips.js
100644 → 100755
Empty file.
Empty file modified code/static/js/zoom-image.js
100644 → 100755
Empty file.
Empty file modified code/static/json/model_list.json
100644 → 100755
Empty file.
Empty file modified code/static/json/shizuku.model.json
100644 → 100755
Empty file.
Empty file modified code/static/json/waifu-tips.json
100644 → 100755
Empty file.
Empty file modified docs/.nojekyll
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/01.Introduction/1.项目背景.md
100644 → 100755
Empty file.
Empty file.
Empty file modified docs/01.PassJava/01.Introduction/2.项目微服务架构图.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/01.Introduction/3.微服务划分图.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/01.Introduction/4.项目技术和特色.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/01.Introduction/5.项目前置要求.md
100644 → 100755
Empty file.
Empty file.
Empty file modified docs/01.PassJava/01.Introduction/7.本地部署项目Mac版.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/01.Introduction/8.本地部署问题汇总.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/01.Introduction/9.Java学习路线.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified docs/01.PassJava/02.PassJava_Architecture/19.缓存实战.md
100644 → 100755
Empty file.
Empty file.
Empty file modified docs/01.PassJava/02.PassJava_Architecture/21.ES中文分词.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified docs/01.PassJava/02.PassJava_Architecture/25.本地事务.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/02.PassJava_Architecture/26.分布式事务.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/01.环境搭建篇.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/02.Linux/03.NTP/03.NTP_Command.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/02.配置虚拟机网络.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/03.Prometheus/00.计划.md
100644 → 100755
Empty file.
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/03.Prometheus/02.Prometheus部署.md
100644 → 100755
Empty file.
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/03.安装docker.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/04.docker安装mysql.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/05.docker安装redis.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/06.本地开发环境配置.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/07.配置git.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/08.Windows安装mysql.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/09.M1运行Docker.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/10.部署ELK日志检索平台.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/13.用Docker部署ELK.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/14.用M1部署ES_Kibana.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/15.用M1部署Skywalking.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/18.部署监控平台Prometheus.md
100644 → 100755
Empty file.
Empty file modified docs/01.PassJava/03.Deploy/20.image_403.md
100644 → 100755
Empty file.
213 changes: 213 additions & 0 deletions docs/01.PassJava/03.Deploy/24.backup_database.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
# 避免删库跑路的最好办法

你好,我是悟空。

[toc]

![目录](http://cdn.jayh.club/top/image-20240606132736198.png)

## 一、前言

### 1.1 删库跑路是什么?

`删库跑路`:是一个在开发和运维领域常见的幽默说法,但它指的是一种严重的故障情境:意外删除了生产数据库中的数据。

在实际操作中,这种情况可能会导致严重的数据丢失和业务中断。

### 1.2 避免删除跑路的方式

**权限控制:** 限制对生产环境的直接访问和操作,确保只有受信任的人员才能执行敏感操作。

**日志审计:** 记录所有操作,包括谁、什么时间、做了什么操作,以便追踪和审计。

**备份策略:** 实施完善的备份策略,定期备份数据,并将备份数据存储在安全的地方,以便在出现问题时能够快速恢复数据。

**多地备份:** 将备份数据存储在不同的地理位置,以防止因某一地点发生灾难而导致数据丢失。

**权限分离:** 采用最小权限原则,给予员工仅限于其工作职责所需的最低权限,避免滥用权限。

**监控预警:** 部署监控系统,监视系统状态和用户行为,及时发现异常操作并采取措施。

**培训意识:** 对员工进行安全意识培训,让他们了解删除跑路的危害,以及如何正确处理数据和执行操作。

而最最最重要的一种方式就是备份!

**重要的事情说三遍:备份!备份!备份!**

为什么说备份是最重要的,因为只要有备份文件,数据就能恢复。但前提是备份文件别被删了!

那么今天我们就来看下如何备份数据库以及重要的文件。

## 二、环境说明

本篇涉及到的服务器环境如下表所示:

| 序号 | 说明 | 说明 |
| ---- | --------------------------------- | ------------------------ |
| 1 | Ubuntu 系统 | 服务器操作系统 |
| 2 | Docker 容器 | 容器 |
| 3 | MySQL 数据库 | 备份数据库,以容器化部署 |
| 4 | FastDFS 文件存储或 Redis 数据文件 | 备份磁盘文件 |
| 5 | expect 工具 | 自动化交互式任务的工具 |

Ubuntu 上安装有 Docker,MySQL 以容器化的形式部署,FastDFS

## 三、备份方案

### 3.1 备份 MySQL 数据库的所有数据

- 使用 `mysqldump` 命令备份所有数据,并生成一个 SQL 文件。
- 使用 `tar` 命令将 SQL 文件压缩成一个文件。
- 使用 openssl 加密压缩文件。
- 删除过期数据
- 使用 `scp``rsync` 命令将加密文件上传到远程服务器进行异地存储。

``` mermaid
graph TD;
A[开始备份] -->|1. 备份所有数据| B[使用mysqldump生成SQL文件]
B -->|2. 将数据压缩成一个文件| C[使用tar生成压缩文件]
C -->|3. 将数据加密| D[使用 openssl 生成加密文件]
D -->|4. 删除过期数据| E[查找并删除过期备份文件]
E -->|5. 将数据异地存储| F[使用scp上传到远程服务器]
F -->|6. 备份完成| G[备份完成]
```

### 3.2 备份数据文件

- 压缩和加密文件
- 拆分成分卷文件
- 合并分卷文件
- 远程备份
- 删除过期数据



``` mermaid
graph TD;
A[1. 开始] --> E[2. 压缩和加密文件]
E --> F[3. 拆分成分卷文件]
F --> G[4. 合并分卷文件]
G --> H[5. 远程备份]
H --> K[7. 删除过期数据]
K --> J[8. 结束]
```

## 四、自动化定期备份

指定一个 cron 作业,在每天凌晨 2 点 10 分运行一个脚本,并将输出追加到 `/home/passjava/backup/cron_log.txt` 文件中。

编辑定时任务

``` SH
crontab -uroot -e
```

编写定时任务

```
10 2 * * * bash /home/passjava/backup/你的脚本 >> /home/passjava/backup/cron_log.txt
```

## 五、备份脚本

### 5.1 数据库备份脚本

``` SH
#!/bin/bash
# 设置mysql的登录用户名和密码(根据实际情况填写)
mysql_user="root"
mysql_password="xxx"
mysql_host="数据库服务器 ip"
mysql_port="3306"
#mysql_charset="utf8mb4"

# 备份文件存放地址(根据实际情况填写)
backup_location=/home/passjava/backup/mysql/passjava_web

# 是否删除过期数据
expire_backup_delete="ON"
expire_days=7
backup_time=`date +%Y-%m-%d-%H-%M-%S`

#根据docker ps获取mysql容器的ID
mysqlContainerName=`sudo docker ps -q --filter="name=mysql"`
#在运行在docker环境的mysql中执行备份命令
sudo docker exec $mysqlContainerName mysqldump passjava_web -u$mysql_user -p$mysql_password > $backup_location/$backup_time-backup-mysql-passjava_web.sql

tar -czvf - $backup_location/$backup_time-backup-mysql-passjava_web.sql | openssl des3 -salt -k passjava123456 -out $backup_location/$backup_time-backup-mysql-passjava_web.sql.tar.gz

# 删除过期数据
if [ "$expire_backup_delete" == "ON" -a "$backup_location" != "" ];then
`find $backup_location/ -type f -mtime +$expire_days | xargs rm -rf`
echo "Expired backup data delete complete!"
fi

echo "开始远程备份 passjava_web"

expect -c "
spawn scp -r /home/passjava/backup/mysql/passjava_web/$backup_time-backup-mysql-passjava_web.sql.tar.gz passjava@异地服务器1:/home/passjava/backup/mysql/passjava_web
expect {
\"*assword\" {set timeout 300; send \"passjava\r\"; exp_continue;}
\"yes/no\" {send \"yes\r\";}
}
spawn scp -r /home/passjava/backup/mysql/passjava_web/$backup_time-backup-mysql-passjava_web.sql.tar.gz passjava@异地服务器2:/home/passjava/backup/mysql/passjava_web
expect {
\"*assword\" {set timeout 300; send \"passjava\r\"; exp_continue;}
\"yes/no\" {send \"yes\r\";}
}
expect eof"

echo "完成远程备份 passjava_web"

rm -f $backup_location/$backup_time-backup-mysql-passjava_web.sql

```

### 5.2 文件备份脚本

本脚本用于备份 FastDFS 分布式文件系统的文件,也可以改为备份 redis 的数据文件。

``` SH
#!/bin/bash

# 备份文件存放地址(根据实际情况填写)
backup_location=/home/passjava/backup/fdfs/data

# 是否删除过期数据
expire_backup_delete="ON"
expire_days=7
backup_time=`date +%Y-%m-%d-%H-%M-%S`

# 压缩加密数据库备份文件
tar -czvf - /home/passjava/fdfs | openssl des3 -salt -k passjava123456 | split -b 200m -d - $backup_location/$backup_time-fdfs-data.tar.gz

# 删除过期数据
if [ "$expire_backup_delete" == "ON" -a "$backup_location" != "" ];then
`find $backup_location/ -type f -mtime +$expire_days | xargs rm -rf`
echo "Expired backup data delete complete!"
fi

cat $backup_location/$backup_time-fdfs-data.tar.gz* > $backup_location/$backup_time-fdfs-data-all.tar.gz

echo "开始远程备份 fdfs"

expect -c "
spawn scp -r $backup_location/$backup_time-fdfs-data-all.tar.gz [email protected]:/home/passjava/backup/fdfs/data
expect {
\"*assword\" {set timeout 300; send \"passjava\r\"; exp_continue;}
\"yes/no\" {send \"yes\r\";}
}
expect eof"

echo "完成远程备份 fdfs"

rm -f $backup_location/$backup_time-fdfs-data.tar.gz*

```

## 六、总结

删库跑路是指某人恶意删除重要数据后逃避责任的行为,可能导致严重的经济损失和安全风险。

为了避免此类情况,需要实施权限管理、定期备份数据,并建立自动化的备份脚本,以确保数据安全和系统稳定运行。
88 changes: 88 additions & 0 deletions docs/01.PassJava/03.Deploy/25.linux_crash_glibc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# 谢谢你的脚本,服务器黑屏无法启动了

你好,我是悟空。

## 背景

书接上回,在部署好 Jenkins 后,紧急着就要开始部署前端项目了。

而前端项目的部署最重要的一个环节就是编译,我们项目选用的前端框架是 AngularJS ,需要用到 Node 工具来编译。

## 安装 node

我们的 Linux 服务器上还没有安装 Node,所以需要安装一波。

其实安装倒挺简单的,把 node 从官网下载下来,然后放到 linux 服务器上解压,配置环境变量就好了。这一步都挺挺简单的,一说就会。

接下来的事情就有点意思了,我配置好 node 后,是不是得看看 node 的版本,用 node -v 命令查下,结果就提示如下信息:

> node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node)
大概的意思就是 node 需要 GLIBC_2.28 的版本,但是当前服务器上没有。

根据这个报错信息到搜索引擎上查下,得到的结论就是要用升级 glibc 的版本,它一个系统库。OK,那就升级看看。

## 升级 GLIBC 2.28 的脚本

找到了一篇博客写的内容,还温馨地提供了一份升级脚本,如下所示:

``` SH
# 解压安装包
$ tar -xJf glibc-2.28.tar.xz
$ cd glibc-2.28/
$ mkdir build
$ cd build
# 配置源代码包,以便在系统上进行编译和安装。
$ ../configure --prefix=/usr
$ make
```

这段脚本做了三件事:

- 1、解压安装包
- 2、配置源代码包
- 3、编译

看起来也挺简单的,试试看。按照上面提供的命令操作了一波,就提示如下信息了:

> segmentation fault
**而且更奇怪的是,我输入任何命令都是提示 segmentation fault。**

无解了,于是我想重连服务器试试看,结果 ssh 连不上服务器了。

没办法了, 只能重启试试看了。

重启后就黑屏卡在那里不动了,用救援模式重启依旧如此。

![](http://cdn.jayh.club/top/image-20240607093352260.png)

到搜索引擎上按关键词搜索:升级glibc导致的系统崩,确实有很多朋友遇到了类似问题。而且用的脚本一模一样,这个脚本坑人啊!

![](http://cdn.jayh.club/top/image-20240607094445565.png)

正确的命令是

``` SH
../configure --prefix=/opt/glibc-2.28
```

## 尝试修复

找了下网上的解决方案,尝试进行修复,还是没能成功。

最后就只能把重要的文件备份出来了,比如 jenkins 目录,不然由得重新折腾一遍了,离线环境部署 jenkins 还是比较麻烦的。

## 解决方案

问题原因其实就是当前的 Ubuntu 版本太低了,不支持当前的 node 版本,解决方案就是把 Ubuntu 重装一个高版本的。

## 最后

为了感谢这位博主提供的脚本,必须评论留言一波!

![](http://cdn.jayh.club/top/image-20240607095053944.png)

希望大家引以为鉴,对于更新系统核心库的操作一定要慎重!更新之前,提前做好系统镜像和备份文件也是非常有必要的。

好的,我的讲话完毕,谢谢大家!
Empty file modified docs/01.PassJava/03.Deploy/Untitled.md
100644 → 100755
Empty file.
80 changes: 80 additions & 0 deletions docs/01.PassJava/03.Deploy/jenkins.email.html.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@


email.html



``` html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV,var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
<table width="95%" cellpadding="0" cellspacing="0"
style="font-size: 11pt; font-family: Tahoma,Arial,Helvetica,sans-serif">
<tr>
<td>(本邮件是程序自动下发,请勿回复!)</td>
</tr>
<tr>
<td><h2>
<font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>
</h2></td>
</tr>
<tr>
<td><br />
<b><font color="#0B610B">构建信息</font></b>
<ht size="2" width="100%" byte="center" /></td>
</tr>
<tr>
<td>

<ul>
<li>项目名称&nbsp;:&nbsp; ${PROJECT_NAME}</li>
<li>构建编号&nbsp;:&nbsp; 第${BUILD_NUMBER}</li>
<li>触发方式&nbsp;:${CAUSE}</li>
<li>构建日志&nbsp;: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>构建&nbsp;&nbsp; Url&nbsp;: &nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>工作目录&nbsp;:&nbsp; <a href="${PROJECT_URL}workflow-stage">${PROJECT_URL}workflow-stage</a></li>
<li>项目&nbsp;:&nbsp;Url&nbsp;:&nbsp;<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
</ul>
</td>
</tr>
<tr>

<td><font color="#0B610B">Changes Since Last
Successful Build:</font></b>
<hr size="2" width="100%" byte="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
</ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="%p"}
</td>
</tr>
<tr>
<td><b><font color="#0B610B">Failed Test Results</font></b>
<hr size="2" width="100%" byte="center" /></td>
</tr>
<tr>
<td><pre
style="font-size: 11pt; font-family: Tahoma,Aarial,Helvetica,sans-serif">$FAILED_TESTS</pre>
<br />
</td>
</tr>
<tr>
<td><font><font color="#0B610B">构建日志(最后100行):</font></b>
<hr size="2" width="100%" byte="center" /></td>
</tr>
<tr>
<td><textarea cols="80" rows="30" readonly="readonly"
style="font-family: Courier New">${BUILD_LOG,maxLines=100}</textarea>
</td>
</tr>
</table>
</body>
</html>
```

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified docs/02.SpringCloud/02.Ribbon负载均衡/02.Ribbon使用.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified docs/02.SpringCloud/05.Zuul网关/01.Zuul架构剖析.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified docs/02.SpringCloud/06.Gateway网关/07.网关选型.md
100644 → 100755
Empty file.
Empty file.
Empty file modified docs/02.SpringCloud/06.Gateway网关/97.实战Gateway.md
100644 → 100755
Empty file.
Empty file modified docs/02.SpringCloud/06.Gateway网关/99.深入浅入Gateway.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified docs/02.SpringCloud/09.Seata/01.Seata.md
100644 → 100755
Empty file.
Empty file modified docs/02.SpringCloud/10.Nacos/00.Nacos底层原理目录.md
100644 → 100755
Empty file.
Empty file modified docs/02.SpringCloud/10.Nacos/97.源码剖析AP.md
100644 → 100755
Empty file.
Empty file modified docs/02.SpringCloud/10.Nacos/98.报错信息.md
100644 → 100755
Empty file.
Empty file.
Empty file modified docs/02.SpringCloud/10.Nacos/99.快速启动Nacos.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified docs/02.SpringCloud/12.权限认证/01.单点登录原理.md
100644 → 100755
Empty file.
Empty file modified docs/03.Distributed/01.分布式基础概念.md
100644 → 100755
Empty file.
Empty file modified docs/03.Distributed/02.分布式中的十种坑.md
100644 → 100755
Empty file.
Empty file modified docs/03.Distributed/02.缓存有哪些坑.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file modified docs/03.Distributed/05.诸葛VS庞统,拿下Paxos.md
100644 → 100755
Empty file.
Empty file modified docs/03.Distributed/06.用动图讲解分布式Raft.md
100644 → 100755
Empty file.
Empty file modified docs/03.Distributed/07.韩信大招:一致性哈希.md
100644 → 100755
Empty file.
Empty file modified docs/03.Distributed/08.Gossip协议.md
100644 → 100755
Empty file.
Empty file modified docs/03.Distributed/09.QuorumNWR算法.md
100644 → 100755
Empty file.
Empty file modified docs/03.Distributed/10.区块链12问.md
100644 → 100755
Empty file.
Empty file modified docs/03.Distributed/11.分布式总结.md
100644 → 100755
Empty file.
Empty file.
Empty file modified docs/03.Distributed/13.PBFT.md
100644 → 100755
Empty file.
Empty file modified docs/03.Distributed/14.ZAB协议.md
100644 → 100755
Empty file.
Empty file modified docs/03.Distributed/Raft/1.gif
100644 → 100755
Empty file modified docs/03.Distributed/Raft/2.gif
100644 → 100755
Empty file modified docs/03.Distributed/Raft/Leader选举-候选者1.gif
100644 → 100755
Empty file modified docs/03.Distributed/Raft/Leader选举-候选者2.gif
100644 → 100755
Empty file modified docs/03.Distributed/Raft/Leader选举-领导者故障.gif
100644 → 100755
Empty file modified docs/03.Distributed/Raft/Leader选举1.gif
100644 → 100755
Empty file modified docs/03.Distributed/Raft/Leader选举2.gif
100644 → 100755
Empty file modified docs/03.Distributed/拜占庭问题/0Hb6y9SGLRw0.png
100644 → 100755
Empty file modified docs/03.Distributed/拜占庭问题/7ydKoE7KmQJw.png
100644 → 100755
Empty file modified docs/03.SpringBoot/01.自定义Redis_Starter.md
100644 → 100755
Empty file.
Empty file modified docs/03.SpringBoot/02.maven_thirdpart_jar.md
100644 → 100755
Empty file.
Empty file modified docs/03.SpringBoot/08.SpringBoot-Mybatis逻辑删除.md
100644 → 100755
Empty file.
Empty file modified docs/03.SpringBoot/09.Object划分.md
100644 → 100755
Empty file.
Empty file modified docs/03.SpringBoot/09.Object划分md
100644 → 100755
Empty file.
Empty file modified docs/03.SpringBoot/email/01_send_email.md
100644 → 100755
Empty file.
Empty file modified docs/03.SpringBoot/email/02_email_163.md
100644 → 100755
Empty file.
Empty file modified docs/03.SpringBoot/email/12.Email_office365.md
100644 → 100755
Empty file.
Empty file modified docs/03.SpringBoot/email/email_freemarker.md
100644 → 100755
Empty file.
Empty file modified docs/03.SpringBoot/email/graph_api_calender.md
100644 → 100755
Empty file.
Empty file modified docs/03.SpringBoot/spring-boot-05-data-jdbc.md
100644 → 100755
Empty file.
Empty file modified docs/03.SpringBoot/spring-boot-06-data-druid.md
100644 → 100755
Empty file.
Empty file modified docs/03.SpringBoot/spring-boot-07-data-mybatis.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified docs/04.Architecture/01.架构图解/06.PasS_IaaS_SaaS.md
100644 → 100755
Empty file.
Loading

0 comments on commit 2ae2fa8

Please sign in to comment.