首先,我们加上-Xms和-Xmx参数,并设置两个参数为一样大小,都为服务器内存GB总数一半再减1,这是基本调优的操作;
然后对于JDK1.8,可以把并行垃圾收集器改为并发垃圾收集器。
进阶调优则是用jstat -gc、jstat -gcutil查看大数据对象都有哪些,看能否作出优化处理。
对于底层数据结构,采用的是哈希表。
哈希表在jdk1.8之前,哈希表是数组+链表;jdk1.8及之后,哈希表是数组+链表+红黑树。
存取原理:
首先根据键,计算哈希值。
根据哈希值,计算下标,存入数组。
数组中,如果该下标下链表为空,则直接存入;
如果链表不为空,则产生了哈希冲突,进一步判断哈希值是否相等。相等,则重复了,替代掉;
如果不相等,则存入链表后面。
取时,首先计算被取元素的哈希值,然后计算其在数组中的下标,在下标中的链表中找到相同哈希值的元素,即可取出。
在jdk1.8之前,解决哈希冲突时采用的是拉链法,即直接使用链表。
1.8之后,解决哈希冲突,用红黑树。如果链表长度大于8,则扩容为红黑树;如果长度小于了6,则又退化为链表。
基本数据类型——四类八种
整数型 byte short int long
浮点型 float double
字符型 char
布尔型 boolean
String字符串
类(对象)
接口类型
数组类型
枚举类型
1.@ConditionalOnProperty
存在指定配置时,才加载类
2.@ComponentScan
开启扫描,扫描包下的@Component组件。
3.@SpringBootApplication
启动类的注解,包含3个注解,是自动配置的核心。
有。是这样做的:
在自定义的项目中首先整理好pom文件,导入好spring的依赖以及其他依赖;
然后定义好自己的Configuration类和Properties类,以及可能的Utils类;
最后在resources目录下,新建文件META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,里面写入自动配置类,就是之前的Configuration类的全名称,包括包名路径和类名,自动配置类就做好了。
我们用aop来做鉴权。如果登入者有相应的角色关键字,则放行;否则拦截功能的调用。
我们还用aop来做公共字段填充。数据库中有很多公共字段,比如新建人、新建时间、更新人、更新时间等。这些都可以用aop做填充,简化代码流程,使代码更优美。
具体来说,实现流程如下:
1.在annotation包下创建自定义注解,比如叫AutoFill
2.用一个枚举类显示不同的填入状态,比如代表更新和新增的两种状态,并放入自定义注解中。
3.在aspect包下自定义切面类
4.完善切面类的自动填充逻辑,判断更新、新增两种状态,进行不同处理。
5.在mapper中对应的方法上加自定义注解