随笔分类 -  Java

介绍Java相关
摘要:1 引言 Comparator和Comparable名字比较相似,但是作用不同,Comparator接口比较大小,Comparable接口进行排序,但是具体怎么用还得慢慢来看 1.1 Comparable排序 Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排 阅读全文
posted @ 2022-02-21 11:04 上善若泪 阅读(113) 评论(0) 推荐(0)
摘要:转载于:https://mp.weixin.qq.com/s/HpMQOZwhIGCSpJemBiICdA 1 JVM调优 1.1 问题引入 最近很多小伙伴跟我说,自己学了不少JVM的调优知识,但是在实际工作中却不知道何时对JVM进行调优。今天,我就为大家介绍几种JVM调优的场景。 在阅读本文时,假 阅读全文
posted @ 2022-02-08 15:16 上善若泪 阅读(227) 评论(0) 推荐(0)
摘要:目录1 线程池介绍1.1 线程池概念1.2 线程池好处2 线程池的使用2.1 线程池的创建2.1.1 通过ThreadPoolExecutor创建2.1.2 通过Executors方式创建2.1.3 线程池初始化和容量调整2.2 线程池提交的返回值2.2.1 无返回值2.2.1.1 execute提 阅读全文
posted @ 2021-12-27 19:50 上善若泪 阅读(839) 评论(0) 推荐(0)
摘要:1 多线程中生产者和消费者 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。 1.1 为什么要使用生产者和消费者模式 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产者处 阅读全文
posted @ 2021-12-26 17:21 上善若泪 阅读(307) 评论(0) 推荐(0)
摘要:目录1 Fork/Join框架1.1 什么是Fork/Join框架1.2 工作窃取算法1.3 Fork/Join框架的介绍1.4 使用Fork/Join框架1.5 Fork/Join框架的异常处理1.6 Fork/Join框架的实现原理2 障碍器2.1 CyclicBarrier2.1.1 Cycl 阅读全文
posted @ 2021-12-26 15:33 上善若泪 阅读(206) 评论(0) 推荐(0)
摘要:1 ConcurrentLinkedQueue 1.1 引言 在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而 阅读全文
posted @ 2021-12-25 20:44 上善若泪 阅读(693) 评论(0) 推荐(0)
摘要:目录1 线程生命周期状态1.1 进程和线程概念1.1.1 Java调度模式1.1.2 进程和线程区别1.2 线程生命状态2 关键字讲解2.1 线程合并join2.2 线程让步yield2.3 线程休眠sleep2.4 线程交互wait,notify,notifyAll2.4.1 线程交换基础2.4. 阅读全文
posted @ 2021-12-25 17:57 上善若泪 阅读(212) 评论(0) 推荐(0)
摘要:目录1 Lock原理1.1 synchronized的缺陷1.2 Lock锁控制并发原理1.3 AQS1.3.1 内部类Node1.3.2 主要属性1.3.3 方法1.3.3.1 获取锁1.3.3.2 释放锁1.4 LockSupport1.5 Lock和synchronized的选择2 java. 阅读全文
posted @ 2021-12-25 10:08 上善若泪 阅读(867) 评论(0) 推荐(0)
摘要:目录1 Synchronized1.1 引言1.2 概念理解1.2.1 不同锁对象1.2.2 对象锁和类锁概念区别1.2.3 同步概念monitorenter&monitorexit1.2.4 Synchronized概念1.2.5 Synchronized阻塞影响1.2.6 为什么Synchron 阅读全文
posted @ 2021-12-19 20:48 上善若泪 阅读(769) 评论(0) 推荐(0)
摘要:目录1 Java对象结构1.1 栈对象概述1.1.1 问题引入1.1.2 基本类型存储位置1.1.3 字长存储是否造成空间浪费1.2 堆对象结构概述1.2.1 堆对象头1.2.1.1 markword1.2.1.2 klass1.2.1.3 数组长度(只有数组对象有)1.2.2 实例数据1.2.3 阅读全文
posted @ 2021-12-19 20:44 上善若泪 阅读(289) 评论(0) 推荐(0)
摘要:由于最近的log4j和fastjson频频曝出JNDI漏洞危机,觉得有必要学习jndi和rmi 1 RMI 1.1 rmi概念 RMI是用Java在JDK1.2中实现的,它大大增强了Java开发分布式应用的能力,Java本身对RMI规范的实现默认使用的是JRMP协议。而在Weblogic中对RMI规 阅读全文
posted @ 2021-12-10 23:19 上善若泪 阅读(2430) 评论(0) 推荐(2)
摘要:1 JMM 学习此篇文章, 先学习基础java内存模型(JMM)基础详解 然后学习入门JMM之并发模型,重排序规则,顺序一致性 1.1 锁 1.1.1 锁的释放-获取建立的happens-before 关系 锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取 阅读全文
posted @ 2021-11-21 11:08 上善若泪 阅读(198) 评论(0) 推荐(0)
摘要:1 JMM 所谓JMM就是Java内存模型,看此篇文章先学习java内存模型(JMM)基础详解 1.1 并发编程模型 1.1.1 并发编程模型分类 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在 阅读全文
posted @ 2021-11-21 11:06 上善若泪 阅读(376) 评论(0) 推荐(0)
摘要:目录1 CAS1.1 CAS应用分析1.2 CAS原理1.3 CPU锁分类1.4 CAS缺点1.4.1 ABA问题1.4.2 循环时间长开销大1.4.3 只能保证一个共享变量的原子操作1.5 concurrent包的实现1.6 和其他锁比较1.6.1 CAS锁和Synchronized比较2 原子操 阅读全文
posted @ 2021-11-19 13:23 上善若泪 阅读(472) 评论(0) 推荐(0)
摘要:1 Java热部署 1.1 热部署问题 在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。对于某些大型的应用来说,每次的重启都需要花费大量的时间成本。 虽然 osgi 架 阅读全文
posted @ 2021-11-16 20:38 上善若泪 阅读(610) 评论(0) 推荐(0)
摘要:目录1 从jar包中读取资源文件1.1 问题引入1.2 问题分析及解决1.3 直接读取jar资源文件 1 从jar包中读取资源文件 1.1 问题引入 在代码中读取一些资源文件(比如图片,音乐,文本等等)。在单独运行的时候这些简单的处理当然不会有问题。但是,如果我们把代码打成一个jar包以后,即,使将 阅读全文
posted @ 2021-11-14 18:18 上善若泪 阅读(1102) 评论(0) 推荐(0)
摘要:1 Queue 1.1 定义 前面讲了Stack是一种先进后出的数据结构:栈,那么对应的Queue是一种先进先出(First In First Out)的数据结构:队列 对比一下Stack,Queue是一种先进先出的容器,它有两个口,从一个口放入元素,从另一个口获取元素。如果把栈比作一个木桶,那么队 阅读全文
posted @ 2021-11-14 12:57 上善若泪 阅读(106) 评论(0) 推荐(0)
摘要:1 Stack源码 前面我们已经接触过几种数据结构了,有数组、链表、Hash表、红黑树(二叉查询树),今天再来看另外一种数据结构:栈 1.1 栈定义 什么是栈,直接举个例子,栈就相当于一个很窄的木桶,我们往木桶里放东西,往外拿东西时会发现,我们最开始放的东西在最底部,最先拿出来的是刚刚放进去的。所以 阅读全文
posted @ 2021-11-14 09:43 上善若泪 阅读(53) 评论(0) 推荐(0)
摘要:1 集合容器中Strategy设计模式 前面我们说TreeMap和TreeSet都是有顺序的集合,而顺序的维持是要靠一个比较器Comparator或者map的key实现Comparable接口 既然说到排序,首先我们不用去关心什么是Strategy设计模式,也不用关心它为了解决什么问题而存在,我们直 阅读全文
posted @ 2021-11-13 22:09 上善若泪 阅读(72) 评论(0) 推荐(0)
摘要:1 TreeSet TreeSet是一个有序的Set集合。 既然是有序,那么它是靠什么来维持顺序的呢,TreeMap中是通过一个比较器Comparator比较大小,因此TreeSet要实现比较也必须依靠于Comparator接口。 Map和Set有很大渊源关系,比如Map有HashMap,Linke 阅读全文
posted @ 2021-11-13 21:24 上善若泪 阅读(64) 评论(0) 推荐(0)