java 8部分读书笔记

java 8部分读书笔记

Lambda 表达式

  1. Lambda 表达式引用的是值,不是变量。

  2. Lambda 表达式中的变量只能是final类型,只能给变量赋值一次。

    1
    2
    3
    String name = getUserName();
    name = formatUesrName();
    button.addActionListener(event -> System.out.println("Hi" + name))

    如上代码将不会编译通过,name被赋值多次。


Java设计模式之适配器模式
Java设计模式之装饰者模式

Java设计模式之装饰者模式

问题引入

咖啡店的类设计:

  1. 一个饮料基类,各种饮料类继承这个基类,并且计算各自的价钱。
  2. 饮料中需要加入各种调料,考虑在基类中加入一些布尔值变量代表是否加入各种调料,基类的cost()中的计算各种调料的价钱,子类覆盖cost(),并且在其中调用超类的cost(),加上特定饮料的价钱,计算出子类特定饮料的价钱。

缺点:类数量爆炸、基类加入的新功能并不适用于所有的子类、调料价钱的改变、新调料的出现都会要求改变现有代码;有的子类并不适合某些调料等情况……

Java设计模式之工厂模式

Java设计模式之工厂模式

工厂模式

序言

工厂模式在《Java与模式》中分为三类:

  1. 简单工厂模式(Simple Factory):不利于产生系列产品;

  2. 工厂方法模式(Factory Method):又称为多形性工厂;

  3. 抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但不利于产生新的产品;


Effective-Java-2-遇到多个构造器参数时考虑用构建器

Effective-Java-2-遇到多个构造器参数时考虑用构建器

遇到多个构造器参数时考虑用构建器

静态工厂和构造器有个共同的局限性:它们都不能很好地扩展到大量的可选参数。当有超过20个可选域是必须的时候,对于此种情况,程序员一般考虑采用重叠构造器模式。这种模式下,提供第一个只有必要参数的构造器,第二个构造器有一个可选参数,第三个有两个可选参数,以此类推,最后一个构造器包含所有的参数。

Java设计模式之单例模式
Java设计模式之观察者模式

Java设计模式之观察者模式

定义

在阎宏博士的《JAVA与模式》一书中开头是这样描述观察者(Observer)模式的:
观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

Immutable Object(不可变对象)模式

Immutable Object(不可变对象)模式

多线程下,一个对象会被多个线程共享,存在多线程并发地修改对象的属性,需要做些同步访问控制,
如显示锁,CAS操作,会带来额外的开销和问题,如上下文切换、等待时间、ABA问题。Immutable Object
模式意图通过使用对外可见的状态不可变的对象,使得天生具有线程安全性。

elasticsearch6 query 全文查询与词项查询

elasticsearch6 query 全文查询与词项查询

query

全文查询

  1. QueryBuilders.matchQuery(“filed”,”value”).operator(Operator.AND); // 对查询的语句进行分词,分词后的词任意一个匹配doc都能查出来 term query 查询的是词项<分词后的> (eg:Java编程思想) Java编程 term query 不能查到 分词后变成(Java 编程 思想) matchQuery能查到
  2. QueryBuilders.matchPhraseQuery(“field”,”value”);
    对value进行分词,可以自定义分词器,满足两个条件才能被搜到:
    • 分词后的所有词项都要匹配原字段
    • 顺序还需要一致


:D 一言句子获取中...