Prechádzať zdrojové kódy

增加算法平台的部署文档

seamew 3 rokov pred
rodič
commit
dc8b5ec5fd
77 zmenil súbory, kde vykonal 1607 pridanie a 726 odobranie
  1. 0 0
      linux/linux常见命令/学习正则表达式.md
  2. 0 0
      linux/linux服务器配置/SSH免密登录.md
  3. 2 2
      linux/linux服务器配置/centos网络配置.md
  4. 0 0
      linux/linux服务器配置/tmux/tmux.md
  5. 0 0
      linux/linux服务器配置/tmux/配置文件md
  6. 0 0
      linux/linux服务器配置/ubuntu和windows时间不同步.md
  7. 0 0
      linux/linux服务器配置/zsh/zsh的使用.md
  8. 0 0
      linux/linux服务器配置/zsh/zsh的配置文件.md
  9. 95 0
      linux/linux服务器防护/iptables.md
  10. 0 0
      linux/linux服务器防护/linux防火墙.md
  11. 0 8
      中煤/大屏反馈BUG.md
  12. 1 0
      前端/文档/jsdoc-vue.md
  13. 310 288
      后端/Mysql/1.MySQL基础课堂笔记.md
  14. 185 173
      后端/Mysql/2.MySQL多表&事务课堂笔记.md
  15. 252 229
      后端/Mysql/3.MySQL约束课堂笔记.md
  16. 55 0
      后端/Mysql/8.mysql主从复制搭建环境.md
  17. BIN
      后端/Mysql/assets/image-20220314165727347.png
  18. BIN
      后端/Mysql/assets/image-20220314170207277.png
  19. BIN
      大数据/云平台安装文档/云平台安装文档.zip
  20. 0 0
      部署文档/云平台/assets/image-20211108145729544.png
  21. 0 0
      部署文档/云平台/assets/image-20211108154405864.png
  22. 0 0
      部署文档/云平台/assets/image-20211110154335629.png
  23. 0 0
      部署文档/云平台/assets/image-20211110155332792.png
  24. 0 0
      部署文档/云平台/assets/image-20211110230053303.png
  25. 0 0
      部署文档/云平台/assets/image-20211110230128121.png
  26. 0 0
      部署文档/云平台/assets/image-20211110230429326.png
  27. 0 0
      部署文档/云平台/assets/image-20211110231108730-16365570741011.png
  28. 0 0
      部署文档/云平台/assets/image-20211110231108730.png
  29. 0 0
      部署文档/云平台/assets/image-20211110231233626.png
  30. 0 0
      部署文档/云平台/assets/image-20211110231456317.png
  31. 0 0
      部署文档/云平台/assets/image-20211110231532251.png
  32. 0 0
      部署文档/云平台/assets/image-20211110232452207.png
  33. 0 0
      部署文档/云平台/assets/image-20211110232708879.png
  34. 0 0
      部署文档/云平台/assets/image-20211111101212415.png
  35. 0 0
      部署文档/云平台/assets/image-20211111101337952.png
  36. 0 0
      部署文档/云平台/assets/image-20211111101803181.png
  37. 0 0
      部署文档/云平台/assets/image-20211111102250493.png
  38. 0 0
      部署文档/云平台/assets/image-20211111102801129.png
  39. 0 0
      部署文档/云平台/assets/image-20211111102817757.png
  40. 0 0
      部署文档/云平台/assets/image-20211115213927460.png
  41. 0 0
      部署文档/云平台/assets/image-20211115214619362.png
  42. 0 0
      部署文档/云平台/assets/image-20211115214723424.png
  43. 0 0
      部署文档/云平台/assets/image-20211115214817599.png
  44. 0 0
      部署文档/云平台/assets/image-20211115214846424.png
  45. 0 0
      部署文档/云平台/assets/image-20211115214912342.png
  46. 0 0
      部署文档/云平台/assets/image-20211115214937388.png
  47. 0 0
      部署文档/云平台/assets/image-20211118211440018.png
  48. 0 0
      部署文档/云平台/assets/image-20211118211533239.png
  49. 0 0
      部署文档/云平台/assets/image-20211118211659229.png
  50. 0 0
      部署文档/云平台/assets/image-20211118211733125.png
  51. 0 0
      部署文档/云平台/assets/image-20211123200112617.png
  52. 0 0
      部署文档/云平台/assets/image-20211207125209937.png
  53. 0 0
      部署文档/云平台/assets/image-20220313152413610.png
  54. BIN
      部署文档/云平台/assets/image-20220316212717276.png
  55. BIN
      部署文档/云平台/assets/image-20220317151709566.png
  56. BIN
      部署文档/云平台/assets/image-20220317164430599.png
  57. 141 0
      部署文档/云平台/云平台运行文档.md
  58. 41 26
      部署文档/云平台/安装云平台环境.md
  59. 0 0
      部署文档/大数据平台/solr and atlas.md
  60. BIN
      部署文档/算法平台/assets/image-20220316185119154.png
  61. BIN
      部署文档/算法平台/assets/image-20220317204635163.png
  62. BIN
      部署文档/算法平台/assets/image-20220317204954859.png
  63. BIN
      部署文档/算法平台/assets/image-20220317205227206.png
  64. BIN
      部署文档/算法平台/assets/image-20220317205535260.png
  65. BIN
      部署文档/算法平台/assets/image-20220317205738403-16475218592261.png
  66. BIN
      部署文档/算法平台/assets/image-20220317205738403.png
  67. BIN
      部署文档/算法平台/assets/image-20220317210313188.png
  68. BIN
      部署文档/算法平台/assets/image20220309200518.png
  69. BIN
      部署文档/算法平台/assets/image20220309202338.png
  70. BIN
      部署文档/算法平台/assets/image20220309202557.png
  71. BIN
      部署文档/算法平台/assets/image20220309202909.png
  72. BIN
      部署文档/算法平台/assets/image20220309204832.png
  73. BIN
      部署文档/算法平台/assets/image20220309205028.png
  74. BIN
      部署文档/算法平台/assets/image20220309210150.png
  75. BIN
      部署文档/算法平台/assets/images20220309201941.png
  76. 331 0
      部署文档/算法平台/算法平台环境搭建.md
  77. 194 0
      部署文档/算法平台/算法平台运行文档.md

+ 0 - 0
linux/学习正则表达式.md → linux/linux常见命令/学习正则表达式.md


+ 0 - 0
linux/SSH免密登录.md → linux/linux服务器配置/SSH免密登录.md


+ 2 - 2
linux/centos网络配置.md → linux/linux服务器配置/centos网络配置.md

@@ -34,9 +34,9 @@ DNS2=8.8.8.8
 ```
 3. 配置如下
 
-![image-20210705094943628](../照片/image-20210705094943628.png)
+![image-20210705094943628](../../照片/image-20210705094943628.png)
 
-4. ![image-20210628154743311](../照片/image-20210628154743311.png)
+4. ![image-20210628154743311](../../照片/image-20210628154743311.png)
 
 5. 重启即可
 ```shell

+ 0 - 0
linux/tmux/tmux.md → linux/linux服务器配置/tmux/tmux.md


+ 0 - 0
linux/tmux/配置文件md → linux/linux服务器配置/tmux/配置文件md


+ 0 - 0
linux/ubuntu和windows时间不同步.md → linux/linux服务器配置/ubuntu和windows时间不同步.md


+ 0 - 0
linux/zsh/zsh的使用.md → linux/linux服务器配置/zsh/zsh的使用.md


+ 0 - 0
linux/zsh/zsh的配置文件.md → linux/linux服务器配置/zsh/zsh的配置文件.md


+ 95 - 0
linux/linux服务器防护/iptables.md

@@ -0,0 +1,95 @@
+> [TOC]
+
+# 1、配置iptables
+
+```shell
+# 1.需要先安装---一般不需要安装centos7自带的
+yum install iptables-services
+# 配置自启动
+systemctl start iptables.service && systemctl enable iptables.service
+
+# 2.查看规则
+iptables -L INPUT
+iptables -L OUTPUT
+iptables -L
+
+# 3.(此命令将保存规则,下次开机自动执行)
+iptables-save
+```
+
+# 2、封禁操作
+
+```shell
+# 1.添加屏蔽IP
+# 禁止此IP访问服务器
+iptables -I INPUT -s 1.2.3.4 -j DROP
+# 或
+iptables -A INPUT -s 1.2.3.4 -j DROP
+
+# 2.禁止服务器访问此IP
+iptables -A OUTPUT -d 1.2.3.4 -j DROP
+
+# 3.如果要封某个网段:
+iptables -I INPUT -s 1.2.3.0/24 -j DROP
+```
+
+# 3、解封操作
+
+```shell
+# 1.清空屏蔽IP----一个是出流量一个是入流量
+iptables -t filter -D INPUT -s 1.2.3.4 -j DROP
+iptables -t filter -D OUTPUT -d 1.2.3.4 -j DROP
+
+# 2.一键清空所有规则
+iptables -F
+```
+
+# 4、大流量冲击
+
+```shell
+# 1.处理IP碎片数量,防止攻击,允许每秒100个
+iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
+# 2.设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包
+iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
+```
+
+# 5、脚本
+
+```sh
+#! 使用firewalld
+#! /bin/bash
+cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.txt
+for i in `cat  /usr/local/bin/black.txt`
+do
+  IP=`echo $i |awk -F= '{print $1}'`
+  NUM=`echo $i|awk -F= '{print $2}'`
+   if [ $NUM -gt 5 ];then
+      grep $IP /etc/hosts.deny > /dev/null
+    if [ $? -gt 0 ];then
+      echo "sshd:$IP:deny" >> /etc/hosts.deny
+    fi
+  fi
+done
+```
+
+```sh
+#! 使用iptables
+#! /bin/bash
+cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.txt
+for i in `cat  /usr/local/bin/black.txt`
+do
+  IP=`echo $i |awk -F= '{print $1}'`
+  NUM=`echo $i|awk -F= '{print $2}'`
+   if [ $NUM -gt 5 ];then
+   	  iptables -t filter -D INPUT -s ${IP} -j DROP
+      iptables -I INPUT -s ${IP} -j DROP
+      iptables-save
+   fi
+done
+```
+
+```shell
+crontab -e
+ */5 * * * *  sh /usr/local/bin/secure_ssh.sh
+```
+

+ 0 - 0
linux/linux防火墙.md → linux/linux服务器防护/linux防火墙.md


+ 0 - 8
中煤/大屏反馈BUG.md

@@ -1,8 +0,0 @@
-统一登录显示的问题
-
-采煤工作面190个    20-40  大部分30左右
-
-生产统计刀术要递增
-
-
-

+ 1 - 0
前端/文档/jsdoc-vue.md

@@ -17,5 +17,6 @@ cnpm i
 
 ````shell
 jsdoc -c .jsdoc-tui.js -r
+yarn docs:tui
 ````
 

+ 310 - 288
后端/Mysql/1.MySQL基础课堂笔记.md

@@ -2,310 +2,332 @@
 
 ## 数据库的基本概念
 
-    1. 数据库的英文单词: DataBase 简称 : DB
-    2. 什么数据库?
-    * 用于存储和管理数据的仓库。
-    
-    3. 数据库的特点:
-    1. 持久化存储数据的。其实数据库就是一个文件系统
-    2. 方便存储和管理数据
-    3. 使用了统一的方式操作数据库 -- SQL
+```sql
+1. 数据库的英文单词: DataBase 简称 : DB
+2. 什么数据库?
+* 用于存储和管理数据的仓库。
+
+3. 数据库的特点:
+1. 持久化存储数据的。其实数据库就是一个文件系统
+2. 方便存储和管理数据
+3. 使用了统一的方式操作数据库 -- SQL
+```
 
 # SQL
 
