
Java
文章平均质量分 62
小仙。
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java——》常用的线程池
推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 &nbs原创 2024-11-11 15:38:17 · 514 阅读 · 0 评论 -
Java——》线程常用的方法
● start :启动线程● run :运行线程● currentThread :获取当前线程对象● getName :获取线程名称● sleep :将当前线程暂定指定的时间● isAlive :获取线程的状态● join :将当前线程和该线程合并,即等待该线程结束,在恢复当前线程的运行● yield :让出CPU,当前线程进入就绪状态● wait :阻塞,是Object中的方法● notify :唤醒,是Object中的方法● notifyAll :唤醒原创 2024-11-11 15:29:26 · 1447 阅读 · 0 评论 -
Java——》创建线程的方式
Java中的线程本质上就是一个Thread对象。创建线程常用方式:1. 继承Thread类,重写run方法2. 实现Runnable接口3. 实现Callable接口4. 线程池原创 2024-11-08 15:35:53 · 1339 阅读 · 0 评论 -
Java——》try-with-resource
try-with-resources 是 JDK 7 中一个新的异常处理机制,它能够很容易地关闭在 try-catch 语句块中使用的资源。try-with-resources 语句确保了每个资源在语句结束时关闭。所谓的资源(resource)是指在程序完成后必须关闭的对象。所有实现了 java.lang.AutoCloseable 接口(包括实现了 java.io.Closeable 的所有对象),可以使用作为资源。原创 2024-11-08 11:14:30 · 744 阅读 · 0 评论 -
Java——》Collections. unmodifiableCollection创建只读集合
场景:如果你有个集合不想被修改怎么办?解决:创建一个只读集合原创 2024-11-08 09:51:25 · 558 阅读 · 0 评论 -
Java——》集合的快速失败机制fail-fast
机制是 Java 集合(Collection)中的一种错误机制。(元素个数发生变化:add、remove、clear)时,就可能会产生 fail-fast 事件。原创 2024-11-08 09:18:43 · 650 阅读 · 0 评论 -
Java——》JSONObjet 数据顺序
JSONObject 内部是用 Map 来存储的:● HashMap 元素是无序的● LinkedHashMap 元素是有序的原创 2023-12-01 14:03:27 · 1822 阅读 · 0 评论 -
Java——》线性数据结构
线性表就是数据排成像一条线的结构。每个线性表上的数据最多只有前和后两个方向。线性表结构:数组、链表、队列、栈原创 2023-11-28 13:39:26 · 1373 阅读 · 0 评论 -
Java——》MESI
MESI是CPU缓存一致性的协议,大多数的CPU厂商都根据MESI去实现了缓存一致性的效果。原创 2023-11-07 14:00:49 · 247 阅读 · 0 评论 -
Java——》可见性
可见性是指线程间的,对变量的变化是否可见。通常被解释为将线程本地状态反映到主内存上,volatile就是负责保证可见性的。可见性问题是指一个线程修改了一个共享变量的值,但是另一个线程无法立即看到这个修改后的值。因为每个线程都有自己的工作内存(CPU三级缓存),线程之间无法直接访问对方的工作内存,只改自己的工作内存,没有及时的同步到主内存,导致一个线程对共享变量的修改对其他线程不可见,从而出现数据不一致。CPU在处理时,需要将主内存数据刷新到寄存器中再执行指令,执行完指令后,再将寄存器数据刷新到主内存中。原创 2023-11-06 18:00:35 · 349 阅读 · 0 评论 -
Java——》4种引用:强软弱虚
一、NormalReference = 强 = 普通 = 默认强引用是平常中使用最多的引用,强引用在程序内存不足(OOM)的时候也不会被回收二、SoftReference = 软软引用在程序内存不足时,会被回收三、WeakReference = 弱弱引用就是只要JVM垃圾回收器发现了它,就会将之回收四、PhantomReference = 虚虚引用的回收机制跟弱引用差不多,但是它被回收之前,会被放入 ReferenceQueue 中。原创 2023-11-06 16:35:09 · 314 阅读 · 0 评论 -
Java——》CAS
CAS = Compare And Swap = 比较并交换● 先比较一下值是否与预期值一致,如果一致,交换,返回true● 先比较一下值是否与预期值一致,如果不一致,不交换,返回false原创 2023-11-06 15:04:15 · 220 阅读 · 3 评论 -
Java——》如何保证线程的安全性
Q:如果存在临界(共享)资源,如何保证线程的安全性?A:加锁,怎么做?不加锁,怎么做?一、加锁1、悲观锁synchronized、Lock(ReentrantLock,ReadWriteLock) 2、乐观锁CAS二、不加锁1. ThreadLocal:让多个线程将共享资源copy到本地,没有多线程操作共享资源的问题 2. volatile:只要不包含并发对共享数据进行运原创 2023-11-06 13:59:21 · 179 阅读 · 0 评论 -
Java——》IO
Java IO(Input/Output)是Java编程语言中用于处理输入和输出的一组类和接口。输入:数据输入到计算机内存的过程。输出:计算机输出到外部(数据库、文件)的过程。数据传输过程类似水流,因此称为IO流。Java IO 分为输入流和输出流 ,而根据数据的处理方式又分为字节流 和字符流。● 字节流:以字节为单位进行操作,适用于处理二进制数据● 字符流:以字符为单位进行操作,适用于处理文本数据原创 2023-09-27 15:01:48 · 411 阅读 · 0 评论 -
Java——》线程的打断(停止正在运行的线程)
Java——》线程的打断(停止正在运行的线程)一、设置boolean标志位二、利用中断标志位三、利用InterruptedException异常原创 2023-09-21 17:07:40 · 431 阅读 · 0 评论 -
Java——》乐观锁、悲观锁
悲观锁 获取不到锁资源时,会将当前线程挂起(进入BLOCKED、WAITING) 线程挂起会涉及到用户态和内核态的切换,而这种切换是比较消耗资源的。用户态:JVM可以自行执行的指令,不需要借助操作系统执行。内核态:JVM不可以自行执行,需要操作系统才可以执行。乐观锁 获取不到锁资源时,可以再次让CPU调度,重新尝试获取锁资源 基于Java中的CAS操作原创 2023-09-11 16:15:33 · 264 阅读 · 0 评论 -
Java——》synchronized锁粗化&锁消除
一、锁粗化(锁膨胀)场景:在一个循环中,频繁的获取和释放锁资源操作:synchronized在编译时,可能会优化到循环外部,将锁的范围扩大优点:避免频繁的竞争和获取锁资源带来不必要的消耗二、锁消除场景:在synchronized修饰的代码中,没有任何共享(临界)资源,也不存在锁竞争操作:synchronized在编译时,就直接将锁的指令优化掉(自动把synchronized去掉)原创 2023-09-11 16:02:04 · 463 阅读 · 0 评论 -
Java——》公平锁、非公平锁
公平锁 排队竞争锁 线程A获取到了锁资源,线程B没有拿到,线程B去排队,线程C来了,直接排到线程B的后面,等待B拿到锁资源或者是B取消后,才可以尝试去竞争锁资源。非公平锁 先插队竞争锁,如果不成功再排队竞争锁 线程A获取到了锁资源,线程B没有拿到,线程B去排队,线程C来了,先尝试竞争锁资源成功拿到锁资源:开心,插队成功。没有拿到锁资源:依然要排到线程B的后面,等待B拿到锁资源或者是B取消后,才可以尝试去竞争锁资源。原创 2023-09-11 15:50:19 · 412 阅读 · 0 评论 -
Java——》JVM对原生的锁做了哪些优化
在线程进行阻塞操作之前先让线程自旋等待一段时间,可能在等待期间其他线程已经解锁,这时就无需再让线程执行阻塞操作,避免了用户态到内核态的切换。当JVM检测到不同的竞争状况时,会自动切换到适合的锁实现,这就是锁的升级、降级(Java——》synchronized锁升级)。原创 2023-09-11 15:13:25 · 493 阅读 · 0 评论 -
Java——》synchronized锁升级
无锁 :没有开启偏向锁(偏向锁延迟开启时间内),没有线程拿锁匿名偏向 :开启偏向锁,没有线程拿锁,没有偏向任何线程原创 2023-09-11 15:11:33 · 380 阅读 · 0 评论 -
Java——》synchronized的使用
synchronized是互斥锁,锁是基于对象实现的,每个线程基于synchronized绑定的对象去获取锁!有明确指定锁对象:● synchronized(变量名):当前变量做为锁● synchroinzed(this):this做为锁无明确指定锁对象:同步方法和同步代码块● 有static修饰:当前类.class做为锁(类锁)● 无static修饰:当前对象做为锁(对象锁)原创 2023-09-11 10:19:12 · 303 阅读 · 0 评论 -
Java——》synchronized的原理
1. 在虚拟机执行到monitorenter 指令时,首先要尝试获取对象的锁。如果这个对象没有锁定,或者当前线程已经拥有了这个对象的锁,把锁的计数器+1。2. 当虚拟机执行到monitorexit 指令时,将锁的计数器-1。 当计数器为0时,锁就被释放了。原创 2023-09-11 10:01:08 · 323 阅读 · 0 评论 -
Java——》synchronized互斥性
synchronized是互斥锁,每个线程获取synchronized时,基于synchronized绑定的对象去获取锁!原创 2023-09-11 09:52:11 · 346 阅读 · 0 评论 -
Java——》synchronized编译
指令:monitorenter、monitorexit原创 2023-09-08 18:00:37 · 201 阅读 · 0 评论 -
Java——》Synchronized和Lock区别
Synchronized是Java中的关键字,只能用于同步代码块或方法 Lock是一个接口,Java提供了多种实现该接口的锁,如ReentrantLock、ReadWriteLock等。Lock是一个接口,Java提供了多种实现该接口的锁,如ReentrantLock、ReadWriteLock等。原创 2023-09-08 17:25:29 · 542 阅读 · 0 评论 -
Java——》ThreadLocal
ThreadLocal可以理解为,他会在每个线程都,那么在线程之间访问内部副本变量就行了,做到了线程之间互相,相比于synchronized的做法是用空间来换时间。ThreadLocal的本质就是一个,ThreadLocal做为key,将一个数据和本地线程绑定在一起。原创 2023-09-08 17:07:18 · 520 阅读 · 0 评论 -
Java——》线程间是如何通信的
线程之间的通信有两种方式:共享内存和消息传递。原创 2023-09-08 16:33:02 · 640 阅读 · 0 评论 -
解决——》There is insufficient memory for the Java Runtime Environment to continue
Java 运行时环境没有足够的内存来继续执行程序。以下是常见的几种原因(具体原因可能因应用程序、系统环境和配置而异):1. 分配给 JVM 的堆内存不足:无法容纳程序所需的数据和对象2. 系统内存不足:可能是因为其他运行中的程序占用了过多的内存3. 内存泄漏4. 大对象或复杂操作5. JVM 参数设置不合理:堆内存分配、垃圾回收机制原创 2023-07-25 15:30:14 · 4554 阅读 · 0 评论 -
IDEA——》解决Command line is too long
Command line is too long. Shorten the command line via JAR manifest or via a classpath file and rerun.原创 2022-05-10 11:49:02 · 57453 阅读 · 21 评论 -
IDEA——》查看class的maven引用依赖
推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 &nbs原创 2023-06-27 16:38:06 · 2271 阅读 · 0 评论 -
JVM——》jmap详解
jmap -heap 是一个Java 命令行工具,用于获取Java 进程的堆内存信息。它会输出 Java 进程的整体堆内存使用情况,包括 heap 总大小、已使用大小、空闲大小等。同时还会输出堆内存中各种对象所占用的空间大小以及数量,如类、字符数组、字符串等。jmap -heap 命令通常用于诊断和调试 Java 应用程序的内存问题,例如内存泄漏、内存溢出等。通过 jmap -heap 命令获取到的堆内存信息可以帮助开发人员更加全面地了解 Java 应用程序的内存使用情况,找出内存问题的根本原因。原创 2023-06-14 14:34:38 · 17788 阅读 · 0 评论 -
JVM——》Java对象内存模型
JVM——》Java对象内存模型原创 2023-04-13 09:08:55 · 483 阅读 · 0 评论 -
Java——》AtomicInteger源码分析
Java——》AtomicInteger源码分析原创 2023-01-11 14:44:02 · 556 阅读 · 0 评论 -
Java——》下载Hotspot 虚拟机源码
Java——》下载Hotspot 虚拟机源码原创 2023-01-11 14:26:46 · 1283 阅读 · 0 评论 -
Java——》Unsafe源码分析
Java——》Unsafe源码分析原创 2023-01-11 14:18:34 · 538 阅读 · 0 评论 -
SpringBoot——》集成Kafka示例
SpringBoot——》集成Kafka示例原创 2022-12-05 16:53:46 · 436 阅读 · 0 评论 -
Java——》栈 VS 队列
Java——》栈 VS 队列原创 2022-11-30 10:25:15 · 382 阅读 · 0 评论 -
解决——》CannotGetJdbcConnectionException、GetConnectionTimeoutException
解决——》CannotGetJdbcConnectionException、GetConnectionTimeoutException原创 2022-11-17 17:32:53 · 6091 阅读 · 0 评论 -
解决——》CommunicationsException:Communications link failure
Mysql的连接等待时间(wait_timeout)默认8小时。在wait_timeout时间内,mysql的连接(connection)处于等待状态,一旦超过这个时间,mysql就会关闭。但是在我们的项目中的连接池中仍存在合法的connection,当你的程序需要再次访问数据库时,就会出现以上异常,但是再重新访问,又能正常从数据库中获取到数据。原创 2022-11-17 17:00:27 · 10508 阅读 · 0 评论 -
Spring——》feign下载文件
Spring——》feign下载文件原创 2022-11-10 10:32:02 · 796 阅读 · 0 评论