自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 Java内部类:静态内部类和普通内部类的区别, 最详细版

在Java中,内部类是指嵌套在其他类中的类。与外部类不同,内部类可以访问外部类的私有变量和方法,并且可以对外部类进行更细粒度的封装。Java内部类可以分为静态内部类和普通内部类。

2023-04-14 14:15:23 512

原创 Java时间轮算法:多级时间轮的实现和优点

时间轮算法是一种高效、精确、可扩展的定时任务调度算法。它可以将任务按照时间戳放入到对应的槽位中,然后定时扫描每个槽位,执行其中的任务。时间轮算法还支持多级时间轮,可以将时间轮的刻度细分到更小的时间间隔,提高定时任务的精确度。由于时间轮算法具备高效的定时任务调度、支持动态调整、支持高并发和可扩展性强等优点,因此被广泛应用于各种不同的定时任务场景。在实际使用时间轮算法时,还需要注意一些细节。例如,在多级时间轮中,每个子时间轮的大小应该根据实际需求进行设置,以便充分利用时间轮的范围和精度。

2023-04-13 18:46:54 2194 1

原创 探究Java协程的实现原理:从内部机制到应用实践

随着计算机性能的不断提升,应用程序的并发处理需求也越来越大。传统的线程模型虽然能够解决并发编程问题,但是线程的创建和切换成本较高,容易导致系统资源的浪费和性能的下降。Java协程(Coroutine)则是一种更加高效的异步编程方式,它可以轻松地实现并发编程,并且相比于传统的线程模型,具有更加高效的性能和更加优雅的编程方式。本文将详细介绍Java协程的概念、优势以及实现方式。

2023-04-13 15:15:26 2546

原创 深入理解Java的内存屏障

本文主要介绍了Java中的内存屏障相关知识,包括内存屏障的概念、分类、工作原理、应用场景和样例代码等。通过本文的学习,读者可以更好地理解Java中内存模型的工作原理,进而编写出更加高效、可靠的多线程程序。同时,读者也可以进一步了解JDK中提供的各种并发工具,从而更好地利用Java中的多线程机制来提升代码的性能和稳定性。

2023-04-13 15:11:48 734

原创 Java可重入锁:深入探究原理与源码分析

可重入锁是多线程编程中常用的一种同步工具,可以有效地防止死锁的发生,并提高程序的并发性能。在 Java 中,ReentrantLock是实现可重入锁的一种方式,其内部通过AbstractQueuedSynchronizer来实现锁的等待和唤醒操作。通过对ReentrantLock的源码分析,我们可以更深入地理解可重入锁的原理和实现。同时,了解可重入锁的原理和实现也有助于我们更好地设计和调试多线程程序。

2023-04-12 23:48:03 547

原创 深入解析Java重量级锁原理:为什么它如此慢且占用资源?

重量级锁是一种基于操作系统的互斥量实现的同步机制,可以保证线程的安全性和正确性。虽然重量级锁的性能比较低,但是在需要保证线程安全和正确性的情况下,重量级锁是一个可靠的选择。同时,也可以采取一些优化措施,如减少锁的竞争、减少上下文切换、使用适当的锁和使用CAS操作,以提高锁的性能。在实际应用中,我们需要根据具体的情况选择合适的锁,并采取相应的优化措施,以保证系统的性能和可靠性。

2023-04-12 20:44:35 438

原创 深入探究Java偏向锁原理:解析锁的优化与实现

在Java中,锁是一种同步机制,可以控制多个线程对共享资源的访问。通常情况下,多个线程需要竞争获取锁才能访问共享资源,这种方式称为轻量级锁。但是,在某些场景下,多个线程对共享资源的访问呈现出一种倾向性,即某个线程对共享资源的访问频率远高于其他线程。此时,引入偏向锁机制可以在保证正确性的前提下提高程序的性能。偏向锁的基本思想是,当一个线程访问共享资源时,如果发现该资源没有被锁定,就将该线程标记为偏向线程,并将共享资源的对象头中的锁标记设置为偏向锁。

2023-04-12 16:45:09 197

原创 Java 锁升级:从轻量级锁到重量级锁的原理与实现

本文主要介绍了 Java 中锁的实现原理和优化策略。在实际的开发中,我们需要针对不同的场景采取相应的优化策略,以提高程序的性能。轻量级锁和重量级锁都是通过不同的方式来实现同步的,轻量级锁适合单线程环境下的同步,而重量级锁适合多线程环境下的同步。在实际的开发中,我们需要根据实际情况选择合适的锁来实现同步,以提高程序的性能和稳定性。在使用锁的过程中,我们需要注意避免死锁和饥饿等问题,以确保程序的稳定性和正确性。同时,我们还需要遵守线程安全的原则,确保多线程程序的正确性和稳定性。

2023-04-12 14:06:13 1031

原创 Java锁机制:从synchronized到StampedLock

