quartz---我为什么要使用quartz
quartz是什么?怎么使用?本文不做介绍,有兴趣的朋友可以看笔者之前的博客以及自己查阅相关资料。本文笔者主要想介绍一下我为什么使用Quartz以及在“jrkj”这个项目中运用的场景。
应用场景一
更新静态数据
接着上一篇Redis的应用可知,我需要将首页所展示的数据存入redis中并且每隔一小时更新一次数据。
不知道您如果遇到这种问题如何解决,笔者在遇到这个问题时,首先想到的是多线程。当项目启动时我多起一个线程专门负责数据的查询并更新存入redis中,然后在写一个定时地每小时执行一次改更新方法。而当时一个偶然的机会听一个朋友说他们公司用了一个叫做quartz框架,简单的了解了一下我果断选择了后者。(当时主要出于两个原因:一、项目开发的时间比较紧,二、使用quartz拓展性比较好,维护起来比较方便,三、其他场景说明)。
应用场景二
自动结账
因为涉及到支付,如果学员在上完课之后,没有结课的话,这部分钱就永远是讲师的带收入而不是收入。显然这是不合理的,所以就需要一个自动结账的过程。类似于咱们在淘宝上购物如果我们不确认收货,也会默认一个时间段,如果超过这个时间段也会自动结账。
应用场景三
自动核算评价分数
学员在完成一次交易之后会对具体的某一门课程进行评价,而讲师的综合评价会核算其所授的所有的课程的所有评价并且按照一定得规则进行计算从而算出该讲师的综合评分 如果我们在每次查询讲师详情的时候再去计算这些分数的话,在数据少的时候也许没什么问题,当我们的数据量特别大的时候效率肯定是个大问题,如果我们每天凌晨3-4点的时候去核算呢?
所以这块我在数据库中增加了一个表用户存放讲师的综合评价,并在每天凌晨四点更新,如果我需要查询讲师的详细信息,我可以直接查询新建的表。
结束语
相信读者看了这篇博客和笔者的上一篇博客会发现频繁的出现一个词场景,我想,代码的任意一行都是有其存在的意义的。我们在敲代码的时候不妨问问自己,我写这段代码的应用场景是什么?我为什么要这样做,而不用另外一种方法?这样做解决了什么问题?如果每一个功能,每一个方法我们都能这样问问自己,我想这一方面能够提交我们得开发效率,另一方面也能培养了我们的业务思维(相信很多人都听过,业务思维的重要性),技术只有依托于业务才能发挥它的功效。