-	1.什么是SQL?
-		Structured Query Language:结构化查询语言
-		其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。
-		
-	2.SQL通用语法
-		1. SQL 语句可以单行或多行书写,以分号结尾。
-		2. 可使用空格和缩进来增强语句的可读性。
-		3. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
-		4. 3 种注释
-			* 单行注释: -- 注释内容 或 # 注释内容(mysql 特有) 
-			* 多行注释: /* 注释 */
-		
-	3. SQL分类
-		1) DDL(Data Definition Language)数据定义语言
-			用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
-		2) DML(Data Manipulation Language)数据操作语言
-			用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
-		3) DQL(Data Query Language)数据查询语言
-			用来查询数据库中表的记录(数据)。关键字:select, where 等
-		4) DCL(Data Control Language)数据控制语言(了解)
-			用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等
+```sql
+1.什么是SQL?
+	Structured Query Language:结构化查询语言
+	其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。
+	
+2.SQL通用语法
+	1. SQL 语句可以单行或多行书写,以分号结尾。
+	2. 可使用空格和缩进来增强语句的可读性。
+	3. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
+	4. 3 种注释
+		* 单行注释: -- 注释内容 或 # 注释内容(mysql 特有) 
+		* 多行注释: /* 注释 */
+	
+3. SQL分类
+	1) DDL(Data Definition Language)数据定义语言
+		用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
+	2) DML(Data Manipulation Language)数据操作语言
+		用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
+	3) DQL(Data Query Language)数据查询语言
+		用来查询数据库中表的记录(数据)。关键字:select, where 等
+	4) DCL(Data Control Language)数据控制语言(了解)
+		用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等
+```
 
 ## DDL:操作数据库、表
 
-	1. 操作数据库:CRUD
-		1. C(Create):创建
-			* 创建数据库:
-				* create database 数据库名称;
-			* 创建数据库,判断不存在,再创建:
-				* create database if not exists 数据库名称;
-			* 创建数据库,并指定字符集
-				* create database 数据库名称 character set 字符集名;
-	
-			* 练习: 创建db4数据库,判断是否存在,并制定字符集为gbk
-				* create database if not exists db4 character set gbk;
-		2. R(Retrieve):查询
-			* 查询所有数据库的名称:
-				* show databases;
-			* 查询某个数据库的字符集:查询某个数据库的创建语句
-				* show create database 数据库名称;
-		3. U(Update):修改
-			* 修改数据库的字符集
-				* alter database 数据库名称 character set 字符集名称;
-		4. D(Delete):删除
-			* 删除数据库
-				* drop database 数据库名称;
-			* 判断数据库存在,存在再删除
-				* drop database if exists 数据库名称;
-		5. 使用数据库
-			* 查询当前正在使用的数据库名称
-				* select database();
-			* 使用数据库
-				* use 数据库名称;
-
-
-	2. 操作表
-		1. C(Create):创建
-			1. 语法:
-				create table 表名(
-					列名1 数据类型1,
-					列名2 数据类型2,
-					....
-					列名n 数据类型n
-				);
-				* 注意:最后一列,不需要加逗号(,)
-				* 数据库类型:
-					1. int:整数类型
-						* age int,
-					2. double:小数类型
-						* score double(5,2)
-					3. date:日期,只包含年月日,yyyy-MM-dd
-					4. datetime:日期,包含年月日时分秒	 yyyy-MM-dd HH:mm:ss
-					5. timestamp:时间错类型	包含年月日时分秒	 yyyy-MM-dd HH:mm:ss	
-						* 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
-	
-					6. varchar:字符串
-						* name varchar(20):姓名最大20个字符
-						* zhangsan 8个字符  张三 2个字符
-
-
-			* 创建表
-				create table student(
-					id int,
-					name varchar(32),
-					age int ,
-					score double(4,1),
-					birthday date,
-					insert_time timestamp
-				);
-			* 复制表:
-				* create table 表名 like 被复制的表名;	  	
-		2. R(Retrieve):查询
-			* 查询某个数据库中所有的表名称
-				* show tables;
-			* 查询表结构
-				* desc 表名;
-		3. U(Update):修改
-			1. 修改表名
-				alter table 表名 rename to 新的表名;
-			2. 修改表的字符集
-				alter table 表名 character set 字符集名称;
-			3. 添加一列
-				alter table 表名 add 列名 数据类型;
-			4. 修改列名称 类型
-				alter table 表名 change 列名 新列别 新数据类型;
-				alter table 表名 modify 列名 新数据类型;
-			5. 删除列
-				alter table 表名 drop 列名;
-		4. D(Delete):删除
-			* drop table 表名;
-			* drop table  if exists 表名 ;
+```sql
+1. 操作数据库:CRUD
+	1. C(Create):创建
+		* 创建数据库:
+			* create database 数据库名称;
+		* 创建数据库,判断不存在,再创建:
+			* create database if not exists 数据库名称;
+		* 创建数据库,并指定字符集
+			* create database 数据库名称 character set 字符集名;
+
+		* 练习: 创建db4数据库,判断是否存在,并制定字符集为gbk
+			* create database if not exists db4 character set gbk;
+	2. R(Retrieve):查询
+		* 查询所有数据库的名称:
+			* show databases;
+		* 查询某个数据库的字符集:查询某个数据库的创建语句
+			* show create database 数据库名称;
+	3. U(Update):修改
+		* 修改数据库的字符集
+			* alter database 数据库名称 character set 字符集名称;
+	4. D(Delete):删除
+		* 删除数据库
+			* drop database 数据库名称;
+		* 判断数据库存在,存在再删除
+			* drop database if exists 数据库名称;
+	5. 使用数据库
+		* 查询当前正在使用的数据库名称
+			* select database();
+		* 使用数据库
+			* use 数据库名称;
+```
+
+
+```sql
+2. 操作表
+	1. C(Create):创建
+		1. 语法:
+			create table 表名(
+				列名1 数据类型1,
+				列名2 数据类型2,
+				....
+				列名n 数据类型n
+			);
+			* 注意:最后一列,不需要加逗号(,)
+			* 数据库类型:
+				1. int:整数类型
+					* age int,
+				2. double:小数类型
+					* score double(5,2)
+				3. date:日期,只包含年月日,yyyy-MM-dd
+				4. datetime:日期,包含年月日时分秒	 yyyy-MM-dd HH:mm:ss
+				5. timestamp:时间错类型	包含年月日时分秒	 yyyy-MM-dd HH:mm:ss	
+					* 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
+
+				6. varchar:字符串
+					* name varchar(20):姓名最大20个字符
+					* zhangsan 8个字符  张三 2个字符
+```
+
+
+```sql
+		* 创建表
+			create table student(
+				id int,
+				name varchar(32),
+				age int ,
+				score double(4,1),
+				birthday date,
+				insert_time timestamp
+			);
+		* 复制表:
+			* create table 表名 like 被复制的表名;	  	
+	2. R(Retrieve):查询
+		* 查询某个数据库中所有的表名称
+			* show tables;
+		* 查询表结构
+			* desc 表名;
+	3. U(Update):修改
+		1. 修改表名
+			alter table 表名 rename to 新的表名;
+		2. 修改表的字符集
+			alter table 表名 character set 字符集名称;
+		3. 添加一列
+			alter table 表名 add 列名 数据类型;
+		4. 修改列名称 类型
+			alter table 表名 change 列名 新列别 新数据类型;
+			alter table 表名 modify 列名 新数据类型;
+		5. 删除列
+			alter table 表名 drop 列名;
+	4. D(Delete):删除
+		* drop table 表名;
+		* drop table  if exists 表名 ;
+```
 
 ## DML:增删改表中数据
 
-	1. 添加数据:
-		* 语法:
-			* insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
-		* 注意:
-			1. 列名和值要一一对应。
-			2. 如果表名后,不定义列名,则默认给所有列添加值
-				insert into 表名 values(值1,值2,...值n);
-			3. 除了数字类型,其他类型需要使用引号(单双都可以)引起来
-	2. 删除数据:
-		* 语法:
-			* delete from 表名 [where 条件]
-		* 注意:
-			1. 如果不加条件,则删除表中所有记录。
-			2. 如果要删除所有记录
-				1. delete from 表名; -- 不推荐使用。有多少条记录就会执行多少次删除操作
-				2. TRUNCATE TABLE 表名; -- 推荐使用,效率更高 先删除表,然后再创建一张一样的表。
-	3. 修改数据:
-		* 语法:
-			* update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];
-	
-		* 注意:
-			1. 如果不加任何条件,则会将表中所有记录全部修改。
+```sql
+1. 添加数据:
+	* 语法:
+		* insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
+	* 注意:
+		1. 列名和值要一一对应。
+		2. 如果表名后,不定义列名,则默认给所有列添加值
+			insert into 表名 values(值1,值2,...值n);
+		3. 除了数字类型,其他类型需要使用引号(单双都可以)引起来
+2. 删除数据:
+	* 语法:
+		* delete from 表名 [where 条件]
+	* 注意:
+		1. 如果不加条件,则删除表中所有记录。
+		2. 如果要删除所有记录
+			1. delete from 表名; -- 不推荐使用。有多少条记录就会执行多少次删除操作
+			2. TRUNCATE TABLE 表名; -- 推荐使用,效率更高 先删除表,然后再创建一张一样的表。
+3. 修改数据:
+	* 语法:
+		* update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];
+
+	* 注意:
+		1. 如果不加任何条件,则会将表中所有记录全部修改。
+```
 
 
 
 ## DQL:查询表中的记录
-	* select * from 表名;
-	
-	1. 语法:
-		select
-			字段列表
-		from
-			表名列表
-		where
-			条件列表
-		group by
-			分组字段
-		having
-			分组之后的条件
-		order by
-			排序
-		limit
-			分页限定
-
-
-	2. 基础查询
-		1. 多个字段的查询
-			select 字段名1,字段名2... from 表名;
-			* 注意:
-				* 如果查询所有字段,则可以使用*来替代字段列表。
-		2. 去除重复:
-			* distinct
-		3. 计算列
-			* 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
-			* ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
-				* 表达式1:哪个字段需要判断是否为null
-				* 如果该字段为null后的替换值。
-		4. 起别名:
-			* as:as也可以省略
-
-
-	3. 条件查询
-		1. where子句后跟条件
-		2. 运算符
-			* > 、< 、<= 、>= 、= 、<>
-			* BETWEEN...AND  
-			* IN( 集合) 
-			* LIKE:模糊查询
-				* 占位符:
-					* _:单个任意字符
-					* %:多个任意字符
-			* IS NULL  
-			* and  或 &&
-			* or  或 || 
-			* not  或 !
+```sql
+* select * from 表名;
+
+1. 语法:
+	select
+		字段列表
+	from
+		表名列表
+	where
+		条件列表
+	group by
+		分组字段
+	having
+		分组之后的条件
+	order by
+		排序
+	limit
+		分页限定
+```
+
+
+```sql
+2. 基础查询
+	1. 多个字段的查询
+		select 字段名1,字段名2... from 表名;
+		* 注意:
+			* 如果查询所有字段,则可以使用*来替代字段列表。
+	2. 去除重复:
+		* distinct
+	3. 计算列
+		* 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
+		* ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
+			* 表达式1:哪个字段需要判断是否为null
+			* 如果该字段为null后的替换值。
+	4. 起别名:
+		* as:as也可以省略
+```
+
+
+```sql
+3. 条件查询
+	1. where子句后跟条件
+	2. 运算符
+		* > 、< 、<= 、>= 、= 、<>
+		* BETWEEN...AND  
+		* IN( 集合) 
+		* LIKE:模糊查询
+			* 占位符:
+				* _:单个任意字符
+				* %:多个任意字符
+		* IS NULL  
+		* and  或 &&
+		* or  或 || 
+		* not  或 !
+		
+			-- 查询年龄大于20岁
+
+			SELECT * FROM student WHERE age > 20;
 			
-				-- 查询年龄大于20岁
-	
-				SELECT * FROM student WHERE age > 20;
-				
-				SELECT * FROM student WHERE age >= 20;
-				
-				-- 查询年龄等于20岁
-				SELECT * FROM student WHERE age = 20;
-				
-				-- 查询年龄不等于20岁
-				SELECT * FROM student WHERE age != 20;
-				SELECT * FROM student WHERE age <> 20;
-				
-				-- 查询年龄大于等于20 小于等于30
-				
-				SELECT * FROM student WHERE age >= 20 &&  age <=30;
-				SELECT * FROM student WHERE age >= 20 AND  age <=30;
-				SELECT * FROM student WHERE age BETWEEN 20 AND 30;
-				
-				-- 查询年龄22岁,18岁,25岁的信息
-				SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
-				SELECT * FROM student WHERE age IN (22,18,25);
-				
-				-- 查询英语成绩为null
-				SELECT * FROM student WHERE english = NULL; -- 不对的。null值不能使用 = (!=) 判断
-				
-				SELECT * FROM student WHERE english IS NULL;
-				
-				-- 查询英语成绩不为null
-				SELECT * FROM student WHERE english  IS NOT NULL;
-
-
-
-				-- 查询姓马的有哪些? like
-				SELECT * FROM student WHERE NAME LIKE '马%';
-				-- 查询姓名第二个字是化的人
-				
-				SELECT * FROM student WHERE NAME LIKE "_化%";
-				
-				-- 查询姓名是3个字的人
-				SELECT * FROM student WHERE NAME LIKE '___';
+			SELECT * FROM student WHERE age >= 20;
+			
+			-- 查询年龄等于20岁
+			SELECT * FROM student WHERE age = 20;
+			
+			-- 查询年龄不等于20岁
+			SELECT * FROM student WHERE age != 20;
+			SELECT * FROM student WHERE age <> 20;
+			
+			-- 查询年龄大于等于20 小于等于30
+			
+			SELECT * FROM student WHERE age >= 20 &&  age <=30;
+			SELECT * FROM student WHERE age >= 20 AND  age <=30;
+			SELECT * FROM student WHERE age BETWEEN 20 AND 30;
+			
+			-- 查询年龄22岁,18岁,25岁的信息
+			SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
+			SELECT * FROM student WHERE age IN (22,18,25);
+			
+			-- 查询英语成绩为null
+			SELECT * FROM student WHERE english = NULL; -- 不对的。null值不能使用 = (!=) 判断
+			
+			SELECT * FROM student WHERE english IS NULL;
+			
+			-- 查询英语成绩不为null
+			SELECT * FROM student WHERE english  IS NOT NULL;
+```
+
+
+
+```sql
+-- 查询姓马的有哪些? like
+SELECT * FROM student WHERE NAME LIKE '马%';
+-- 查询姓名第二个字是化的人
+
+SELECT * FROM student WHERE NAME LIKE "_化%";
+
+-- 查询姓名是3个字的人
+SELECT * FROM student WHERE NAME LIKE '___';
+-- 查询姓名中包含德的人
+SELECT * FROM student WHERE NAME LIKE '%德%';
+```
 
 
-​				-- 查询姓名中包含德的人
-​				SELECT * FROM student WHERE NAME LIKE '%德%';
 
 ## DCL:
