20230608学习记录

20230608学习记录

目标:

  • 了解linux(常用命令,vim使用)
  • linux安装jdk
  • linux安装docker
  • docker中下载mysql并运行

一、了解linux

1.1. linux常用命令

1.1.1. ls

显示当前文件下的目录

ls -a :显示全部目录

ls -l :显示长格式目录(文件类型、权限、时间、用户)

显示结果

drwxr-xr-x.  2 root root   19 67 16:42  account
1.1.2. cd

切换目录

cd / :进入根目录

cd ~ :进入root目录

cd .. :退回上级目录

1.1.3. pwd

显示当前所在目录路径

[root@localhost test]# pwd
/var/test
1.1.4. mkdir

创建空目录

mkdir -p :层级创建

1.1.5. touch

创建空文件

#在var下的test下创建test.txt文件
[root@localhost test]# touch /var/test/test.txt
[root@localhost test]# ll
总用量 8
-rwxrwxrwx. 1 root root 119 68 11:21 hello.html
-rw-r--r--. 1 root root 107 68 11:13 HelloWorld.java
-rw-r--r--. 1 root root   0 68 22:48 test.txt
1.1.6. rm

删除文件/文件夹

rm xxx :删除文件,目录,只能删除空目录

rm -f :不做确认提示

rm -r / rm -R :递归删除指定目录下的所有文件和目录,每一层会作提示

rm -rf :不作提示的删除指定目录本身以及子级目录和文件

1.1.7. cp

复制文件

cp source dest

1.1.8. mv

移动文件

mv source_file(文件) dest_file(文件) :将源文件改为目标文件名

mv source_file(文件) dest_directory(目录)文件移动到目标目录

mv source_directory(目录) dest_directory(目录) 目标目录已存在,将源目录移动到目标目录下;目标目录不存在则将源目录改名为目标目录

1.1.9. cat

连接到指定文件,并输出内容在控制台

1.1.10. chmod

修改文件权限

  1. 用户分三级 文件拥有者 | 和文件拥有者属于同一个群体者 | 其他用户 分别用u g o 表示

权限分个 r读权限 w写权限 x执行权限

权限最前面 -:表示是个文件,d表示是个目录

修改权限的基本格式:chmod [ugo] [±=] [rwx]

chmod u+w test.txt :给test.txt文件的拥有者添加 写权限

chmod g=r test.txt :给test.txt文件的组群用户赋予 读权限(=什么权限,就只有什么权限)

chmod o-x test.txt :给test.txt文件的其他用户删除 执行权限

  1. 还可以将权限按二进制位数表示

r=4(100);w=2(010);x=1(001)

那么设置什么权限,使用各自代表的数字相加就行

chmod 777 test.txt :给test.txt文件的拥有者赋予 读写可执行权限、组群用户赋予 读写可执行权限、其他用户赋予 读写可执行权限

1.1.11. grep

查找文件里符合条件的字符串,并显示所在那一行数据

grep "被查找的字符串" 文件名

[root@localhost /]# grep "hello" /var/test/HelloWorld.java
    System.out.println("hello world");
1.1.12. whoami

显示当前登录系统的用户名

1.1.13. su

切换用户

[wulisoulmate@localhost test]$ su root
##此处密码不会显示
密码:
[root@localhost test]# 
1.1.14. man

命令的帮助

man ls :显示ls命令的帮助

1.1.15. ifconifg

查看当前网络接口信息

1.1.16. ping

ping IP地址

1.1.17. >

输出内容到指定文件中,如果是存在的文件,覆盖内容

1.1.18. >>

输出内容到指定文件中,如果是存在的文件,追加内容

ifconfig >> ip.txt :将接口信息内容重定向写入ip.txt文件

1.2. 常见目录

1.2.1. usr

用户安装的软件资源放在该目录下

1.2.2. mnt

放置挂载设备的文件目录

1.2.3. var

放置临时的文件

1.3. vim基本使用

  1. 使用vim命令进入文件编辑界面

vim xxx.txt

image-20230608110112547

  1. 按i 进入可编辑状态

image-20230608110128531

  1. 输入完成后,按esc退出编辑状态,然后按出冒号(shift+;)进入末行模式

输入wq保存并退出

1.3.1. 末行模式下 set nu命令

显示行数序号

image-20230608111321333

2. 在linux中安装Docker

2.1. Docker

Docker是一个开源的应用容器引擎,可以让开发者构建应用程序时,将它与其依赖环境一起打包到一个容器中,然后很容易地发布和应用到任意平台中

不会产生“本地运行没问题,可一到服务器上就不行了”的情况,即避免不同服务环境导致的部署问题。

镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像

容器(Container):镜像中的应用程序运行后形成的进程就是容器,docker使不同的容器相互隔离。

Docker如何解决不同系统环境的问题

操作系统大致可以分为,系统应用、内核、底层硬件;内核于硬件进行交互,对外提供了内核指令让外部可以操作硬件;不同系统应用将内核提供的指令进行封装为不同的函数库;因此对CentOS和Ubuntu等内核为Linux的操作系统来说,无非是提供的系统应用不同,函数库不同,调用内核指令的方式不同。

