聊聊ThreadLocal ThreadLocal 维持线程封闭性的一种规范方法是使用ThreadLocal,这个类能使线程中的某个值与保存值的对象关联起来。提供了get和set方法等访问接口和方法,这些方法为每个使用该变量的的线程都存有一份独立的副本,因此get总是返回由当前执行线程在调用set时设置的最新值。 官方解释如下: This class provides thread-local variables. Thes 2021-03-05 编程笔记 后端开发 编程语言 Java 源码阅读 并发编程的艺术
07-单例模式 原型模式 单例(Singleton)模式指一个类只有一个实例,且该类能够自主创建该实例。 单例模式的3个特点: 单例类只有一个实例对象。 单例对象必须由单例类来创建。 单例类对外提供一个访问该单例的全局访问点。 模式的结构与实现 单例模式的主要角色: 单例类:包含一个实例且能自行创建这个实例的类。 访问类:使用单例的类。 UML类图 实例 需求:竞选美国总统 实现代码步骤如下: 懒汉式 2021-02-24 编程笔记 设计模式 设计模式
06-原型模式 原型模式 原型(Prototype)模式指用一个已经创建的实例作为原型,通过复制该对象来创建一个和对象相同的或者相似的新对象。 由于无须关心对象具体创建的细节,所以原型模式创建对象非常高效。 模式的结构与实现 原型模式的主要角色: 抽象原型类:规定了具体原型对象必须实现的接口。 具体原型类:实现抽象原型类的clone()方法,它是可被复制的对象。 访问类:使用具体原型类中的clone()方法来复 2021-02-23 编程笔记 设计模式 设计模式
05-建造者模式 建造者模式 建造者(Builder)模式又称生成器模式,可以实现分步骤创建复杂对象,使用相同的创建代码生成不同类型和形式的对象。 建造者模式和工厂模式的关注点不同,建造者模式关注的是对象的组装过程,而工厂模式更注重的是对象的创建过程。两者可以结合使用。 模式的结构与实现 建造者模式的主要角色: 产品角色(Product):包含多个组成部件的复杂对象,由具体创建者来创建其各个零部件。 抽象建造者( 2021-02-20 编程笔记 设计模式 设计模式
04-抽象工厂模式 抽象工厂模式 抽象工厂(AbstractFactory)模式是一种为访问类提供一个创建一组相关或互相依赖对象的接口,且访问者无需指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。 抽象工厂模式是工厂方法模式的升级版本,工厂方法模式一个工厂只能生产一个产品,而抽象工厂模式一个工厂可以生成多个产品。 模式的结构与实现 简单工厂模式的主要角色: 抽象工厂(Abstract Factory): 2021-02-19 编程笔记 设计模式 设计模式
03-工厂方法模式 工厂方法模式 工厂方法模式是对简单工厂模式的进一步抽象化,好处是可以是系统在不修改原有代码情况下引入新的产品,即满足开闭原则。 模式的结构与实现 简单工厂模式的主要角色: 抽象工厂(Abstract Factory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法来创建产品。 具体工厂(Factory):主要实现抽象工厂中的抽象方法,完成具体产品的创建。 抽象产品(AbstractPr 2021-02-19 编程笔记 设计模式 设计模式
02-简单工厂模式 简单工厂模式 简单工厂模式又叫静态方法模式。因为在简单工厂模式中创建的实例的方法通常为静态(static)方法。 模式的结构与实现 简单工厂模式的主要角色: 简单工厂(SimpleFactory):简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以直接被外部调用,创建所需的产品对象。 抽象产品(AbstractProduct):简单工厂创建对象的所有对象的父类,负责 2021-02-19 编程笔记 设计模式 设计模式
01-设计模式 设计模式 设计模式是软件设计中常见问题的典型解决方案。 模式包含的内容: 意图部分简单描述问题和解决方案。 动机部分将进一步解释问题并说明模式会如何提供解决方案。 结构部分展示模式的每个部分和他们之间的关系。 在不同的语言中实现提供流行编程语言的代码,让读者更好地理解模式背后的思想。 设计模式分类 不同设计模式的复杂程度,细节层次以及整个系统中应用范围等方面各不相同。 最基础的、底层的模式通常 2021-02-19 编程笔记 设计模式 设计模式
Babel Babel Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。 配置文件.babelrc Babel的配置文件是.babelrc,存放在项目的根目录下。使用Babel的第一步,就是配置这个文件。该文件用来设置转码规则和插件,基本格式如下: 1234{ "presets": [], "plugins": 2021-02-01 编程笔记 前端开发 前端开发