-	* SQL分类:
-		1. DDL:操作数据库和表
-		2. DML:增删改表中数据
-		3. DQL:查询表中数据
-		4. DCL:管理用户,授权
-	
-	* DBA:数据库管理员
-	
-	* DCL:管理用户,授权
-		1. 管理用户
-			1. 添加用户:
-				* 语法:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
-			2. 删除用户:
-				* 语法:DROP USER '用户名'@'主机名';
-			3. 修改用户密码:
-				
-				UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';
-				UPDATE USER SET PASSWORD = PASSWORD('abc') WHERE USER = 'lisi';
-				
-				SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');
-				SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123');
-	
-				* mysql中忘记了root用户的密码?
-					1. cmd -- > net stop mysql 停止mysql服务
-						* 需要管理员运行该cmd
-	
-					2. 使用无验证方式启动mysql服务: mysqld --skip-grant-tables
-					3. 打开新的cmd窗口,直接输入mysql命令,敲回车。就可以登录成功
-					4. use mysql;
-					5. update user set password = password('你的新密码') where user = 'root';
-					6. 关闭两个窗口
-					7. 打开任务管理器,手动结束mysqld.exe 的进程
-					8. 启动mysql服务
-					9. 使用新密码登录。
-			4. 查询用户:
-				-- 1. 切换到mysql数据库
-				USE myql;
-				-- 2. 查询user表
-				SELECT * FROM USER;
-				
-				* 通配符: % 表示可以在任意主机使用用户登录数据库
-	
-		2. 权限管理:
-			1. 查询权限:
-				-- 查询权限
-				SHOW GRANTS FOR '用户名'@'主机名';
-				SHOW GRANTS FOR 'lisi'@'%';
-	
-			2. 授予权限:
-				-- 授予权限
-				grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
-				-- 给张三用户授予所有权限,在任意数据库任意表上
-				
-				GRANT ALL ON *.* TO 'zhangsan'@'localhost';
-			3. 撤销权限:
-				-- 撤销权限:
-				revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
-				REVOKE UPDATE ON db3.`account` FROM 'lisi'@'%';
+```sql
+* SQL分类:
+	1. DDL:操作数据库和表
+	2. DML:增删改表中数据
+	3. DQL:查询表中数据
+	4. DCL:管理用户,授权
+
+* DBA:数据库管理员
+
+* DCL:管理用户,授权
+	1. 管理用户
+		1. 添加用户:
+			* 语法:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
+		2. 删除用户:
+			* 语法:DROP USER '用户名'@'主机名';
+		3. 修改用户密码:
+			
+			UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';
+			UPDATE USER SET PASSWORD = PASSWORD('abc') WHERE USER = 'lisi';
+			
+			SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');
+			SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123');
+
+			* mysql中忘记了root用户的密码?
+				1. cmd -- > net stop mysql 停止mysql服务
+					* 需要管理员运行该cmd
+
+				2. 使用无验证方式启动mysql服务: mysqld --skip-grant-tables
+				3. 打开新的cmd窗口,直接输入mysql命令,敲回车。就可以登录成功
+				4. use mysql;
+				5. update user set password = password('你的新密码') where user = 'root';
+				6. 关闭两个窗口
+				7. 打开任务管理器,手动结束mysqld.exe 的进程
+				8. 启动mysql服务
+				9. 使用新密码登录。
+		4. 查询用户:
+			-- 1. 切换到mysql数据库
+			USE myql;
+			-- 2. 查询user表
+			SELECT * FROM USER;
+			
+			* 通配符: % 表示可以在任意主机使用用户登录数据库
+
+	2. 权限管理:
+		1. 查询权限:
+			-- 查询权限
+			SHOW GRANTS FOR '用户名'@'主机名';
+			SHOW GRANTS FOR 'lisi'@'%';
+
+		2. 授予权限:
+			-- 授予权限
+			grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
+			-- 给张三用户授予所有权限,在任意数据库任意表上
+			
+			GRANT ALL ON *.* TO 'zhangsan'@'localhost';
+		3. 撤销权限:
+			-- 撤销权限:
+			revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
+			REVOKE UPDATE ON db3.`account` FROM 'lisi'@'%';
+```

+ 185 - 173
后端/Mysql/2.MySQL多表&事务课堂笔记.md

@@ -1,116 +1,123 @@
 # 今日内容
 
-	1. 多表查询
+```sql
+1. 多表查询
 
-	2. 事务
+2. 事务
+```
 
 
 ## 多表查询:
-	* 查询语法:
-		select
-			列名列表
-		from
-			表名列表
-		where....
-	* 准备sql
-		# 创建部门表
-		CREATE TABLE dept(
-			id INT PRIMARY KEY AUTO_INCREMENT,
-			NAME VARCHAR(20)
-		);
-		INSERT INTO dept (NAME) VALUES ('开发部'),('市场部'),('财务部');
-		# 创建员工表
-		CREATE TABLE emp (
-			id INT PRIMARY KEY AUTO_INCREMENT,
-			NAME VARCHAR(10),
-			gender CHAR(1), -- 性别
-			salary DOUBLE, -- 工资
-			join_date DATE, -- 入职日期
-			dept_id INT,
-			FOREIGN KEY (dept_id) REFERENCES dept(id) -- 外键,关联部门表(部门表的主键)
-		);
-	* 笛卡尔积:
-		* 有两个集合A,B .取这两个集合的所有组成情况。
-		* 要完成多表查询,需要消除无用的数据
-	* 多表查询的分类:
-		1. 内连接查询:
-			1. 隐式内连接:使用where条件消除无用数据
-				* 例子:
-				-- 查询所有员工信息和对应的部门信息
-
-				SELECT * FROM emp,dept WHERE emp.`dept_id` = dept.`id`;
-				
-				-- 查询员工表的名称,性别。部门表的名称
-				SELECT emp.name,emp.gender,dept.name FROM emp,dept WHERE emp.`dept_id` = dept.`id`;
-				
-				SELECT 
-					t1.name, -- 员工表的姓名
-					t1.gender,-- 员工表的性别
-					t2.name -- 部门表的名称
-				FROM
-					emp t1,
-					dept t2
-				WHERE 
-					t1.`dept_id` = t2.`id`;
-
-	
-			2. 显式内连接:
-				* 语法: select 字段列表 from 表名1 [inner] join 表名2 on 条件
-				* 例如:
-					* SELECT * FROM emp INNER JOIN dept ON emp.`dept_id` = dept.`id`;	
-					* SELECT * FROM emp JOIN dept ON emp.`dept_id` = dept.`id`;	
-
-			3. 内连接查询:
-				1. 从哪些表中查询数据
-				2. 条件是什么
-				3. 查询哪些字段
-		2. 外链接查询:
-			1. 左外连接:
-				* 语法:select 字段列表 from 表1 left [outer] join 表2 on 条件;
-				* 查询的是左表所有数据以及其交集部分。
-				* 例子:
-					-- 查询所有员工信息,如果员工有部门,则查询部门名称,没有部门,则不显示部门名称
-					SELECT 	t1.*,t2.`name` FROM emp t1 LEFT JOIN dept t2 ON t1.`dept_id` = t2.`id`;
-			2. 右外连接:
-				* 语法:select 字段列表 from 表1 right [outer] join 表2 on 条件;
-				* 查询的是右表所有数据以及其交集部分。
-				* 例子:
-					SELECT 	* FROM dept t2 RIGHT JOIN emp t1 ON t1.`dept_id` = t2.`id`;
-		3. 子查询:
-			* 概念:查询中嵌套查询,称嵌套查询为子查询。
-				-- 查询工资最高的员工信息
-				-- 1 查询最高的工资是多少 9000
-				SELECT MAX(salary) FROM emp;
-				
-				-- 2 查询员工信息,并且工资等于9000的
-				SELECT * FROM emp WHERE emp.`salary` = 9000;
+```sql
+* 查询语法:
+	select
+		列名列表
+	from
+		表名列表
+	where....
+* 准备sql
+	# 创建部门表
+	CREATE TABLE dept(
+		id INT PRIMARY KEY AUTO_INCREMENT,
+		NAME VARCHAR(20)
+	);
+	INSERT INTO dept (NAME) VALUES ('开发部'),('市场部'),('财务部');
+	# 创建员工表
+	CREATE TABLE emp (
+		id INT PRIMARY KEY AUTO_INCREMENT,
+		NAME VARCHAR(10),
+		gender CHAR(1), -- 性别
+		salary DOUBLE, -- 工资
+		join_date DATE, -- 入职日期
+		dept_id INT,
+		FOREIGN KEY (dept_id) REFERENCES dept(id) -- 外键,关联部门表(部门表的主键)
+	);
+* 笛卡尔积:
+	* 有两个集合A,B .取这两个集合的所有组成情况。
+	* 要完成多表查询,需要消除无用的数据
+* 多表查询的分类:
+	1. 内连接查询:
+		1. 隐式内连接:使用where条件消除无用数据
+			* 例子:
+			-- 查询所有员工信息和对应的部门信息
+
+			SELECT * FROM emp,dept WHERE emp.`dept_id` = dept.`id`;
+			
+			-- 查询员工表的名称,性别。部门表的名称
+			SELECT emp.name,emp.gender,dept.name FROM emp,dept WHERE emp.`dept_id` = dept.`id`;
+			
+			SELECT 
+				t1.name, -- 员工表的姓名
+				t1.gender,-- 员工表的性别
+				t2.name -- 部门表的名称
+			FROM
+				emp t1,
+				dept t2
+			WHERE 
+				t1.`dept_id` = t2.`id`;
+```
+
+
+​	
+```sql
+		2. 显式内连接:
+			* 语法: select 字段列表 from 表名1 [inner] join 表名2 on 条件
+			* 例如:
+				* SELECT * FROM emp INNER JOIN dept ON emp.`dept_id` = dept.`id`;	
+				* SELECT * FROM emp JOIN dept ON emp.`dept_id` = dept.`id`;	
+
+		3. 内连接查询:
+			1. 从哪些表中查询数据
+			2. 条件是什么
+			3. 查询哪些字段
+	2. 外链接查询:
+		1. 左外连接:
+			* 语法:select 字段列表 from 表1 left [outer] join 表2 on 条件;
+			* 查询的是左表所有数据以及其交集部分。
+			* 例子:
+				-- 查询所有员工信息,如果员工有部门,则查询部门名称,没有部门,则不显示部门名称
+				SELECT 	t1.*,t2.`name` FROM emp t1 LEFT JOIN dept t2 ON t1.`dept_id` = t2.`id`;
+		2. 右外连接:
+			* 语法:select 字段列表 from 表1 right [outer] join 表2 on 条件;
+			* 查询的是右表所有数据以及其交集部分。
+			* 例子:
+				SELECT 	* FROM dept t2 RIGHT JOIN emp t1 ON t1.`dept_id` = t2.`id`;
+	3. 子查询:
+		* 概念:查询中嵌套查询,称嵌套查询为子查询。
+			-- 查询工资最高的员工信息
+			-- 1 查询最高的工资是多少 9000
+			SELECT MAX(salary) FROM emp;
+			
+			-- 2 查询员工信息,并且工资等于9000的
+			SELECT * FROM emp WHERE emp.`salary` = 9000;
+			
+			-- 一条sql就完成这个操作。子查询
+			SELECT * FROM emp WHERE emp.`salary` = (SELECT MAX(salary) FROM emp);
+
+		* 子查询不同情况
+			1. 子查询的结果是单行单列的:
+				* 子查询可以作为条件,使用运算符去判断。 运算符: > >= < <= =
+				* 
+				-- 查询员工工资小于平均工资的人
+				SELECT * FROM emp WHERE emp.salary < (SELECT AVG(salary) FROM emp);
+			2. 子查询的结果是多行单列的:
+				* 子查询可以作为条件,使用运算符in来判断
+				-- 查询'财务部'和'市场部'所有的员工信息
+				SELECT id FROM dept WHERE NAME = '财务部' OR NAME = '市场部';
+				SELECT * FROM emp WHERE dept_id = 3 OR dept_id = 2;
+				-- 子查询
+				SELECT * FROM emp WHERE dept_id IN (SELECT id FROM dept WHERE NAME = '财务部' OR NAME = '市场部');
+
+			3. 子查询的结果是多行多列的:
+				* 子查询可以作为一张虚拟表参与查询
+				-- 查询员工入职日期是2011-11-11日之后的员工信息和部门信息
+				-- 子查询
+				SELECT * FROM dept t1 ,(SELECT * FROM emp WHERE emp.`join_date` > '2011-11-11') t2
+				WHERE t1.id = t2.dept_id;
 				
-				-- 一条sql就完成这个操作。子查询
-				SELECT * FROM emp WHERE emp.`salary` = (SELECT MAX(salary) FROM emp);
-
-			* 子查询不同情况
-				1. 子查询的结果是单行单列的:
-					* 子查询可以作为条件,使用运算符去判断。 运算符: > >= < <= =
-					* 
-					-- 查询员工工资小于平均工资的人
-					SELECT * FROM emp WHERE emp.salary < (SELECT AVG(salary) FROM emp);
-				2. 子查询的结果是多行单列的:
-					* 子查询可以作为条件,使用运算符in来判断
-					-- 查询'财务部'和'市场部'所有的员工信息
-					SELECT id FROM dept WHERE NAME = '财务部' OR NAME = '市场部';
-					SELECT * FROM emp WHERE dept_id = 3 OR dept_id = 2;
-					-- 子查询
-					SELECT * FROM emp WHERE dept_id IN (SELECT id FROM dept WHERE NAME = '财务部' OR NAME = '市场部');
-
-				3. 子查询的结果是多行多列的:
-					* 子查询可以作为一张虚拟表参与查询
-					-- 查询员工入职日期是2011-11-11日之后的员工信息和部门信息
-					-- 子查询
-					SELECT * FROM dept t1 ,(SELECT * FROM emp WHERE emp.`join_date` > '2011-11-11') t2
-					WHERE t1.id = t2.dept_id;
-					
-					-- 普通内连接
-					SELECT * FROM emp t1,dept t2 WHERE t1.`dept_id` = t2.`id` AND t1.`join_date` >  '2011-11-11'
+				-- 普通内连接
+				SELECT * FROM emp t1,dept t2 WHERE t1.`dept_id` = t2.`id` AND t1.`join_date` >  '2011-11-11'
+```
 
 ## 事务
 
