工作心得
文章平均质量分 85
雨过天晴_6795
java工程师
展开
-
浅谈传统定时任务和分布式定时任务
为什么用定时任务?定时任务平台可以在后台自动检测数据并进行操作。主要应用在订单状态改变、后台统计、定时发送邮件或短信等。定时任务怎么部署实现?传统的定时任务可以通过可定时线程池、timertask、quartz、spring-schedule方式来进行处理。他们的依赖和代码如下面所示。maven依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spri原创 2021-11-20 20:00:09 · 1192 阅读 · 0 评论 -
超过500万海量数据怎样处理
前言最近笔者在工作中遇上一个测试人员通过压力测试反馈的问题。这个问题就是测试人员一下子制造了上千万的数据,造成某个mysql/oracle数据库表产生了500万以上的数据,造成分页查询offset过大的问题。即使查询条件加了索引以及采用懒加载策略,查询速率也还没提升。这里,笔者考虑了几种处理办法:oracle分区、分库分表、nosql法。下面对这几个方法进行表述。oracle分区法笔者在以前的公司工作时,遇上了告警数据量过多,超过1千万了,造成分页数据量过慢。当时存储告警的数据是在oracle里面,故原创 2021-10-17 19:54:30 · 1360 阅读 · 0 评论 -
knife4j使用(整合spring boot和spring cloud gateway)
一、背景前后端分离大大实现了项目的解耦合,可扩展性,以及专业人做专业事的特点。前端开发不仅仅有网页端,还有ios、安卓、小程序等,他们都可调用后端的接口。然而,传统的手写文档说明增加了后端开发的成本,同时也不利于前后端之间的沟通。与此同时,传统的浏览器直接测试法不仅不方便接口调用方法的指定,而且填写传递参数的方法耗时很大。为此swagger-ui这个能够在线生成接口说明文档及调试的框架诞生了。...原创 2020-03-08 00:11:15 · 7736 阅读 · 1 评论 -
用ApplicationEvent事件监听解决async注解不能嵌套的问题
前言笔者之前写的文章表述了async注解可以解决异步执行任务同时不影响主业务的功能的特点,很好解决响应超时出503问题影响主业务。然而,async除了在加入@Controller注解的有继承和实现的方法有坑之外,也不能够直接嵌套使用来再开一个线程。下面介绍的事件监听即可解决此类问题。ApplicationEvent简介ApplicationEvent是spring对事件监听的一种机制,采用了观察者模式来进行的。可以使核心业务与子业务进行解耦,还实现了异步事件的嵌套,也方便后期的业务的扩展。而类Appl原创 2020-08-07 15:35:43 · 922 阅读 · 0 评论 -
我所见的orm映射对比
我所见的orm映射对比前言笔者在开发和学习中接触了5种orm框架,他们各有各的优缺点,应用的场景也不一样。下面对这五种orm大体状况进行表述。1.原始jdbc原始jdbc是所有java orm映射的底层封装实现的代码,它通过数据库驱动java类字符串反射初始化驱动来创建连接。在执行完对应的sql后传递到resultset,再通过循环来封装到对应的实体类中。其优点在于可以直接迅速地执行sql,灵活将结果转换为实体类或者vo、dto,但缺点是数据库连接资源利用率不高,同时代码繁琐,开发成本高。2.qu原创 2020-06-13 13:12:14 · 211 阅读 · 0 评论 -
导入大批量数据的案例及@Async注解用法
在导入数据量较大的excel文件到数据库中,常常遇上因为性能问题导致导入失败或响应失败的问题。这里涉及的知识点包含异步执行,线程导入分片和休眠的模块。笔者在最近和之前的工作中针对踩到的坑进行分析,对上面的知识点进行表述。一般的网页请求是同步的,前端默认响应时间是30秒,最多为2分钟,这一点笔者在与前端联调时发现的。导入大量的数据到数据库中往往耗时超过2分钟,这一点超过了前端最长响应时间,前端一旦超时就容易报错(503错误)。故笔者采用异步的方式来进行导入,但是缺点是导入是否失败还不能直接响应给前端,此时笔原创 2020-05-08 23:22:57 · 1121 阅读 · 1 评论