1.@PostConstruct
1.@PostConstruct在jdk11弃用,可采用Spring的InitializingBean和DisposableBean来替代对应的功能。
2.内部类
2.内部类并不是直接调用外部传递的参数,而是利用自身的构造器对传入的参数进行备份,自己内部的方法实际调用的是自己的属性而非外部参数。
因为是对外部参数的拷贝,所以当对外部参数做出修改时,内部类中属性不会同步修改,而在代码中看来内部类是直接引用的外部变量;为了避免这样的数据不一致性,被内部类方法调用的外部参数被强制加上final修饰,保证内外参数一致性;
3.复制对象-lombok无法赋值
beancopier使用getter,第二个字母大写时 使用lombok会把第一个字母大写,第二个字母转小写,没有无法复制该字段;:使用idea生成getter;
4.mybatis
xml中’${appid}’ 如果没有引号,则sql中也不会添加’ ';
5.hutool
@Alias使用别名,多种场景下可用;
Type definition error
使用hutool json工具时,对象属性为null会被cn.hutool.json.JSONNull代替,springmvc使用@RestBody响应时无法序列化此属性,将抛出以下异常;简单解决办法为手动置该属性为null;
Type definition error: [simple type, class cn.hutool.json.JSONNull]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class cn.hutool.json.JSONNull and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.iflytek.auto.usp.common.WebApiResult[“data”])
例如:json转化对象时,json为下划线转java对象驼峰式;
6.容器
容器实际是一种进程隔离技术,通过linux的namespace技术做环境(文件系统Mount、网络Network、进程间通信IPC、主机名UTS、PID进程、用户User)隔离;通过Linux提供的cgroups机制进行硬件资源的限制;
搭建Tomcat集群,通过Nginx代理Tomcat服务器做负载均衡,对每个Tomcat的调优,合理设置设置Tomcat的最大连接数,因为Tomcat的默认最大并发数为200。适当的加大Tomcat的内存和最多线程数,设置JVM的处置大小为服务器可用内存的最大值的80%。