@@ -130,70 +137,75 @@
 			);
 			-- 添加数据
 			INSERT INTO account (NAME, balance) VALUES ('zhangsan', 1000), ('lisi', 1000);
-			
-			
-			SELECT * FROM account;
-			UPDATE account SET balance = 1000;
-			-- 张三给李四转账 500 元
-			
-			-- 0. 开启事务
-			START TRANSACTION;
-			-- 1. 张三账户 -500
-			
-			UPDATE account SET balance = balance - 500 WHERE NAME = 'zhangsan';
-			-- 2. 李四账户 +500
-			-- 出错了...
-			UPDATE account SET balance = balance + 500 WHERE NAME = 'lisi';
-			
-			-- 发现执行没有问题,提交事务
-			COMMIT;
-			
-			-- 发现出问题了,回滚事务
-			ROLLBACK;
-		4. MySQL数据库中事务默认自动提交
-			
-			* 事务提交的两种方式:
-				* 自动提交:
-					* mysql就是自动提交的
-					* 一条DML(增删改)语句会自动提交一次事务。
-				* 手动提交:
-					* Oracle 数据库默认是手动提交事务
-					* 需要先开启事务,再提交
-			* 修改事务的默认提交方式:
-				* 查看事务的默认提交方式:SELECT @@autocommit; -- 1 代表自动提交  0 代表手动提交
-				* 修改默认提交方式: set @@autocommit = 0;
-
-
-	2. 事务的四大特征:
-		1. 原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败。
-		2. 持久性:当事务提交或回滚后,数据库会持久化的保存数据。
-		3. 隔离性:多个事务之间。相互独立。
-		4. 一致性:事务操作前后,数据总量不变
-	3. 事务的隔离级别(了解)
-		* 概念:多个事务之间隔离的,相互独立的。但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题。
-		* 存在问题:
-			1. 脏读:一个事务,读取到另一个事务中没有提交的数据
-			2. 不可重复读(虚读):在同一个事务中,两次读取到的数据不一样。
-			3. 幻读:一个事务操作(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改。
-		* 隔离级别:
-			1. read uncommitted:读未提交
-				* 产生的问题:脏读、不可重复读、幻读
-			2. read committed:读已提交 (Oracle)
-				* 产生的问题:不可重复读、幻读
-			3. repeatable read:可重复读 (MySQL默认)
-				* 产生的问题:幻读
-			4. serializable:串行化
-				* 可以解决所有的问题
-
-			* 注意:隔离级别从小到大安全性越来越高,但是效率越来越低
-			* 数据库查询隔离级别:
-				* select @@tx_isolation;
-			* 数据库设置隔离级别:
-				* set global transaction isolation level  级别字符串;
-
-		* 演示:
-			set global transaction isolation level read uncommitted;
-			start transaction;
-			-- 转账操作
-			update account set balance = balance - 500 where id = 1;
-			update account set balance = balance + 500 where id = 2;
+
+
+​			
+```sql
+		SELECT * FROM account;
+		UPDATE account SET balance = 1000;
+		-- 张三给李四转账 500 元
+		
+		-- 0. 开启事务
+		START TRANSACTION;
+		-- 1. 张三账户 -500
+		
+		UPDATE account SET balance = balance - 500 WHERE NAME = 'zhangsan';
+		-- 2. 李四账户 +500
+		-- 出错了...
+		UPDATE account SET balance = balance + 500 WHERE NAME = 'lisi';
+		
+		-- 发现执行没有问题,提交事务
+		COMMIT;
+		
+		-- 发现出问题了,回滚事务
+		ROLLBACK;
+	4. MySQL数据库中事务默认自动提交
+		
+		* 事务提交的两种方式:
+			* 自动提交:
+				* mysql就是自动提交的
+				* 一条DML(增删改)语句会自动提交一次事务。
+			* 手动提交:
+				* Oracle 数据库默认是手动提交事务
+				* 需要先开启事务,再提交
+		* 修改事务的默认提交方式:
+			* 查看事务的默认提交方式:SELECT @@autocommit; -- 1 代表自动提交  0 代表手动提交
+			* 修改默认提交方式: set @@autocommit = 0;
+```
+
+
+```sql
+2. 事务的四大特征:
+	1. 原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败。
+	2. 持久性:当事务提交或回滚后,数据库会持久化的保存数据。
+	3. 隔离性:多个事务之间。相互独立。
+	4. 一致性:事务操作前后,数据总量不变
+3. 事务的隔离级别(了解)
+	* 概念:多个事务之间隔离的,相互独立的。但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题。
+	* 存在问题:
+		1. 脏读:一个事务,读取到另一个事务中没有提交的数据
+		2. 不可重复读(虚读):在同一个事务中,两次读取到的数据不一样。
+		3. 幻读:一个事务操作(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改。
+	* 隔离级别:
+		1. read uncommitted:读未提交
+			* 产生的问题:脏读、不可重复读、幻读
+		2. read committed:读已提交 (Oracle)
+			* 产生的问题:不可重复读、幻读
+		3. repeatable read:可重复读 (MySQL默认)
+			* 产生的问题:幻读
+		4. serializable:串行化
+			* 可以解决所有的问题
+
+		* 注意:隔离级别从小到大安全性越来越高,但是效率越来越低
+		* 数据库查询隔离级别:
+			* select @@tx_isolation;
+		* 数据库设置隔离级别:
+			* set global transaction isolation level  级别字符串;
+
+	* 演示:
+		set global transaction isolation level read uncommitted;
+		start transaction;
+		-- 转账操作
+		update account set balance = balance - 500 where id = 1;
+		update account set balance = balance + 500 where id = 2;
+```

+ 252 - 229
后端/Mysql/3.MySQL约束课堂笔记.md

@@ -1,255 +1,278 @@
 
 
 ## 数据库的基本概念
-	1. 数据库的英文单词: DataBase 简称 : DB
-	2. 什么数据库?
-		* 用于存储和管理数据的仓库。
+```sql
+1. 数据库的英文单词: DataBase 简称 : DB
+2. 什么数据库?
+	* 用于存储和管理数据的仓库。
 
-	3. 数据库的特点:
-		1. 持久化存储数据的。其实数据库就是一个文件系统
-		2. 方便存储和管理数据
-		3. 使用了统一的方式操作数据库 -- SQL
+3. 数据库的特点:
+	1. 持久化存储数据的。其实数据库就是一个文件系统
+	2. 方便存储和管理数据
+	3. 使用了统一的方式操作数据库 -- SQL
+```
 
 # SQL
 
-	1.什么是SQL?
-		Structured Query Language:结构化查询语言
-		其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。
-		
-	2.SQL通用语法
-		1. SQL 语句可以单行或多行书写,以分号结尾。
-		2. 可使用空格和缩进来增强语句的可读性。
-		3. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
-		4. 3 种注释
-			* 单行注释: -- 注释内容 或 # 注释内容(mysql 特有) 
-			* 多行注释: /* 注释 */
-		
-	3. SQL分类
-		1) DDL(Data Definition Language)数据定义语言
-			用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
-		2) DML(Data Manipulation Language)数据操作语言
-			用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
-		3) DQL(Data Query Language)数据查询语言
-			用来查询数据库中表的记录(数据)。关键字:select, where 等
-		4) DCL(Data Control Language)数据控制语言(了解)
-			用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等
+```sql
+1.什么是SQL?
+	Structured Query Language:结构化查询语言
+	其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。
+	
+2.SQL通用语法
+	1. SQL 语句可以单行或多行书写,以分号结尾。
+	2. 可使用空格和缩进来增强语句的可读性。
+	3. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
+	4. 3 种注释
+		* 单行注释: -- 注释内容 或 # 注释内容(mysql 特有) 
+		* 多行注释: /* 注释 */
+	
+3. SQL分类
+	1) DDL(Data Definition Language)数据定义语言
+		用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
+	2) DML(Data Manipulation Language)数据操作语言
+		用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
+	3) DQL(Data Query Language)数据查询语言
+		用来查询数据库中表的记录(数据)。关键字:select, where 等
+	4) DCL(Data Control Language)数据控制语言(了解)
+		用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等
+```
 
 ## DDL:操作数据库、表
 
