AC 自动机


字典树(Tire 树) Trie 树是一种多叉树的结构,每个节点保存一个字符,一条路径表示一个字符串。 下图表示了字符串: him 、 her 、 cat 、 no 、 nova 构成的 Trie 树。 从图中可以看出 Trie 树包含以下性质: 根节点不包含字符,其他节点包含一个字符。

Java 堆

Java 

Java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。 堆是垃圾收集器管理的主要区域,又称为“GC 堆”,可以说是 Java 虚拟机管理的内存中最大的一块。

Java 内存区域

Java 

很多人会误以为 Java 内存区域和内存模型是同一个东西,其实并不是。 Java 内存区域是指 JVM 运行时将数据分区域存储 ,简单的说就是不同的数据放在不同的地方。通常又叫 运行时数据区域。 Java 内存模型(JMM)定义了程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变

Java 动态代理

Java 

静态代理和动态代理 代理分为静态代理和动态代理,这里写两个小的 demo,动态代理采用的就是 JDK 代理。 举个例子就是现在一个班上的学生需要交作业,现在由班长代理交作业,那么班长就是代理,学生就是被代理的对象。 静态代理 首先,我们创建一个 Person 接口。这个接口就是学生(被代理类),和班

transient 关键字

Java 

1. 概要 在 Java 中,transient 关键字用于标记一个成员变量,指示 Java 序列化机制在序列化对象时忽略该特定变量。这意味着当对象被转换为字节流(例如,保存到文件或通过网络传输)时,带有 transient 关键字的变量值不会被包括进去。当这个对象被反序列化(即从字节流恢复成对象)

BIO、NIO、AIO

Java 

BIO BIO(Blocking IO) 是最传统的 I/O 模型,也称为同步阻塞 I/O。它实现的是同步阻塞模型,即服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理。如果这个连接不做任何事情会造成不必要的线程开销,并且线程在进行 I/O 操作期间是被阻塞的,