type
status
date
slug
summary
tags
password
category
Property
May 26, 2024 08:46 AM
icon
学的时候感觉到手很累,而不是大脑很累
学开发一定要多抄代码
一. Java语法Java基本概念二. 配置git环境与项目创建 项目简介 Git前后端 vue3三. 创建游戏与菜单页面四. 配置Mysql与注册登录模块配置环境变量mysql服务的关闭与启动,以及常用命令在IDEA中配置MySQL配置SpringBootSpringBoot中的常用模块修改Spring Security编写API
一. Java语法
Java基本概念
- JDK、JRE、JVM的关系:
- JDK:Java Development Kit,Java开发工具包
- JRE: Java Runtime Environment,Java运行环境
- JVM:Java Virtual Machine,Java虚拟机
- JDK包含JRE,JRE包含JVM
- JDK版本选择
- 目前JDK1.8(也叫JDK8,注意不是JDK18)用得最多
- Java代码的编译运行流程
- 将Java源码编译成Java字节码。
- 使用JVM将Java字节码转化成机器码。
- JVM作用:跨平台、内存管理、安全。
- JSE、JEE、JME的区别
- JSE: Java Standard Edition,标准版
- JEE:Java Enterprise Edition,企业版
- JME: Java Mirco Edition,移动版
- Spring是JEE的轻量级替代品
- SpringBoot是Spring + 自动化配置
二. 配置git环境与项目创建
项目简介
驱动
项目:游戏AI对战平台 King of Bots(KOB)
参考botzone.org.cn
项目框架图:
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F13d5f67b-84ef-4697-92f8-fac38e183453%2Fa492f3ac-b30e-43f6-973a-c14d099eb4f8%2FUntitled.png?table=block&id=bf13ae5d-f6dc-4b10-8515-b42e46cf2e2f&t=bf13ae5d-f6dc-4b10-8515-b42e46cf2e2f&width=672&cache=v2)
前后端分离,一套后端代码可以对应多个前端(web,APP,小程序)
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F13d5f67b-84ef-4697-92f8-fac38e183453%2F5c021a4f-c676-4a1d-a27d-594991716459%2FUntitled.png?table=block&id=3468f776-0379-49d7-ae72-0575c2a978f5&t=3468f776-0379-49d7-ae72-0575c2a978f5&width=624&cache=v2)
- 项目包含的模块
- PK模块:匹配界面(微服务)、实况直播界面(WebSocket协议)
- 对局列表模块:对局列表界面、对局录像界面
- 排行榜模块:Bot排行榜界面
- 用户中心模块:注册界面、登录界面、我的Bot界面、每个Bot的详情界面
- 前后端分离模式
- SpringBoot实现后端
- Vue3实现Web端和AcApp端
Git
Git 用来:
- 存档
- 同步不同机器上的代码
可以看看 Acgit 或者 git 创建一个仓库后的提示代码
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F13d5f67b-84ef-4697-92f8-fac38e183453%2Fff9a09c3-944d-422f-a007-5caf235a19d4%2FUntitled.png?table=block&id=1b2cfe5a-285a-4f78-881f-9d69dfd00246&t=1b2cfe5a-285a-4f78-881f-9d69dfd00246&width=720&cache=v2)
前后端
一般服务模型:
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F13d5f67b-84ef-4697-92f8-fac38e183453%2Fd83cea6b-e699-4982-ae8f-47cbaf239904%2FUntitled.png?table=block&id=c5981a22-0467-47e2-86ed-0b62478218b2&t=c5981a22-0467-47e2-86ed-0b62478218b2&width=720&cache=v2)
前后端不分离:发一个请求,直接将html发过来,示意图跟上面一样(这里字符串就是html)
前后端分离:
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F13d5f67b-84ef-4697-92f8-fac38e183453%2F42a71c7f-5696-4c5b-847e-09f48e760ce1%2FUntitled.png?table=block&id=794695cc-ed67-42f5-b630-e382874945c3&t=794695cc-ed67-42f5-b630-e382874945c3&width=768&cache=v2)
MVC:M对应model数据库,V对应view(html),C对应controller
vue3
先装
Nodejs
再装
@vue/cli
,执行: npm i -g @vue/cli
vue启动:
vue ui
JS的this 与 python的self Python 的self
和 JavaScript 的this
在语言层面上有一个重要的区别:Python 的self
是显式传递的,必须在方法的参数列表中声明;而 JavaScript 的this
是隐式传递的,不需要在函数的参数列表中声明。
三. 创建游戏与菜单页面
四. 配置Mysql与注册登录模块
数据库视为数组即可
配置环境变量
将
C:\Program Files\MySQL\MySQL Server 8.0\bin
(如果安装到了其他目录,填写相应目录的地址即可)添加到环境变量PATH
中,这样就可以在任意目录的终端中执行mysql
命令了。mysql服务的关闭与启动,以及常用命令
(默认开机自动启动,如果想手动操作,可以参考如下命令)
- 关闭:
net stop mysql80
- 启动:
net start mysql80
连接用户名为
root
,密码为123456
的数据库服务:mysql -uroot -p
123456
show databases;
:列出所有数据库
create database kob;
:创建数据库
drop database kob;
:删除数据库
use kob;
:使用数据库kob
show tables;
:列出当前数据库的所有表
create table user(id int, username varchar(100))
:创建名称为user的表,表中包含id和username两个属性。
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F13d5f67b-84ef-4697-92f8-fac38e183453%2F16c5ad93-4bd5-43ba-b6ab-0bcf18347144%2FUntitled.png?table=block&id=b99200d6-e8a0-4289-b1db-4130139208d6&t=b99200d6-e8a0-4289-b1db-4130139208d6&width=528&cache=v2)
drop table user;
:删除表
insert into user values(1, 'zyl');
:在表中插入数据
select * from user;
:查询表中所有数据
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F13d5f67b-84ef-4697-92f8-fac38e183453%2F75a5bdaa-8452-4558-9a55-aa3264a5ac8d%2FUntitled.png?table=block&id=e086179c-57e0-4c7c-b1fa-435f0d3b78c5&t=e086179c-57e0-4c7c-b1fa-435f0d3b78c5&width=443&cache=v2)
delete from user where id = 2;
:删除某行数据
exit
退出
在IDEA中配置MySQL
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F13d5f67b-84ef-4697-92f8-fac38e183453%2Fc84424e5-1efe-402c-b8a7-7ed89a802807%2FUntitled.png?table=block&id=db281a97-b141-4c41-8217-c54c514eada0&t=db281a97-b141-4c41-8217-c54c514eada0&width=576&cache=v2)
配置SpringBoot
- 在pom.xml文件中添加依赖:
- 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
- 在application.properties中添加数据库配置:
SpringBoot中的常用模块
pojo
层:将数据库中的表对应成Java
中的Class
mapper
层(也叫Dao
层):将pojo
层的class
中的操作(增删改查),映射成sql
语句
service
层:写具体的业务逻辑,组合使用mapper
中的操作
controller
层:负责请求转发,接受页面过来的参数,传给Service
处理,接到返回值,再传给页面(调度Service)
Django里的
model
对应这里的pojo
层和mapper
层,view
则对应service
层和controller
层修改Spring Security
- 实现
service.impl.UserDetailsServiceImpl
类,继承自UserDetailsService
接口,用来接入数据库信息
- 实现
config.SecurityConfig
类,用来实现用户密码的加密存储
- 实现
utils.JwtUtil
类,为jwt
工具类,用来创建、解析jwt token
- 实现
config.filter.JwtAuthenticationTokenFilter
类,用来验证jwt token
,如果验证成功,则将User
信息注入上下文中 配置config.SecurityConfig
类,放行登录、注册等接口
重写是对已有参数列表相同的同名方法重写
重载是对已有方法再多写一个同名但不同参数列表的方法
编写API
- 将数据库中的
id
域变为自增 - 在数据库中将
id
列变为自增 - 在
pojo.User
类中添加注解:@TableId(type = IdType.AUTO)
- 实现
/user/account/token/
:验证用户名密码,验证成功后返回jwt token
(令牌)
- 实现
/user/account/info/
:根据令牌返回用户信息
- 实现
/user/account/register/
:注册账号