-	1. 操作数据库:CRUD
-		1. C(Create):创建
-			* 创建数据库:
-				* create database 数据库名称;
-			* 创建数据库,判断不存在,再创建:
-				* create database if not exists 数据库名称;
-			* 创建数据库,并指定字符集
-				* create database 数据库名称 character set 字符集名;
-
-			* 练习: 创建db4数据库,判断是否存在,并制定字符集为gbk
-				* create database if not exists db4 character set gbk;
-		2. R(Retrieve):查询
-			* 查询所有数据库的名称:
-				* show databases;
-			* 查询某个数据库的字符集:查询某个数据库的创建语句
-				* show create database 数据库名称;
-		3. U(Update):修改
-			* 修改数据库的字符集
-				* alter database 数据库名称 character set 字符集名称;
-		4. D(Delete):删除
-			* 删除数据库
-				* drop database 数据库名称;
-			* 判断数据库存在,存在再删除
-				* drop database if exists 数据库名称;
-		5. 使用数据库
-			* 查询当前正在使用的数据库名称
-				* select database();
-			* 使用数据库
-				* use 数据库名称;
-
-
-	2. 操作表
-		1. C(Create):创建
-			1. 语法:
-				create table 表名(
-					列名1 数据类型1,
-					列名2 数据类型2,
-					....
-					列名n 数据类型n
-				);
-				* 注意:最后一列,不需要加逗号(,)
-				* 数据库类型:
-					1. int:整数类型
-						* age int,
-					2. double:小数类型
-						* score double(5,2)
-					3. date:日期,只包含年月日,yyyy-MM-dd
-					4. datetime:日期,包含年月日时分秒	 yyyy-MM-dd HH:mm:ss
-					5. timestamp:时间错类型	包含年月日时分秒	 yyyy-MM-dd HH:mm:ss	
-						* 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
-
-					6. varchar:字符串
-						* name varchar(20):姓名最大20个字符
-						* zhangsan 8个字符  张三 2个字符
-				
-
-			* 创建表
-				create table student(
-					id int,
-					name varchar(32),
-					age int ,
-					score double(4,1),
-					birthday date,
-					insert_time timestamp
-				);
-			* 复制表:
-				* create table 表名 like 被复制的表名;	  	
-		2. R(Retrieve):查询
-			* 查询某个数据库中所有的表名称
-				* show tables;
-			* 查询表结构
-				* desc 表名;
-		3. U(Update):修改
-			1. 修改表名
-				alter table 表名 rename to 新的表名;
-			2. 修改表的字符集
-				alter table 表名 character set 字符集名称;
-			3. 添加一列
-				alter table 表名 add 列名 数据类型;
-			4. 修改列名称 类型
-				alter table 表名 change 列名 新列别 新数据类型;
-				alter table 表名 modify 列名 新数据类型;
-			5. 删除列
-				alter table 表名 drop 列名;
-		4. D(Delete):删除
-			* drop table 表名;
-			* drop table  if exists 表名 ;
-
-* 客户端图形化工具:SQLYog
+```sql
+1. 操作数据库:CRUD
+	1. C(Create):创建
+		* 创建数据库:
+			* create database 数据库名称;
+		* 创建数据库,判断不存在,再创建:
+			* create database if not exists 数据库名称;
+		* 创建数据库,并指定字符集
+			* create database 数据库名称 character set 字符集名;
+
+		* 练习: 创建db4数据库,判断是否存在,并制定字符集为gbk
+			* create database if not exists db4 character set gbk;
+	2. R(Retrieve):查询
+		* 查询所有数据库的名称:
+			* show databases;
+		* 查询某个数据库的字符集:查询某个数据库的创建语句
+			* show create database 数据库名称;
+	3. U(Update):修改
+		* 修改数据库的字符集
+			* alter database 数据库名称 character set 字符集名称;
+	4. D(Delete):删除
+		* 删除数据库
+			* drop database 数据库名称;
+		* 判断数据库存在,存在再删除
+			* drop database if exists 数据库名称;
+	5. 使用数据库
+		* 查询当前正在使用的数据库名称
+			* select database();
+		* 使用数据库
+			* use 数据库名称;
+```
+
+
+```sql
+2. 操作表
+	1. C(Create):创建
+		1. 语法:
+			create table 表名(
+				列名1 数据类型1,
+				列名2 数据类型2,
+				....
+				列名n 数据类型n
+			);
+			* 注意:最后一列,不需要加逗号(,)
+			* 数据库类型:
+				1. int:整数类型
+					* age int,
+				2. double:小数类型
+					* score double(5,2)
+				3. date:日期,只包含年月日,yyyy-MM-dd
+				4. datetime:日期,包含年月日时分秒	 yyyy-MM-dd HH:mm:ss
+				5. timestamp:时间错类型	包含年月日时分秒	 yyyy-MM-dd HH:mm:ss	
+					* 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
+
+				6. varchar:字符串
+					* name varchar(20):姓名最大20个字符
+					* zhangsan 8个字符  张三 2个字符
+```
+
+
+```sql
+		* 创建表
+			create table student(
+				id int,
+				name varchar(32),
+				age int ,
+				score double(4,1),
+				birthday date,
+				insert_time timestamp
+			);
+		* 复制表:
+			* create table 表名 like 被复制的表名;	  	
+	2. R(Retrieve):查询
+		* 查询某个数据库中所有的表名称
+			* show tables;
+		* 查询表结构
+			* desc 表名;
+	3. U(Update):修改
+		1. 修改表名
+			alter table 表名 rename to 新的表名;
+		2. 修改表的字符集
+			alter table 表名 character set 字符集名称;
+		3. 添加一列
+			alter table 表名 add 列名 数据类型;
+		4. 修改列名称 类型
+			alter table 表名 change 列名 新列别 新数据类型;
+			alter table 表名 modify 列名 新数据类型;
+		5. 删除列
+			alter table 表名 drop 列名;
+	4. D(Delete):删除
+		* drop table 表名;
+		* drop table  if exists 表名 ;
+```
+
+* sq客户端图形化工具:SQLYog
 
 ## DML:增删改表中数据
 
-	1. 添加数据:
-		* 语法:
-			* insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
-		* 注意:
-			1. 列名和值要一一对应。
-			2. 如果表名后,不定义列名,则默认给所有列添加值
-				insert into 表名 values(值1,值2,...值n);
-			3. 除了数字类型,其他类型需要使用引号(单双都可以)引起来
-	2. 删除数据:
-		* 语法:
-			* delete from 表名 [where 条件]
-		* 注意:
-			1. 如果不加条件,则删除表中所有记录。
-			2. 如果要删除所有记录
-				1. delete from 表名; -- 不推荐使用。有多少条记录就会执行多少次删除操作
-				2. TRUNCATE TABLE 表名; -- 推荐使用,效率更高 先删除表,然后再创建一张一样的表。
-	3. 修改数据:
-		* 语法:
-			* update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];
+```sql
+1. 添加数据:
+	* 语法:
+		* insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
+	* 注意:
+		1. 列名和值要一一对应。
+		2. 如果表名后,不定义列名,则默认给所有列添加值
+			insert into 表名 values(值1,值2,...值n);
+		3. 除了数字类型,其他类型需要使用引号(单双都可以)引起来
+2. 删除数据:
+	* 语法:
+		* delete from 表名 [where 条件]
+	* 注意:
+		1. 如果不加条件,则删除表中所有记录。
+		2. 如果要删除所有记录
+			1. delete from 表名; -- 不推荐使用。有多少条记录就会执行多少次删除操作
+			2. TRUNCATE TABLE 表名; -- 推荐使用,效率更高 先删除表,然后再创建一张一样的表。
+3. 修改数据:
+	* 语法:
+		* update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];
 
-		* 注意:
-			1. 如果不加任何条件,则会将表中所有记录全部修改。
+	* 注意:
+		1. 如果不加任何条件,则会将表中所有记录全部修改。
+```
 
 
 
 ## DQL:查询表中的记录
-	* select * from 表名;
-	
-	1. 语法:
-		select
-			字段列表
-		from
-			表名列表
-		where
-			条件列表
-		group by
-			分组字段
-		having
-			分组之后的条件
-		order by
-			排序
-		limit
-			分页限定
-
-
-	2. 基础查询
-		1. 多个字段的查询
-			select 字段名1,字段名2... from 表名;
-			* 注意:
-				* 如果查询所有字段,则可以使用*来替代字段列表。
-		2. 去除重复:
-			* distinct
-		3. 计算列
-			* 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
-			* ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
-				* 表达式1:哪个字段需要判断是否为null
-				* 如果该字段为null后的替换值。
-		4. 起别名:
-			* as:as也可以省略
+```sql
+* select * from 表名;
+
+1. 语法:
+	select
+		字段列表
+	from
+		表名列表
+	where
+		条件列表
+	group by
+		分组字段
+	having
+		分组之后的条件
+	order by
+		排序
+	limit
+		分页限定
+```
+
+
+```sql
+2. 基础查询
+	1. 多个字段的查询
+		select 字段名1,字段名2... from 表名;
+		* 注意:
+			* 如果查询所有字段,则可以使用*来替代字段列表。
+	2. 去除重复:
+		* distinct
+	3. 计算列
+		* 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
+		* ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
+			* 表达式1:哪个字段需要判断是否为null
+			* 如果该字段为null后的替换值。
+	4. 起别名:
+		* as:as也可以省略
+```
+
+
+```sql
+3. 条件查询
+	1. where子句后跟条件
+	2. 运算符
+		* > 、< 、<= 、>= 、= 、<>
+		* BETWEEN...AND  
+		* IN( 集合) 
+		* LIKE:模糊查询
+			* 占位符:
+				* _:单个任意字符
+				* %:多个任意字符
+		* IS NULL  
+		* and  或 &&
+		* or  或 || 
+		* not  或 !
+		
+			-- 查询年龄大于20岁
+
+			SELECT * FROM student WHERE age > 20;
+			
+			SELECT * FROM student WHERE age >= 20;
+			
+			-- 查询年龄等于20岁
+			SELECT * FROM student WHERE age = 20;
+			
+			-- 查询年龄不等于20岁
+			SELECT * FROM student WHERE age != 20;
+			SELECT * FROM student WHERE age <> 20;
+			
+			-- 查询年龄大于等于20 小于等于30
 			
+			SELECT * FROM student WHERE age >= 20 &&  age <=30;
+			SELECT * FROM student WHERE age >= 20 AND  age <=30;
+			SELECT * FROM student WHERE age BETWEEN 20 AND 30;
+			
+			-- 查询年龄22岁,18岁,25岁的信息
+			SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
+			SELECT * FROM student WHERE age IN (22,18,25);
+			
+			-- 查询英语成绩为null
+			SELECT * FROM student WHERE english = NULL; -- 不对的。null值不能使用 = (!=) 判断
+			
+			SELECT * FROM student WHERE english IS NULL;
+			
+			-- 查询英语成绩不为null
+			SELECT * FROM student WHERE english  IS NOT NULL;
+```
 
