随笔分类 - java
摘要:之前介绍了树,主要实现了二叉树的代码。在二叉树的基础上有许多衍生的树,如二叉搜索树、哈夫曼树等,今天学习一下二叉搜索树。 二叉搜索树 二叉搜索树是二叉树的一种,是应用非常广泛的一种二叉树,英文简称为 BST 又被称为:二叉查找树、二叉排序树 特点 任意一个节点的值都大于其左子树所有节点的值 任意
阅读全文
摘要:Hash表 Hash也叫散列、哈希,是一种根据key-value对进行存储的数据结构。每个value对应一个key,这样查找的时候就无需遍历。 Hash表使用数组作为底层结构,数组中每个区域都存储着Hash,这就是Hash表。 列表、数组、树这些数据结构在查询数据时的时间复杂度通常为O(n),而Ha
阅读全文
摘要:图是比树更复杂的结构,树是一对多的关系,图是多对多的关系。 一、基本概念 1、定义:图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的;其中,点通常被成为"顶点(vertex)",而点与点之间的连线则被成为"边或弧"(edege)。通常记为,G=(V,E)。 2、根据边
阅读全文
摘要:之前的都是线性结构,而树结构在计算机应用中的应用更加广泛。linux中的目录结构,某些数据库的底层存储等,都是采用树结构进行构架的。 树的概念 线性表是一对一的关系,而树是一对多的关系。 树的结点:包含一个数据元素及若干指向子树的分支; 孩子结点:结点的子树的根称为该结点的孩子; 双亲结点:B 结点
阅读全文
摘要:队列(Queue):在逻辑上是一种线性存储结构。它有以下几个特点: 1、队列中数据是按照"先进先出(FIFO, First-In-First-Out)"方式进出队列的。 2、 队列只允许在"队首"进行删除操作,而在"队尾"进行插入操作。 队列通常包括的两种操作:入队列 和 出队列。 队列的种类也很多
阅读全文
摘要:栈(stack): 在逻辑上是一种线性存储结构,它有以下几个特点: 1、栈中数据是按照"后进先出(LIFO, Last In First Out)"方式进出栈的。 2、向栈中添加/删除数据时,只能从栈顶进行操作。 栈通常包括的三种操作:push、peek、pop。 push -- 向栈中添加元素。
阅读全文
摘要:顺序表是最简单的线性表,也就是数组。很多语言都把把它当做内置的基本数据类型,这里的数组没有对应数据结构的操作。 数组是顺序存储的结构,连续分配一段内存用于存储数据。在逻辑结构和物理结构上都是连续的。 顺序表建立 在java内置的数组上建立顺序表。 public class Array{ privat
阅读全文
摘要:链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。 使用链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销
阅读全文
摘要:ThreadPoolExecutor线程池解析 一、ThreadPoolExecutor常见参数 jdk中Executors提供了几种常用的线程池,底层都是ThreadPoolExecutor。 public ThreadPoolExecutor(int corePoolSize,//核心线程数 i
阅读全文
摘要:1、定义一个接口,exectue方法为抽象方法 import java.io.IOException; public interface CommonOperateCallBack<T> { /** * 前置检查 */ default void before() { } /** * 执行结果. *
阅读全文
摘要:一、==、equals、hashcode Java中比较对象通常使用==符和equals方法。 == ⽐较的是对象地址,equals 是Object的一个方法,通常子类通过重写它来比较值。 equals是Object类的方法,实现如下: public boolean equals(Object ob
阅读全文
摘要:有一个比较复杂的Xml,有很多循环嵌套,如何将其中需要的元素拿出来呢? 1、Java类库解析 Java中有许多第三方库可以解析xml. <!--使用Dom的方式解析xml--> <dependency> <groupId>org.dom4j</groupId> <artifactId>dom4j</
阅读全文
摘要:Spring 5.x版本 001、依赖包 Spring的各包之间相互依赖,导入这一个包就可以包Spring的基本几个包同时引入。 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artif
阅读全文
摘要:Mybatis是一个ORM框架,通常作为SSM中的M,可以与Spring集成搭建相应的项目。 001、依赖 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>x.x.x</ver
阅读全文
摘要:编码 为什么要编码? ◎ 在 计 算 机 中 存 储 信 息 的 最 小 单 元 是 1 个 字 节 , 即 8 个 bit, 所 以 能 表 示 的 字 符 范围是0〜255个。 ◎ 人类要表示的符号太多,无法用1个字节来完全表示。 ◎人类不同国家使用不同语言,需要被翻译。 编码的本质 计算机使用
阅读全文
摘要:Java传统的IO是阻塞式的,而NIO则提供了非阻塞式的IO. NIO即New IO, java从jdk1.4开始引入,用于解决阻塞式的处理,所以也可以说是No block IO. NIO主要是用来处理Socket中阻塞的问题。 1、NIO组件 Java NIO 由以下几个核心部分组成: Chann
阅读全文
摘要:Jackson 一、JSON 1、简介 JSON: JavaScript Object Notation(JavaScript 对象表示法) JSON 是存储和交换文本信息的语法。类似 XML JSON 比 XML 更小、更快,更易解析。 JSON可以被各种语言使用 2、语法 2.1、json主要通
阅读全文
摘要:最近用xml的数据格式比较多,所以简单记录一下这些类库的使用。 dom4j dom4j用dom模型的方式解析xml数据。 <!--依赖包--> <dependency> <groupId>org.dom4j</groupId> <artifactId>dom4j</artifactId> <vers
阅读全文
摘要:joda-time是处理时间的简单的库,比自带的库有时候好用的多。 <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.9.2</version> </dependency>
阅读全文
摘要:1、ApplicationContext应用程序上下文 ApplicationContext是最常用的Spring ioc容器,他实现了很多接口: BeanFactory:Spring 管理 Bean 的顶层接口,我们可以认为他是一个简易版的 Spring 容器。 ApplicationEventP
阅读全文