前言在上篇文章Java并发编程之synchronized中,曾描述Java提供了两种方式来处理线程安全的问题。第一种是互斥同步(悲观锁),第二种是采用非阻塞式同步(乐观锁)。虽然以上两种方案都能解决线程安全的问题。但是在JDK1.5开始,就提供了java.util.concurrent.atomic包,这个包中的原子操作类提供了更为简单高效、线程安全的方式来更新一个变量的值。例如AtomicBoo
转载
2023-09-12 13:54:26
26阅读
JDK并发编程Actomic和AQS详解1 Atomic系列优化加锁并发性能1.0 i++和ActomicInteger之间的差别分析1.1 AtomicInteger中的CAS无锁化原理1.2 AtomicInteger源码剖析:仅限JDK内部使用的Unsafe类1.3 AtomicInteger源码剖析:无线重复循环以及CAS操作1.4 AtomicInteger源码剖析:底层cpu指令是如
转载
2023-09-05 15:08:11
78阅读
Spring Boot 有一个很方便的功能就是可以将应用打成可执行的 Jar。那么大家有没想过这个 Jar 是怎么运行起来的呢?本篇博客就来介绍下 Spring Boot 可执行 Jar 包的运行原理。
转载
2023-07-21 09:43:41
73阅读
简介: Instrumentation 是 Java 5 提供的新特性。使用 Instrumentation,开发者可以构建一个代理,用来监测运行在 JVM 上的程序。监测一般是通过在执行某个类文件之前,对该类文件的字节码进行适当修改进行的。下文将通过一个具体的例子,来展示 java.lang.instrument 包的工作原理,并且实现了一个测量函数运行时间的代理。不使用instrum
转载
2023-08-12 22:33:04
44阅读
简而言之:序列化的作用就是为了不同jvm之间共享实例对象的一种解决方案.由java提供此机制,效率之高,是其他解决方案无法比拟的.自家的东西嘛.3、简单示例首先创建一个Person类importjava.io.Serializable;public class Person implementsSerializable{privateString name;privateInteger age;p
转载
2024-01-16 05:00:46
38阅读
下面是我对synchronized的理解并发问题其实就是对线程之间对资源的获取出现了竞争状态Java synchronized关键字是java提供的一种同步机制。也属于锁机制。synchronized可称互斥锁java是面向对象的语言。我们知道对象都是继承Object的。也就是说所有对象都有共性。可能常见的共性大家都清楚但是其实java对每个对象都有Monitor对象相关联。而synchroniz
转载
2023-09-20 10:12:51
57阅读
做开发的都知道,编程语言可以从运行时还是编译时检查分为动态类型和静态类型。对于Java来说,通常认为它是静态的强类型语言,但是因为Java提供反射的机制,也具备了部分动态类型语言的能力。这一节,我们就讲一讲Java的动态代理。 动态代理是一种用于运行时动态构建代理,动态处理代理方法调用的机制。它首先是一种
转载
2023-07-07 14:27:39
27阅读
什么是AOP(1)面向切面编程,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 (2)通俗描述:不通过修改源代码方式,在主干功能里面添加新功能。AOP底层原理1. AOP底层使用动态代理(1)有接口情况:使用JDK动态代理,创建接口实现类的代理对象,增强类的方法。 (2)没有接口情况:使用CGLIB动态代理,创建当前类
转载
2023-08-31 19:57:33
68阅读
作为一名java的使用者,掌握其基本的运行原理与体系结构是必要的,下面我们通过一个简单的例子来简述java程序的运行过程与原理。创建一个小程序为了方便介绍,我们选择创建一个百看不厌的小程序"HelloWorld".(注:以下程序的实现需要事先安装好JDK)public class HelloWorld{
public static void main(String [] args){
S
转载
2023-06-25 16:17:29
61阅读
编译简介在谈到JIT前,还是需要对编译过程有一些简单的了解。在编译原理中,把源代码翻译成机器指令,一般要经过以下几个重要步骤:JIT简介JIT是just in time的缩写,也就是即时编译。通过JIT技术,能够做到Java程序执行速度的加速。那么,是怎么做到的呢?我们都知道,Java是一门解释型语言(或者说是半编译,半解释型语言)。Java通过编译器javac先将源程序编译成与平台无关的Java
转载
2024-01-11 23:26:20
54阅读
LockSupport工具类java.util.concurrent.locks.LockSupport是个工具类,主要作用是挂起和唤醒线程,该工具类是创建锁和其他同步类的基础。LockSupport类与每个使用它的线程都会关联一个许可证,在默认情况下调用LockSupport类的方法的线程是不持有许可证的。LockSupport是使用Unsafe类实现的。几个主要函数:void park()方法
转载
2024-01-17 09:05:39
38阅读
1.Set接口下的关系 /–Collection /----Set /---------HashSet 主要实现类 /-------------linkedHashSet 主要实现类 /---------SortedSet 接口 /-------------TreeSet 主要实现类2.Collection与Set的关系Set是不可重复,无序的集合,继承了Collection接口,但是Set并没有
转载
2023-12-06 20:24:05
17阅读
Java NIO原理及使用运行环境:idea2018,jdk11简述1、比较IONIO数据处理字节或字符流(stream)块(channel)方向单向(InputStream/OutputStream)双向(读写)2、NIO(Non-blocking I/O),非阻塞IO,也可以理解为新IO(new I/O)。相对于传统的IO以字节或字符或单位传输,NIO以数据块的方式批量传输。突出的有点就是快速
转载
2023-07-11 12:51:13
84阅读
目录HashSet概述HashSet构造add方法remove方法遍历合计合计先看一下LinkedHashSet在看一下TreeSet总结一. HashSet概述HashSet是Java集合Set的一个实现类,Set是一个接口,其实现类除HashSet之外,还有TreeSet,并继承了Collection,HashSet集合很常用,同时也是程序员面试时经常会被问到的知识点,下面是结构图
转载
2024-01-12 13:04:17
43阅读
作者:马佩概述:最近在开发中遇到了一个刚好可以用AOP实现的例子,就顺便研究了AOP的实现原理,把学习到的东西进行一个总结。文章中用到的编程语言为kotlin,需要的可以在IDEA中直接转为java。这篇文章将会按照如下目录展开:AOP简介代码中实现举例AOP实现原理部分源码解析1. AOP简介相信大家或多或少的了解过AOP,都知道它是面向切面编程,在网上搜索可以找到很多的解释。这里我用一句
转载
2023-09-10 23:26:06
71阅读
HashMap源码理解Java集合之HashMapHashMap原理及实现学习总结 HashMap源码分析HashMap原理及实现学习总结1. HashMap概述HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。2. HashMap的数据结构在java编程语言中,最基本的结构就是两
转载
2023-07-14 15:39:47
55阅读
目录一、为什么需要 Stream二、什么是流三、流的分类1、有多种方式生成 Stream Source2、流的操作类型四、流的创建1、数组和集合创建流2、基本数值型流3、数值流的构造4、流转换为其它数据结构五、流的操作1、常见操作分类2、map/flatMap3、filter4、forEach5、findFirst6、reduce7、limit/skip8、sorted9、min/max/dist
转载
2023-12-28 09:51:25
87阅读
Map详解 底层原理MapAn object that maps keys to values. A map cannot contain duplicate keys; each key can map to at most one value. 将键映射到值的对象。映射不能包含重复的键; 每个键最多可以映射到一个值。public interface Map<K,V> 并没有继承Co
通过阅读java IO 源码可以发现 IO 的基本架构 注:此篇内容纯粹是为了记录和分享一下学到的内容,图片和代码部分来源于其他博客,请见谅,希望阅读到此篇博客的人能够留下您的意见,给一个学习的机会,在此非常感谢!!!
* 基于字节操作的IO接口: InputStream, OutputStream
转载
2023-08-09 13:33:29
100阅读
java I/O 系统对于程序设计者来说,创建一个好的输入/输出(I/O)系统是一项艰难的任务。I/O系统设计的困难之处在于:1、I/O系统的接收端往往有很多(文件、控制台、网络链接等)。2、I/O类库一般也需要兼容不同的处理方式(按字符、按行、按字)。JAVA I/O类库的设计其实是相当的复杂,涉及到了很多的类。所以导致很多的初学者手足无措,不知道该使用那些库去处理IO。在这边博文中我们来了解一
转载
2023-08-19 08:24:40
57阅读