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应用程序中创建一个根应用程序上下文的类。它的主要作用包括:
- 加载应用程序上下文配置文件并在应用程序启动时创建Spring容器。
- 创建一个根应用程序上下文,可以加载所有应用程序需要的bean,包括数据访问对象、服务层、控制层和其他组件等。
- 支持在Web应用程序中加载多个子上下文,以便支持分层的应用程序结构。
- 在应用程序启动和停止时,自动触发相应的回调方法,可以在这些方法中进行一些初始化和清理操作,例如创建和销毁应用程序上下文等。
通过使用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要替换为你的命令名称以及命令参数。