本文参考资料: 1.<大话数据结构> 2.http://blog.csdn.net/jzhf2012/article/details/8540543 3.http://blog.csdn.net/jzhf2012/article/details/8540410 4.http://www.cnblogs.com/ITtangtang/p/3948610.html 5.http://blog.csdn.net/zw0283/article/details/51132161 本来在分析完HashSe…
本文参考资料: 1.<大话数据结构> 2.http://www.cnblogs.com/dassmeta/p/5338955.html 3.http://www.cnblogs.com/dsj2016/p/5551059.html 4.http://blog.csdn.net/hackbuteer1/article/details/6591486/ 5.http://blog.csdn.net/feixiaoxing/article/details/6848077 6.http://www.c…
本文参考资料: 1.<深入理解jvm虚拟机> 2.<大话数据结构>.<大话设计模式> 3.http://www.cnblogs.com/ITtangtang/p/3976820.html#3441029 4.http://www.cnblogs.com/xiaoxi/p/6036701.html5.https://www.zhihu.com/question/206188916.http://blog.csdn.net/zhangjg_blog/article/deta…
转自:map和flatmap的区别 对于stream,   两者的输入都是stream的每一个元素,map的输出对应一个元素,必然是一个元素(null也是要返回),flatmap是0或者多个元素(为null的时候其实就是0个元素). flatmap的意义在于,一般的java方法都是返回一个结果,但是对于结果数量不确定的时候,用map这种java方法的方式,是不太灵活的,所以引入了flatmap. 对于Optional的map和flatmap: map是把结果自动封装成一个Optional,但是f…
线程生命周期-理解Java中的线程状态 在多线程编程环境下,理解线程生命周期和线程状态非常重要. 在上一篇教程中,我们已经学习了如何创建java线程:实现Runnable接口或者成为Thread的子类,但启动一个java线程,则需要先创建一个Thread实例,然后调用此实例上的start(),这个线程就被启动了并会调用run()方法执行任务. 线程状态 下图展示了java线程中的几种不同状态,我们创建一个线程并启动它,但该线程何时从状态Runnable变为Running以及Blocked则取决于…
深入理解Java中的不可变对象 不可变对象想必大部分朋友都不陌生,大家在平时写代码的过程中100%会使用到不可变对象,比如最常见的String对象.包装器对象等,那么到底为何Java语言要这么设计,真正意图和考虑点是什么?可能一些朋友没有细想过这些问题,今天我们就来聊聊跟不可变对象有关的话题. 以下是本文目录大纲: 一.什么是不可变对象 二.深入理解不可变性 三.如何创建不可变对象 四.不可变对象真的"完全不可改变"吗? 若有不正之处,希望谅解并欢迎批评指正. 请尊重作者劳动成果,转载…
深入理解Java中配置环境变量 配置的目的: 本来只在安装JDK的bin目下能运行java.exe,javac.exe,jar.exe,javadoc.exe等Java开发工具包命令,我们现在想让在所有目录下都能运行这些命令. 配置的解决途径: 将这个目录放在windows的环境变量path中即可 找所需命令的过程: 如果想运行javac.exe命令,先在自己的文件夹里面找有没有这个,没有就去电脑的path里面找 通俗理解: 配置classpath的过程就像我们把钱存在银行的过程,然后在世界各地…
深入理解Java中的spi机制 SPI全名为Service Provider Interface是JDK内置的一种服务提供发现机制,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件. JAVA SPI = 基于接口的编程+策略模式+配置文件 的动态加载机制 Java SPI的具体约定如下: 当服务的提供者,提供了服务接口的一种实现之后,在jar包的META-INF/services/目录里同时创建一个以服务接口命名的文件.该文件里就是实现该服务接口的具体实现…
深入理解Java 中SPI 制 概述 SPI(Service Provider Interface),是JDK内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件,主要是被框架的开发人员使用,比如java.sql.Driver接口,其他不同厂商可以针对同一接口做出不同的实现,MySQL和PostgreSQL都有不同的实现提供给用户,而Java的SPI机制可以为某个接口寻找服务实现.Java中SPI机制主要思想是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要,其核心思想就是解耦.…
小伟刚毕业时面的第一家公司就被面试官给问住了... 如何理解Java中的自动拆箱和自动装箱? 自动拆箱?自动装箱?什么鬼,听都没听过啊,这...这..知识盲区... 回到家后小伟赶紧查资料,我透,这不就是问基本类型跟封装类型吗,面试官整啥名词呢... 别问结果,问就是没过. 1. 什么是自动装箱,自动拆箱 定义:基本数据类型和包装类之间可以自动地相互转换 理解:装箱就是自动将基本数据类型转换为封装类型,拆箱就是自动将封装类型转换为基本数据类型. 我们知道,Java中提供了四大类基本数据类型,分别…