
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
模板方法是一种非常简单的设计模式,只要能够理解面向对象中的继承与多态就能够理解这种设计模式,我们可以在很多的框架源码中找到它的身影。同时在我们的日常开发中,它一般是用在同类型且不同实现方式的业务逻辑中,抽取公共逻辑,简单的说就是,模板方法经常和策略模式结合使用。《SpringBoot优雅使用策略模式》本篇文章介绍了什么是模板方法、模板方法的简单实现与在SpringBoot中的实现的。然后对比了模板

状态模式一般是用在对象内部的状态流转场景中,用来实现状态机。什么是状态机呢?状态机是对状态转移的抽象,由事件状态动作组成,事件有时候也被称为转移事件或者转移,当事件触发时,可以将状态由一个状态变更为另一个状态,并执行动作。其中,事件和状态是必须存在的,动作可以不要。下面是一张状态图,表达的就是一个状态机的模型。通俗来讲,就是对状态的变更做了一定的限制,不能随意的修改状态,而是只有处于某个特定的状态

在Java开发中,对于需要做性能优化的接口,可以通过StopWatch优雅的实现各个节点的耗时监控,根据获取到的监控数据再针对性的进行优化。方法的调用,相对于背景中的两个时间相减,语义会更加明确一点。如果想要计算两个阶段之间的耗时的话,可以写一个新的StopWatch来继承Apache的StopWatch,并拓展对应方法。,由于Sleep的精确性,可能会有几号秒的误差,但实际上,这个工具并没有这么

XXL-JOB是一款轻量级的分布式任务调度中间件,默认支持6000个定时任务,如果生产环境的任务数量在这个范围内,可以选择使用 XXL-JOB。操作更简单,学习成本更低使用异步化调度,性能更好有配套的运维后台系统,提供了配置、监控、日志、统计报表等功能拥有更简单的集群部署方案,服务的注册与发现等功能详情参考《官方文档》本文的内容在官方文档上都可以找到,只是在这基础上做了一点细节补充,有经验的同学可

通过前面两篇文章《调度中心集群配置》《执行器配置及定时任务的创建》,我们已经获取到了一个XXL-JOB的集群,以及一个可以执行任务的调度器,在实际的项目中可以参照这个流程,引入定时任务。执行器注册执行器的注销调度器探活这几个机制共同构成了一个稳定运行的定时任务流程。本篇内容主要是在探索执行器注册到调度中心的流程及实现原理。调度中心启动了一个Tomcat作为Web容器,暴露出注册与注销的接口,可以供

调度中心调用执行器,执行定时任务。执行器回调调度中心,上报定时任务执行结果。在调度和执行的整个流程中,XXL-JOB使用了大量的异步操作,减少调度中心的资源压力,以此在集中式调度配置与性能之间找到平衡点。异步实践通过线程池来执行异步操作通过自旋线程 + 阻塞队列的方式来执行异步操作。

我们在做互联网项目的时候会遇到一些排行版的需求,如果排行榜的时效性不高,比如日榜,周榜这种,可以考虑通过定时任务统计、聚合数据并落库,需要查询的时候直接查询这个统计好的数据就好了。但有时候我们遇到的需求时效性会高一点,比如小时榜、分钟榜、甚至实时排行榜,这种情况下再使用定时任务统计的方式就不太合适了。在Redis中有个叫zset的数据结构,非常适合用来做排名,它的数据结构中有一个score分数,我

volatile的作用是并发环境下,在一定的作用范围内解决共享变量的可见性和有序性问题,相对于synchronized和显示的加锁,volatile在性能上根据优势,可以尽可能的以更细的粒度来保证线程安全。通过JMM提供的lock指令,来使用CPU底层的提供的总线锁或缓存锁来保证共享资源的实时同步和更新。总线锁在加锁后会阻塞CPU访问内存,所以大多数CPU是通过缓存一致性协议对缓存行状态的控制来达

使用 Docker Compose ,可以通过 docker-compose.yml 文件来替代指令来编排容器,yml文件可以一目了然的看到容器之间的关系,避免了使用一大堆繁琐的指令。同时,可以将已编写好的 compose 文件,共享给他人使用,起到了一次编写,到处运行的效果,减少了大量的重复工作。由于微服务时代的到来,我们生产环境中的应用服务往往是多机多节点部署, Docker Compose

文章目录1.InheritableThreadLocal的作用1.1.父子线程的定义2.父线程向子线程传递数据2.1.InheritableThreadLocal的使用.2.2.父子线程数据共享的实现原理2.2.1.InheritableThreadLocal类2.2.2.如何实现数据共享2.2.3.childValue()方法3.线程池中的线程数据传递失效1.InheritableThreadL