### 新功能

远程请求本地文件, 热更新, 聊天框, 未来添加的功能, 断线重连



###  全局设置



1.  计算全部代码量

```
 find . -name *.java | xargs cat | wc -l 
```





因为用户输入的文本默认是 NFC 形 式。不过,安全起见,保存文本之前,最好使用 normalize('NFC',
user_text) 清洗字符串

#####  注解

```
import org.springframework.web.bind.annotation.RestController;
@RestController

import org.springframework.web.bind.annotation.RequestMapping;
@RequestMapping

    @GetMapping
    @PostMapping
    
import org.springframework.beans.factory.annotation.Autowired;
@Autowired  # 添加autowired前要先添加Mapper
autowired需要在类前面添加services

@Service
public class LoginServiceImpl implements LoginService {

```





##### 依赖

```
Spring Boot Starter JDBC
Project Lombok
MySQL Connector/J
mybatis-plus-boot-starter
mybatis-plus-generator
spring-boot-starter-security    # 登录安全验证
jjwt-api
jjwt-impl
jjwt-jackson

joor-java-8  动态编译代码包
```



##### 创建微服务

1. 创建父项目, 删除src,

   1.1 从maven仓库中添加spring-cloud-dependencies依赖

2. 创建子项目

   2.1 创建文件新建- 新建-新模块

   2.2 名称, 高级-组 设置路径

   2.3 添加依赖

   2.4 创建application.properties 设置端口号server.port = 3152

   2.5 定义springboot入口, 并统一入口类名

##### 前端

```
vs code 插件
Live Server
Auto Rename Tag
Auto Rename Tag 插件可以在修改HTML 标签的时候,自动修改标签对名称
点击settings,然后输入format,然后勾选上Format On Save
```



```
#安装nodejs  安装完毕后,用管理员启动cmd
#1.检查
node -v
npm -v
#2.创建两个目录:
C:\Users\huali\3D Objects\node\node_cache
C:\Users\huali\3D Objects\node\node_global
#3.设置global cache路径
npm config set prefix "C:\Users\huali\3D Objects\node\node_global"
npm config set cache "C:\Users\huali\3D Objects\node\node_cache"
#4.修改用户的环境变量
添加:Path->
	C:\Users\huali\3D Objects\node\node_global
	C:\Users\huali\3D Objects\node\node_cache

#5.修改系统变量
添加:NODE_PATH  C:\Users\huali\3D Objects\node\node_global\node_modules
添加:Path  C:\Users\huali\3D Objects\node\node_global
           C:\Users\huali\3D Objects\node\node_cache

#6.修改镜像
npm config get registry
npm config set registry https://registry.npmmirror.com
npm config get registry
npm install -g cnpm --registry=https://registry.npm.taobao.org

#7.测试安装
npm install express -g

#8.安装vue
npm install -g @vue/cli
#9.启动
vue ui

#10
插件 router, vuex, 
依赖 bootstrap, popperjs/core , jquery , ace-builds, vue3-ace-editor

将输入框修改为代码框前端依赖 vue3-ace-editor
```



##### 日志

首先,您需要在application.properties或application.yml文件中配置日志级别和日志文件的路径。这个文件通常位于src/main/resources目录下。  如果您使用的是application.properties,可以添加以下配置

```
logging.level.root=INFO
logging.file.name=mylog.log
```

例如,在BackendApplication.java中, 删除原有的日志文件

```
@SpringBootApplication
public class BackendApplication {

    private static final Logger logger = LoggerFactory.getLogger(BackendApplication.class);


    public static void main(String[] args) {

        LoggerConfig.setLogger();

        logger.info("Starting application");
        SpringApplication.run(BackendApplication.class, args);
    }

}

```

在config.LoggerConfig中

```
package com.kob.backend.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class LoggerConfig {

    private static final Logger logger = LoggerFactory.getLogger(LoggerConfig.class);

    public static void setLogger() {
        Path logFilePath = Paths.get("mylog.log");
        if (Files.exists(logFilePath)) {
            try {
                Files.delete(logFilePath);
                logger.info("Existing log file deleted");
            } catch (IOException e) {
                logger.error("Error deleting log file", e);
            }
        }

        logger.info("日志启动成功");
    }


}
```

##### 安装mysql

```
使用mybatis plus 不需要写任何mysql语句

账号: root

密码: 1234

添加环境变量

关闭:net stop mysql80
启动:net start mysql80
```

##### application.properties

1. 端口
2. 数据库参数
3. logger依赖

第一行账号, 第二行密码, 第三行数据库名字需要修改为自己的

```
spring.datasource.username=root 
spring.datasource.password=1234
spring.datasource.url=jdbc:mysql://localhost:3306/kob?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
```



##### 跨域验证问题

添加 CorsConfig类





### 功能

##### 4.1 配置数据库

4.1.1密码加密

1. 跨域问题 CorsConfig

2. 配置数据库, 添加pom.xml依赖, 在resources/application.properties中添加配置

3. 测试数据库, 使用queryWrapper封装查询条件

4. 添加授权认证机制, 修改Spring Security,   		实现 UserDetailsServiceImpl implements UserDetailsService 没有的时候只能用默认账号登录, 用来管理用户名密码.

5. 实现config.SecurityConfig类,用来实现用户密码的加密存储

4.1.2访问限制

##### 4.2 配置数据库

​	4.2.1 jwt验证

​	4.2.2 pojo中的类对应数据库修改, 如对id添加自增

​	4.2.3 写登录验证接口,  先写service, 在写impl, 最后写controller

​		代码执行过程, 先进入controller, 在进入service

##### 4.3. 配置数据库

1. 前端页面授权
2. 特
3. 登录持久化

##### 5.1

注意数据库里面用下划线命名, 在pojo中需要用驼峰命名相对应,  serviceimpl中要用下划线与数据库一直使

1. 创建机器人数据库和对应的网页

   1.1 创建pojo

   1.2 创建mapper

   1.3 创建4个api

    	1.3.1 创建service

   ​     1.3.2 实现service impl

​			1.3.3 实现controller

​	

配置security, 使其可以验证账号密码



### 八股文

http只能客户端向服务器请求, 服务器无法主动发送信息给客户端

websocket可以双向发送信息