假设一个CentOS版本的Mysql,装在Ubuntu系统中,无法调用Ubuntu的函数库。

而Docker镜像已经包含了应用程序其所需的依赖、函数库、环境、配置,在不同的操作系统运行时,直接基于打包的函数库,就可以使用内核运行了。

2.2. 安装docker

yum -y install docker

2.3. 启动docker

systemctl start docker

2.4. 设置开机自启动

systemctl enable docker

2.5. 重启docker

systemctl restart docker

3. Docker中安装mysql

3.1. docker中搜寻是否有mysql镜像

docker search mysql

3.2. 拉取下载镜像

docker pull mysql

3.3. 查询docker中下载好的镜像

docker image ls

3.4. 创建并运行mysql镜像容器

docker run -itd --privileged=true --name=mysql_3306 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=99120805 mysql

--privileged=true 设置权限 容器使用真正的 root 权限

--name=mysql_3306 设置容器名字

-p 3306:3306 设置宿主和容器之间的端口映射,宿主端口:容器端口,宿主端口:linux的3306端口,容器端口:mysql运行时容器中的端口3306,应设置映射后,从外部可以通过linux的3306端口访问容器运行的mysql

-e 此处设置mysql root用户的密码

3.5. 列出容器

查看容器是否启动成功

#查看启动的容器
docker ps 
#查看所有容器
docker ps -a

3.6. 进入MySQL容器的bash终端

进入可以操作mysql的命令符终端

docker exec -it mysql_3306 bash

mysql_3306 :为容器名字

3.6.1. 登录mysql
mysql -u root -p
3.6.2. 退出bash终端:
exit

3.7. 重启、停止、删除容器

docker start 容器名称
docker stop 容器名称
#先停止容器再删除
docker rm 容器名称

3.8. 无法连接的情况

3.8.1. IPV4转发禁用

解决方法

# 编辑 etc目录下的sysctl.conf文件
vim /etc/sysctl.conf
# 添加该语句
net.ipv4.ip_forward = 1

# 退出编辑,重启网络和docker
systemctl restart network
systemctl restart docker
# 检查设置是否成功
sysctl net.ipv4.ip_forward
# 成功
net.ipv4.ip_forward = 1
3.8.2. 关闭linux的防火墙
systemctl stop firewalld

#关闭后

3.9. 下载太慢可以配置本地镜像库

修改:/etc/docker/daemon.json 文件

{
"registry-mirrors":["https://ung2thfc.mirror.aliyuncs.com"]
}

4. 项目演化

4.1. 数据库迁移

本机数据库中的表移到linux上的mysql中,然后项目中的数据库连接换成连接到linux中的数据库

spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://192.168.200.71:3306/book_db?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
      username: root
      password: 99120805

4.2. 添加日志

  1. 需要使用日志的类中添加注解
@Slf4j
public class BookController {
}
  1. 配置日志级别
logging:
  level:
    com.wnhz.bm: debug
  1. 使用日志方法
@GetMapping("/findAll")
public RespData findAll(){
    long start = System.currentTimeMillis();
    List<Book> books = bookService.findAll();
    long end = System.currentTimeMillis();
    //debug级别的日志
    log.debug("查询所有功能耗时"+(end-start)+"毫秒");
    
    return RespData.respData(ResultCode.BOOK_QUERY_SUCCESS,books);
}

4.3. 使用前端与后端交互

前几天使用junit测试service,使用knife4j工具测试API接口;现在可以创建简单的前端页面与后端接口进行交互

4.3.1. vue+element+axios

完成一个简单的界面测试前后端的交互

4.3.1.1. 熟悉axios
  1. 添加cdn
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  1. 使用案例
axios.get("http://192.168.200.47:9090/api/book/findAll")
    .then(function (resp) {
    console.log(resp.data.results)
    vueApp.bookTable = resp.data.results;
})
    .catch(function (error) {
    // 处理错误情况
    console.log(error);
})
    .finally(function () {
    // 总是会执行
});

5. 拓展知识

5.1. 什么是cdn

cdn (Content Delivery Network)内容分发网络,依靠部署在各地的边缘服务器(用户访问相对集中的地区或网络),通过中心平台的负载均衡、内容分发、调度等功能模块,使用户的访问指向距离最近的工作正常的缓存服务器上,就近获取所需内容,降低网络拥塞,当某一个节点出现问题时,通过其他节点服务器仍然可以完成数据传输工作,可以提高用户访问响应速度和命中率。

项目中静态资源很多,请求量也很大,并且这些文件对于访问速度要求极高,占据很高的带宽,影响对后端的动态请求,需要考虑对静态资源进行加速;
提前把静态资源存到了 CDN 节点,然后每个请求网站的用户从就近节点获取内容,大大缩短网络的长距离传输和网络拥堵的状况下的访问时间

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值