-	3. 条件查询
-		1. where子句后跟条件
-		2. 运算符
-			* > 、< 、<= 、>= 、= 、<>
-			* BETWEEN...AND  
-			* IN( 集合) 
-			* LIKE:模糊查询
-				* 占位符:
-					* _:单个任意字符
-					* %:多个任意字符
-			* IS NULL  
-			* and  或 &&
-			* or  或 || 
-			* not  或 !
+
+
+```sql
+			-- 查询姓马的有哪些? like
+			SELECT * FROM student WHERE NAME LIKE '马%';
+			-- 查询姓名第二个字是化的人
 			
-				-- 查询年龄大于20岁
-
-				SELECT * FROM student WHERE age > 20;
-				
-				SELECT * FROM student WHERE age >= 20;
-				
-				-- 查询年龄等于20岁
-				SELECT * FROM student WHERE age = 20;
-				
-				-- 查询年龄不等于20岁
-				SELECT * FROM student WHERE age != 20;
-				SELECT * FROM student WHERE age <> 20;
-				
-				-- 查询年龄大于等于20 小于等于30
-				
-				SELECT * FROM student WHERE age >= 20 &&  age <=30;
-				SELECT * FROM student WHERE age >= 20 AND  age <=30;
-				SELECT * FROM student WHERE age BETWEEN 20 AND 30;
-				
-				-- 查询年龄22岁,18岁,25岁的信息
-				SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
-				SELECT * FROM student WHERE age IN (22,18,25);
-				
-				-- 查询英语成绩为null
-				SELECT * FROM student WHERE english = NULL; -- 不对的。null值不能使用 = (!=) 判断
-				
-				SELECT * FROM student WHERE english IS NULL;
-				
-				-- 查询英语成绩不为null
-				SELECT * FROM student WHERE english  IS NOT NULL;
-	
+			SELECT * FROM student WHERE NAME LIKE "_化%";
+			
+			-- 查询姓名是3个字的人
+			SELECT * FROM student WHERE NAME LIKE '___';
+```
 
 
-				-- 查询姓马的有哪些? like
-				SELECT * FROM student WHERE NAME LIKE '马%';
-				-- 查询姓名第二个字是化的人
-				
-				SELECT * FROM student WHERE NAME LIKE "_化%";
-				
-				-- 查询姓名是3个字的人
-				SELECT * FROM student WHERE NAME LIKE '___';
-				
-				
-				-- 查询姓名中包含德的人
-				SELECT * FROM student WHERE NAME LIKE '%德%';
+​				
+```sql
+			-- 查询姓名中包含德的人
+			SELECT * FROM student WHERE NAME LIKE '%德%';
+```
 
 
 
-	
+​	

+ 55 - 0
后端/Mysql/8.mysql主从复制搭建环境.md

@@ -0,0 +1,55 @@
+> [TOC]
+
+# 1、复制原理
+
+![image-20220314165727347](assets/image-20220314165727347.png)
+
+# 2、配置
+
+## 2.1、主节点配置
+
+```shell
+# 1.修改mysql配置文件
+vim /etc/my.cnf
+log-bin=mysql-bin # 启动二进制文件
+
+server-id=20 # 服务器ID,一般为ip的后缀
+# 2.查询主数据库状态,并记下FILE及Position的值。
+show master status; 
+# 3.重启mysql
+systemctl restart mysqld
+```
+
+![image-20220314170207277](assets/image-20220314170207277.png)
+
+## 2.2、从节点配置
+
+```shell
+# 1.修改mysql配置文件
+vim /etc/my.cnf
+log-bin=mysql-bin # 启动二进制文件
+
+server-id=21 # 服务器ID,一般为ip的后缀
+# 注意主要是错误的配置方法   binlog_do_db=test,mybatis  这里mysql会将test,mybatis当成一个数据库
+binlog_do_db=test #这里选择要同步的数据库
+binlog_do_db=mybatis
+# 2.重启mysql
+systemctl restart mysqld
+
+# 3.开启同步
+change master to master_host='192.168.245.20',master_user='root',master_password='root',master_log_file='mysql-bin.000002',master_log_pos=154;
+
+start slave;
+# 4.展示同步状态
+show slave status;
+```
+
+
+
+# 附录
+
+| 身份   | IP             | mysql版本 |
+| ------ | -------------- | --------- |
+| 主节点 | 192.168.245.20 | 5.7       |
+| 从节点 | 192.168.245.21 | 5.7       |
+

BIN
后端/Mysql/assets/image-20220314165727347.png


BIN
后端/Mysql/assets/image-20220314170207277.png


BIN
大数据/云平台安装文档/云平台安装文档.zip


+ 0 - 0
大数据/云平台安装文档/assets/image-20211108145729544.png → 部署文档/云平台/assets/image-20211108145729544.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211108154405864.png → 部署文档/云平台/assets/image-20211108154405864.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211110154335629.png → 部署文档/云平台/assets/image-20211110154335629.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211110155332792.png → 部署文档/云平台/assets/image-20211110155332792.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211110230053303.png → 部署文档/云平台/assets/image-20211110230053303.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211110230128121.png → 部署文档/云平台/assets/image-20211110230128121.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211110230429326.png → 部署文档/云平台/assets/image-20211110230429326.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211110231108730-16365570741011.png → 部署文档/云平台/assets/image-20211110231108730-16365570741011.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211110231108730.png → 部署文档/云平台/assets/image-20211110231108730.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211110231233626.png → 部署文档/云平台/assets/image-20211110231233626.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211110231456317.png → 部署文档/云平台/assets/image-20211110231456317.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211110231532251.png → 部署文档/云平台/assets/image-20211110231532251.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211110232452207.png → 部署文档/云平台/assets/image-20211110232452207.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211110232708879.png → 部署文档/云平台/assets/image-20211110232708879.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211111101212415.png → 部署文档/云平台/assets/image-20211111101212415.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211111101337952.png → 部署文档/云平台/assets/image-20211111101337952.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211111101803181.png → 部署文档/云平台/assets/image-20211111101803181.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211111102250493.png → 部署文档/云平台/assets/image-20211111102250493.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211111102801129.png → 部署文档/云平台/assets/image-20211111102801129.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211111102817757.png → 部署文档/云平台/assets/image-20211111102817757.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211115213927460.png → 部署文档/云平台/assets/image-20211115213927460.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211115214619362.png → 部署文档/云平台/assets/image-20211115214619362.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211115214723424.png → 部署文档/云平台/assets/image-20211115214723424.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211115214817599.png → 部署文档/云平台/assets/image-20211115214817599.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211115214846424.png → 部署文档/云平台/assets/image-20211115214846424.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211115214912342.png → 部署文档/云平台/assets/image-20211115214912342.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211115214937388.png → 部署文档/云平台/assets/image-20211115214937388.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211118211440018.png → 部署文档/云平台/assets/image-20211118211440018.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211118211533239.png → 部署文档/云平台/assets/image-20211118211533239.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211118211659229.png → 部署文档/云平台/assets/image-20211118211659229.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211118211733125.png → 部署文档/云平台/assets/image-20211118211733125.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211123200112617.png → 部署文档/云平台/assets/image-20211123200112617.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20211207125209937.png → 部署文档/云平台/assets/image-20211207125209937.png


+ 0 - 0
大数据/云平台安装文档/assets/image-20220313152413610.png → 部署文档/云平台/assets/image-20220313152413610.png


BIN
部署文档/云平台/assets/image-20220316212717276.png


BIN
部署文档/云平台/assets/image-20220317151709566.png


BIN
部署文档/云平台/assets/image-20220317164430599.png


+ 141 - 0
部署文档/云平台/云平台运行文档.md

@@ -0,0 +1,141 @@
+> [TOC]
+
+# 1.云平台运行准备工作
+
+1. 创建文件夹
+
+```shell
+mkdir /opt/mkcloud
+
+mkdir /home/mkcloud
+
+mkdir /home/algorithm
+```
+
+2. 新建数据库`mkcloud`并将数据库导入
+
+3. 将`mkcloud.jar`上传到`/opt/mkcloud`
+
+4. 在nginx中创建存放算法平台前端的文件夹
+
+  ```shell
+  mkdir /usr/local/nginx/html/mkcloud
+  ```
+
+5. 将云平台前端文件上传到该文件夹(共有三个,两个文件夹以及一个index.html)
+6. 上传基础镜像到harbor仓库
+
+```shell
+# 1.将python3_base.tar文件上传到安装harbor仓库的节点
+docker load  < python3_base.tar
+```
+
+![image-20220317151709566](assets/image-20220317151709566.png)
+
+```shell
+docker tag server.harbor.com:80/library/python3_base:v1.0 180.76.231.231:8088/library/python3_base:v1.0
+
+docker push 180.76.231.231:8088/library/python3_base:v1.0
+```
+
+# 2.云平台参数设置
+
+## 2.1将application.yml上传到/opt/mkcloud,并进行修改
+
+1. 修改host、host-username、host-password为kubesphere宿主机的ip、用户名和密码
+
+```yaml
+host: 10.168.57.11
+host-username: root
+host-password: root
+host-basepath: /opt/uploadFile
+host-port: 22
+```
+
+2. 修改相应的端口
+
+```yaml
+# 修改kubesphereUrl为kubesphere所在ip以及30881端口
+kubesphereUrl: http://42.192.195.253:30881
+
+# 修改harborUrl为harbor所在ip以及80端口
+harborUrl: 42.192.195.253:80
+
+# 修改Dockerfile和shell脚本暂存地址
+tempFileLocation: /home/mkcloud/algorithm
+```
+
+## 2.2将application-dev.yml上传到/opt/mkcloud,并进行修改
+
+修改spring:datasource:url、spring:datasource:username、spring:datasource:password为云平台数据库所在ip、用户名和密码
+
+```yaml
+url: jdbc:mysql://localhost:3306/mkcloud?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
+username: root
+password: root
+```
+修改多数据源配置,其中url为算法平台数据库所在ip
+
+```yaml
+dynamic:
+  datasource:
+slave2:
+  driver-class-name: com.mysql.cj.jdbc.Driver
+  url: jdbc:mysql://localhost:3306/renren_fast?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+  username: root
+  password: root
+```
+修改hbase集群ip,其中hbase.zookeeper.quorum为hbase集群IP
+
+```yaml
+hbase:
+config:
+	hbase.zookeeper.quorum: 10.168.57.10,10.168.57.11,10.168.57.12
+	hbase.zookeeper.property.clientPort: 2181
+	zookeeper.znode.parent: /hbase
+	hbase.client.keyvalue.maxsize: 1048576000
+```
+修改minio:endpoint为搭建好的minio IP
+
+```yaml
+minio:
+  endpoint: http://150.158.138.99:9006
+  bucket: test0706
+  access-key: minio
+  secret-key: minio123
+```
+## 2.3修改nginx.conf配置文件,在server中添加
+
+```shell
+    location /mkcloud {
+                 alias  html/mkcloud;
+                 index  index.html index.htm;
+                 try_files  $uri  $uri/   /index.html;
+         }	
+	location  ^~ /kubesphereApi/ {
+		proxy_pass http://123.56.99.12:30881/;#这里的ip要改为kubesphere的ip
+		proxy_set_header Host $host;
+		proxy_set_header  X-Real-IP        $remote_addr;
+		proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
+		proxy_set_header X-NginX-Proxy true;
+	}
+	
+location ^~ /mkcloud/mkcloud/ {  
+	proxy_pass http://112.126.68.148:8085/mkcloud/;#这里的ip要改为云平台后端服务所在ip
+	proxy_set_header Host $host;
+	proxy_set_header  X-Real-IP        $remote_addr;
+	proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
+	proxy_set_header X-NginX-Proxy true;
+}
+```
+# 3.项目启动
+
+```shell
+nohup java -jar mkcloud.jar > log.file 2>&1 &
+
+cd/usr/local/nginx/sbin
+
+./nginx -s reload
+```
+
+启动后访问http://ip/mkcloud/#/login(这里的ip要改为nginx的ip)

+ 41 - 26
大数据/云平台安装文档/安装云平台环境.md → 部署文档/云平台/安装云平台环境.md

@@ -1,8 +1,8 @@
 > [TOC]
 
-# 1.安装前的准备工作
+# 1安装前的准备工作
 
-## 1.1准备三台服务器
+## 1.1准备三台服务器
 
 虚拟机的最低标准
 **master**
@@ -23,7 +23,7 @@
 | node1    | 192.168.238.21 |
 | node2    | 192.168.238.22 |
 
-## 1.2安装前的准备工作
+## 1.2安装前的准备工作
 
 ```shell
 # 关闭防火墙
@@ -78,9 +78,9 @@ reboot
 三台服务器,开始下一步的安装
 
 
-# 2.离线安装Docker及其相应组件(三台服务机都需要安装)
+# 2离线安装Docker及其相应组件(三台服务机都需要安装)
 
-## 2.1离线安装Docker
+## 2.1离线安装Docker
 
 ```shell
 # 1.创建目录存放相应的安装包
@@ -103,7 +103,7 @@ docker --version
 输出docker版本号表示安装成功
 ![image-20220313152413610](assets/image-20220313152413610.png)
 