在本文中,我们介绍了Java中的多种锁机制,包括synchronized关键字、ReentrantLock、ReadWriteLock、Semaphore和StampedLock。每种锁机制都有各自的优缺点和适用场景,我们需要根据具体的业务场景来选择合适的锁机制。同时,我们还介绍了各种锁机制的实现原理,并给出了示例代码。通过学习本文,我们可以更加深入地理解Java中的锁机制,提高并发编程的技能水平。

2023-04-12 00:41:42 90

原创 探究Java并发编程:从基础到实践

Java并发编程是Java程序员必须掌握的一项技能。本文介绍了Java中的线程、锁、线程间通信和线程池等概念,并通过代码实例来演示它们的使用。如果你想更深入地了解Java并发编程,推荐阅读Java并发编程实战一书,这本书将会为你深入讲解Java并发编程的各个方面,让你掌握Java并发编程的核心知识。

2023-04-12 00:30:33 94

原创 如何用Spring Security保护你的Web应用:认证和授权的最佳实践

Spring Security是一个基于Spring框架的安全框架,它为应用程序提供了安全保护功能。Spring Security提供了很多功能,包括身份验证、授权、加密和访问控制等。使用Spring Security,开发人员可以很容易地添加安全性到他们的应用程序中。Spring Security的核心思想是将安全性分离出来,使得开发人员可以专注于应用程序的业务逻辑。这个框架非常容易扩展和自定义,以适应各种不同的应用程序场景。

2023-04-12 00:16:12 294

原创 不讲八股,我们来聊一聊协程是啥

如果你是个GoLand开发者或者是是使用Kotlin开发安卓的小伙伴,想必对协程已经很熟悉了,但是很多Java的后端小伙伴们,对协程的理解还停留在背八股文的阶段,这也是我写这篇文章的初衷,希望对你能有所帮助。

2023-02-19 11:43:46 74

原创 比短信验证码更安全的动态口令是什么?

图中是中国银行的动态口令牌。中行动态口令每60秒随机更新一次,密码显示为6位数字。大家有没有想过,这种设备是不具备联网功能的,那这个随着时间一直改变的动态口令密码,当你在手机app中输入后,银行又是怎么知道你这个动态口令是正确的呢?

2023-02-16 23:49:36 795

原创 【idea美化篇】3个插件让你的idea彻底变脸

idea美化这事,本着还是实用为主,不整那么多华丽胡哨的的插件,徒增idea的内存占用而已。下面我只推荐3款插件,让你的idea看起来大气美观,同时也能一定程度上提高你的效率。

2023-02-16 23:45:48 8663

原创 【idea插件篇】效率爆棚,上班盯盘,带薪摸鱼的正确姿势

看到一些刚入行的同事,甚至工作了很多年的,都没有有效的利用idea强大丰富的插件,下面给大家分享一些我在平时开发工作中经常用到的一些idea插件,相信在下面这些插件的加持下,能够让你的工作效率爆棚,那么节省下来的时间嘛,自然就可以带薪摸鱼了。最后的压轴插件登场了,leeks可以实时盯盘股票、基金和数字货币,超隐蔽模式设置可以当着老板的面一手写代码,一遍看着盘,摸鱼打发时间的神器。阿里出品的AI智能补全助手,能够智能的进行代码补全,自动预测你想要的输入,相比自带代码补全功能,强大的不是一点半点。

2023-02-16 23:38:26 4304

原创 【idea性能篇】性能稳定、更好用的idea

工欲善其事,必先利其器。idea作为Java程序员们工作中,打交道最多的软件,如果有过大量微服务项目同时开启开发的经验的程序员,想必会对idea是又爱又恨,过高的内存占用,运行时间长后idea响应迟钝,甚至无响应,简直令人抓狂。下面我们来让我们的idea变得更加好用吧,这些优化不仅仅是针对idea,理论上DataGrip,GoLand等Jetbrains的ide软件都是可以使用的。

2023-02-13 00:26:21 7174 1

原创 Redis实现分布式读写锁(Java基于Lua实现)

Redis实现分布式读写锁前言使用Jedis构建redis连接池,使用lua脚本命令保证redis的事务,以实现分布式的读写锁。项目中需要用到分布式的读写锁,开始使用Redisson的读写锁实现,压测的时候时不时会抛异常获取锁超时,初步判断是Redisson中redis连接池设置的太小。由于项目中还自己另外维护着一个redis的连接池JedisPool,故决定自己来实现分布式的可重入读写锁。...

2019-04-04 18:46:23 6355 16

原创 【语言篇】Java枚举类,字节码层面的深入浅出

Java语言篇Java枚举类枚举类的作用枚举类的工程实践枚举类字节码分析Java枚举类关于Java枚举类的博文有很多,但是很多都是说怎么去用枚举,少有全面地把枚举类给将清楚的。本文将从枚举类的作用说起,到个人对枚举类的一些工程实践,然后从字节码去剖析枚举类的本质,介绍枚举类name和ordinal,EnumSet和EnumMap枚举集合类为何物,最后涉及枚举在单例模式和职责链模式中的应用。(...

2018-11-05 17:16:35 1777 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除