• 2024-01-13Dating Java8系列之新的日期和时间
    给我馍馍/文  旧的日期时间 在Java1.0中,对日期和时间的支持只能依赖java.util.Date类。正如类名所表达的,这个类无法表示日期,只能以毫秒的精度表示时间。更糟糕的是它的易用性,由于某些原因和未知的设计决策,这个类的易用性被深深地损害了,比如:年份的起始选择是1900年,月份
  • 2024-01-12Dating Java8系列之用流收集数据
    给我馍馍/文  收集器简介 1.收集器介绍Java8中流支持两种类型的操作:中间操作(如filter或map)和终端操作(如count、findFirst、forEach和reduce)。中间操作可以链接起来,将一个流转换为另一个流。这些操作不会消耗流,其目的是建立一个流水线。与此相反,终端操作会消耗流
  • 2024-01-12Dating Java8系列之Lambda表达式和函数式接口(下)
    给我馍馍/文  使用函数式接口  函数式接口定义且只定义了一个抽象方法。函数式接口很有用,因为抽象方法的签名可以描述Lambda表达式的签名。为了应用不同的Lambda表达式,你需要一套能够描述常见函数描述符的函数式接口。Java8的库设计师帮我们在java.util.
  • 2024-01-12Dating Java8系列之Lambda表达式和函数式接口(上)
    给我馍馍/文  Lambda简介 我们可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式。它没有名称,但它有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常列表。匿名:我们说匿名,是因为它不像普通的方法那样有一个明确的名称。函数:我们说它是函数,
  • 2024-01-12Dating Java8系列之通过行为参数化传递代码
    给我馍馍/文 引言 作为技术开发人员,我们无法保证我们写出来的代码的可用时间和保质期,也许今天刚上线的一个功能,等到明天就因为需求变动不得不进行更改。 为什么会不断的变化作为技术人员,我们当然希望需求能循序渐进地平稳过度,但往往事与愿违,对于其原因我简单总结为以
  • 2024-01-12Dating Java8系列之default默认方法
    给我馍馍/文  引言 传统上,Java程序的接口是将相关方法按照约定组合到一起。实现接口的类必须为接口中定义的每个方法提供一个实现,或者从父类中继承它的实现。 不断迭代的API默认方法的引入就是为了,以兼容的方式,解决像JavaAPI这样的类库,演进迭代问题。理解演进迭
  • 2024-01-12Dating Java8系列之Java8中的流操作
    给我馍馍/文  本次我们会使用到很多的流操作,如筛选、切片、映射、查找、匹配和归约,这些操作可以让我们能快速完成复杂的数据查询。 筛选和切片 用谓词筛选Streams接口支持filter方法。该操作会接受一个谓词(一个返回boolean的函数)作为参数,并返回一个包括所有符合
  • 2024-01-12Dating Java8系列之Java8中的‘流’
    给我馍馍/文 流的概念 1.流是什么流是JavaAPI的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。就现在来说,我们可以把它们看成遍历数据集的高级迭代器。 代码:按价格排序后得到手机名称列表 使用新的流式方法有几个显而易见
  • 2024-01-12Dating Java8系列之巧用Optional之优雅规避NPE问题
    给我馍馍/文  避之不及的NullPointerException NPE:NullPointerException空指针异常是最常见的Java异常之一,抛出NPE错误不是用户操作的错误,而是开发人员的错误,应该被避免,那么只能在每个方法中加入非空检查,阅读性和维护性都比较差。以下是一个常见的嵌套对象:一个用
  • 2024-01-12Dating Java8系列之并行数据处理
    翎野君/文  分支合并框架 分支合并框架介绍分支/合并框架的目的是以递归的方式将可以并行的任务拆分成更小的任务,然后将每个子任务的结果合并起来生成整体结果。它是ExecutorService接口的一个实现,它把子任务分配给线程池(称为ForkJoinPool)中的工作线程。把任务提交