6.12串讲
文章目录
- 6.12串讲
- 1、关于环境变量
- 2、关于Maven仓库
- 3、关于依赖项错误的问题
- 4、 关于异常信息
- 5、关于端口被占用的问题
- 6、关于在IntelliJ IDEA中安装插件
- 7、关于将外部⽂件复制到工程中
- 8、关于DML SQL语句
- 9、关于导⼊SQL脚本
- 10、关于常见HTTP响应码
- 11、关于MySQL中的char与varchar
- 12、关于utf8mb4
- 13、关于其它操作
- 14、关于开发环境
1、关于环境变量
必须知道“环境变量”的作⽤,并将必须的命令的路径配置到环境变量的PATH中。
示例——配置Java环境变量,视频教程
注意:⽆论是CMD命令提示符窗口,还是IntelliJ IDEA中的Terminal
窗口,都是在启动时就加载了环境变量的,如果你在其后修改过环境变量的配置,必须重新打开CMD命令提示符窗口,或重启IntelliJ IDEA,才可以应⽤新的配置。
2、关于Maven仓库
必须知道Maven是有远程仓库服务器的,当在Maven工程中的 pom.xml 中添加了依赖项后,会从远程仓库服务器中下载所需的依赖项的⽂件。
应该将远程仓库服务器配置为国内的某个服务器,⼀般配置为华为云或阿⾥云的,这样可以大大提升下载依赖项的效率,并降低下载⽂件时丢失数据的⻛险。
示例——视频教程
关于华为云或阿⾥云的Maven仓库服务器,可以随意选择其中的某⼀个,如果某个服务器在某段时间表现得不够稳定时,应该切换为另⼀个。
从远程仓库服务器下载到的相关⽂件会出现在本地仓库
- 如果使⽤的是Windows操作系统,它默认会在
C:\Users\你登录系统时的⽤户的⽤户名\.m2\repository
这个位置 - 如果使⽤的是Mac操作系统,它默认会在
/Users/你登录系统时的⽤户的⽤户名/.m2/repository
这个位置 - 必须明确知道本地仓库位置,后续可能需要在此进行某些操作,例如本地仓库⽂件中的⽂件损坏时需要找到这些⽂件并删除。
3、关于依赖项错误的问题
当Maven工程(包括Spring Boot工程,因为它本身也是⼀个Maven工程)提示依赖项错误时,⾸先,应该检查依赖项的代码是否正确,如果依赖项是第三⽅的,可以从maven仓库上找到正确的依赖项代码,如果依赖项是⾃⼰定义的另⼀个模块,则应该检查被依赖的模块中的相关声明(例如ArtifactId、Group Id、Version)与添加依赖时是否⼀致。
如果依赖项的代码是正确的,应该依次尝试以下全部操作:
- 完全关闭IntelliJ IDEA
- 删除本地仓库⽂件夹
- 启动IntelliJ IDEA并打开工程,在Maven面板中点击刷新按钮
关于以上操作第2步,其实可以只删除疑似有问题的部分⽂件,而不是删除整个本地仓库,但是,后续使⽤的依赖项的关联可能⾮常复杂,不⼀定能快速的准确找到疑似有问题的⽂件,所以从操作上来看,删除整个本地仓库更简单⼀些。
如果以上操作不能解决你的问题,你还可以尝试:
- 将远程仓库服务器的配置在华为云和阿⾥云之间切换。有时可能因为⽹络波动导致某个远程仓库服务器不稳定
- 切换你的⽹络连接,例如使⽤移动 / 联通 / 电信的⼿机提供上⽹热点,或在这3种运营商之间切换
4、 关于异常信息
当程序出现异常时,在控制台会提示异常的跟踪报告,通常,以Caused By
开头的那⼀行会提示异常的类型及关键信息,这⼀行信息对于排查错误⾮常有帮助,请仔细查看。
如果异常信息存在嵌套,则会有多行Caused By
,其中,最下⽅的Caused By
提示的信息是最精准的,是最具参考价值的!但是,如果涉及某些外部⽂件的错误,例如XML⽂件的错误,则可能需要通过偏上⽅的Caused By
中的信息来确定XML⽂件的位置。
5、关于端口被占用的问题
当启⽤某个服务,提示端口被占⽤时,可以尝试修改项⽬中的配置,使⽤其它端口,当不便于使⽤其它端口时,则应该终⽌占⽤端口的进程,再启动服务。
在Windows操作系统中,在CMD命令提示符窗口中执行以下命令找出占⽤端口的进程ID:
netstat -ano |findstr 端口号
当执行以上命令后,会提示占⽤端口的进程的ID,即PID,再执行以下命令终⽌此PID对应的进程:
taskkill /f /t /im 进程ID
在Mac OS操作系统中,在终端中执行以下命令找出占⽤端口的进程ID:
lsof -i :端口号
当执行以上命令后,会提示占⽤端口的进程的ID,即PID,再执行以下命令终⽌此PID对应的进程:
kill -9 进程ID
6、关于在IntelliJ IDEA中安装插件
在IntelliJ IDEA中,安装插件的操作⽅式是固定的,以安装LOMBOK插件为例,可参考: 视频教程
由于IntelliJ IDEA的插件仓库服务器并不是国内的服务器,所以可能会出现找不到插件、⽆法安装、安装速度极慢的问题,可以稍后再次尝试,或切换⽹络连接,例如使⽤移动 / 联通 / 电信的⼿机提供上⽹热点,或在这3种运营商之间切换。
7、关于将外部⽂件复制到工程中
如果将外部⽂件(项目工程以外的⽂件)复制到工程中,可能存在IntelliJ IDEA不识别的问题:
即⽂件确实存在,但IntelliJ IDEA提示⽆此⽂件。当出现此问题时,可以通过以下操作步骤来解决:
- 删除工程的
target
⽂件夹 - 对工程的根级名称点击⿏标右键,在弹出的菜单中选择
Reload from disk
选项 - 点击窗口顶部菜单中的
Build
>Build Project
8、关于DML SQL语句
关于DML SQL语句,必须熟练掌握:
- 插⼊1条记录
- 显式的指定字段列表
- 插⼊多条记录
- 在
values
关键字右侧可以有多条记录的值
- 在
- 根据指定的条件删除记录
- 不指定条件删除记录
- 这将删除表中所有记录,在开发实践中是不允许使⽤的
- 批量删除若干条记录
- 使⽤
in
语法
- 使⽤
- 根据指定的条件更新某记录中的数据
- 不指定条件更新记录
- 这将更新表中所有记录,在开发实践中是不允许使⽤的
- 批量更新若干条记录
- 使⽤
in
语法
- 使⽤
- 使⽤统计查询
- 使⽤
count()
函数,强烈建议使⽤count(*)
,⽽不是count(字段名)
- 使⽤
- 使⽤去重查询
- 使⽤
distinct
关键字
- 使⽤
- 根据指定的条件查询某记录
- 必须显式的指定字段列表,在开发实践中不允许使⽤
*
表示字段列表 - 如果查询结果可能超过1条,必须显式的使⽤
order by
指定排序规则- 如果排序规则⽆法确实部分记录的数据,则应该在原基础上指定第二排序规则、第三排序规则等,直⾄所有记录都是经过设定的规则排序后的
- 如果查询结果的记录数可能较多,必须显式的使⽤
limit
进行分⻚处理
- 必须显式的指定字段列表,在开发实践中不允许使⽤
- 关联表查询
- 理解
join
/inner join
/left join
/right join
的使⽤ - 当多表中存在同名字段时,需⾃定义别名
- 理解
9、关于导⼊SQL脚本
在CMD命令提示符窗口中登录MySQL后,通过source
命令即可导入SQL脚本,例如:
source d:\db.sql
在执行导入之前,应该先查看SQL脚本的内容,可能需要事先创建数据库,并应用数据库后再执行导入。
10、关于常见HTTP响应码
- 官方文档(英文版)
- 官方文档(中文版)
常见HTTP响应码通俗描述(以下涉及的问题解决⽅案,在未学到对应的框架技术之前可暂时跳过):
200
:成功响应,需要注意,这仅仅表示服务器端成功的进行了响应这项操作,并不表示业务的成功,例如尝试登录时,如果⽤户名或密码错误导致登录失败,只要服务器端成功的响应了,响应码也是200302
:重定向,服务器端处理请求后,会响应此响应码和另⼀个⽬标路径,通常,浏览器收到此响应码后会⾃动请求新的⽬标路径400
:请求参数错误,例如服务器端对某个请求参数设置了“不允许为null”的约定,⽽客户端却未提交此参数,或某请求参数必须是数值类型的,客户端提交的却是⼀个⽆法转换为数值类型的参数值- 出现此问题时,应该通过断点或打桩等⽅式观察提交的请求参数,并查看服务器端对请求参数的约束
- 在Spring MVC框架中,
@RequestParam
默认具有“不允许为null”的约定 - 在Spring MVC框架中,会尝试⾃动将请求参数转换为服务器端声明的参数类型
- 在Spring MVC框架中,使⽤了Hibernate Validation验证机制后,也会对请求参数产⽣约束,具体约束需参考所使⽤的注解
- 基于以上框架的进阶框架具有同样效果,例如添加了
spring-boot-starter-web
依赖项的Spring Boot工程是使⽤Spring MVC接收请求参数的,添加了spring-boot-starter-validation
依赖项的Spring Boot工程则是使⽤Hibernate Validation实现的请求参数验证
- 在Spring MVC框架中,
- 出现此问题时,应该通过断点或打桩等⽅式观察提交的请求参数,并查看服务器端对请求参数的约束
401
:未授权,通常出现在未登录,却尝试请求必须登录才允许访问的资源时403
:禁⽌访问,通常出现在已经登录,却不具备访问权限时,例如普通⽤户尝试请求管理员权限的资源时- 出现此问题时,如果你使⽤了Spring Security框架,你应该检查Spring Security的配置类中的相关配置,例如⽩名单路径,并检查你是否开启了授权访问,如果已开启,你还应该通过断⾔或打桩等⽅式观察当前登录的⽤户的权限清单,并检查在请求资源上设置的权限规则
404
:请求的资源不存在,通常是客户端提交请求的URL错误- 出现此问题时,你应该检查客户端提交请求的URL与服务器端设置的接收请求参数的URL是否⼀致
- 在确保客户端提交请求的URL是你预期的时,关于服务器端,你应该:
- 如果你请求的是服务器端的某个静态资源,你应该检查此资源是否存在,在Spring Boot工程中,默认的静态资源⽂件夹是
src/main/resources/static
,并且,需要注意,如果你显式的配置了静态资源⽂件夹,将会覆盖此默认项 - 如果你的服务器端是通过Spring MVC框架开发的,你应该检查:
- 控制器是否已经正常启⽤,你可以在控制器类中显式的添加⽆参数构造⽅法,并在其中输出任何内容,当启动项⽬时,你应该可以在控制台看到输出语句中的内容,如果看不到,则表示控制器没有被创建,则需要检查组件扫描配置的包、控制器类是否添加了
@Controller
或@RestController
注解,如果你使⽤的是Spring Boot工程,默认组件扫描的包是创建工程时指定的Group Id和Artifact Id组件的包名 - 请求路径是由控制器类上的
@RequestMapping
注解(如果存在的话)和处理请求的⽅法上的@RequestMapping
或以此为元注解的其它注解(例如@GetMapping
等)组合得到的,你应该检查这2处的注解
- 控制器是否已经正常启⽤,你可以在控制器类中显式的添加⽆参数构造⽅法,并在其中输出任何内容,当启动项⽬时,你应该可以在控制台看到输出语句中的内容,如果看不到,则表示控制器没有被创建,则需要检查组件扫描配置的包、控制器类是否添加了
- 如果你请求的是服务器端的某个静态资源,你应该检查此资源是否存在,在Spring Boot工程中,默认的静态资源⽂件夹是
405
:请求⽅式错误,例如服务器端要求使⽤POST⽅式提交请求,⽽客户端却使⽤GET⽅式提交请求- 出现此问题时,你应该检查客户端的请求⽅式,如果是直接在浏览器的地址栏中输⼊URL提交的请求,是GET⽅式的,如果是通过HTML表单或其它异步提交⽅式,除⾮显式的使⽤POST⽅式,否则都是GET⽅式的,另外,在服务器端,你需要检查如何配置的请求URL,例如使⽤
@PostMapping
时,则限制了客户端的请求⽅式必须是POST
- 出现此问题时,你应该检查客户端的请求⽅式,如果是直接在浏览器的地址栏中输⼊URL提交的请求,是GET⽅式的,如果是通过HTML表单或其它异步提交⽅式,除⾮显式的使⽤POST⽅式,否则都是GET⽅式的,另外,在服务器端,你需要检查如何配置的请求URL,例如使⽤
406
:不可接收的,通常出现在基于Spring MVC的工程中,将服务器端的响应⽅式设定为响应JSON格式的正⽂时,如果属于此情景,你应该检查:- 是否正确的添加了
jackson-databind
依赖项 - 是否在Spring MVC配置类上添加了
@EnableWebMvc
注解
- 是否正确的添加了
500
:服务器内部错误,通常是因为服务器端出现了异常且始终未显式的捕获- 出现此问题时,你应该检查服务器端控制台的异常信息,如果⽆信息,你应该检查项⽬中是否使⽤了Spring MVC统⼀处理异常的机制,并且在处理异常时未添加
e.printStackTrace()
等⽅式将异常信息输出
- 出现此问题时,你应该检查服务器端控制台的异常信息,如果⽆信息,你应该检查项⽬中是否使⽤了Spring MVC统⼀处理异常的机制,并且在处理异常时未添加
11、关于MySQL中的char与varchar
两者相⽐, char
占⽤的存储空间略小,存读写效率略⾼,所以,在可行的情况下,应该优先使⽤ char
。通常,如果某字段的字符串长度变化不大时,则可以将字段类型设计为 char
,并不只是字符串长度完全相同时才可以使⽤,当然,如果字符串长度确实可能不同,在读取到字符值时,应该去除多余的空格。
12、关于utf8mb4
在现行的MySQL版本中,如果使⽤utf8
编码,表示的是utf8mb3
,将最多使⽤3个字节来表示1个字符,而 utf8mb4
将最多使⽤4个字节表示1个字符。
使⽤utf8mb4
将有更多的可能性,例如可以表示⼀些⽣僻字,emojo表情等,同时,由于是“最多”使⽤4字节,如果某个字符只需要3字节即可表示,也只会使⽤3字节,并不会造成存储空间的浪费,所以,通常建议将各数据表的编码显式的指定为 utf8mb4
。
13、关于其它操作
应该熟练的掌握以下操作:
- 安装IntelliJ IDEA,并配置远程Maven仓库服务器
- 视频教程
- 在IntelliJ IDEA中配置Database视图
- 视频教程
- 在IntelliJ IDEA中安装插件
- 视频教程
- 在IntelliJ IDEA中创建运⾏在Tomcat上的Maven Web APP
- 你可能此前从未做过此操作
- 视频教程
- 其它基础操作,例如配置Git等,均可在开发文档找到相关教程
14、关于开发环境
关于开发环境,应该保证以下⼏点:
- 登录操作系统的账户是具有管理员权限的,否则部分软件的安装或命令的运行会受影响
- 知道如何使⽤管理员的身份打开软件或执行命令
- 知道如何在操作系统的防⽕墙设置中添加例外,或关闭操作系统的防⽕墙
- IntelliJ IDEA是正常可⽤的,⽬前推荐使⽤的版本是v2021.1.3~v2022.3.1之间的版本
- IntelliJ IDEA已经配置了阿⾥云或华为云作为远程Maven仓库服务器,且明确的掌握通过更换
settings.xm
配置⽂件以切换这2个远程Maven仓库服务器 - MySQL或MariaDB是正常可⽤的,且已经配置好环境变量,在命令提示符窗口的任何路径下都可以执行mysql命令
- 推荐使⽤FireFox、Google浏览器,对版本没有具体要求