-
Notifications
You must be signed in to change notification settings - Fork 91
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
1a14bb6
commit 2ae2fa8
Showing
944 changed files
with
5,864 additions
and
8 deletions.
There are no files selected for viewing
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
0
code/01.Threads/out/production/01.Threads/META-INF/01.Threads.kotlin_module
100644 → 100755
Empty file.
Empty file modified
0
code/01.Threads/out/production/01.Threads/com/jackson0714/passjava/threads/ShareData.class
100644 → 100755
Empty file.
Empty file modified
0
...reads/out/production/01.Threads/com/jackson0714/passjava/threads/volatileVisibility.class
100644 → 100755
Empty file.
Empty file modified
0
code/01.Threads/src/com/jackson0714/passjava/threads/ArrayListDemo.java
100644 → 100755
Empty file.
Empty file modified
0
code/01.Threads/src/com/jackson0714/passjava/threads/AtomicReferenceDemo.java
100644 → 100755
Empty file.
Empty file modified
0
code/01.Threads/src/com/jackson0714/passjava/threads/AtomicStampedReferenceDemo.java
100644 → 100755
Empty file.
Empty file modified
0
code/01.Threads/src/com/jackson0714/passjava/threads/CASDemo.java
100644 → 100755
Empty file.
Empty file modified
0
code/01.Threads/src/com/jackson0714/passjava/threads/DelayQueueDemo.java
100644 → 100755
Empty file.
Empty file modified
0
code/01.Threads/src/com/jackson0714/passjava/threads/LinkedTransferQueueDemo.java
100644 → 100755
Empty file.
Empty file modified
0
code/01.Threads/src/com/jackson0714/passjava/threads/QueueDemo.java
100644 → 100755
Empty file.
Empty file modified
0
code/01.Threads/src/com/jackson0714/passjava/threads/SynchronousQueueDemo.java
100644 → 100755
Empty file.
Empty file modified
0
code/01.Threads/src/com/jackson0714/passjava/threads/VolatileAtomicity.java
100644 → 100755
Empty file.
Empty file modified
0
code/01.Threads/src/com/jackson0714/passjava/threads/VolatileResort.java
100644 → 100755
Empty file.
Empty file modified
0
code/01.Threads/src/com/jackson0714/passjava/threads/VolatileSingleton.java
100644 → 100755
Empty file.
Empty file modified
0
code/01.Threads/src/com/jackson0714/passjava/threads/VolatileVisibility.java
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.
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.
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
0
docs/01.PassJava/02.PassJava_Architecture/05.整合MyBatis-Plus实现CRUD.md
100644 → 100755
Empty file.
Empty file modified
0
docs/01.PassJava/02.PassJava_Architecture/06.生成所有微服务的CRUD代码.md
100644 → 100755
Empty file.
Empty file modified
0
docs/01.PassJava/02.PassJava_Architecture/07.SpringCloudAlibaba组件简介.md
100644 → 100755
Empty file.
Empty file modified
0
docs/01.PassJava/02.PassJava_Architecture/08.SpringCloud整合Alibaba-Nacos组件.md
100644 → 100755
Empty file.
Empty file modified
0
docs/01.PassJava/02.PassJava_Architecture/09.SpringCloud整合OpenFeign组件.md
100644 → 100755
Empty file.
Empty file modified
0
docs/01.PassJava/02.PassJava_Architecture/10.SpringCloud整合Nacos配置中心.md
100644 → 100755
Empty file.
Empty file modified
0
docs/01.PassJava/02.PassJava_Architecture/11.SpringCloud整合Gateway网关.md
100644 → 100755
Empty file.
Empty file modified
0
docs/01.PassJava/02.PassJava_Architecture/12.SpringCloud整合OSS对象存储.md
100644 → 100755
Empty file.
Empty file.
Empty file modified
0
docs/01.PassJava/02.PassJava_Architecture/14.Elasticsearch原理.md
100644 → 100755
Empty file.
Empty file modified
0
.../02.PassJava_Architecture/14.Elasticsearch基础.assets/image-20200629192730211.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
.../02.PassJava_Architecture/14.Elasticsearch基础.assets/image-20200629193228679.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
.../02.PassJava_Architecture/14.Elasticsearch基础.assets/image-20200629193248105.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
.../02.PassJava_Architecture/14.Elasticsearch基础.assets/image-20200708222249498.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
.../02.PassJava_Architecture/14.Elasticsearch基础.assets/image-20200708222255383.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/02.PassJava_Architecture/15.Elasticsearch实战.md
100644 → 100755
Empty file.
Empty file modified
0
docs/01.PassJava/02.PassJava_Architecture/16.Elasticsearch集群部署.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified
0
docs/01.PassJava/02.PassJava_Architecture/22.缓存实战(二)Redis分布式锁.md
100644 → 100755
Empty file.
Empty file modified
0
docs/01.PassJava/02.PassJava_Architecture/23.缓存实战(三)Redisson分布式锁.md
100644 → 100755
Empty file.
Empty file modified
0
docs/01.PassJava/02.PassJava_Architecture/24.缓存实战(四)SpringCache.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified
0
docs/01.PassJava/03.Deploy/02.Linux/01.Linux命令大全/01.Linux命令大全.md
100644 → 100755
Empty file.
Empty file.
Empty file modified
0
docs/01.PassJava/03.Deploy/02.Linux/01.监控平台/01.Docker_Prometheus-冲突-悟空呀_Win10.md
100644 → 100755
Empty file.
Empty file modified
0
docs/01.PassJava/03.Deploy/02.Linux/01.监控平台/01.Docker_Prometheus.md
100644 → 100755
Empty file.
Empty file.
Empty file modified
0
docs/01.PassJava/03.Deploy/02.Linux/01.监控平台/02.Prometheus_SQLSERVER.md
100644 → 100755
Empty file.
Empty file modified
0
docs/01.PassJava/03.Deploy/02.Linux/01.监控平台/02.Prometheus_SQL_SERVER
100644 → 100755
Empty file.
Empty file modified
0
docs/01.PassJava/03.Deploy/02.Linux/01.监控平台/03.Docker_Prometheus_SQLServer.md
100644 → 100755
Empty file.
Empty file modified
0
docs/01.PassJava/03.Deploy/02.Linux/01.监控平台/04.MySQL_Exporter.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified
0
docs/01.PassJava/03.Deploy/03.Prometheus/01.Prometheus原理2022.11.04.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.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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* | ||
|
||
``` | ||
|
||
## 六、总结 | ||
|
||
删库跑路是指某人恶意删除重要数据后逃避责任的行为,可能导致严重的经济损失和安全风险。 | ||
|
||
为了避免此类情况,需要实施权限管理、定期备份数据,并建立自动化的备份脚本,以确保数据安全和系统稳定运行。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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>项目名称 : ${PROJECT_NAME}</li> | ||
<li>构建编号 : 第${BUILD_NUMBER}</li> | ||
<li>触发方式 :${CAUSE}</li> | ||
<li>构建日志 : <a href="${BUILD_URL}console">${BUILD_URL}console</a></li> | ||
<li>构建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li> | ||
<li>工作目录 : <a href="${PROJECT_URL}workflow-stage">${PROJECT_URL}workflow-stage</a></li> | ||
<li>项目 : Url : <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> | ||
``` | ||
|
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230524105715516.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230524111022132.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230524111911082.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230524112038891.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230524112124574.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230524112212520.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230524112233219.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230524112304729.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230525092717632.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230525092839557.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230525092850337.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230525092922185.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230525092946152.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230526165817895.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230526170026313.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230602144613432.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230602151944065.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230602152134248.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230602153507389.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230602154515672.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230602155740947.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230602155802285.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230602162300732.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230602163000610.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230602163528221.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230602164456545.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230614084939143.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230614085611343.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230614085735919.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230614091659535.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230614092414704.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230614092542460.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/01.PassJava/03.Deploy/本地部署 Jenkins.assets/image-20230614092829142.png
100644 → 100755
Oops, something went wrong.
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
0
docs/02.SpringCloud/01.Eureka注册中心/08.Eureka源码之Server端的多级缓存机制.md
100644 → 100755
Empty file.
Empty file.
Empty file modified
0
docs/02.SpringCloud/01.Eureka注册中心/92.Eureka自我保护机制,网上99%都说错了!.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 modified
0
...SpringCloud/03.Feign远程调用/01.Feign远程调用基本原理和使用.assets/image-20220704111442958.png
100644 → 100755
Oops, something went wrong.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified
0
docs/02.SpringCloud/06.Gateway网关/05.SpringCloudGateway内置的过滤器.md
100644 → 100755
Empty file.
Empty file modified
0
docs/02.SpringCloud/06.Gateway网关/06.SpringCloudGateway内置的全局过滤器.md
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified
0
docs/02.SpringCloud/07.Nacos配置注册中心/02.Nacos架构原理①:一条注册请求会经历什么?.md
100644 → 100755
Empty file.
Empty file modified
0
docs/02.SpringCloud/07.Nacos配置注册中心/03.Nacos架构原理②:揭秘AP架构——Distro一致性协议.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 modified
0
docs/02.SpringCloud/11.链路追踪/01.添加traceId跟踪日志.assets/image-20220908150529573.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/02.SpringCloud/11.链路追踪/01.添加traceId跟踪日志.assets/image-20220908150803867.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/02.SpringCloud/11.链路追踪/01.添加traceId跟踪日志.assets/image-20220908150928027.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/02.SpringCloud/11.链路追踪/01.添加traceId跟踪日志.assets/image-20220908151032677.png
100644 → 100755
Oops, something went wrong.
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.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
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
0
...架构图解/01.微服务架构中的两款流量防卫兵.assets/50678855-aa6e9700-103b-11e9-83de-2a33e580325f.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
...架构图解/01.微服务架构中的两款流量防卫兵.assets/50813887-bff10300-1352-11e9-9201-437afea60a5a.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
...架构图解/01.微服务架构中的两款流量防卫兵.assets/68292392-b5b0aa00-00c6-11ea-86e1-ecacff8aab51.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
...架构图解/01.微服务架构中的两款流量防卫兵.assets/68292442-d4af3c00-00c6-11ea-8251-d0977366d9b4.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/04.Architecture/01.架构图解/01.微服务架构中的两款流量防卫兵.assets/image-20201101132129234.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/04.Architecture/01.架构图解/01.微服务架构中的两款流量防卫兵.assets/image-20201101202812737.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/04.Architecture/01.架构图解/01.微服务架构中的两款流量防卫兵.assets/image-20201103220145151.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/04.Architecture/01.架构图解/01.微服务架构中的两款流量防卫兵.assets/image-20201103221016048.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/04.Architecture/01.架构图解/01.微服务架构中的两款流量防卫兵.assets/image-20201103221018398.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/04.Architecture/01.架构图解/01.微服务架构中的两款流量防卫兵.assets/image-20201103221107664.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/04.Architecture/01.架构图解/01.微服务架构中的两款流量防卫兵.assets/image-20201103230631742.png
100644 → 100755
Oops, something went wrong.
Empty file modified
0
docs/04.Architecture/01.架构图解/01.微服务架构中的两款流量防卫兵.assets/image-20201103231336302.png
100644 → 100755
Oops, something went wrong.
Empty file.
Empty file modified
0
docs/04.Architecture/01.架构图解/02.20张图手摸手教你性能压测.assets/image-20201124221817028.png
100644 → 100755
Oops, something went wrong.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Oops, something went wrong.