目录

Life in Flow

知不知,尚矣;不知知,病矣。
不知不知,殆矣。

Collection、Map

容器  容器主要用来保存对象,Java 中有两个顶层接口 Collection、Map。 Collection 接口 List 有序、重复、自动扩容、非线程安全:常见 List 的实现类有 ArrayList、Vector、LinkedList 等…… Set 无序、不可重复、非线程安全:常见 Set 接口的实现类有 HashSet、LinedHashSet、TreeSet 等…… Map 接口 key value 存储:常见的 Map 接口实现类有 HashMap、TreeMap。 接口抽象与数据结构  通过接口的抽象,很好的屏蔽了底层数据结构的差异,并且为开发者提供了统一的 API 来使用底层不同的实现类。 List 接口 List 数据结构  List 接口是 ⼀个有序的 Collection,线性列表接 ⼝,能够精确的控制每个元素插 ⼊的位置,能 够通过索引(类似于数组的下标)来访问 List 中的元素,第 ⼀个元素的索引为 0,⽽且允许有相同 的元素,接 ⼝存储 ⼀组不唯 ⼀,有序(插 ⼊顺序)的对象。 List 接口的实现类 ArrayList:基于数组实现,....

HashTable

哈希表  散列表(Hash table,也叫哈希表),是根据关键码值(Key value)⽽直接进 ⾏访问的数据结 构。也就是说,它通过把关键码值映射到表中 ⼀个位置来访问记录,以加快查找的速度 。这 个映射函数叫做散列函数,存放记录的数组叫做散列表。 给定表 M,存在函数 f(key),对任意 给定的关键字值 key,代 ⼊函数后若能得到包含该关键字的记录在表中的地址,则称表 M 为哈 希(Hash)表,函数 f(key)为哈希(Hash) 函数。 散列函数  能使对 ⼀个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位。 链式哈希表 是由 ⼀组链表构成,每个链表都可以看做是 ⼀个“桶”,我们将所有的元素通过散列的 ⽅式放 到具体的不同的桶中。 插 ⼊元素时,⾸先将其键传 ⼊ ⼀个哈希函数,函数通过散列的 ⽅式告知元素属于哪个“桶”,然 后在相应的链表插 ⼊元素。 查找或删除元素时,⽤同们的 ⽅式先找到元素的“桶”,然后遍历相应的链表,直到发现我们想要的元素。 链表长度:因为每个“桶”都是 ⼀个链表,如果表变得太 ⼤,它的性能将会降低。 *** 哈希扩容:Bu....

异常

错误  程序运行时发生的不被期望的事件,阻 ⽌了程序按照预期正常执行。常见程序错误分三类: 编译错误:没有遵循语法规范。 运行时错误:程序在执行时发生的错误。 逻辑错误:程序没有按照预期的逻辑顺序执行。 Java 异常体系  个 java.lang.Throwable 类是 Java 中所有错误和异常的超类,其派生的两个子类分别为:Error、Exception。 Error  包含大量子类,用于抽象出错后程序无法处理的情况,例如:OutOfMemoryError。 Exception  包含大量子类,用于抽象程序本身可以处理的异常。例如:ArrayIndexOutOfBoundException。同时 Exception 又派生出量大子类: 运行时异常(不可查异常):RuntimeException 类及其子类,例如:ArrayIndexOutOfBoundsException。ClassNotFoundException。 非运行时异常(编译时可查异常):所有 Exception 类及其子类(RuntimeException 类及其子类除外),例如:IOException。....

CentOS 8 《软件包管理》

RedHat 系软件包格式 RPM 的二进制软件包:一个应用程序由一个或多个 RPM 格式软件包组成。 SRPM 的源码软件包:查看应用程序源代码和编译 RPG 软件包等特别的情况才会用到。 软件包命名方式 package-version-release-arch.rpm 软件包名-版本号-发型版本号-硬件平台.rpm RPM 软件包的依赖关系  由于开源软件分散开发和相互继承的特点,RPM 软件包间存在着依赖关系。 常见的依赖关系有: Depends:A 依赖于 B,即安装 A 时必须已安装 B。 Conflicts:A 与 B 无法共存。B 已安装,A 安装的时候可能要自动卸载掉 B。 Recommends:推荐安装 A 的同时也安装 B。 软件仓库管理  CentOS 8 所维护的 RPM 软件包都保存在相应的软件仓库,而且是对应 Linux 发行版和对应版本专用的。正如 CentOS 8 无法使用 CentOS 7 或 CentOS 6 的软件仓库一样。这些专用的软件仓库暴露在互联网上为用户提供服务,客户端可以便捷地使用 yum 或 dnf 命令下载和安装各种应用。  ....

CentOS 8 《快速部署》

CentOS Linux & CentOS Stream  在 CentOS 官网你可以看到有两大块,一个是 CentOS Linux 和 CentOS Stream,有什么区别呢? CentOS Stream 是一个滚动发布的 Linux 发行版,它介于 Fedora Linux 的上游开发和 RHEL 的下游开发之间而存在。你可以把 CentOS Streams 当成是用来体验最新红帽系 Linux 特性的一个版本,尝鲜使用。 CentOS Linux 就是普通使用的 CentOS 的系统了,如果追求稳定性,和正式使用,日常使用,还是强力推荐使用这个的。 New Featrue  RHEL8 自称是混合云智能操作系统,官方的 slogan:任何云、任何工作负载,一个操作系统就够了,为业务运营而构建,强化对虚拟化技术、容器技术、云端技术、自动化运维及 DevOps 的支持和融合。 DNF 成为了默认的软件包管理器,同时 yum 仍然是可用的 Cockpit:新增的 RHEL Web 管理工具,抽象系统管理任务,控制台提供直观的 GUI,用于管理、监控 RHEL 系统,从....

代码分层

代码分层的重要性 代码除了实现功能,另外一个重点就是让人看得懂,方便接手。 业务分层对于代码规范是比较重要,决定着以后的代码是否可复用,是否职责清晰,边界清晰。 代码分层逻辑图 Web 层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。 Controller Service 层:相对具体的业务逻辑服务层 DAO 层:数据访问层,与底层 MySQL、Oracle、Hbase 进行数据交互。

Junit

什么是 Junit  JUnit 是 ⼀个 Java 语 ⾔的单元测试框架,可以 ⼤ ⼤缩短你的测试时间和准确度。多数 Java 的开发环境都已经集成了 JUnit 作为单元测试的 ⼯具。 引入 pom 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> 基本使用