使用Docker构建微服务镜像
23 Sep 2019
Java
与C++
之间有一堵由内存分配和垃圾回收技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。对于C
、C++
程序开发人员来说,在内存管理领域,它们既是拥有最高权力的皇帝又是从事最基础工作的劳动人民。拥有每一个对象的所有权,也有担负着每一个对象生命开始到终结的维护责任。
对
Java
程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new
操作写配对的delete
、free
代码,因有虚拟机管理内存,不容易出现内存泄漏和内存溢出的问题。
java8提供了一个新的API(称为流 Stream),它支持许多并行的操作,其思路和在数据库查询语言中的思路类似——用更高级的方式表达想要的东西,而由“实现”来选择最佳低级执行机制。这样就可以避免synchronized
编写代码,这一行代码不仅容易出错,而且在多核cpu上的执行所需成本也比想象的高;
在java8中加入Stream可以看作把另外两项扩充加入java8的原因:把代码传递给方法的简洁方式(方法引用、lambda)和接口中的默认方法;java8里面将代码传递给方法的功能(同时也能返回代码并将其包含在数据结构中)还让我们能够使用一套新技巧,通常称为函数式编程;
java8引入默认方法主要是为了支持库设计师,让他们能够写出更容易改进的接口。这一方法很重要,因为你会在接口中遇到越来越多的默认方法。由于真正需要编写默认方法的程序员较少,而且它们只是有助于程序改进。