月度记录-2023-3月

84 阅读5分钟

1. /oauth/token

一开始一直找不到这个接口在哪,后来发现是oauth2自带的。

在OAuth2包的org.springframework.security.oauth2.provider.endpoint.TokenEndpoint中,对应的方法是postAccessToken,用来获得token

2. ssl https

https是在http的基础上通过传输加密和身份认证保证传输的安全性,https安全的基础是ssl。

ssl被设计为使用tcp来提供一种可靠的端到端的安全服务协议,不是单个协议,而是二层协议,低层是ssl记录层,用来封装不同的上层协议,另一层是被封装的握手协议,它可以让服务器和客户机在传输数据之前,协商加密算法和加密秘钥,客户机提出自己能支持的全部加密算法,服务器选择最合适的加密算法。

3. 关于mysql步长

mysql步长是指自增列的增加量,也就是每次插入数据时,自增列的值会加上步长的大小。

步长有什么用?一般来说步长可以用在分布式数据库中保证主键的唯一性。例如有五台机器,每台机器的初始值设置为12345,然后步长为5,保证每台机器的主键都不会重复。

tips:mysql一张表一个自增id,没有给全库设置自增id的方法,需要对每张表单独设置。

4. @requestMapping(value={"1","2"})

value可以有多个。

5. @RequestParam

@RequestParam(required = false),以前一直觉得加这个没啥用,但是最近修改代码的时候发现这个很有用。可以让我添加一个参数的同时,不影响到原来的调用。

true:不写会报400。false:不写会使用默认值null

tips:如果参数是基本类型,不能赋值为null,那就嘎了。而且如果使用了defaultValue,required只能为false,参数默认为defaultValue。

defaultValue默认值是: "\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n"。因为不能在注解的default中使用null,所以用这段16位Unicode的字符串来表示空值。因为用户大概率不会输入这么个奇葩玩意。

6. idea的facets和artifacts

facets:表示某个module有的特征,比如web、strtus2、spring、hibernate等,让IDEA知道怎么对待module内容;

Artifacts:是maven中的一个概念,表示某个module要如何打包,例如war exploded、war、jar、ear等等这种打包形式;

7. war和warexploded区别

war模式:将WEB工程以包的形式上传到服务器;

warexploded模式:将WEB工程以当前文件夹的位置关系上传到服务器;

war模式相比于warexploded模式,部署速度快,但是修改后需要重新打包部署;warexploded模式相比于war模式,部署速度慢,但是修改后可以直接更新到服务器;一般来说,开发阶段用warexploded模式,上线阶段用war模式。

8. DispatcherServlet

Dispatcher:调度员

DispatcherServlet的工作是获取传入的URI,并找到处理程序(通常是Controller类上的方法)和视图(通常是JSP)的正确组合,这些组合在一起以形成应该在该位置找到的页面或资源。

9. ContextLoaderListener

公司老项目的web.xml,里面有一个,然后listener-class间接的使用了ServletContextListener。好奇这有啥用,于是了解了一下。

Spring的ServletContextListener是用于监听Web应用程序的生命周期事件,并在事件发生时触发相应的操作。它可以通过实现javax.servlet.ServletContextListener接口来实现,在Web应用程序启动和停止时分别触发contextInitialized()和contextDestroyed()方法。在这些方法中,可以进行一些初始化和清理操作,例如创建Spring应用程序上下文、加载应用程序配置、销毁应用程序上下文等。通过注册Spring的ServletContextListener,可以在Web应用程序的生命周期中获得更多的控制和灵活性。

10. Spring中的ContextLoarder.getBean(xxx.class)

在不能使用@Autowired的时候可以使用这个来获取spring所管理的bean

Spring的ContextLoader是用于在Web应用程序中创建一个根应用程序上下文的类。它的主要作用包括:

  1. 加载应用程序上下文配置文件并在应用程序启动时创建Spring容器。
  2. 创建一个根应用程序上下文,可以加载所有应用程序需要的bean,包括数据访问对象、服务层、控制层和其他组件等。
  3. 支持在Web应用程序中加载多个子上下文,以便支持分层的应用程序结构。
  4. 在应用程序启动和停止时,自动触发相应的回调方法,可以在这些方法中进行一些初始化和清理操作,例如创建和销毁应用程序上下文等。

通过使用ContextLoader,可以方便地在Web应用程序中集中管理和加载Spring的配置文件和bean定义,同时提供了对Web应用程序生命周期的管理和控制,使得应用程序的开发和维护更加简洁和高效。

11. IDEA中测试代码覆盖率Run with Coverage

在tomcat里面code coverage里面选中tracing,然后在packages and classes to include in coverage data中选择要测的类,点击run with coverage即可,测试之后,停止项目,就可以生成测试报告了。(还可以导出测试报告)

12. linux一键启动tomcat然后打开浏览器

chmod +x filename.sh 给予sh文件可执行权限

systemctl 是一个Linux中的服务管理工具,用于控制系统服务的启动、停止、重启、状态查询等操作。

xdg-open 打开浏览器

sleep 10 十秒后启动(一开始并没有设置延时打开浏览器,后来发现直接打开浏览器不会刷新,直接就卡住了。为了让浏览器打开的时候tomcat已经启动,于是设置的10,因为服务启动10秒左右,后来逐步测试改成了1。可能是由于Tomcat先要启动http服务,而http服务启动的快,所以浏览器会一直去请求而不会直接卡住)

root身份执行命令:

sudo your_command_here 其中,your_command_here要替换为你的命令名称以及命令参数。