随笔分类 - JAVA基础
摘要:在JDK的bin目录中,有多种小工具,用来支持调试,监控,编译和运行等功能。 root@root:/usr/lib/jvm/java-8-openjdk-amd64/bin# ls appletviewer hsdb jarsigner javadoc java-rmi.cgi jdb jinfo
阅读全文
posted @ 2020-04-02 22:44
鄙人取个名字好难
摘要:1.哪些内存需要回收? Java内存运行时区域的各个部分,其中程序计数器,虚拟机栈,本地方法栈3个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不絮执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性。当方法结
阅读全文
posted @ 2020-03-31 23:59
鄙人取个名字好难
摘要:1.java程序执行过程 java源代码文件被java编译器编译为字节码(CLASS)文件,然后由JVM中的类加载器加载字节码文件,加载完毕之后,交由JVM执行引擎执行。执行期间,JVM会用一段空间来存储执行期间需要用到的数据和相关信息,这段空间被称为Runtime Data Area(运行时数据区
阅读全文
posted @ 2020-03-28 20:50
鄙人取个名字好难
摘要:旧版API缺陷 1.设计缺陷 :比如Calendar类的月份是从0开始计算 2.非线程安全:java.util.Date 是非线程安全的,所有的日期类都是可变的 3.时区处理麻烦:日期类并不提供国际化,没有时区支持,因此Java引入了java.util.Calendar和java.util.Time
阅读全文
posted @ 2020-02-21 16:42
鄙人取个名字好难
摘要:创建Optional对象 1.声明一个空的Optional:通过静态工厂方法Optional.empty,创建一个空的Optional对象 2.依据一个非空值创建Optional:Optional.of(obj)要求传入的 obj 不能是 null,否则会抛出NullPointerException
阅读全文
posted @ 2020-02-21 15:25
鄙人取个名字好难
摘要:Future Java 1.5开始,提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。要使用Future,通只需要将耗时操作封装在一个Callable对象中,再将它提交给ExecutorService。 ExecutorService(线程池)体系结构: 一、线程
阅读全文
posted @ 2020-02-20 18:12
鄙人取个名字好难
摘要:流与集合 集合是一个内存中的数据结构,集合中的每个元素都得先计算出来才能添加到集合中。流与集合有以下不同: 无存储. stream不是一种数据结构,它只是某种数据源的一个视图 不可修改.对stream的任何修改都不会影响背后的数据源 可消费性.stream只能被消费一次. Collection:集合
阅读全文
posted @ 2020-02-18 14:57
鄙人取个名字好难
摘要:函数式接口就是只定义一个抽象方法的接口。在java8中,接口还可以拥有默认方法(即在类没有对方法进行实现时,其主体为方法提供默认实现的方法)。哪怕有很多默认方法,只要接口只定义了一个抽象方法,它就依然是一个函数式接口。 函数式接口带有@FunctionalInterface的标注,但它不是必须的。如
阅读全文
posted @ 2020-02-11 15:30
鄙人取个名字好难
摘要:1.Lambda基本语法 (parameters) -> expression (表达式,隐藏了return) 或 (parameters) -> {statements;} 2.局部变量 Lambda表达式运行使用自由变量(外层作用域中定义的变量)。Lambda可以捕获实例变量和静态变量,但局部变
阅读全文
posted @ 2020-02-10 22:39
鄙人取个名字好难
摘要:先从计算机的硬件效率说起,CPU的计算速度比内存快几个数量级,为了平衡CPU和内存之间的矛盾,引入的高速缓存,每个CPU都有高速缓存,甚至是多级缓存L1、L2和L3,那么缓存与内存的交互需要缓存一致性协议(MESI,与volitle保持可见性有关)。那么最终处理器、高速缓存、主内存的交互关系如下:
阅读全文
posted @ 2018-08-09 13:21
鄙人取个名字好难

浙公网安备 33010602011771号