随笔分类 -  Java

主要存放Java方面文章
摘要:Volatile禁止指令重排 计算机在执行程序时,为了提高性能,编译器和处理器常常会对指令重排,一般分为以下三种: 源代码 -> 编译器优化的重排 -> 指令并行的重排 -> 内存系统的重排 -> 最终执行指令 单线程环境里面确保最终执行结果和代码顺序的结果一致 处理器在进行重排序时,必须要考虑指令 阅读全文
posted @ 2023-04-17 16:52 城市幽灵 阅读(30) 评论(0) 推荐(0)
摘要:Volatile不保证原子性 前言 通过前面对JMM的介绍,我们知道,各个线程对主内存中共享变量的操作都是各个线程各自拷贝到自己的工作内存进行操作后在写回到主内存中的。 这就可能存在一个线程AAA修改了共享变量X的值,但是还未写入主内存时,另外一个线程BBB又对主内存中同一共享变量X进行操作,但此时 阅读全文
posted @ 2023-04-17 16:52 城市幽灵 阅读(26) 评论(0) 推荐(0)
摘要:JUC(java.util.concurrent) 进程和线程 进程:后台运行的程序(我们打开的一个软件,就是进程) 线程:轻量级的进程,并且一个进程包含多个线程(同在一个软件内,同时运行窗口,就是线程) 并发和并行 并发:同时访问某个东西,就是并发 并行:一起做某些事情,就是并行 JUC下的三个包 阅读全文
posted @ 2023-04-17 16:52 城市幽灵 阅读(29) 评论(0) 推荐(0)
摘要:Java8新特性 主要特性 Lambda表达式 函数式接口 方法引用与构造器引用 Stream API 接口中默认方法与静态方法 新时间日期API 最大化减少空指针异常(Optional) 。。。。 HashMap1.7 在JDK1.7 到 JDK1.8的时候,对HashMap做了优化 首先JDK1 阅读全文
posted @ 2023-04-17 16:49 城市幽灵 阅读(126) 评论(0) 推荐(0)
摘要:Lambda表达式 为什么要用Lambda表达式 Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,将代码像数据一样传递,这样可以写出更简洁、更灵活的代码,作为一个更紧凑的代码风格,使Java语言表达能力得到了提升 实例代码 Lambda表达式最先替代的就是匿名内部 阅读全文
posted @ 2023-04-17 16:49 城市幽灵 阅读(33) 评论(0) 推荐(0)
摘要:方法引用与构造器引用 方法引用 概念 若Lambda体中的内容有方法已经实现了,我们可以使用“方法引用”,可以理解为方法引用是Lambda表达式的另外一种表现形式 格式 对象::实例方法名 类::静态方法名 类::实例方法名 注意 Lambda体中,调用方法的参数列表与返回值类型,要与函数式接口中抽 阅读全文
posted @ 2023-04-17 16:49 城市幽灵 阅读(15) 评论(0) 推荐(0)
摘要:Stream API 了解Stream Java8中有两个比较大的改变 Lambda表达式 Stream API (java.util.stream.*) Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找,过滤和映射数据等操作。使用Strea 阅读全文
posted @ 2023-04-17 16:49 城市幽灵 阅读(12) 评论(0) 推荐(0)
摘要:并行流与顺序流 并行流 并行流就是把一个内容分成多个数据库,并用不同的线程分别处理每个数据块的流 Java8中将并行流进行了优化,我们可以很容易的对数据进行并行操作,Stream API可以声明性的通过parallel() 与 sequential() 在并行流与顺序流之间进行切换 Fork/Joi 阅读全文
posted @ 2023-04-17 16:49 城市幽灵 阅读(52) 评论(0) 推荐(0)
摘要:Optional类 概念 Optional类是一个容器类,代表一个值存在或者不存在,原来null表示一个值不存在,现在Optional可以更好的表达这个概念,并且可以规避空指针异常 常用方法 Optional.of:创建一个Optional实例 Optional.empty:创建一个空的Option 阅读全文
posted @ 2023-04-17 16:49 城市幽灵 阅读(13) 评论(0) 推荐(0)
摘要:通俗理解多种IO模型 前言 我们以故事来讲我们经常遇到的多种IO模型,首先故事的情节是 老李去买火车票,三天后买到一张退票,其中往返车站耗时1小时。 里面主要包含的人员有:老李,黄牛,售票员,快递员 多种IO模型 阻塞IO模型 老李去火车站买票,排了三天队买到一张退票 耗费:在火车站等了三天,其它一 阅读全文
posted @ 2023-04-17 16:48 城市幽灵 阅读(37) 评论(0) 推荐(0)
摘要:Redis中的跳跃表 前言 跳跃表是一种有序的数据结构,它通过在每个节点维持多个指向其他节点的指针,从而达到快速访问节点的目的。 什么是跳跃表 对于单个链表来讲,即便链表中存储的数据是有序的,如果我们要向在其中查找某个数据,它只能从头到尾遍历链表。这样查找效率就会很低,时间复杂度会很高,达到了O(n 阅读全文
posted @ 2023-04-17 16:47 城市幽灵 阅读(28) 评论(0) 推荐(0)