草庐IT

读Java实战(第二版)笔记10_函数式编程的技巧

1. 设计原则1.1. 将所有你愿意接受的作为参数的函数可能带来的副作用以文档的方式记录下来1.2. 最理想的情况下你接收的函数参数应该没有任何副作用1.3. 延迟数据结构是强力武器1.4. 所有使用持久化数据结构的用户都必须遵守“不修改”原则2. 一等函数2.1. first-classfunction2.2. 能够像普通变量一样使用的函数2.2.1. 可以作为参数传递2.2.2. 可以作为结果返回2.2.3. 能存储在数据结构中的函数2.3. ::操作符2.3.1. 创建一个方法引用,像使用函数值一样使用方法2.4. Lambda表达式2.4.1. 直接表示方法的值3. 高阶函数3.1. 

读Java实战(第二版)笔记10_函数式编程的技巧

1. 设计原则1.1. 将所有你愿意接受的作为参数的函数可能带来的副作用以文档的方式记录下来1.2. 最理想的情况下你接收的函数参数应该没有任何副作用1.3. 延迟数据结构是强力武器1.4. 所有使用持久化数据结构的用户都必须遵守“不修改”原则2. 一等函数2.1. first-classfunction2.2. 能够像普通变量一样使用的函数2.2.1. 可以作为参数传递2.2.2. 可以作为结果返回2.2.3. 能存储在数据结构中的函数2.3. ::操作符2.3.1. 创建一个方法引用,像使用函数值一样使用方法2.4. Lambda表达式2.4.1. 直接表示方法的值3. 高阶函数3.1. 

【Java面试】这应该是面试官最想听到的回答,Mysql如何解决幻读问题?

“Mysql如何解决幻读问题”一个工作了4年小伙伴,去一个美团面试,遇到了这样一个问题。大家好,我是Mic,一个工作了14年的Java程序员关于这个问题,面试官想考察什么?我们应该如何回答呢?问题解析这个问题至少考察的是3年以上开发经验的同学。Mysql底层去解决并发事务问题,至少是要有一定的技术积累才能真正理解。而如果作为一个刚工作没多久的程序员,必须要知道数据库的事务隔离级别的问题。因为不同的隔离级别对于数据的安全性影响是不同的。也就是存在脏读、幻读、不可重复读等问题。所谓幻读,就是一个事务前后两次读取到的数据条数不一致。在第一个事务里面执行一个范围查询,这个时候满足查询的数据只有一条。接

【Java面试】这应该是面试官最想听到的回答,Mysql如何解决幻读问题?

“Mysql如何解决幻读问题”一个工作了4年小伙伴,去一个美团面试,遇到了这样一个问题。大家好,我是Mic,一个工作了14年的Java程序员关于这个问题,面试官想考察什么?我们应该如何回答呢?问题解析这个问题至少考察的是3年以上开发经验的同学。Mysql底层去解决并发事务问题,至少是要有一定的技术积累才能真正理解。而如果作为一个刚工作没多久的程序员,必须要知道数据库的事务隔离级别的问题。因为不同的隔离级别对于数据的安全性影响是不同的。也就是存在脏读、幻读、不可重复读等问题。所谓幻读,就是一个事务前后两次读取到的数据条数不一致。在第一个事务里面执行一个范围查询,这个时候满足查询的数据只有一条。接

读Java8函数式编程笔记08_测试、调试和重构

1. Lambda表达式的单元测试1.1. 单元测试是测试一段代码的行为是否符合预期的方式1.2. Lambda表达式没有名字,无法直接在测试代码中调用1.2.1. 将Lambda表达式放入一个方法测试,这种方式要测那个方法,而不是Lambda表达式本身1.2.2. 请用方法引用。任何Lambda表达式都能被改写为普通方法,然后使用方法引用直接引用1.2.2.1. 想要对复杂一点的Lambda表达式编写单元测试,将其抽取成一个常规的方法2. 在测试替身时使用Lambda表达式2.1. 使用测试替身描述系统中其他模块的期望行为2.1.1. 测试替身也常被称为模拟2.1.2. 测试存根和模拟都属于

读Java8函数式编程笔记08_测试、调试和重构

1. Lambda表达式的单元测试1.1. 单元测试是测试一段代码的行为是否符合预期的方式1.2. Lambda表达式没有名字,无法直接在测试代码中调用1.2.1. 将Lambda表达式放入一个方法测试,这种方式要测那个方法,而不是Lambda表达式本身1.2.2. 请用方法引用。任何Lambda表达式都能被改写为普通方法,然后使用方法引用直接引用1.2.2.1. 想要对复杂一点的Lambda表达式编写单元测试,将其抽取成一个常规的方法2. 在测试替身时使用Lambda表达式2.1. 使用测试替身描述系统中其他模块的期望行为2.1.1. 测试替身也常被称为模拟2.1.2. 测试存根和模拟都属于

读Java实战(第二版)笔记06_新的日期和时间API

1. Java8之前的库对日期和时间的支持非常不理想2. TemporalField接口2.1. 定义了如何访问temporal对象某个字段的值的接口2.2. ChronoField枚举2.2.1. 实现TemporalField接口3. LocalDate类3.1. 实例是一个不可变对象3.2. 只提供了简单的日期3.3. 不含当天的时间信息3.4. 不附带任何与时区相关的信息3.5. LocalDate.of3.5.1. 静态工厂方法of创建一个LocalDate实例3.6. LocalDate.now()3.6.1. 从系统时钟中获取当前的日期3.7. LocalDate.parse3.

读Java实战(第二版)笔记06_新的日期和时间API

1. Java8之前的库对日期和时间的支持非常不理想2. TemporalField接口2.1. 定义了如何访问temporal对象某个字段的值的接口2.2. ChronoField枚举2.2.1. 实现TemporalField接口3. LocalDate类3.1. 实例是一个不可变对象3.2. 只提供了简单的日期3.3. 不含当天的时间信息3.4. 不附带任何与时区相关的信息3.5. LocalDate.of3.5.1. 静态工厂方法of创建一个LocalDate实例3.6. LocalDate.now()3.6.1. 从系统时钟中获取当前的日期3.7. LocalDate.parse3.

读函数式编程思维笔记05_现实应用

1. Java81.1. 除了增加函数式特性,还增加了一些配合使用的语法糖衣1.2. 函数式接口1.2.1. SAM(SingleAbstractMethod,单抽象方法)接口1.2.1.1. 含有单一方法的接口是Java的一种习惯用法1.2.1.2. Runnable和Callable接口都是有代表性的例子1.2.2. 对旧有SAM接口的增强,它允许我们用lambda块取代传统的匿名类来就地实例化一个接口1.3. 默认方法1.3.1. 一些在接口类型中声明的,以default关键字标记的,非抽象、非静态的public方法(且带有方法体定义)1.4. mixin1.4.1. 介于接口和父类之间

读函数式编程思维笔记05_现实应用

1. Java81.1. 除了增加函数式特性,还增加了一些配合使用的语法糖衣1.2. 函数式接口1.2.1. SAM(SingleAbstractMethod,单抽象方法)接口1.2.1.1. 含有单一方法的接口是Java的一种习惯用法1.2.1.2. Runnable和Callable接口都是有代表性的例子1.2.2. 对旧有SAM接口的增强,它允许我们用lambda块取代传统的匿名类来就地实例化一个接口1.3. 默认方法1.3.1. 一些在接口类型中声明的,以default关键字标记的,非抽象、非静态的public方法(且带有方法体定义)1.4. mixin1.4.1. 介于接口和父类之间