Java项目优化心得
本人喜欢关注项目性能优化,记录的优化手段如果有误欢迎指正.
1.需要循环创建新对象
使用克隆对象方法
2.不查询不必要的信息
现在MybatisPlus由于单表查询方便已经非常多的程序员使用.但是如果只用到某些字段,建议使用mybatis指定查询特定字段减轻服务器和网络压力.
3.需要判断目标是否包含指定字段
如果使用ArrayList迭代器遍历相当费时.改用hashset或者hashMap来解决是否包含问题
4.指定List和Map的初始化大小
当你能够确定返回值的数量,指定初始化大小能减少内存占用.(HashMap的大小最好为2的幂次方)
5.金额类型设计
不使用double
不建议使用BigDecimal
建议使用long类型.
6.对Group BY涉及的字段设置索引,经常查询的表进行索引优化.经常进行增删的表避免使用约束.
7.尽量避免加事务,锁,尤其时全局事务和全局锁.
8.尽量避免使用throw new.在微服务下,throw new大多为了能够触发Spring或者全局事务回滚.但是如果没有涉及对mysql之类的数据库修改,就避免new异常.
9.尽量避免使用包装类
10.避免使用Data,使用LocalDate/LocalTime来代替
Data属于非线程安全,不支持时区.而LocalDate/LocalTime属于JDK1.8新特性
11.使用远程Dubbo时,增改删应该避免重试
12.当执行某些耗时操作,后续代码又不依赖返回的结果并且无事务需求可以考虑使用异步线程池.
13.当没有及时性要求,需要操作数据库而且操作的是数值.可以考虑使用MQ+监听器+定时任务
14.没有特殊要求只使用ArrayList HashMap HashSet.其他几乎不用
15.对整型的海量数据进行查询统计、排序、去重;对两个集合做交集、并集运算 推荐使用BitMap
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!