疑问

import 导入和 package 有以下区别:

  1. 功能和作用:

    • import 用于引入其他包中的类、接口或静态成员,以便在当前文件中可以直接使用这些引入的项。
    • package 用于声明当前文件所属的包名,将文件组织在不同的包中,以便更好地管理和组织代码。
  2. 使用范围:

    • import 可以在文件中的任何地方使用,以引入需要的类或成员。
    • package 声明只能在文件的顶部使用,并且只能在每个文件中声明一次,指示整个文件属于指定的包。

总结起来,import 用于引入其他包中的类和成员,方便在当前文件中直接使用;而 package 声明用于指定当前文件所属的包,有助于代码的组织和管理,避免命名冲突。

redis常见数据结构

Redis是一种基于内存的键值存储系统,它支持多种常见的数据结构。下面是Redis中常见的数据结构:

  1. 字符串(String):字符串是Redis中最基本的数据结构,它可以存储任意类型的文本数据,例如用户信息、计数器等。
  2. 哈希表(Hash):哈希表是一个键值对集合,其中的键和值都是字符串类型。哈希表适用于存储对象的属性和值,例如存储用户信息、配置信息等。
  3. 列表(List):列表是一个有序的字符串集合,可以在列表的两端进行元素的插入和删除操作。列表适用于存储按照顺序排列的数据,例如消息队列、新闻列表等。
  4. 集合(Set):集合是一个无序且唯一的字符串集合,支持添加、删除和检查元素的操作。集合适用于存储不重复的元素,例如标签、关注列表等。
  5. 有序集合(Sorted Set):有序集合是一个有序且唯一的字符串集合,每个元素都关联一个分数用于排序。有序集合适用于存储带有权重或分数的数据,例如排行榜、优先级队列等。

mysql的ACID

MySQL的四种特点是:

  1. 原子性(Atomicity):原子性是指数据库事务的操作是不可分割的,要么全部执行成功,要么全部失败回滚。即事务中的操作要么全部提交成功,要么全部回滚,保证数据的一致性。
  2. 一致性(Consistency):一致性是指事务开始前和结束后,数据库的完整性约束没有被破坏。在事务执行过程中,数据库从一个一致状态转换到另一个一致状态,不会因为事务的执行而破坏数据的完整性。
  3. 隔离性(Isolation):隔离性是指并发执行的事务之间是相互隔离的,每个事务在执行过程中不受其他事务的干扰。隔离性保证了事务在执行过程中的数据是独立的,不会相互影响。
  4. 持久性(Durability):持久性是指事务一旦提交成功,其对数据库的修改就是永久性的,即使发生系统崩溃或重启,数据也能够被恢复到事务提交后的状态。持久性保证了数据的持久存储,防止数据的丢失。

这四种特点(原子性、一致性、隔离性、持久性)被称为ACID(Atomicity, Consistency, Isolation,
Durability)特性,它们是关系型数据库管理系统(RDBMS)中事务处理的核心原则。

MySQL的隔离机制

MySQL的隔离机制是指数据库管理系统在多个并发事务同时执行时,为了保证数据的一致性、隔离性和并发性,采取的一系列策略和规则。

MySQL提供了四种标准的隔离级别,每个隔离级别提供不同的并发控制机制和事务隔离程度:

  1. 读未提交(Read Uncommitted):最低的隔离级别,事务可以读取未提交的数据。该级别存在脏读(Dirty Read)的问题,即读取到其他事务尚未提交的数据。

  2. 读已提交(Read Committed):保证一个事务只能读取到已经提交的数据。解决了脏读的问题,但可能出现不可重复读(Non-repeatable
    Read)的问题,即同一个事务中多次读取同一数据可能得到不同的结果。

  3. 可重复读(Repeatable Read):保证在同一事务中多次读取同一数据时,得到的结果是一致的。解决了不可重复读的问题,但可能出现幻读(Phantom
    Read)的问题,即同一个事务中多次查询同一范围的数据结果集不一致。

  4. 串行化(Serializable):最高的隔离级别,通过强制事务串行执行来避免并发问题。保证了最高的数据隔离性,但可能导致并发性能下降。

在实际应用中,可以根据具体的业务需求和并发访问情况选择合适的隔离级别。一般来说,可重复读是MySQL的默认隔离级别,可以满足大多数应用的需求。如果对数据的一致性要求更高,可以选择串行化隔离级别,但需要注意性能可能会受到影响。

前后端分离

工程结构

后端部署在Tomcat服务器中
前端部署在Nginx服务器中

yapi部署

mongod还是没有配置好,所以yapi还是无法使用

