java进阶
文章平均质量分 91
谁动了我的代码
发现的越多,发现自己知道的越少
展开
-
平衡二叉树(AVL Tree)
平衡二叉树(AVL树)是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。也就是说在符合二叉查找树的条件下,它还满足任何节点的两个子树的高度最大差为1。下面的两张图片,左边是AVL树,它的任何节点的两个子树的高度差<=1;右边的不是AVL树,其根节点的左子树高度为3,而右子树高度为1;如果在AVL树中进行插入或删除节点,可能导致AVL树失去平衡,这种失去平衡的二叉树可以概括为四种姿态:LL(左左)、RR(右右)、LR(左右)、RL(右左)。它们的示意图如下:原创 2021-06-12 10:41:44 · 374 阅读 · 0 评论 -
浅谈JVM和.Class
Java 生态圈Java是目前应用最为广泛的软件开发平台之一。随着Java以及Java社区的不断壮大Java 也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。作为一个平台,Java虚拟机扮演着举足轻重的作用,Groovy、Scala、JRuby、Kotlin等都是Java平台的一部分 作为一种文化,Java几乎成为了“开源”的代名词。第三方开源软件和框架,如Tomcat、Struts,MyBatis,Spring等;就连JDK和JVM自身也有不少开源的实现,如openJ原创 2021-03-30 19:44:52 · 191 阅读 · 1 评论 -
一文了解HashMap源码
一、HashMap 存储结构 HashMap是数组+链表+红黑树(JDK1.8增加了红黑树部分)实现的,如下图所示:先看下Node<K,V> 类用来实现数组及链表的数据结构,主要有以下成员变量,final int hash; //保存节点的 hash 值final K key; //保存节点的 key 值V value; //保存节点的 value 值Node<K,V> next; //指向链表结构下的当前节点的 next 节点还有原创 2021-03-16 16:06:47 · 163 阅读 · 2 评论 -
浅谈synchronized底层原理
如果某一个资源被多个线程共享,为了避免因为资源抢占导致资源数据错乱,我们需要对线程进行同步,那么synchronized就是实现线程同步的关键字一、synchronized的特性1.1 原子性所谓原子性就是指一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。被synchronized修饰的类或对象的所有操作都是原子的,因为在执行操作之前必须先获得类或对象的锁,直到执行完才能释放,这中间的过程无法被中断(除了已经废弃的stop()方法),即保证了原子性。注原创 2021-03-10 17:24:54 · 582 阅读 · 0 评论 -
浅述JAVA内存区域和JAVA内存模型
Java内存区域介绍 方法区(Method Area) 又称Non-Heap(非堆),主要用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据,根据Java 虚拟机规范的规定,当方法区无法满足内存分配需求时,将抛出OutOfMemoryError 异常。值得注意的是在方法区中存在一个叫运行时常量池(Runtime Constant Pool)的区域,它主要用于存放编译器生成的各种字面量和符号引用,这些内容将在类加载后存放到运行时常量池中,以便后续使用。 堆(Jav转载 2021-03-10 14:13:17 · 84 阅读 · 0 评论 -
springboot整合activeMq的使用,队列,主题,消息手动确认,重发机制
1.springboot项目搭建;可本地启动activemq项目,直接官网下载后,启动即可。springboot项目搭建两个模块(zj-producer,zj-consumer),分别模拟生产值和消费者;2.队列消息(点对点模式),主题订阅模式;队列消息是点对点模式,生产方生产一条消息只能给一个消费方消费。主题订阅模式,生产方的一条消息可同时下发给多个订阅该主题的消费方去使用和消费。3.消息手动确认;消息手动确认,主要用于消费方是否由于异常等原因,未处理完该消息;因此只有手动原创 2021-02-22 10:37:41 · 1016 阅读 · 1 评论