diff --git "a/\347\216\213\345\250\201\346\226\214/20240708_postgresq\350\207\252\345\256\232\344\271\211\345\207\275\346\225\260.md" "b/\347\216\213\345\250\201\346\226\214/20240708_postgresq\350\207\252\345\256\232\344\271\211\345\207\275\346\225\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..45006e137aa865fbe8156d1772afbf95777a91c8 --- /dev/null +++ "b/\347\216\213\345\250\201\346\226\214/20240708_postgresq\350\207\252\345\256\232\344\271\211\345\207\275\346\225\260.md" @@ -0,0 +1,43 @@ +### 自定义函数(随机插入1000万条数据) + +``` +create table if not exists blog( +title varchar(255), +content varchar(255), +author varchar(255), +nickname varchar(255), +avatar varchar(255) +); + + +create or replace function string_rand() +returns text as $$ +declare +res text; +begin + select string_agg(chr(int4(random()*25)+65),'') into res from generate_series(1,(select floor(random()*30+1)::int)); + return res; +end; +$$ language plpgsql; + +do $$ +declare total int:=10; +begin + while total >0 loop + insert into blog select string_rand() t1,string_rand() t2,string_rand() t3,string_rand() t4,string_rand() t5; + + total:=total - 1; + end loop; +end $$; + + + + + EXPLAIN ANALYZE select * from blog; + + + + +``` + +修改上传的sql文件权限为777,/root目录权限为755 \ No newline at end of file diff --git "a/\347\216\213\345\250\201\346\226\214/20240709_MySQL\343\200\201postgresql\345\244\207\344\273\275\344\270\216\350\277\230\345\216\237.md" "b/\347\216\213\345\250\201\346\226\214/20240709_MySQL\343\200\201postgresql\345\244\207\344\273\275\344\270\216\350\277\230\345\216\237.md" new file mode 100644 index 0000000000000000000000000000000000000000..55737b30038077d211acb7fe92a3bcaf5c8f871e --- /dev/null +++ "b/\347\216\213\345\250\201\346\226\214/20240709_MySQL\343\200\201postgresql\345\244\207\344\273\275\344\270\216\350\277\230\345\216\237.md" @@ -0,0 +1,49 @@ +## MySQL备份与还原 + +1. mysqldump -uroot -p wwb > /root/wwbDB.dump —— 将指定数据库中的内容导出为一个文件,并保存到root管理员的家目录中 + +2. mysql -u root -p —— 登录数据库服务 + +3. drop databases wwb; —— 删除数据库 + +4. show databases; —— 查看数据库是否被删除 + +5. create database wwb; —— 重新创建数据库 + +6. mysql -uroot -p wwb < /root/wwbDB.dump —— 使用重定向符把刚刚备份的数据库文件导入到MySQL命令中(数据恢复) + +7. ``` + mysql -uroot -p 登录 + use wwb; 进入数据库 + show tables; 查看表 + describe mybook; 查看表的结构信息 + ``` + + + +## postgresql备份与还原 + +1. 创建数据库 + +2. 连入数据库 + +3. 创建测试表,插入数据 + +4. 查看数据 + +5. 备份: + + ``` + 备份数据库的组织和结构,还有数据 + pg_dump -U postgres -d demo3 -f /root/post_dump/demo3.dump + pg_dump -U postgres -d demo3 > /root/post_dump/demo3.dump + + ``` + +6. 还原 + + ``` + psql -U postgres -d demo3 -f /root/post_dump/demo3.sql + ``` + + diff --git "a/\347\216\213\345\250\201\346\226\214/20240710_shell\345\205\245\351\227\250.md" "b/\347\216\213\345\250\201\346\226\214/20240710_shell\345\205\245\351\227\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..ff8b33978adf656338f27af1ef83fc63453cd435 --- /dev/null +++ "b/\347\216\213\345\250\201\346\226\214/20240710_shell\345\205\245\351\227\250.md" @@ -0,0 +1,31 @@ +## shell入门 + +shell是一个程序,采用C语言编写,是用户和Linux内核(kernel)沟通的桥梁。它即是一种命令语言,又是一种解释性的编程语言 + +kernel:为软件服务,接受用户或软件指令驱动硬件,完成工作 + +shell:命令解释器 + +user:用户接口,对接用户 + +###### shell脚本就是将完成一个任务的所有的命令按照执行的先后顺序,自上而下写入到一个文本文件中,然后给予执行权限 + + + +### 如何运行一个shell脚本 + +1. 给执行权限: + + chmod +x 脚本名.sh ——> 例如:chmod 644 ttt.sh + +2. 解释器直接运行(不需要给权限): + + bash 脚本名.sh + + 如果解释器是python的话: + + python 脚本名.sh + +3. 子shell:bash 和 sh + + 本shell:. 和 source \ No newline at end of file diff --git "a/\347\216\213\345\250\201\346\226\214/20240711_shell\345\237\272\347\241\200\345\222\214\345\217\215\345\220\221\344\273\243\347\220\206\343\200\201\350\264\237\350\275\275\345\235\207\350\241\241.md" "b/\347\216\213\345\250\201\346\226\214/20240711_shell\345\237\272\347\241\200\345\222\214\345\217\215\345\220\221\344\273\243\347\220\206\343\200\201\350\264\237\350\275\275\345\235\207\350\241\241.md" new file mode 100644 index 0000000000000000000000000000000000000000..8cb45a3c51fcfaad76072523c9cfc9ac9b6a4096 --- /dev/null +++ "b/\347\216\213\345\250\201\346\226\214/20240711_shell\345\237\272\347\241\200\345\222\214\345\217\215\345\220\221\344\273\243\347\220\206\343\200\201\350\264\237\350\275\275\345\235\207\350\241\241.md" @@ -0,0 +1,244 @@ +### 反向代理 + +反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率 + + + +### 负载均衡 + +- 负载均衡(Load Balance)的主要作用是采用了负载均衡算法将请求分发到集群模式中的应用服务器上,这样即使某个后台应用服务器挂了,其他应用服务器还可以正常接收请求,实现了高可用,并且集群模式模式下的应用服务器支持纵向扩展,可以应对业务快速增长带来的高并发应用场景~ +- 原理是每一个请求按时间顺序逐一被分发到不同的应用服务器,如果接收请求的应用服务器挂了,并且请求超过最大失败次数max_fails(1次),则在失效时间fail_timeout(10秒)内不会再转发请求到该节点~ + +``` +upstream defaultReverseProxyServer{ + server 192.168.0.1:8080; + server 192.168.0.2:8080; +} +``` + + + +## shell基础 + +#### shell中的管道运用 + +``` +| 管道符,意思就是让上一个命令对应上一个命令 +例如: +cat /etc/passwd ————> 直接查看每个用户的基本信息 +cat /etc/passwd | grep "root" ————> 就是使用grep命令 +``` + + + +#### shell重定向 + +``` +> 重定向输入,覆盖原数据 +>> 重定向追加输入,在原数据的末尾添加 +< 重定向输出, wc -l < /etc/passwd +<< 重定向追加输出, fdisk /dev/sdb << EOF(或者END) ....内容.... EOF(或者END) +``` + + + +#### 变量分类 + +1. 本地变量:用户私有变量,只有本地用户可以使用,保存在家目录下的.bash_profile、.bashrc文件中 + +2. 全局变量:所有用户都可以使用,保存在/etc/profile、/etc/bashrc文件中 + +3. 用户自定义变量:用户自定义,比如脚本中的变量 + + + +### 定义变量 + +变量格式: 变量名=值 + +在shell编程中的变量名和等号之间不能有空格。 + +``` +为变量追加内容 + +name=wwb +echo $name -----> wwb +#第一种方法: +"$name"666 +$name -----> wwb666 +#第二种方法: +name=${name}999 +echo $name ------> wwb999 +``` + + + +定义变量演示(变量名最好写成大写,防止冲突): + +``` +变量赋值,此种方法设置为本地变量 +NAME='wwb' +SCHOOL='mxdx' +AGE=30 +SCORE=88.88 +``` + + + +取消临时变量: + +``` +unset 变量名 +``` + + + +在家目录设置变量,在外面如何调用? + +``` +vim ~/.bash_profile +source ~/.bash_profile +echo $变量名 +使用unset 取消变量的话,重新登陆还会存在,因为登录时会自动加载家目录 +``` + + + +#### 定义全局变量: + +``` +vim /etc/profile +export NAME='wwb' + +上述设置的变量都是一次性变量,系统重启就会丢失 +如何希望本地变量或全局变量可以永久使用,可以将需要设置的变量写入变量文件中即可 +``` + + + +#### 定义永久变量: + +``` +本地变量: + tail -l ~/.bash_profile + +全局变量: + tail -l/etc/profile + export AGE=20 +``` + +## 数组 + +#### 基本数组 + +数组可以让用户一次赋予多个值,需要读取数据时只需通过索引调用就可以方便读出了 + +##### 数组语法: + +``` +数组名称=(元素1 元素2 元素3 ...) +``` + + + +##### 数组读出: + +``` +echo ${数组名称[索引]} +索引默认是元素在数组中的排队编号,默认第一个从0开始 +``` + +``` +vim array.sh + +#!/usr/bin/bash +#Author:Wang Weibing +#Created Time: 2024/06/0616:04 +#Script Description: Array script + +ARRAY1=('a' 'b' 'c' 'd') +echo ${ARRAY1[1]} +root@robin:~# bash array.sh +b +``` + + + +##### 数组赋值: + +方法一:一次赋一个值 + +ARRAY1[0]='a' + +ARRAY1[1]='b' + +ARRAY1[2]='c' + + + +方法二:一次赋多个值 + +ARRAY1=('a' 'b' 'c' 'd') + + + +##### 查看数组: + +``` +declare -a ----- 查看系统中声明过的数组 +``` + + + +##### 访问数组原素: + +``` +echo ${array1[0]}: 访问数组中的第一个元素 +echo ${array1[@]}: 访问数组中的所有元素 等同于 echo ${array1[*]} +echo ${#array1[@]}: 统计数组元素的个数 +echo ${!array1[@]}: 获取数组元素的索引 +echo ${array1[@]:1}: 从数组下标1开始 +echo ${array1[@]:1:2}: 从数组下标1开始,访问两个元素 + +``` + + + +##### 关联数组赋值: + +``` +方法一: 一次赋一个值 + +数组名[索引]=变量值 +ass_array1[index1]='aa' +ass_array1[index2]='bb' +ass_array1[index3]='cc' + +方法二: 一次赋多个值 +ass_array2=([index1]='tom' [index2]='jack' [index3]='alice' [index4]='bash shell') +``` + +案例: + +``` +vim array1.sh + +#!/bin/bash +#Author:Wang Weibing +#Created Time: 2024/06/0616:44 +#Script Description: Array1 script + +#声明两个关联数组 +declare -A ass_array1 +declare -A ass_array2 + +ass_array1[name]='wwb' +ass_array1[age]=18 + +echo ${ass_array1[name]} + +ass_array2=([name]='wvc' [age]=20) +echo ${ass_array2[name]} + +``` + diff --git "a/\347\216\213\345\250\201\346\226\214/20240712_shell\344\270\255\347\232\204\350\277\220\347\256\227.md" "b/\347\216\213\345\250\201\346\226\214/20240712_shell\344\270\255\347\232\204\350\277\220\347\256\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..47941d60c0ee740a209dad063c5b91a110328ddf --- /dev/null +++ "b/\347\216\213\345\250\201\346\226\214/20240712_shell\344\270\255\347\232\204\350\277\220\347\256\227.md" @@ -0,0 +1,90 @@ +## shell中的运算 + +#### 数学比较运算(整形) + +``` +运算符解释 +-eq 等于 +-gt 大于 +-lt 小于 +-ge 大于或等于 +-le 小于或等于 +-ne 不等于 +``` + +浮点数 + +``` +echo "1.5*10"|bc ----------- 15.0 +echo "1.5*10"|bc|cut -d '.' -f1 -------------- 15 +cut -d '.' -f1 :这是一个数字,以点为分隔符打印第一个字段 + +浮点数比较: +test `echo "1.5*10"|bc|cut -d '.' -f1` -eq 20;echo $? ----------- 1 +test `echo "1.5*10"|bc|cut -d '.' -f1` -eq $((2*10));echo $? ----------- 1 + +浮点数比较脚本 +#!/bin/bash +#Author:Wang Weibing +#Created Time: 2024/06/0709:47 +#Script Description: Numerical comparison scripts +$NUM1=`echo "1.5*10"|bc|cut -d "." -f1` +$NUM2=$((2*10)) +test $NUM1 -eq $NUM2;echo $? +``` + + + +#### 文件比较与检查 + +``` +-d 检查文件是否存在且为目录 +-e 检查文件(目录也可以)是否存在 +-f 检查文件是否存在且为文件 +-r 检查文件是否存在且为可读 +-s 检查文件是否存在且不为空 +-w 检查文件是否存在且可写 +-x 检查文件是否存在且可执行 +-O 检查文件是否存在并且被当前用户拥有 +-G 检查文件是否存在并且默认组为当前用户组 +file1 -nt file2 检查file1是否比file2新 +file1 -ot file2 检查file1是否比file2旧 +``` + + + +#### 字符串比较运算 + +``` +运算符解释,注意字符串要使用引号引起来 +== 等于 +!= 不等于 +-n 检查字符串的长度是否大于0(字符串不为空) +-z 检查字符串的长度是否为0(字符串为空) +``` + + + +#### 赋值运算 + +``` += 赋值运算 a=10 name='wwb' +``` + + + +#### 逻辑运算 + +``` +逻辑与运算 && +逻辑或运算 || +逻辑非运算 ! + +逻辑运算注意事项: + 逻辑与/或运算都需要两个或以上的条件,逻辑非运算只能一个条件 + 口诀: + 逻辑与运算 真真为真 真假为假 假假为假 + 逻辑或运算 真真为真 真假为真 假假为假 + 逻辑非运算 非假为真 非真为假 +``` +