
优化实践
文章平均质量分 69
优化
qq_16570607
一步一个脚印,在成为优秀程序员的路上。
展开
-
Java 判空新写法,干掉 if else
在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullPointerException.假设我们有两个类,他们的UML类图如下图所示在这种情况下,有如下代码这种写法,在user为null时,是有可能报NullPointerException异常的。为了解决这个问题,于是采用下面的写法这种写法是比较丑陋的,为了避免上述丑陋的写法,让丑陋的设计变得优雅。JAVA8提供了Optional类来优化这种写法,接下来的正文部分进行详细说明。原创 2023-03-20 16:20:35 · 195 阅读 · 0 评论 -
spring项目里的大事务优化
少用@Transactional注解将查询(select)方法放到事务外事务中避免远程调用事务中避免一次性处理太多数据非事务执行异步处理。原创 2023-05-15 10:22:18 · 682 阅读 · 0 评论 -
sql优化总结
在结果集中包括“合计”的例程通常要比使用游标执行的速度快。如果开发时间允许,基于游标的方法和基于集的方法都可以尝试一下,看哪一种方法的效果更好。转载 2023-04-18 14:30:55 · 394 阅读 · 0 评论 -
JAVA代码优化实践
这样做的好处是,减少了读写文件的次数,而我们都知道读写文件是非常耗时的操作。最关键的地方是定义了一个buffer字节数组,把从1.txt文件中读取的数据临时保存起来,后面再把该buffer字节数组的数据,一次性批量写入到2.txt中。IO流想必大家都使用得比较多,我们经常需要把数据写入某个文件,或者从某个文件中读取数据到内存中,甚至还有可能把文件a,从目录b,复制到目录c下等。因为这个例子中,从1.txt文件中读一个字节的数据,就会马上写入2.txt文件中,需要非常频繁的读写文件。原创 2023-04-17 18:05:15 · 401 阅读 · 0 评论 -
Java Stream API的使用
日常编程工作中,Java集合会经常被使用到,且经常需要对集合做一些类似过滤、排序、对象转换之类的操作。为了简化这类操作,Java8添加了一套新的Stream API,使用方式就像写SQL一样,大大简化了这类处理的实现代码量与可读性。原创 2023-04-17 17:19:54 · 379 阅读 · 0 评论 -
多线程事务怎么回滚?
1,最近有一个大数据量插入的操作入库的业务场景,需要先做一些其他修改操作,然后在执行插入操作,由于插入数据可能会很多,用到多线程去拆分数据并行处理来提高响应时间,如果有一个线程执行失败,则全部回滚。2,在spring中可以使用@Transactional注解去控制事务,使出现异常时会进行回滚,在多线程中,这个注解则不会生效,如果主线程需要先执行一些修改数据库的操作,当子线程在进行处理出现异常时,主线程修改的数据则不会回滚,导致数据错误。3,下面用一个简单示例演示多线程事务。原创 2023-04-17 15:41:56 · 361 阅读 · 0 评论 -
Java的CPU 飙升700%优化的真实案例
最近负责的一个项目上线,运行一段时间后发现对应的进程竟然占用了700%的CPU,导致公司的物理服务器都不堪重负,频繁宕机。那么,针对这类java进程CPU飙升的问题,我们一般要怎么去定位解决呢?原创 2023-04-17 11:14:47 · 422 阅读 · 0 评论 -
java8之在Map中新增的好用api
java8之后,常用的Map接口中添加了一些非常实用的函数,可以大大简化一些特定场景的代码编写,提升代码可读性。原创 2023-03-21 15:54:16 · 330 阅读 · 0 评论 -
mybatis批量插入5000+条数据
在我们的项目中,会不停地使用批量插入这个方法,而因为MyBatis对于含有的语句,无法采用缓存,那么在每次调用方法时,都会重新解析sql语句。乍看上去这个foreach没有问题,但是经过项目实践发现,当表的列数较多(20+),以及一次性插入的行数较多(5000+)时,整个插入的耗时十分漫长,达到了14分钟,这是不能忍的。总结一下,如果MyBatis需要进行批量插入,推荐使用 ExecutorType.BATCH 的插入方式,如果非要使用插入的话,需要将每次插入的记录控制在 20~50 左右。原创 2023-03-20 15:50:59 · 1314 阅读 · 0 评论