java基础
文章平均质量分 83
Fly丶X
一枚半路出家的码农,分享工作中总结的技术知识
展开
-
ReentrantLock源码下深入分析AQS原理
AQS全称是AbstractQueuedSynchronizer,它是一个抽象类,内部实现了一个FIFO双向链表,链表的每一个节点都有一个指向前节点和一个指向后节点的指针,所以AQS可以从任意一个节点很快访问前驱和后继,每个节点绑定一个线程,当线程竞争锁失败时,会添加到队列的尾部等待被释放,当锁被释放时,队列头部节点的线程会被释放去竞争锁ReentrantLock是Lock接口的实现类,它是常用的对象同步锁,并且它是可重入锁,重入锁指的是线程在获得锁之后,再次获取该锁不需要阻塞,而是直接关联一次计数器增加重原创 2022-06-30 21:30:57 · 266 阅读 · 0 评论 -
CAS原理详解
CAS全称是Compare And Swap,它的实现和它的字面意思一样,先比较后交换,它是CPU硬件层面的一种指令,从CPU层面能保证"比较并更新"这一段操作的原子性。与synchronized关键字比较不同是synchronized是一种悲观锁,CAS是一种乐观锁。CAS有三个操作数,内存值V,旧的预期值A,要修改的更新值B,当A和V相同时将V修改成B,否则一直比较V和的值直至A和V相同为止,使用java代码大致实现逻辑如下:value使用volatile修饰,保证了该变量的有序性和可见性,comp原创 2022-06-17 22:50:37 · 2817 阅读 · 0 评论 -
Springboot整合POI实现到处Excel报表示例
一、POI介绍具体介绍可以这篇文章https://blog.csdn.net/w893932747/article/details/89354979二、POI实现导出示例我们写一个springboot项目整合poi导出excel文件的接口例子1. 环境准备先准备好一个springboot项目工程,我这就不举例子了在springboot工程下引入poi依赖,这里以3.17版本为例<dependency> <groupId>org.apache.poi<原创 2022-05-27 21:05:44 · 498 阅读 · 0 评论 -
java关键字volatile详解
1. java并发编程之可见性可见性的定义是指一个线程对共享变量的修改,另一个线程能够立马看到,但是再任何情况下都是可见的吗?我们来看下面这段代码public class VolatileDemo { private static Boolean FLAG = true; public static void main(String[] args) throws InterruptedException { System.out.println("main thread原创 2021-08-08 13:23:31 · 784 阅读 · 0 评论 -
java线程池原理详解
概述在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源,创建线程亦是如此,这导致在高并发中效率低下并且资源耗费严重,因此,池化资源技术应运而生,所以就有了线程池。Executors类JDK为我们封装了一套操作多线程的框架Executors,常用的方法如下:newSingleThreadExecutor:创建一个单线程的线程池,这个线程池有且只有一个线程在工作newFixedThreadPool:创建固定大小的线程池,通过带参数创建指定线程数大小,每提原创 2021-08-01 22:32:30 · 283 阅读 · 0 评论 -
Java IO字节流与字符流读写文件
字节流读写文件字节流是将文件以二进制字节码的形式读写,每次读取指定多少个字节,所以字节流可以处理任何类型文件(包括图片,avi等),下面是字节流常用常用的一种用法字节输入流:package com.cy;import org.junit.Test;import java.io.*;public class StreamDemo { @Test public void testInputStream() throws IOException { String原创 2021-05-25 22:25:16 · 267 阅读 · 0 评论 -
synchronized的各种场景用法详解
概述synchronized是java的关键字,它的作用是加同步锁,即被synchronized修饰的部分同一时间只允许一个线程访问,它的使用场景有如下几种:修饰普通方法:对当前对象实例加锁,调用该方法需要获得当前对象实例的锁修饰静态方法:对当前类加锁,会对该类的所有实例加锁,因为静态方法不属于任何一个实例对 象,是属于类成员。所以当线程A访问调用一个实例对象的synchronized方法,线程B调用这个实例对象的静态synchronized方法是允许的修饰代码块:对指定的对象加锁,可以指定变原创 2021-05-15 23:46:33 · 2566 阅读 · 0 评论 -
Java集合类详解
这里写自定义目录标题Java集合详解新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入Java集合详解你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细原创 2021-04-18 18:49:44 · 143 阅读 · 0 评论 -
java反射运用基础,超详细
概述Reflection(反射) 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,也有称作“自省”。反射非常强大,它甚至能直接操作程序的私有属性。我们前面学习都有一个概念,private的只能类内部访问,外部是不行的,但这个规定被反射赤裸裸的打破了。反射就像一面镜子,它可以在运行时获取一个类的所有信息,可以获取到任何定义的信息(包括成员变量,成员方法,构造器等),并且可以操纵类的字段、方法、构造器等部分。反射运用基础基础测试类package c原创 2021-05-09 14:44:17 · 142 阅读 · 0 评论