摘要: 什么是JVM jvm是java虚拟机 运行在用户态、通过应用程序实现java代码跨平台、与平台无关、实际上是"一次编译,到处执行" 从微观来说编译出来的是字节码!去到哪个平台都能用,只要有那个平台的JDK就可以运行!字码好比是一个人,平台好比为国家,JDK好比这个国家的语言!只要这个人(字节码)有了 阅读全文
posted @ 2023-04-08 14:29 李勇888 阅读(41) 评论(0) 推荐(0) 编辑
摘要: Java.lang.StackOverFlowError 虚拟机栈溢出 java.lang.OutOfMemoryError: java heap space 堆区 内存溢出 java.lang.OutOfMemoryError: GC overhead limit exceeded 大量资源都用于 阅读全文
posted @ 2023-04-08 14:29 李勇888 阅读(18) 评论(0) 推荐(0) 编辑
摘要: synchronized 由对象头中的 对象标志 根据锁标志位的不同而被复用 以及锁升级策略 能用无锁 就不要用锁,能锁代码块 就不锁整个方法, 能用对象锁 就不用类锁. 尽可能让锁的粒度更小,以提高并发效率 每个对象\类 都是一把锁, 底层是Monitor锁 本质是依赖于操作系统的Mutex Lo 阅读全文
posted @ 2023-04-08 14:24 李勇888 阅读(40) 评论(0) 推荐(0) 编辑
摘要: volatile是java虚拟机提供的轻量级的同步机制 内存可见性 (保证可见性) 不保证原子性 禁止指令重排 (保证有序性) 可见性 volatile修饰的共享变量有如下特点 线程中读取这个变量时,每次都会读取主内存中最新的值,然后将其复制到工作内存 线程中修改了工作内存中变量的副本,修改之后会立 阅读全文
posted @ 2023-04-08 14:24 李勇888 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 原子类介绍 java.util.concurrent.atomic java并发包下的类,用于多线程情况下保证线程安全的 API 基本类型原子类 AtomicInteger 数组类型原子类 AtomicIntegerArray 引用类型原子类 AtomicReference 对象的属性修改原子类 A 阅读全文
posted @ 2023-04-08 14:24 李勇888 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 概念 compareAndSwap翻译过来就是 比较并交换 cas底层 调用的是unSafe,unSafed对底层的修改调用的native方法(CPU并发原语),天然原子性 代码说话 创建一个AtomicInteger类,初始化值5,此时线程A去修改,把5读到工作内存,修改成2000,在写回主内存时 阅读全文
posted @ 2023-04-08 14:16 李勇888 阅读(79) 评论(1) 推荐(1) 编辑
摘要: AQS是什么 字面意思, 抽象的队列同步器 是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石,通过内置的CLH (FIFO)队列的变种来完成资源获取线程的排队工作,将每条将要去抢占资源的线程封装成一个Node节点来实现锁的分配,有一个int类变量表示持有锁的状态(private 阅读全文
posted @ 2023-04-08 14:15 李勇888 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 自定义线程池 ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10, 200, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(5)); 第一个参数:核心线程池大小,默认创 阅读全文
posted @ 2023-04-08 14:14 李勇888 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 什么是ThreadLocal ThreadLocal提供了线程局部变量. 这些变量和正常的变量不同,因为每一个线程在访问ThreadLocal实例的时候 都有自己独立的 变量副本. ThreadLocal实例通常是类的私有静态字段,使用它的目的是希望将状态(用户ID、事务ID) 与线程关联起来 通俗 阅读全文
posted @ 2023-04-08 14:11 李勇888 阅读(19) 评论(1) 推荐(1) 编辑
摘要: 引用分类 强引用 强引用是我们常见的普通对象引用,只有还有强引用指向一个对象,就表明这个对象还“存活”,垃圾收集器不会碰这个对象 当一个对象被强引用对象引用时,它就处于 可达状态,它是不能被垃圾回收的,即使出现了OOM也不会对该对象回收 软引用 软引用是相对于强引用弱化了一些的引用 当系统内存充足时 阅读全文
posted @ 2023-04-08 14:09 李勇888 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 缓存双写一致性 如果redis中有数据 需要和数据库中的值相同 如果redis中无数据 数据库中的值是最新值,且准备回写redis 缓存按照操作分 只读缓存 读写缓存 同步直写策略 写数据库后也同步写 redis 缓存,缓存中的数据和数据中的一致 对于读写缓存来说,要想保证缓存和数据库中的数据一致 阅读全文
posted @ 2023-04-08 09:23 李勇888 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 什么是索引 索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构, 为了优化数据库查询效率, 引入的数据结构,类似于书的目录 索引的分类 普通索引 -- 创建索引的基本语法 CREATE INDEX indexName ON table(column(length)); 主键索引 阅读全文
posted @ 2023-04-08 09:18 李勇888 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 概念 Multi Version Concurrency Control, 用于数据库的并发访问控制 MVCC在mysql innoDB中的实现主要是为了提高数据库并发性能, 用更好的方式去处理读-写冲突, 实现读写冲突不加锁, 非阻塞并发读写 每一次的数据修改都会将历史记录保存在Undo log里 阅读全文
posted @ 2023-04-08 09:16 李勇888 阅读(110) 评论(1) 推荐(0) 编辑
摘要: 前言 前后台调试过程中某个查询操作导致了后台报错java.lang.OutOfMemoryError: PermGen space,百度了一下说是内存溢出,设置JVM参数就能解决,确实是如此。 引用别人的解释: OutOfMemoryError: PermGen space 非堆溢出(永久保存区域溢 阅读全文
posted @ 2023-04-08 08:57 李勇888 阅读(190) 评论(0) 推荐(0) 编辑