
JAVA
文章平均质量分 64
Java基础语法
小劉要努力~
入目无他人,四下皆是你
展开
-
什么是CAS?
在这个示例中,两个线程分别对计数器进行递增操作,使用CAS操作进行原子性的增加。CAS操作通过比较内存中的值与预期值是否相等来确定是否进行交换,如果相等,则进行交换,否则重新尝试。需要注意的是,虽然CAS操作避免了锁的竞争,但它并不能解决所有的并发问题。判断是否相等:如果读取到的值与预期值相等,则继续执行,否则重新尝试。进行交换操作:如果相等,则进行交换操作,将新值写回内存。读取内存中的值:线程从内存中读取要操作的数据的当前值。比较预期值:线程将读取的值与预期值进行比较。CAS操作的优点是它是一种。原创 2024-05-29 17:14:17 · 420 阅读 · 0 评论 -
JWT令牌技术
我以为,最美的日子,当是晨起侍花,闲来煮茶,阳光下打盹,细雨中漫步,夜灯下读书,在这清浅时光里,一半烟火,一半诗意,任窗外花开花落,云来云往,自是余味无尽,万般惬意。——不吃葱的阿冬🍟问题一 什么是令牌技术?它的作用是什么?🍔问题二 令牌技术与身份验证之间有何关系?🥪问题三 令牌技术有哪些优点和缺点?🍞问题四 令牌技术在Web应用程序中的具体应用是什么?JWT全称:JSON Web Token什么是令牌技术?原创 2024-03-10 18:31:34 · 1168 阅读 · 0 评论 -
【Java EE】File类的用法和InputStream、OutputStream的用法
在Java中,File类和InputStream、OutputStream是常用的输入输出相关的类,他们在文件的读写和处理方面有着广泛的应用。原创 2023-10-18 19:08:41 · 190 阅读 · 0 评论 -
【Java EE】锁策略及cas和synchronized的优化过程
线程 2完成了操作,也将版本号加1( version=2 )试图向内存中提交数据( balance=80 ),但此时比对版本发现,操作员 2 提交的数据版本号为 2 ,数据库记录的当前版本也为 2 ,不满足 “提交版本必须大于记录当前版本才能执行更新“ 的乐观锁策略。如果获取锁失败,立即再尝试获取锁,无线循环,直到获取到锁为止,第一次获取失败,第二次的尝试会再极短的时间内到来,一旦锁被其他线程释放,就能第一时间获取到锁。原创 2023-10-16 17:59:46 · 110 阅读 · 1 评论 -
【Java EE】synchronized 和 ReentrantLock 之间的区别
4.锁的释放:synchronized 对于获取到锁的线程执行完代码块会释放锁,若线程执行异常,jvm会让线程释放锁。2.锁的类型:synchronized是非公平锁 ReentrantLock默认非公平锁,但是可支持非公平与公平锁。ReentrantLock中 有多种获取锁的方式,会一直尝试去获得锁,线程可以不用一直等待。3.锁的获取:synchronized中 如果A线程获得锁B线程等待,若A发生阻塞,B也会一直等待;1.都是可重入锁(可重入锁指的就是连续两次加锁不会导致死锁.)原创 2023-10-16 15:55:32 · 157 阅读 · 1 评论 -
【Java EE】多线程
比如:辅导员分发给班长一系列任务,需要打扫卫生,管理纪律和收团课等,只有班长一个人是肯定忙不过来的,于是班长叫来了劳动委员,纪律委员和团支书等来协助班长完成这一系列任务,因此就有了四个执行流一起完成任务,但他们本质上都是为辅导员做事。在调用increase1的时候先加了一次锁,执行到increase的时候,又加了一次锁(上个锁还没释放,等于加了两次锁),代码没有问题,因为synchronized是可重入锁。按照之前对于锁的设定,第二次加锁的时候,就会阻塞等待。直到第一次的锁被释放,才能获取到第二个锁。原创 2023-09-28 20:23:27 · 122 阅读 · 2 评论 -
【Java EE】线程安全的原因以及解决方式
线程之间共享变量存在与主内存中,每一个线程都有自己的工作内存,当线程要读取一个共享变量时 ,先将变量从主内存拷贝到工作内存中,然后再从工作内存中读取数据。当修改了线程1的值之后,此时主内存不一定能够同步,对应的线程2的值也不一定能够同步,这个时候代码中就容易出问题。线程安全的概念:如果多线程环境下代码运行的结果是符合我们预期的,即再单线程环境的结果,则说明线程是安全的。这样就称为具有原子性。线程不安全主要有以下几种原因:修改共享数据,原子性,可见性,代码顺序性.....当然是给门上锁,代码也是一样。原创 2023-09-09 20:59:27 · 133 阅读 · 1 评论 -
【Java EE】单例模式
但是上面的懒汉模式是线程不安全的,当第一次创建实例时,如果多个线程同时调用getInstance方法,就可能创建出多个实例。一旦实例创建好,后面再多线程环境中调用getInstance就不再有多线程问题了。最外层的if是判定是否已经把instance实例创建出来了,同时为了避免内存可见性导致读取的instance出现偏差,于是用volatile修饰。单例模式能保证某个类在程序中只存在一份实例,而不会创建多个实例。懒汉模式:类加载的时候不创建实例,第一次使用的时候才创建实例。原创 2023-09-09 20:05:22 · 130 阅读 · 1 评论 -
【Java EE】线程的几种状态
2)就绪状态(Runnable):一旦调用了线程的start()方法,线程就进入就绪状态。在就绪状态下,表示线程可以被执行,但不一定立即获取到CPU的执行时间。5)死亡状态(Dead):线程run()、main() 方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生。1)新建状态(New):当通过创建Thread实例来新建一个线程时,该线程处于新建状态。3)运行状态(Running):当线程获得CPU执行时间,开始执行线程体中的代码时,线程处于运行状态。原创 2023-08-03 01:38:07 · 137 阅读 · 0 评论 -
【Java EE】进程和线程的区别和联系
总结来说,进程是操作系统资源分配的基本单位,而线程是进程执行的基本单位。进程之间的通信和同步需要较为复杂的机制,而线程之间的通信和同步更加直接和高效。1)进程是正在执行中的程序的实例,它拥有独立的地址空间,资源和控制信息。线程是进程的一个实体,是进程的执行单元,共享进程的资源和上下文。2)线程通过共享进程的资源来实现协作和同步,一个线程的操作回影响到其他线程和进程。线程是进程中的一个实体,是进程的执行单元,共享进程的资源和上下文。4) 一个进程可以包含多个线程,线程的执行是在其所属进程的上下文中进行的。原创 2023-08-01 01:26:57 · 129 阅读 · 1 评论 -
【Java EE】进程调度的基本过程
进程调度是操作系统中的一个重要组成部分,它负责决定哪个进程将获得处理器的执行权。原创 2023-07-31 14:18:03 · 168 阅读 · 1 评论 -
【Java】类与对象——精解版
定义一个类,就相当于在计算机中定义了一种新的类型,用类类型创造对象的过程,称为类的实例化,在Java中通常采用new关键字,配合类来实例化对象。面向过程是以过程为中心的编程思想,其原理就是将问题分解成一个一个详细的步骤,然后通过函数实现每一个步骤,并依次调用。类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具体有哪些属性,哪些功能,描述完成之后计算机就可以识别了。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情,面向对象住一套看重解决问题的过程。1.什么是面向对象?原创 2023-05-11 15:58:02 · 139 阅读 · 0 评论 -
【Java】数组——这一篇就够了
数组:可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。原创 2023-03-14 20:23:34 · 651 阅读 · 8 评论 -
【Java】方法的重载与重写
重写(override):也称为覆盖。重写是子类对父类非静态、非private修饰,非final修饰,非构造方法等的实现过程 进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定 于自己的行为。也就是说子类能够根据需要实现父类的方法。方法的重载:是指方法名相同,但参数列表不同(参数个数不同,参数类型不同,参数顺序不同,这个顺序不同要注意,是得两个参数类型不同时,顺序不同才有意义),构造方法是可以构成方法重载的,且父类和子类之间是可以构成方法重载的。原创 2022-11-24 13:08:49 · 1818 阅读 · 3 评论 -
【Java】数据类型与变量
常量即程序运行期间,固定不变的量称为常量。原创 2022-10-26 20:37:50 · 217 阅读 · 7 评论 -
【Java】接口与abstract类的区别
由于Java不支持多继承性,即一个类只能有一个父类。因此,单继承性使得Java变得简单,易于管理和维护。接口使用关键字interface来声明,格式:interface 接口的名字。//定义一个接口,名字为Animal}接口只能写常量,且为公共静态常量。所有接口体的常量都是static常量,访问权限一定都是public(允许省略public,final和static修饰符),所有的抽象方法的访问权限一定都是public(允许省略public,abstract修饰符)原创 2022-10-20 23:23:00 · 479 阅读 · 6 评论