![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA架构设计
mischen520
JAVA高级架构师
展开
-
领域驱动设计的不足
1.领域驱动设计缺乏一个规范的过程指导,使得其缺乏可操作性,团队在运用领域驱动设计时,更多取决于设计者的行业知识与设计经验,使得领域驱动设计在项目上的成功存在较大的偶然性。2.领域驱动设计没有匹配的需求管理体系。不同层次的业务需求贯穿于领域驱动设计过程中的每个环节,识别限界上下文和建立高质量的领域模型都有赖于良好的需求,需求管理体系会直接影响领域驱动设计的质量。3.领域驱动设计的核心诉求是让业务架构和应用架构形成绑定关系,以面对需求变化时,使得应用架构能够适应业务架构的调整,满足架构的演进性,然后他原创 2021-06-15 18:21:41 · 826 阅读 · 1 评论 -
领域驱动设计全过程分析介绍
领域驱动设计全过程可以分为2个部分,一个是问题空间,一个是解空间。其中,问题空间包括核心子领域、通用子领域、支撑子领域。解空间包括战略设计和战术设计两大部分内容。那么,什么是问题空间呢?从简单来讲,问题空间就是指由领域专家以及开发团队,以统一语言作为指导,设计出满足业务需求以及业务期望的系统,并由此需求来划分系统的各个模块,这一块现在在微服务领域用得比较多。...原创 2021-06-15 16:39:18 · 307 阅读 · 1 评论 -
微服务注册中心选择思考
常⻅的注册中⼼:zk、eureka、nacos 那你应该怎么选择 Zookeeper:CP设计,保证了⼀致性,集群搭建的时候, 某个节点失效,则会进⾏选举新的leader,或者半数以上 节点不可⽤,则⽆法提供服务,因此可⽤性没法满⾜ Eureka:AP原则,⽆主从节点,⼀个节点挂了,⾃动切换其他节点可以使⽤,去中⼼化 结论: 分布式系统中P,肯定要满⾜,所以只能在CA中⼆选⼀ 没有最好的选择,最好的选择是根据业务场景来进⾏架构设计 如果要求⼀致性,则选...原创 2021-04-05 09:28:33 · 208 阅读 · 2 评论 -
线程池ThreadPoolExecutor详解以及用法示例-详细的执行流程和内部解剖
1.先看一个面试题如果corepollSize=10,MaxPollSize=20,如果来了40个线程 怎么办?要想回答这一个问题,其实不难,只要了解了线程池内部的工作原理就知道怎么回答了。先来看看线程池的整个运行机制:当一个任务通过execute(Runnable)方法欲添加到线程池时: 1、 如果此时线程池中的数量小于corePoolSize,即使线程池中的线程都处于空闲状态,也要创建新的线程来处理被添加的任务。 2、 如果此时线程池中的数量等于 corePoolSize,但是缓冲队列原创 2021-03-20 09:19:19 · 1396 阅读 · 0 评论 -
JAVA架构师面试-JAVA的类加载机制以及双亲委派模型
1.什么是类加载机制? 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的JAVA类型,这就是虚拟机的类加载机制。2.类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示:加载 加载时类加载过程的第一个阶段,在加载阶段,虚拟机需要完成以下三件事情: 1、通过一个类的全限定名来获取其定...原创 2021-01-09 08:31:25 · 163 阅读 · 0 评论 -
JAVA架构设计-接口和抽象类的选择
先来说说接口和抽象类的设计理念:接口:强调的是扩展性抽象:强调的是共性功能两者的详细对比如下:对比 抽象类 接口 默认的方法实现 它可以有默认的方法实现 接口完全是抽象的。它根本不存在方法的实现 实现 子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现 构造器 抽象类可以有构造器 接口不能有构造原创 2021-01-01 09:13:05 · 343 阅读 · 0 评论