-## 2.2离线安装Docker-compose
+## 2.2离线安装Docker-compose
 
 将安装包目录下的docker-compose-linux-x86_64文件上传到服务机的```/opt/package```目录下使用命令
 ```shell
@@ -119,13 +119,13 @@ docker-compose --version
 输出docker-compose版本号表示安装成功
 ![image-20211108154405864](assets/image-20211108154405864.png)
 
-# 3.安装Harbor及相应的配置(只需要一台服务机安装)
+# 3安装Harbor及相应的配置(只需要一台服务机安装)
 
-## 3.0安装注意事项
+## 3.0安装注意事项
 
 本文档Harbor安装在单独一台虚拟机上面,如果只有三台机器,请将下面的server.harbor.com换成固定的IP(这里的固定IP意思是安装harbor的虚拟机的IP),例如将harbor仓库安装在master节点就将server.harbor.com换为192.168.238.20。
 
-## 3.1安装Harbor
+## 3.1安装Harbor
 
 1. 将压缩包harbor-offline-installer-v2.1.5.tgz上传到
 ```shell
@@ -186,7 +186,7 @@ log:
 
 ![image-20211207125209937](assets/image-20211207125209937.png)
 
-## 3.2配置Docker访问Harbor(三台服务机都要配置)
+## 3.2配置Docker访问Harbor(三台服务机都要配置)
 
 首先修改服务机的hosts,如果没有单独的harbor服务器,请忽略这一步
 ```
@@ -219,7 +219,11 @@ systemctl daemon-reload && systemctl restart docker
 ```
 
 输入命令
-```
+```shell
+# 重新启动harbor,因为docker重启但是harbor不能自动重启
+cd /opt/package/
+docker-compose start
+# 登录harbor
 docker login server.harbor.com:80
 ```
 输入用户名:admin
@@ -227,10 +231,10 @@ docker login server.harbor.com:80
 ![image-20211110155332792](assets/image-20211110155332792.png)
 至此,harbor配置完成
 
-# 4.K8S 离线安装及NFS配置(三台服务机都需要安装) 
+# 4K8S 离线安装及NFS配置(三台服务机都需要安装) 
 
 
-## 4.1 上传kube1.9.0.tar.gz(以下简称kube1.9)到服务器
+## 4.1 上传kube1.9.0.tar.gz(以下简称kube1.9)到服务器
 
 ```
 # 1.三台服务机创建目录
@@ -241,7 +245,7 @@ scp -r kube1.9.0.tar.gz root@192.168.238.21:/opt/package/k8s
 scp -r kube1.9.0.tar.gz root@192.168.238.22:/opt/package/k8s
 ```
 
-## 4.2 解压安装主从
+## 4.2 解压安装主从
 
 ```shell
 # 1.master下,进入/opt/package/k8s目录下解压,执行脚本
@@ -269,7 +273,7 @@ scp -r /etc/kubernetes/admin.conf node2:/etc/kubernetes/
 
    
 
-## 4.3 从节点加入主节点
+## 4.3 从节点加入主节点
 
  1. 在master节点生成token
 
@@ -326,7 +330,7 @@ kubectl get nodes
    
 
 
-## 4.4 验证集群pod是否running,各节点是否ready
+## 4.4 验证集群pod是否running,各节点是否ready
 
 watch kubectl get pod -n kube-system -o wide 
 效果如下	
@@ -359,7 +363,7 @@ kubectl get nodes
      node2    Ready    <none>   24s     v1.19.0
 ```
 
-## 4.5配置NFS
+## 4.5配置NFS
 
 | master | NFS服务端+NFS客户端 |
 | ------ | ------------------- |
@@ -479,9 +483,9 @@ NAME                            PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMO
 managed-nfs-storage (default)   fuseim.pri/ifs   Delete          Immediate           false            
 ```
 
-# 5.安装kubesphere及其相应的插件
+# 5安装kubesphere及其相应的插件
 
-## 5.1将离线包上传至harbor仓库(该操作只需在master节点进行)
+## 5.1将离线包上传至harbor仓库(该操作只需在master节点进行)
 
 将安装包目录下的kubesphere文件夹上传至服务机master节点的
 ```shell
@@ -496,7 +500,9 @@ managed-nfs-storage (default)   fuseim.pri/ifs   Delete          Immediate
 
 ```shell
 # 在服务机master节点中执行命令
-
+# 重新启动harbor,因为docker重启但是harbor不能自动重启
+cd /opt/package/harbor
+docker-compose start
 # 进入该路径
 cd /opt/package/kubesphere/
 
@@ -507,7 +513,7 @@ chmod +x offline-installation-tool.sh
 ```
 ![image-20211110230429326](assets/image-20211110230429326.png)
 
-## 5.2最小化安装kubesphere
+## 5.2最小化安装kubesphere
 
 ```shell
 # 执行以下命令
@@ -535,7 +541,7 @@ kubectl get pods -A
 kubectl apply -f cluster-configuration.yaml
 ```
 
-## 5.3检查安装日志
+## 5.3检查安装日志
 
 ```shell
 # 检查安装日志等待安装成功
@@ -545,7 +551,7 @@ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=
 ![image-20211111101337952](assets/image-20211111101337952.png)
 
 
-## 5.4安装必要的插件
+## 5.4安装必要的插件
 
 本次需要安装额外的几个插件
 1. KubeSphere日志系统
@@ -575,7 +581,7 @@ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=
 ![image-20211111102817757](assets/image-20211111102817757.png)
 ![image-20211111102801129](assets/image-20211111102801129.png)
 
-## 5.5开放30881端口(重要--master节点操作)
+## 5.5开放30881端口(重要--master节点操作)
 
 ```shell
 kubectl -n kubesphere-system patch svc ks-apiserver -p '{"spec":{"type":"NodePort","ports":[{"port":80,"protocal":"TCP","targetPort":9090,"nodePort":30881}]}}'
@@ -583,7 +589,7 @@ kubectl -n kubesphere-system patch svc ks-apiserver -p '{"spec":{"type":"NodePor
 
 ![image-20211115213927460](assets/image-20211115213927460.png)
 
-## 5.6创建云平台的企业空间
+## 5.6创建云平台的企业空间
 
 1. 登录kubesphere,输入http://10.168.59.60:30880/,端口号默认为30880,第一次进入需要修改初始密码
 ![image-20211115214619362](assets/image-20211115214619362.png)
@@ -596,7 +602,7 @@ kubectl -n kubesphere-system patch svc ks-apiserver -p '{"spec":{"type":"NodePor
 ![image-20211115214912342](assets/image-20211115214912342.png)
 ![image-20211115214937388](assets/image-20211115214937388.png)
 
-## 5.7kubesphere添加Harbor仓库
+## 5.7kubesphere添加Harbor仓库
 
 1. 进入当前项目
 ![image-20211118211440018](assets/image-20211118211440018.png)
@@ -643,6 +649,15 @@ docker ps
 docker restart e39629e9c2c4
 ```
 
+## 6.2、单节点安装pod报错Pending
+
+![image-20220317164430599](assets/image-20220317164430599.png)
+
+```shell
+# 当创建单机版的 k8s 时,这个时候 master 节点是默认不允许调度 pod 的,需要执行
+kubectl taint nodes --all node-role.kubernetes.io/master-
+```
+
 
 
 # 附录----安装软件的版本

+ 0 - 0
中煤/solr and atlas.md → 部署文档/大数据平台/solr and atlas.md


BIN
部署文档/算法平台/assets/image-20220316185119154.png


BIN
部署文档/算法平台/assets/image-20220317204635163.png


BIN
部署文档/算法平台/assets/image-20220317204954859.png


BIN
部署文档/算法平台/assets/image-20220317205227206.png


BIN
部署文档/算法平台/assets/image-20220317205535260.png


BIN
部署文档/算法平台/assets/image-20220317205738403-16475218592261.png


BIN
部署文档/算法平台/assets/image-20220317205738403.png


BIN
部署文档/算法平台/assets/image-20220317210313188.png


BIN
部署文档/算法平台/assets/image20220309200518.png


BIN
部署文档/算法平台/assets/image20220309202338.png


BIN
部署文档/算法平台/assets/image20220309202557.png


BIN
部署文档/算法平台/assets/image20220309202909.png


BIN
部署文档/算法平台/assets/image20220309204832.png


BIN
部署文档/算法平台/assets/image20220309205028.png


BIN
部署文档/算法平台/assets/image20220309210150.png


BIN
部署文档/算法平台/assets/images20220309201941.png


+ 331 - 0
部署文档/算法平台/算法平台环境搭建.md

