摘要: 本文部分摘自 On Java 8 自 Java7 开始,Java 终于简化了文件读写的基本操作,新增了 java.nio.file 库,通过与 Java8 新增的 stream 结合可以使得文件操作变得更加优雅 文件和目录路径 java.nio.file.Paths 类包含一个重载方法 static 阅读全文
posted @ 2020-11-17 15:19 低吟不作语 阅读(1848) 评论(2) 推荐(0) 编辑
摘要: 流概述 大多数情况下,我们将对象存储在集合是为了处理他们,使用流可以帮助我们处理对象,无需迭代集合中的元素,即可直接提取和操作元素,并进行查找、过滤、分组、排序等一系列操作 总而言之,流是一种高效且易于使用的处理数据的方式,当结合 Lambda 表达式和方法引用时效果更好 观察下面的例子: publ 阅读全文
posted @ 2020-11-14 18:49 低吟不作语 阅读(7477) 评论(0) 推荐(6) 编辑
摘要: 概述 通常,传递给方法的数据不同,结果也不同。同样的,如果我们希望方法被调用时的行为不同,该怎么做呢?结论是:只要能将代码传递给方法,那么就可以控制方法的行为。 说得再具体点,过去我们总是创建包含所需行为的对象,然后将对象传递给想要控制的方法,一般使用匿名内部类来实现。假设现在有这么一个需求:有一个 阅读全文
posted @ 2020-11-13 13:50 低吟不作语 阅读(2801) 评论(1) 推荐(4) 编辑
摘要: 内部类 一个定义在另一个类中的类,叫作内部类 1. 概述 内部类允许你把一些逻辑相关的类组织在一起,并控制位于内部的类的可见性,这么看来,内部类就像是一种代码隐藏机制:将类置于其他类的内部,从而隐藏名字与组织代码的模式。 2. 创建内部类 创建内部类的方式就如同你想的一样,把类的定义置于外部类里面 阅读全文
posted @ 2020-10-25 00:29 低吟不作语 阅读(1400) 评论(0) 推荐(2) 编辑
摘要: 乐观锁 一般而言,在并发情况下我们必须通过一定的手段来保证数据的准确性,如果没有做好并发控制,就可能导致脏读、幻读和不可重复度等一系列问题。乐观锁是人们为了应付并发问题而提出的一种思想,具体的实现则有多种方式。 乐观锁假设数据一般情况下不会造成冲突,只在数据进行提交更新时,才会正式对数据的冲突与否进 阅读全文
posted @ 2020-10-23 16:10 低吟不作语 阅读(477) 评论(0) 推荐(2) 编辑
摘要: 本文参考自《大话数据结构》 计算机中数据的存储 一般而言,我们都是在内存中处理数据,但假如我们要操作的数据集非常大,内存无法处理了,在这种情况下对数据的处理需要不断地从硬盘等存储设备中调入或调出内存页面。 对外存设备的读写,效率并不乐观。为了降低对外存设备的访问次数,我们需要新的数据结构来处理这个问 阅读全文
posted @ 2020-10-18 01:47 低吟不作语 阅读(1124) 评论(0) 推荐(0) 编辑
摘要: 概述 volatile 是 Java 提供的一种轻量级的同步机制。相比于传统的 synchronize,虽然 volatile 能实现的同步性要差一些,但开销更低,因为它不会引起频繁的线程上下文切换和调度。 为了更好的理解 volatile 的作用,首先要了解一下 Java 内存模型与并发编程三要素 阅读全文
posted @ 2020-10-17 13:56 低吟不作语 阅读(591) 评论(0) 推荐(1) 编辑
摘要: 八种排序算法可以按照如图分类 交换排序 所谓交换,就是序列中任意两个元素进行比较,根据比较结果来交换各自在序列中的位置,以此达到排序的目的。 1. 冒泡排序 冒泡排序是一种简单的交换排序算法,以升序排序为例,其核心思想是: 从第一个元素开始,比较相邻的两个元素。如果第一个比第二个大,则进行交换。 轮 阅读全文
posted @ 2020-10-13 16:36 低吟不作语 阅读(2067) 评论(0) 推荐(4) 编辑
摘要: 概述 对于一组元素 [7, 3, 10, 12, 5, 1, 9] 可以有很多种存储方式,但无论使用哪种数据结构,都或多或少有缺陷。比如使用线性结构存储,排序方便,但查找效率低。二叉排序树的特点就是能在保证元素有序的同时,提高查找的效率。 二叉排序树的定义 二叉排序树,也叫二叉查找树,二叉搜索树,英 阅读全文
posted @ 2020-09-29 16:06 低吟不作语 阅读(1030) 评论(0) 推荐(2) 编辑
摘要: 本文基于 JDK8 分析 Comparable Comparable 接口位于 java.lang 包下,Comparable 接口下有一个 compareTo 方法,称为自然比较方法。一个类只要实现了这个接口,意味着该类支持自然排序 所谓自然排序,就是按默认规则组成的排序,例如 1234 就是自然 阅读全文
posted @ 2020-09-25 14:21 低吟不作语 阅读(1909) 评论(2) 推荐(1) 编辑