java
文章平均质量分 64
learn from the dead
只要学不死,就往死里学
展开
-
jvm的内存模型和java的内存模型
JVM内存结构和Java内存模型都是面试的热点问题,名字看感觉都差不多,网上有些博客也都把这两个概念混着用,实际上他们之间差别还是挺大的。通俗点说,JVM内存结构是与JVM的内部存储结构相关,而Java内存模型是与多线程编程相关,本文针对这两个总是被混用的概念展开讲解。JVM内存结构JVM构成说到JVM内存结构,就不会只是说内存结构的5个分区,而是会延展到整个JVM相关的问题,所以先了解下JVM的构成。Java源代码编译成Java Class文件后通过类加载器ClassLoader加载到JVM中原创 2021-11-29 22:04:42 · 686 阅读 · 0 评论 -
ThreadLocal的原理解析
**1. 弱引用知识的复习**Java中的弱引用具体指的是java.lang.ref.WeakReference类,我们首先来看一下官方文档对它做的说明:弱引用对象的存在不会阻止它所指向的对象变被垃圾回收器回收。弱引用最常见的用途是实现规范映射(canonicalizingmappings,比如哈希表)。假设垃圾收集器在某个时间点决定一个对象是弱可达的(weaklyreachable)(也就是说当前指向它的全都是弱引用),这时垃圾收集器会清除所有指向该对象的弱引用,然后垃圾收集器会把这个弱可原创 2021-11-23 23:40:59 · 106 阅读 · 0 评论 -
mysql的隔离级别以及事务的传播性,spring中事务失效的场景
1. 隔离级别的介绍补充说明mysql的默认的隔离级别,可重复读是无法解决幻读的问题,mysql的幻读通过mvcc的方式解决的2. mvcc的介绍3.事务的传播性Spring它对JDBC的隔离级别作出了补充和扩展,其提供了7种事务传播行为。3.1、PROPAGATION_REQUIRED:默认事务类型,如果没有,就新建一个事务;如果有,就加入当前事务。适合绝大多数情况。3.2、PROPAGATION_REQUIRES_NEW:如果没有,就新建一个事务;如果有,就将当前事务挂起。3.3、原创 2021-11-09 15:59:27 · 255 阅读 · 0 评论 -
jdk8提供的流式编程
什么是函数式接口只有一个抽象方法的接口2.Lambda表达式的学习lambda表达式支持将代码块作为方法参数,lambda表达式允许使用更简单的代码来创建只有一个抽象方法的接口(这种接口被称为函数式接口)的实例如下代码示例,完整的描述了一个lambda表达式的简化过程 package lambdaTest;import java.util.Arrays;import java.util.Collection;import java.util.HashSet;import java.u.原创 2021-10-28 17:28:37 · 242 阅读 · 0 评论 -
Eureka和zookeeper的区别
1 CAP理论C:consistency强一致性A:availability可用性P:partition tolerance分区容错性CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性、可用性、分区容错性这三个需求。因此,根据CAP原理将NoSql数据库分成了满足CA原则、CP原则、AP原则三大类。CA:单点集群,满足一致性、可用性的系统,通常在可扩展性上不太强大。CP:满足一致性、分区容错性的系统,通常性能不是特别的高。AP:满足可用性、分区容错性的系统,通常可能对一致性要求会低一原创 2021-10-26 23:13:05 · 872 阅读 · 0 评论 -
验证sleep,wait以及yield的区别
sleepsleep 方法是属于 Thread 类中的,sleep 过程中线程不会释放锁,只会阻塞线程,让出cpu给其他线程,但是他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态,可中断,sleep 给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会示例代码package ThreadTest;/** * @Classname ThreadSleepTest * @Description TODO * @Date 2021/10/26 16:47 * @原创 2021-10-26 17:29:12 · 73 阅读 · 0 评论 -
磁盘预读以及缓存行
磁盘预读介绍(内存和磁盘之间的交互的方式)内存比磁盘的读写速度要快很多,但内存容量要远小于磁盘,数据,程序的执行要调入内存后才能执行,所以内存和磁盘要经常进行I/O操作,I/O操作是个费事的过程,虽然现代系统已经有了通道(I/O处理机)技术的支持,但这还不够上面是两张磁盘的示意图 ,扇区为磁盘的最小存储单元,当需要从磁盘读取数据时,系统会将逻辑地址发给磁盘,磁盘的控制电路将逻辑地址转换为物理地址(哪个磁道,哪个扇区)这时候就会有磁头的机械运动,磁头找到相应磁道–寻道,时间成为寻道时间,磁头找到对应磁原创 2021-09-07 14:43:41 · 865 阅读 · 0 评论 -
JAVA中 try - finally中都存在return的效果
如下是运行的结果public class TryTest { public static void main(String[] args) { System.out.println(returnNum()); } public static Integer returnNum(){ try{ return 2; }finally { return 3; } }原创 2021-07-14 09:52:47 · 109 阅读 · 0 评论 -
Integer只有在 -128到127之间使用==比较相等的源码解析
****代码验证,结论如图,推荐使用equals比较Integer的大小****** public class IntegerTest { public static void main(String[] args) { Integer a1 = new Integer(12); Integer a2 = new Integer(12); Integer b1 = -129; Integer b2 = -129; Integer c1 = 128; Integer c2 = -128; Integer d1原创 2021-07-07 15:48:51 · 143 阅读 · 0 评论 -
synchronized锁升级的验证
**synchronized锁升级的验证**对象的内存格式对象头(Object Header)在64位JVM上有一个压缩指针选项-XX:+UseCompressedOops,默认是开启的。开启之后 Class Pointer 部分就会压缩为4字节,对象头大小为 12 字节对象头Mark Word: 1. 默认存储对象的HashCode,分代年龄和锁标志位信息。这些信息都是与对象自身定义无关的数据,所以Mark Word被设计成一个非固定的数据结构以便在极 小的空间内存存原创 2021-07-06 16:01:31 · 99 阅读 · 0 评论