@@ -0,0 +1,331 @@
+> [TOC]
+
+# 1、离线安装unzip
+
+
+```shell
+# 1.新建unzip文件夹
+mkdir /opt/modules/unzip
+# 2.将unzip-6.0-19.el7.x86_64.rpm上传到/opt/modules/unzip下安装unzip
+rpm -Uvh unzip-6.0-19.el7.x86_64.rpm 
+
+# 3.查看是否安装成功
+rpm -qa | grep unzip
+```
+**输出unzip版本号表示安装成功**
+
+![image20220309200518](assets/image20220309200518.png)
+
+# 2、离线安装docker
+
+```shell
+# 1.新建docker文件夹
+mkdir /opt/modules/docker
+
+# 2.将docker19-rpm.zip上传到/opt/modules/docker下,进入目录,进行解压缩操作
+cd /opt/modules/docker
+
+unzip docker19-rpm.zip
+
+# 3.安装docker
+rpm -ivh *.rpm --force --nodeps
+
+# 4.启动docker并设置开机自启
+systemctl enable docker && systemctl start docker
+# 5.查看是否安装成功
+docker --version
+```
+
+**输出docker版本号表示安装成功**
+
+![images20220309201941](assets/images20220309201941.png)
+# 3、开启docker远程访问端口
+## 3.1、进入/etc/docker目录,生成ca秘钥和证书
+```shell
+cd /etc/docker
+
+read -s PASSWORD
+```
+
+**输入上条命令后,命令行会空一行,此时自行定义一个密码变量**
+
+![image20220309202338](assets/image20220309202338.png)
+
+```shell
+read -s SERVER
+```
+
+**输入上条命令后,命令行会空一行,此时输入当前服务器ip**
+
+![image20220309202557](assets/image20220309202557.png)
+
+```shell
+openssl genrsa -aes256 -passout pass:$PASSWORD  -out ca-key.pem 2048
+```
+
+**生成ca证书,填写配置信息**
+
+```shell
+openssl req -new -x509 -passin "pass:$PASSWORD" -days 365 -key ca-key.pem -sha256 -out ca.pem
+```
+
+![image20220309202909](assets/image20220309202909.png)
+
+
+## 3.2、生成server密钥和证书
+**生成server证书私钥文件**
+
+```shell
+openssl genrsa -out server-key.pem 2048
+```
+
+**生成server证书请求文件**
+
+```shell
+openssl req -subj "/CN=$SERVER" -new -key server-key.pem -out server.csr
+```
+
+**使用CA证书及CA密钥以及上面的server证书请求文件进行签发,生成server自签证书**
+
+```shell
+openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial  -out server-cert.pem
+```
+
+## 3.3、生成client密钥和证书
+
+**生成client证书RSA私钥文件**
+
+```shell
+openssl genrsa -out key.pem 2048
+```
+
+**生成client证书请求文件**
+
+```shell
+openssl req -subj '/CN=client' -new -key key.pem -out client.csr
+
+sh -c 'echo "extendedKeyUsage=clientAuth" > extfile.cnf'
+```
+
+**生成client自签证书(根据上面的client私钥文件、client证书请求文件生成)**
+
+```shell
+openssl x509 -req -days 365 -in client.csr -CA ca.pem -CAkey ca-key.pem  -passin "pass:$PASSWORD" -CAcreateserial -out cert.pem  -extfile extfile.cnf
+```
+
+## 3.4、更改密钥权限,删除无用文件
+```shell
+chmod 0400 ca-key.pem key.pem server-key.pem
+
+chmod 0444 ca.pem server-cert.pem cert.pem
+
+rm client.csr server.csr
+```
+
+## 3.5、修改ExecStart属性
+```shell
+vim /usr/lib/systemd/system/docker.service
+
+ExecStart=/usr/bin/dockerd \
+    --tlsverify \
+    --tlscacert=/etc/docker/ca.pem \
+    --tlscert=/etc/docker/server-cert.pem \
+    --tlskey=/etc/docker/server-key.pem \
+    -H tcp://0.0.0.0:2376 \
+    -H unix:///var/run/docker.sock \
+     -H fd:// --containerd=/run/containerd/containerd.sock
+```
+## 3.6、重启docker服务
+```shell
+# c
+systemctl daemon-reload && systemctl restart docker
+
+# 验证docker服务已经具备了被远程访问的能力
+```
+
+![image-20220316185119154](assets/image-20220316185119154.png)
+
+# 4、上传docker镜像
+
+```shell
+# 1.将pythonimages.tar上传至服务器,并执行命令:
+docker load < pythonimage.tar
+
+# 2.将tensorflowimages.tar上传至服务器,并执行命令:
+docker load < tensorflowimage.tar
+
+# 3.查看已有镜像
+docker images
+```
+
+# 5、安装minio
+
+```shell
+### 创建目录
+mkdir /opt/modules/minio
+
+mkdir /opt/modules/minio/data
+
+### 进入目录
+cd /opt/modules/minio
+
+
+### 将minio安装文件上传到/opt/modules/minio下
+
+### 赋权
+chmod +x minio
+
+
+### /etc/profile文件添加环境变量
+vim /etc/profile
+
+export MINIO_ROOT_USER=minio
+export MINIO_ROOT_PASSWORD=minio123
+
+### 使环境变量命令参数详解生效
+source /etc/profile
+
+### 后台启动minio(--address参数为端口号设置)
+nohup /opt/modules/minio/minio server --address 0.0.0.0:9000 /opt/modules/minio/data/ > /opt/modules/minio/minio.log 2>&1 &
+```
+
+**浏览器输入服务器ip:9000,成功进入minio页面,安装成**
+
+![image20220309204832](assets/image20220309204832.png)
+
+```shell
+### 输入用户名minio,密码minio123后进入minio控制台,依次创建存储
+
+
+”algmode,”algorithm”,”algtemplate”,”dataset”,”publishedalgorithm”,”tensorboardfile”,”visiarguartifact”.
+```
+
+![image20220309205028](assets/image20220309205028.png)
+
+# 6、安装argo
+
+## 6.1、安装etcd---(如果有请忽略)
+
+![image-20220317204635163](assets/image-20220317204635163.png)
+
+```shell
+# 将etcd安装文件上传到/opt/modules/argo下,解压,并将文件放入系统路径中
+mkdir /opt/modules/argo
+cd /opt/modules/argo
+tar zxvf etcd-v3.5.1-linux-amd64.tar.gz
+cd etcd-v3.5.1-linux-amd64
+cp etcd /usr/bin/
+cp etcdctl /usr/bin/
+
+# 创建一个服务描述文件,放入systemd的服务目录
+# 进入目录
+
+cd /usr/lib/systemd/system
+
+vim etcd.service # 添加如下内容
+
+[Unit]
+Description=Etcd Server
+After=network.target
+
+[Service]
+Type=simple
+WorkingDirectory=/var/lib/etcd/
+EnvironmentFile=-/etc/etcd/etcd.conf
+ExecStart=/usr/bin/etcd
+
+[Install]
+WantedBy=multi-user.target
+```
+
+## 6.2、安装argo
+
+1. 将 argo-linux-amd64.gz  文件上传至/opt/modules/argo目录下
+
+```shell
+# 执行命令 
+gunzip argo-linux-amd64.gz 
+chmod +x argo-linux-amd64 
+mv ./argo-linux-amd64 /usr/local/bin/argo 
+
+# 查看:
+argo version
+```
+
+![image-20220317204954859](assets/image-20220317204954859.png)
+
+2. 创建命名空间 
+
+```shell
+kubectl create ns argo
+```
+
+3. 安装argo
+
+```shell
+# 1.将argo安装文件quick-start-postgres.yaml和argo-images.tar 上传到/opt/modules/argo下
+docker load -i argo-images.tar
+
+# 共5个
+# argoproj/argocli:v3.0.3
+# minio/minio:RELEASE.2019-12-17T23-16-33Z 
+# postgres:12-alpine 
+# argoproj/argoexec:v3.0.3
+# argoproj/workflow-controller:v3.0.3
+
+# 2.执行命令进行安装
+
+kubectl apply -n argo -f quick-start-postgres.yaml
+
+# (卸载方式:kubectl delete -n argo -f quick-start-postgres.yaml)
+
+# 3.查看服务
+kubectl get pods -n argo
+```
+
+![image-20220317205227206](assets/image-20220317205227206.png)
+
+4. 角色绑定
+
+```shell
+# 当集群是基于RBAC(Role-Based Access Control,基于角色的访问控制)时,默认账户有很多的限制,比如不能支持组件,输出等等。执行以下命令授权默认的服务账户在默认的namespace中拥有admin的权限
+kubectl create rolebinding default-admin --clusterrole=admin --serviceaccount=default:default
+```
+
+5. 端口映射
+
+```shell
+kubectl patch svc argo-server -n argo -p '{"spec": {"type": "LoadBalancer"}}'
+
+kubectl patch svc minio -n argo -p '{"spec": {"type": "LoadBalancer"}}'
+
+# 通过kubectl get svc -n argo查看服务 ,查看映射后的端口(红框选中)
+# 根据 IP+argo-server端口的方式访问 argo ui界面,根据Ip+minio端口的方式访问argo-minio界面,用户名为admin,密码为password
+```
+
+![image-20220317205535260](assets/image-20220317205535260.png)
+
+# 7、目前遇见的BUG与解决方案
+
+## 7.1、argo无法正常启动
+
+若出现argo-server,postgres及workflow-controller Pod 状态出现问题。
+
+![image-20220317205738403](assets/image-20220317205738403-16475218592261.png)
+
+```shell
+# 解决方案:将hugepages关闭。将所有的节点hugepage关闭,pg中参数huge_page=try会默认不选择hugepage,因此能够运行成功。
+# 执行命令:
+echo "vm.nr_hugepages=0" >> /etc/sysctl.conf
+# 生效:(执行如下命令,或者执行/sbin/sysctl -p )
+sysctl -p
+# 查看
+kubectl get pod -o wide -l app=postgres -n argo
+```
+
+# 附录----安装软件的版本
+
+| 软件  | 版本                 |
+| ----- | -------------------- |
+| minio | 2021-06-17T00:10:46Z |
+| argo  | v3.0.2               |

+ 194 - 0
部署文档/算法平台/算法平台运行文档.md

@@ -0,0 +1,194 @@
+> [TOC]
+
+# 1、算法平台运行准备工作
+## 1.1、创建文件夹
+
+```shell
+mkdir /opt/uploadFile
+
+mkdir /opt/aiplat
+
+mkdir /opt/aiplat/docker_ca
+
+mkdir /opt/aiplat/test0708/testPython.py
+
+mkdir /opt/aiplat/demoCSV
+
+mkdir /opt/aiplat/dataPreProcess
+```
+
+## 1.2、将生成的docker远程连接证书复制到/opt/aiplat/docker_ca下
+
+```shell
+cp /etc/docker/* /opt/aiplat/docker_ca/
+```
+
+## 1.3、新建数据库renren_fast并将数据库导入
+
+## 1.4、将renren-fast.jar上传到/opt/aiplat
+
+## 1.5、在nginx中创建存放算法平台前端的文件夹
+
+```shell
+mkdir /usr/local/nginx/html/aiplat
+```
+
+将算法平台前端文件上传到该文件夹(共有三个,两个文件夹以及一个index.html)
+# 2、算法平台参数设置
+
+## 2.1、将application.yml上传到/opt/aiplat,并进行修改
+
+修改minio:endpoint为搭建好的minio IP
+
+```yaml
+minio:
+  endpoint: http://150.158.138.99:9006
+  bucket: test0706
+  access-key: minio
+  secret-key: minio123
+```
+修改docker:url为搭建好的docker所在IP
+
+```yaml
+docker:
+  url: https://10.168.57.11:2376
+```
+修改host、host-username、host-password为docker宿主机的ip、用户名和密码
+
+```yaml
+host: 10.168.57.11
+host-username: root
+host-password: root
+host-basepath: /opt/uploadFile
+host-port: 22
+```
+修改docker证书存放路径
+
+```yaml
+docker_ca: /opt/aiplat/docker_ca
+```
+修改获取kafka实时数据ip与端口,此ip为集群的kafkaIP
+    
+```yaml
+realTimeKafka1: 10.168.57.10:9092
+realTimeKafka2: 10.168.57.11:9092
+realTimeKafka3: 10.168.57.12:9092
+```
+修改算法结果入库模板ip(注:需提前将该ip所指服务器的hbase开启thrift服务,开启命令为./bin/hbase-daemon.sh start thrift)
+
+```yaml
+resultToDB: 10.168.57.10
+```
+修改数据预处理数据集存放文件夹
+
+```yaml
+datasetLocation: /opt/aiplat/demoCSV
+```
+
+修改数据预处理python文件存放文件夹
+
+```yaml
+dataPreProcessLocation: /opt/aiplat/dataPreProcess
+```
+###2.2将application-dev.yml上传到/opt/aiplat,并进行修改
+修改spring:datasource:url、spring:datasource:username、spring:datasource:password为算法平台数据库所在ip、用户名和密码
+
+```yaml
+url: jdbc:mysql://localhost:3306/renren_fast?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
+username: root
+password: root
+```
+修改多数据源配置,其中url要改为大数据平台数据库所在ip
+
+```yaml
+dynamic:
+  datasource:
+	bigData:
+		url: jdbc:mysql://localhost:3306/hebing?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
+		username: root
+		password: root
+		driver-class-name: com.mysql.jdbc.Driver
+```
+修改hbase集群ip,其中hbase.zookeeper.quorum为hbase集群IP
+
+```yaml
+hbase:
+config:
+	hbase.zookeeper.quorum: 10.168.57.10,10.168.57.11,10.168.57.12
+	hbase.zookeeper.property.clientPort: 2181
+	zookeeper.znode.parent: /hbase
+	hbase.client.keyvalue.maxsize: 1048576000
+```
+
+## 2.2、argo
+
+1. 修改renren-fast代码src/main/resources/application.yml如下部分
+
+```shell
+1.argo下 basepath为7.2 端口映射部分argo-server对应的端口,具体值为  https://ip:端口(注意此处为https,端口为红框标记端口)
+
+2.argo下minioendpoint为7.2 端口映射部分minio对应的端口,具体值为http://ip:端口(端口为红框标记端口)
+
+3.argo下 minioAccess-key 为 admin
+
+4.argo下 minioSecret-key 为 password
+
+5.argo下spark 相关参数暂时先不改,具体环境还未确定。
+```
+
+2. Akubenetes
+
+```shell
+1.Akubenete下basepath 值为 kubernetes环境 ip+端口,具体值为 https://ip:6443。(此处为https)
+
+2.Akubenete下kubeconfig-path 值为 kubernetes环境配置文件,需从部署k8s环境的服务器上下载,该配置文件在服务器上的地址为/root/.kube/config。 并将此处地址改为存放该config文件的具体地址。
+
+```
+
+![image-20220317210313188](assets/image-20220317210313188.png)
+
+```yaml
+renren-fast 
+src/main/resources/application.yml
+需更改如下部分
+
+#Argo
+argo:
+  basepath: http://192.168.222.100:32639
+  minioendpoint: http://192.168.222.100:31471
+  #  minioAccess-key: admin
+  minioAccess-key: vzZBapBXei60zI1t6oPl
+  #  minioSecret-key: password
+  minioSecret-key: nkjkRpJLkpb2THUpGKtdMBPPEi3XdmllnOctF8yS
+  sparkMasterRest: spark://10.168.57.10:16066
+  sparkMaster: spark://10.168.57.10:7077
+  sparkHdfsurl: hdfs://10.168.57.10:9000
+#kubenetes  Argo部分获取pod日志
+Akubenetes:
+  basepath: https://192.168.222.100:6443
+  kubeconfig-path: D:\\zhang\\VSCodeProjects\\0209\\config
+```
+
+
+
+## 2.3、修改nginx.conf配置文件,在server中添加
+
+```shell
+    location /aiplat {
+       		 alias  html/aiplat;
+                 index  index.html index.htm;
+                 try_files  $uri  $uri/   /index.html;
+        }
+```
+
+# 3、项目启动
+
+```shell
+nohup java -jar renren-fast.jar > log.file 2>&1 &
+
+cd/usr/local/nginx/sbin
+
+./nginx -s reload
+```
+
+启动后访问http://ip/aiplat/#/login(这里的ip要改为nginx的ip)