动态配置的 Schedule 设计

2021-10-12
阅读 10 分钟
2.5k
定时任务是实际开发中常见的一类功能,例如每天早上凌晨对前一天的注册用户数量、渠道来源进行统计,并以邮件报表的方式发送给相关人员。相信这样的需求,每个开发伙伴都处理过。

应用服务 和 模板方法 擦出的火花

2021-09-19
阅读 27 分钟
1.6k
0. 前言面对业务,一个永恒的真理:永远不变的就是变化。如何发现变化、封装变化、隔离变化,是每个 程序员 的永恒话题。本篇文章,将带领大家把 “模板方法” 设计模式应用于领域设计的 “应用服务” 中,以达到如下目的:对主流程进行封装,保持主流程的稳定性,不变性;对细节步骤进行扩展,保持业务的灵活性,扩展性;在...
封面图

架构设计--配置信息管理

2021-09-15
阅读 2 分钟
1.7k
0. 配置信息配置信息特指程序启动时对程序进行配置的信息,常见的如服务端口、数据库连接信息、线程池信息等。在系统启动时,程序会通过不同的配置方案,主动获取配置信息,以完成系统的初始化工作。因此,配置信息的管理是一件非常重要的事情。您的配置信息是怎么管理的呢?让我们一起见证下配置信息管理的不同方案。1....
封面图

基于 Java 线程栈的问题排查

2020-04-23
阅读 10 分钟
2.6k
除日志外,还有没有别的方式跟踪线上服务问题呢?或者,跟踪并排除日志里无法发现的问题? 方法当然是有的,就是通过现场快照定位并发现问题。我们所说的现场,主要指这两方面: Java 线程栈。线程栈是Java线程工作的快照,可以获得当前线程在做什么; Java 内存堆。堆是JVM的内存快照,可以获取内存分配相关信息。 今天...

Java 异常处理

2020-02-22
阅读 17 分钟
3.5k
如果不使用异常,那么就必须在调用点检查特定的错误,并在程序的很多地方去处理它;如果使用异常,那么就不必在方法调用处进行检查,因为异常机制将保证能够捕获这个错误。因此只需要在一个地方处理错误,这种方式不仅节省代码,而且把“描述正确执行过程做什么事”和“出了问题怎么办”相分离。

架构设计--互联网架构演化

2019-09-02
阅读 5 分钟
3.5k
对于一个大型网站,主要有以下几个特征: 支撑海量数据 非常高的访问量 我们常见的大型网站,如百度、淘宝、京东等,都是一个分布式系统。这么复杂的系统也不是一天建成的,每个系统都经历了漫长的演变过程。 架构演变 在大型网站中,其最核心的功能就是 计算 和 存储。因此系统演变过程也主要围绕这两点进行。 1 单机系...

领域驱动设计战术模式--领域事件

2019-04-16
阅读 17 分钟
5.6k
领域驱动实践者发现他们可以通过了解更多发生在问题域中的事件,来更好的理解问题域。这些事件,就是领域事件,主要是与领域专家一起进行知识提炼环节中获得。

Java高级程序员必备:反射、动态代理

2018-08-22
阅读 28 分钟
8.9k
获取Java类型系统,主要有两个方式:一种是传统的RTTI(Run-Time Type Identification),它假定我们在编译时已经知道了所有的类型信息;另一种是反射(Reflect),它允许我们在程序运行时获取并使用类型信息。