Chemlez
前缀树,又称为Trie树,是一种树形数据结构,可用于高效地存储和检索字符串数据集合中的键,常用于自动补完和拼写检查等应用场景。下面对是对前缀树节点的定义:
1 | class WordNetTree { |
其中end
代表当前节点是否为结尾;words
代表每个节点中的集合,数组长度为26,代表每次创建一个WordNetTree
节点时,都会在该节点内部创建一个长度为26的WordNetTree
数组。
最近看面经经常能看到面试官对ThreadLocal
方面的提问,于是就去翻了翻ThreadLocal
的源码,发现源码并不长,大概看了一通,能看出其中的七七八八,打算借此来梳理一下。PS:HashMap的源码能看明白,看这个源码也不是问题。
点进源码,看见ThreadLocal
是java.lang
包下的类;在网上也看了看其他人对它的概括,加上自己对看完源码后对ThreadLocal
的理解:
用于线程之间数据的隔离。简单说就是通过ThreadLocal
来开辟一块区间存放数据,这个区间作为线程的本地线程存储,只有当前线程才能获取到这个数据,这个数据对其他线程是不可见的。
可以看到ThreadLocal
的公有构造方法:
1 | public ThreadLocal() { |
就是用来创建ThreadLocal
对象,没有在其中做其他的工作。
平常用ThreadLocal
最多的两个方法就是set
、get
两个方法;那我们来看一看这两个方法的源码。
概念:一个类的接口转换成客户端希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。即根据已有的接口,生成想要的接口。
先看下面这个小例子体会一下适配器模式:
1 | public class AppTest { |
本文用来记录工厂模式中,简单工厂、工厂方法和抽象工厂。
上图中,每个功能可以看成一个模块,每个模块要想能正常、更好的使用,一定也会依赖其他的模块,所以需要满足:
为了对下面的实例代码进行演示,先明确两个概念:
需求:
设计一个食物的项目,便于食物种类的扩展,且便于维护。
本章用来介绍设计模式中的原型模式,该模式也是设计模式中较为简单、也是比较常见的一种设计模式。同样给出场景及相应代码层层推进的方式来学习原型模式。
1 / 5