swagger部署

  • @Api 注解用于类上,说明该类的作用 使用tags属性说明该类的作用
  • @ApiOperation 注解用于方法,说明方法的作用
  • @ApiParam 注解用于参数上,说明参数的作用
  • @ApiModel 注解用于类上,表示对类进行说明,用于参数用实体类接收
  • @ApiModelProperty 注解用于方法,字段,表示对model属性的说明或者数据操作更改
  • @ApiImplicitParam 注解用于方法,表示单独的请求参数 属性有:name(参数名)、value(参数说明)、dataType(数据类型)、paramType(
    参数类型)、example(举例说明)、required(是否必填)、defaultValue(默认值)
  • @ApiImplicitParams 注解用于方法,包含多个 @ApiImplicitParam

mysql tomcat jdk lrzsz

什么是jdk

JDK(Java Development Kit)是Java开发工具包的缩写,它是一组用于开发和编译Java应用程序的软件工具和库的集合。

JDK包括以下主要组件:

  1. 编译器(javac):JDK提供了Java编译器,用于将Java源代码(以.java文件形式)编译成字节码文件(以.class文件形式)。

  2. Java运行时环境(JRE):JDK包含JRE,它是Java程序的运行时环境。JRE包括Java虚拟机(JVM)和Java标准类库,用于执行和运行Java应用程序。

  3. 开发工具:JDK提供了丰富的开发工具,如调试器(jdb)、应用程序打包工具(jar)、文档生成工具(javadoc)等,用于简化和加速Java应用程序的开发和部署过程。

  4. 类库:JDK包含Java标准类库,它是一组提供常用功能和API的Java类和接口的集合。这些类库包括用于字符串处理、输入输出操作、网络通信、图形界面开发、多线程编程、数据库连接等功能。

JDK是Java开发的基础和核心,用于创建、编译和运行Java应用程序。它提供了开发者所需的工具和资源,使开发人员能够在各种平台上构建和部署Java应用程序。

请注意,JDK与JRE是不同的。JRE只包含运行Java应用程序所需的组件,而JDK除了包含JRE之外,还包含用于Java应用程序开发的编译器和开发工具。

什么是tomcat

查看服务是否启动

  1. 查看日志 查看 logs 目录下面的 catalina.out 日志
  2. 查看进程 ps -ef | grep tomcat

systemctl

对服务启动,暂停
不要求会背

  • 查看防火墙:systemctl status firewalld
  • 暂时关闭防火墙:systemctl stop firewalld
  • 永久关闭防火墙:systemctl disable firewalld
  • 开启防火墙:systemctl start firewalld
  • 重新加载防火墙:firewall-cmd --reload
  • 开放指定端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent
  • 关闭指定端口:firewall-cmd --zone=public --remove-port=8080/tcp --permanent
  • 查看开放端口:firewall-cmd --zone=public --list-ports

结束进程

  • kill -9 进程ID
  • -9 表示强制结束

mysql

  • 删除mariadb:rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
  • 配置外部服务器可以访问:vi /etc/my.cnf,注释掉 bind-address=
  • 重启mysql服务:systemctl restart mysqld
  • 登录mysql:mysql -uroot -p
  • 修改密码:set password for root@localhost = password('123456');
  • 创建远程登录用户:grant all privileges on *.* to 'root'@'%' identified by '123456';
  • 刷新权限:flush privileges;
  • 退出mysql:exit;
  • 重启mysql服务:systemctl restart mysqld
  • 查看mysql状态:systemctl status mysqld
  • 查看mysql版本:mysql -V
  • 查看mysql进程:ps -ef|grep mysql
  • 查看mysql端口:netstat -anp|grep mysql
  • 查看mysql日志:vi /var/log/mysqld.log

lrzsz

  • yum install lrzsz
  • rz 上传
  • sz 下载

代码手动打包

  • IDEA中点击package,就可以把项目打包成jar包了
  • 再使用re命令把jar包上传到服务器上
  • java -jar xxx.jar 这个命令的作用是:运行jar包

代码自动打包

  • 安装maven
  • 配置环境变量

变量配置:在根目录:etc/profile

  • JAVA_HOME=/usr/local/jdk1.8.0_171
  • PATH=$JAVA_HOME/BIN:$PATH
  • export MAVEN_HOME=/usr/local/apache-maven-3.5.4
  • export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH

对于文件的权限

执行权限的标识符是:x

  • r (读权限):数值为 4
  • w (写权限):数值为 2
  • x (执行权限):数值为 1
  • -rw-r–r–. 1 root root 769 4月 4 2022 bootStart.sh
  • 文件所有者 用户组 其他用户

使用八进制数进行授权

chmod 777 xx.sh