1.7k 2 分钟

# BeanFactory 与 ApplicationContext 什么是 BeanFactory 它是 ApplicationContext 的父接口 它是 Spring 的核心容器,主要的 ApplicationContext 实现都 “组合” 了它的功能 可以看到,ConfigurableApplicationContext 继承 ApplicationContext, 而 ApplicationContext 又继承了 BeanFactory BeanFactory 能干什么 表面上只有 getBean 实际上控制反转,基本的依赖注入,直至 Bean...
25k 23 分钟

# 行为型模式 行为型模式用于描述程序在运行时复杂的流程控制,即表述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对对象间职责的分配 行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足 “合成复用原则”, 所以对象行为模式比类行为模式具有更大的灵活性 行为型模式分为 : 模板方法模式 策略模式 命令模式 职责链模式 状态模式 观察者模式 中介者模式 迭代器模式 访问者模式 备忘录模式 解释器模式 #...
297 1 分钟

# 建造者模式 (Builder) 建造者模式将一个复杂对象的构造与它的表示分离,使同样的构造过程可以创建不同的表示,它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的 建造者模式的优点 : 封装性好,构造和表示分离 扩展性好,各个具体的建造者相互独立,有利于系统的解耦 客户端不必知道产品内部组成的细节,建造者可以对创建过程逐步细化,儿不对其它模块产生任何影响,便于控制细节风险 建造者模式的缺点...
9.4k 9 分钟

# 创建者模式 创建型模式主要关注点是 “增氧创建对象”, 它的主要特点是 “将对象的创建与使用分离” 这样可以降低系统的耦合度,使用者不需要关注对象的创建细节 创建型模式分为: 单例模式 工厂方法模式 抽象工厂模式 原型模式 建造者模式 # 单例设计模式 单例模式 (Singleton Pattern) 是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一对象的方式,可以直接访问,不需要实例化该类的对象 #...
2.1k 2 分钟

# 引用 在 JDK1.2 版之后,Java 对引用的概念进行了扩充,将引用分为了强引用 (Strong Reference), 软引用 (Soft Reference), 弱引用 (weak Reference) 和虚引用 (Phantom Reference) 四种,这 4 种的引用强度因此逐渐减弱 除强引用意外,其他三种引用均可以在 java.lang.ref 包中找到。显示了这 3 中引用类型对应的类,开发人员可以在应用程序中直接使用它们 Reference 子类中只有终结器引用是包内可见的,其他 3 种引用类型均为 public, 可以在应用程序中直接引用 强引用:最传统的...
2.7k 2 分钟

# 垃圾回收相关概念概述 # System.gc () 的理解 在默认情况下,通过 System.gc () 或者 Runtime.getRuntime ().gc () 的调用,会显式触发 Full GC, 同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存 然而 System.gc () 调用附带一个免责声明,无法保证对垃圾回收器的调用 JVM 实现者可以通过 System.gc () 调用来决定 JVM 的 GC 行为。而一般情况下,垃圾回收应该是自动进行的,无需手动触发,否则就太过于麻烦了。在一些特殊情况下,如我们正在编写一个性能基准,我们可以在运行之间调用...
3k 3 分钟

# vue 组件 组件化开发指的是:根据封装的思想,把页面上可重用的 UI 结构封装为组件,从而方便项目的开发和维护 vue 是一个支持组件化的前端框架 vue 中规定:组件的后缀名是.vue. 之前接触到的 App.vue 文件本质上就是一个 vue 的组件 # vue 组件的组成部分 每个.vue 组件都由三部分构成 template -> 组件的模板结构 script -> 组件的 JavaScript 行为 style -> 组件的样式 其中,每个组件中必须包含 template 模板结构,而 script 行为和 style...
3k 3 分钟

# String 底层 Hashtable 结构的说明 # String 的基本特性 字符串常量池中不会储存相同内容的字符串 String 的 String Pool 是一个固定大小的 Hashtable, 默认值大小长度为 1009. 如果放进 String Pool 的 String 非常多,就会造成 Hash 冲突严重,从而导致链表会很长,而链表长了后会直接造成的影响就是当调用 String.intern 时性能会大幅下降 使用 - XX:StringTableSize 可设置 StringTable 长度 在 jdk6 中 StringTable 是固定的,就是 1009...
404 1 分钟

# String 的不可变性 # String 的基本特性 String : 字符串,是用一双 "" 引起来表示 String 声明为 final 的,不可被继承 String 实现了 Serializable 接口:表示字符串是支持序列化的,实现了 Comparable 接口:表示 String 可以比较大小 String 在 jdk8 及以前内部定义了 final char [] value 用于储存字符串数据. jdk9 时改为 byte [] # String 的不可变性 对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的 value...
2.3k 2 分钟

# 执行引擎 执行引擎是 Java 虚拟机核心的组成部分之一 "虚拟机" 是一个相对于 "物理机" 的概念,这两种机器都有执行代码的能力,其区别是物理机的执行引擎是直接建立在处理器,缓存,指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约的指定指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令格式 # 什么是解释器,什么是 JIT 编译器 解释器:当 Java 虚拟机启动时会根据预定义的规范对字节码采用逐行解释的方式执行,将每条字节码文件中的内容...