随笔分类 -  Java

主要存放Java方面文章
摘要:Collection线程不安全的举例 前言 1、当我们执行下面语句的时候,底层进行了什么操作 new ArrayList<Integer>(); 底层创建了一个空的数组,伴随着初始值为10 当执行add方法后,如果超过了10,那么会进行扩容,扩容的大小为原值的一半,也就是5个,使用下列方法扩容 Ar 阅读全文
posted @ 2023-04-17 16:53 城市幽灵 阅读(23) 评论(0) 推荐(0) 编辑
摘要:原子类AtomicInteger的ABA问题 连环套路 从AtomicInteger引出下面的问题 CAS -> Unsafe -> CAS底层思想 -> ABA -> 原子引用更新 -> 如何规避ABA问题 ABA问题是什么 狸猫换太子 假设现在有两个线程,分别是T1 和 T2,然后T1执行某个操 阅读全文
posted @ 2023-04-17 16:53 城市幽灵 阅读(57) 评论(0) 推荐(0) 编辑
摘要:CAS底层原理 概念 CAS的全称是Compare-And-Swap,它是CPU并发原语 它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的 CAS并发原语体现在Java语言中就是sun.misc.Unsafe类的各个方法。调用UnSafe类中的CAS方法,JVM会帮 阅读全文
posted @ 2023-04-17 16:53 城市幽灵 阅读(20) 评论(0) 推荐(0) 编辑
摘要:Volatile的应用 单例模式DCL代码 首先回顾一下,单线程下的单例模式代码 /** * SingletonDemo(单例模式) * * @author: 陌溪 * @create: 2020-03-10-16:40 */ public class SingletonDemo { private 阅读全文
posted @ 2023-04-17 16:52 城市幽灵 阅读(9) 评论(0) 推荐(0) 编辑
摘要:Volatile禁止指令重排 计算机在执行程序时,为了提高性能,编译器和处理器常常会对指令重排,一般分为以下三种: 源代码 -> 编译器优化的重排 -> 指令并行的重排 -> 内存系统的重排 -> 最终执行指令 单线程环境里面确保最终执行结果和代码顺序的结果一致 处理器在进行重排序时,必须要考虑指令 阅读全文
posted @ 2023-04-17 16:52 城市幽灵 阅读(22) 评论(0) 推荐(0) 编辑
摘要:Volatile不保证原子性 前言 通过前面对JMM的介绍,我们知道,各个线程对主内存中共享变量的操作都是各个线程各自拷贝到自己的工作内存进行操作后在写回到主内存中的。 这就可能存在一个线程AAA修改了共享变量X的值,但是还未写入主内存时,另外一个线程BBB又对主内存中同一共享变量X进行操作,但此时 阅读全文
posted @ 2023-04-17 16:52 城市幽灵 阅读(10) 评论(0) 推荐(0) 编辑
摘要:JUC(java.util.concurrent) 进程和线程 进程:后台运行的程序(我们打开的一个软件,就是进程) 线程:轻量级的进程,并且一个进程包含多个线程(同在一个软件内,同时运行窗口,就是线程) 并发和并行 并发:同时访问某个东西,就是并发 并行:一起做某些事情,就是并行 JUC下的三个包 阅读全文
posted @ 2023-04-17 16:52 城市幽灵 阅读(15) 评论(0) 推荐(0) 编辑
摘要:Java8新特性 主要特性 Lambda表达式 函数式接口 方法引用与构造器引用 Stream API 接口中默认方法与静态方法 新时间日期API 最大化减少空指针异常(Optional) 。。。。 HashMap1.7 在JDK1.7 到 JDK1.8的时候,对HashMap做了优化 首先JDK1 阅读全文
posted @ 2023-04-17 16:49 城市幽灵 阅读(54) 评论(0) 推荐(0) 编辑
摘要:Lambda表达式 为什么要用Lambda表达式 Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,将代码像数据一样传递,这样可以写出更简洁、更灵活的代码,作为一个更紧凑的代码风格,使Java语言表达能力得到了提升 实例代码 Lambda表达式最先替代的就是匿名内部 阅读全文
posted @ 2023-04-17 16:49 城市幽灵 阅读(16) 评论(0) 推荐(0) 编辑
摘要:方法引用与构造器引用 方法引用 概念 若Lambda体中的内容有方法已经实现了,我们可以使用“方法引用”,可以理解为方法引用是Lambda表达式的另外一种表现形式 格式 对象::实例方法名 类::静态方法名 类::实例方法名 注意 Lambda体中,调用方法的参数列表与返回值类型,要与函数式接口中抽 阅读全文
posted @ 2023-04-17 16:49 城市幽灵 阅读(8) 评论(0) 推荐(0) 编辑
摘要:Stream API 了解Stream Java8中有两个比较大的改变 Lambda表达式 Stream API (java.util.stream.*) Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找,过滤和映射数据等操作。使用Strea 阅读全文
posted @ 2023-04-17 16:49 城市幽灵 阅读(8) 评论(0) 推荐(0) 编辑
摘要:并行流与顺序流 并行流 并行流就是把一个内容分成多个数据库,并用不同的线程分别处理每个数据块的流 Java8中将并行流进行了优化,我们可以很容易的对数据进行并行操作,Stream API可以声明性的通过parallel() 与 sequential() 在并行流与顺序流之间进行切换 Fork/Joi 阅读全文
posted @ 2023-04-17 16:49 城市幽灵 阅读(48) 评论(0) 推荐(0) 编辑
摘要:Optional类 概念 Optional类是一个容器类,代表一个值存在或者不存在,原来null表示一个值不存在,现在Optional可以更好的表达这个概念,并且可以规避空指针异常 常用方法 Optional.of:创建一个Optional实例 Optional.empty:创建一个空的Option 阅读全文
posted @ 2023-04-17 16:49 城市幽灵 阅读(10) 评论(0) 推荐(0) 编辑
摘要:通俗理解多种IO模型 前言 我们以故事来讲我们经常遇到的多种IO模型,首先故事的情节是 老李去买火车票,三天后买到一张退票,其中往返车站耗时1小时。 里面主要包含的人员有:老李,黄牛,售票员,快递员 多种IO模型 阻塞IO模型 老李去火车站买票,排了三天队买到一张退票 耗费:在火车站等了三天,其它一 阅读全文
posted @ 2023-04-17 16:48 城市幽灵 阅读(23) 评论(0) 推荐(0) 编辑
摘要:Redis中的跳跃表 前言 跳跃表是一种有序的数据结构,它通过在每个节点维持多个指向其他节点的指针,从而达到快速访问节点的目的。 什么是跳跃表 对于单个链表来讲,即便链表中存储的数据是有序的,如果我们要向在其中查找某个数据,它只能从头到尾遍历链表。这样查找效率就会很低,时间复杂度会很高,达到了O(n 阅读全文
posted @ 2023-04-17 16:47 城市幽灵 阅读(20) 评论(0) 推荐(0) 编辑
摘要:Redis中的数据结构 前言 Redis是一个高性能的分布式内存数据库,在国内外个大互联网公司中都有着广泛的使用,即使是一些非互联网公司也有着非常重要的使用场景。 Redis提供了五种主要的数据类型,它提供了强大且实用的功能,然而实际开发中,有大多数的开发者仅仅只会使用简单的 Redis Strin 阅读全文
posted @ 2023-04-17 16:46 城市幽灵 阅读(23) 评论(0) 推荐(0) 编辑
摘要:Kafka 面试题 1 、Kafka 是什么 1. broker: Kafka 服务器,负责消息存储和转发 2. topic:消息类别, Kafka 按照 topic 来分类消息 3. partition: topic 的分区,一个 topic 可以包含多个 partition, topic 消息保 阅读全文
posted @ 2023-02-19 19:09 城市幽灵 阅读(96) 评论(0) 推荐(0) 编辑
摘要:微服务面试题 微服务,又称微服务 架构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。 通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们最初从使用各种材料的小部分开始,并继续从中构建一个大型蜂箱。这些细胞形成图案,产 生坚固的结构,将蜂窝的特定部分 阅读全文
posted @ 2023-02-19 19:08 城市幽灵 阅读(68) 评论(0) 推荐(0) 编辑
摘要:Linux面试题 1 、绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 绝对路径: 如/etc/init.d 当前目录和上层目录: ./ ../ 主目录: ~/ 切换目录: cd 2 、怎么查看当前进程?怎么执行退出?怎么查看当前路径? 查看当前进程: 阅读全文
posted @ 2023-02-19 19:08 城市幽灵 阅读(57) 评论(0) 推荐(0) 编辑
摘要:《Arthas进阶》 学习目标 类和类加载器相关的命令 monitor/watch/trace/stack等核心命令的使用 火焰图的生成 Arthas实战案例 dump 作用 将已加载类的字节码文件保存到特定目录:logs/arthas/classdump/ 参数 | 数名称 | 参数说明 | | 阅读全文
posted @ 2023-02-18 14:37 城市幽灵 阅读(95) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示