摘要:
wait(),notify()和notifyAll() 他们都是java.lang.Object的方法: wait(): Causes the current thread to wait until another thread invokes the notify() method or the 阅读全文
摘要:
多线程的一个接口和一个类 //Runnable接口: @FunctionalInterface public interface Runnable { public abstract void run(); } //Thread类,它其实也是实现了Runnable接口 public class Th 阅读全文
摘要:
在多任务程序中,我们比较熟悉的是分支-合并框架的并行计算,他的目的是将一个操作(比如巨大的List计算)切分为多个子操作,充分利用CPU的多核,甚至多个机器集群,并行执行这些子操作。 而CompletableFuture的目标是并发(执行多个操作),而非并行,是利用CPU的核,使其持续忙碌,达成最大 阅读全文
摘要:
Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException)。是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。在这段代码就可能产生空异常; String isocode = user.getAddress().getCoun 阅读全文
摘要:
得益于函数接口,我们可以改造设计模式(不限于此): 策略模式 模板模式 观察者模式 责任链模式 工厂模式 策略模式 优点: 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。 缺点: 1、策略类会增多。 2、所有策略类都需要对外暴露。 使用场景: 1、如果在一个系统里面有许多类,它 阅读全文
摘要:
问题引入 如果你在做一些汇总操作,比如 1、对一个交易列表按货币分组,获取每种货币的和(Map<Cruuency,Integer>) 2、将交易分成贵的、不贵的(Map<Boolean,List<Transaction>>) 3、多级分组,按城市分组,再按贵和不贵分组 如果是传统的写法,使用外部迭代 阅读全文
摘要:
问题引入 假如你是一个厨师,你有一份菜单列表(DishMenu),你需要一份低卡路里(Caloric低于400),并且按卡路里数值排序的top3(最低的前3个)的仅包含菜名的菜单列表,你会怎么做?这个问题也贯穿了开发中大量需要处理list、set、map之类的集合操作,是非常非常基础的问题。而Str 阅读全文
摘要:
问题引入 有一个简单的java类Apple,需要对List实例进行筛选,比如选出“红苹果”、“绿苹果”、“重苹果”、“又红又重的苹果”,你会怎么做? 相关类和数据 public static class Apple { private int weight = 0; private String c 阅读全文
摘要:
Bucket aggregations 桶聚合 Bucket聚合不像metrics聚合那样计算字段上的度量,而是创建文档的Bucket。每个bucket都与一个标准(取决于聚合类型)相关联,该标准确定当前上下文中的文档是否“落入”其中。换句话说,bucket有效地定义了文档集。除了bucket本身, 阅读全文
摘要:
聚合 类似于 DSL 查询表达式,聚合也有 可组合 的语法:独立单元的功能可以被混合起来提供你需要的自定义行为。这意味着只需要学习很少的基本概念,就可以得到几乎无尽的组合。 要掌握聚合,你只需要明白两个主要的概念: 桶(Buckets)满足特定条件的文档的集合指标(Metrics)对桶内的文档进行统 阅读全文