java8基于堆实现尾递归优化

1 前言 尾调用消除(tail call elimination, TCE)是函数式编程的重要概念, 有时也被称为尾调用优化(tail call optimization, TCO), 作用是将尾递归函数转化成循环, 避免创建许多栈帧, 减少开销. ...

七月 5, 2020 · 6 分钟 · 2959 字

guava 探究系列之五:新类型容器

1 前言 JDK 提供了各种功能强大的工具类, 宛如装备齐全的军火库, 而容器就是其中一项内置的利器, 提供了包括诸多常用的数据结构, 下图对 JDK 已有容器进行了概括: ...

十二月 12, 2019 · 13 分钟 · 6433 字

guava探究系列之四:不可变容器

1 前言 先此声明, 个人倾向于将 Collection 翻译成容器, 将 Set 翻译成集合. 已经许久没有更新Guava研读系列的文章, 今天要介绍的是Guava的不可变容器. 2 关于不可变对象 不可变的对象有许多的优点, 如下: ...

九月 5, 2019 · 5 分钟 · 2314 字

Guava探究系列之三:改善通用方法

1 前言 Java 是一门集大成的面向对象语言, 在Java的世界里, 一切皆对象, 而=Object=类就是所有对象的默认父类. Guava 提供了若干个工具方法来扩展=Object=类的通用能力. ...

七月 25, 2019 · 5 分钟 · 2329 字

Guava探究系列之二: 优雅校验数据

1 前言 根据防御式编程的要求, 在日常的开发中, 总少不了对函数的各种入参做校验, 以便保证函数能按照预期的流程执行下去. 比如各种费率的值就没可能是负数, 如果费率出现负数, 所以数据有问题, 我们需要做的事情就是把这些有问题的数据挑出来. 自己手写这些校验函数未免过于繁琐, 所幸的是我们需要的函数已经有现成的: ...

七月 4, 2019 · 6 分钟 · 2890 字