04 2020 档案
摘要:类编译加载执行过程 1先将java文件编译为class文件,再由类加载器加载到jvm。类在调用执行过程中,执行引擎会把字节码转为机器码,然后在操作系统中才能执行。在字节码转换为机器码的过程中,虚拟机中还存在着一道编译,那就是即时编译。 最初,虚拟机中的字节码是由解释器( Interpreter )完
阅读全文
摘要:什么mapSturct mapSturct 是一个生成类型安全, 高性能且无依赖的 JavaBean 映射代码的注解处理器(annotation processor)。通过动态生成代码实现,使代码易于调试和美观, 官方文档:https://mapstruct.org/documentation/st
阅读全文
摘要:什么是ThreadLocal ThreadLocal 是 Java 里一种特殊变量,它是一个线程级别变量,每个线程都有一个 ThreadLocal 就是每个线程都拥有了自己独立的一个变量,竞态条件被彻底消除了,在并发模式下是绝对安全的变量。用于线程内共享 使用demo static ThreadLo
阅读全文
摘要:什么是中介模式 中介模式定义了一个单独的(中介)对象,来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互,来避免对象之间的直接交互。 需求 假设我们有一个比较复杂的对话框,对话框中有很多控件,比如按钮、文本框、下拉框等。当我们对某个控件进行操作的时候,其他控件会做出相应的反应,比如,
阅读全文
摘要:什么是解释器模式 解释器模式为某个语言定义它的语法(或者叫文法)表示,并定义一个解释器用来处理这个语法 需求 如“韶粵通”公交车读卡器可以判断乘客的身份,如果是“韶关”或者“广州”的“老人” “妇女”“儿童”就可以免费乘车,其他人员乘车一次扣 2 元。 表达式 <expression> ::= <c
阅读全文
摘要:什么是命令模式 命令模式将请求(命令)封装为一个对象,这样可以使用不同的请求参数化其他对象(将不同请求依赖注入到其他对象),并且能够支持请求(命令)的排队执行、记录日志、撤销等(附加控制)功能。 与策略模式很像,我们不能用编码来区分模式,而是应用场景 代码实现 /** * 抽象的命令 */ publ
阅读全文
摘要:什么是备忘录模式 在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象为先前的状态。 需求 编写一个小程序,可以接收命令行的输入。用户输入文本时,程序将其追加存储在内存文本中;用户输入“:list”,程序在命令行中输出内存文本的内容;用户输入“:undo”,
阅读全文
摘要:什么是访问者模式 允许一个或者多个操作应用到一组对象上,解耦操作和对象本身。 因为它难理解、难实现,应用它会导致代码的可读性、可维护性变差,所以,访问者模式在实际的软件开发中很少被用到,在没有特别必要的情况下,不建议使用 应用场景 访问者模式针对的是一组类型不同的对象(PdfFile、PPTFile
阅读全文
摘要:什么是迭代器模式 迭代器模式(Iterator Design Pattern),也叫作游标模式(Cursor Design Pattern)。 一个完整的迭代器模式 设计容器(数组、链表、树、图、跳表)和迭代器 为了达到基于接口而非实现编程的目的,容器又包含容器接口、容器实现类,迭代器又包含迭代器接
阅读全文
摘要:什么是状态模式 状态模式一般用来实现状态机,而状态机常用在游戏、工作流引擎等系统开发中。不过,状态机的实现方式有多种,除了状态模式,比较常用的还有分支逻辑法和查表法 简单来说 状态模式是一种行为设计模式,允许对象在其内部状态改变时改变其行为 状态模式的优点 解耦状态和行为:将状态转换逻辑分散到各个状
阅读全文
摘要:什么是责任链模式 解释1:将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止。 解释2:在职责链模式中,多个处理器(也就是刚刚定义中说的“接收对象”)依次处理同一个请求。一个请求先经过 A 处理器处理,
阅读全文
摘要:什么是策略模式 定义一族算法类,将每个算法分别封装起来,让它们可以互相替换。策略模式可以使算法的变化独立于使用它们的客户端(这里的客户端代指使用算法的代码 策略模式。在实际的项目开发中,这个模式也比较常用。最常见的应用场景是,利用它来避免冗长的 if-else 或 switch 分支判断。不过,它的
阅读全文
摘要:什么是模板模式 模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。 模板模式的作用 复用以及扩展 标准实现 public abstract class AbstractClass { public f
阅读全文
摘要:什么是观察者模式 在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知,被依赖对象为被观察者,依赖对象为观察者 在实际开发中有多种叫法::Subject-Observer、Publisher-Subscriber、Producer-Consumer、EventEm
阅读全文