自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM(二)

本文介绍了JVM堆内存的结构和管理机制。堆内存分为年轻代(含Eden区和Survivor区)和老年代,用于存储对象实例、数组及字符串常量池等。当堆内存不足时会出现OOM错误,可通过jps、jmap等工具进行诊断。文章还说明了堆内存相关参数的设置方法,如-Xms、-Xmx等。Java 8后永久代被元空间取代,元空间使用本地内存存储类元数据。堆内存由垃圾回收器管理,需要考虑线程安全等问题。

2025-05-28 14:13:22 702

原创 JVM详解内存结构模型(一)

JVM(Java虚拟机)是一种虚拟计算机,负责执行Java字节码,包含字节码指令集、寄存器、栈、堆和方法区等组件。其生命周期分为启动(通过引导类加载器创建初始类)、运行(以main()为起点,区分用户线程和守护线程)和终止(用户线程结束时JVM退出)。JVM内存结构包括虚拟机栈(线程私有,存放栈帧)、本地方法栈(处理本地方法调用)、程序计数器(记录指令地址,线程私有且不会溢出)等核心区域,共同支撑Java程序的执行与内存管理。

2025-05-28 12:25:01 994

原创 你真的知道读写锁吗

在线程持有读锁的情况下,该线程不能取得写锁(因为获取写锁的时候,如果发 现当前的读锁被占用,就马上获取失败,不管读锁是不是被当前线程持有)。在线程持有写锁的情况下,该线程可以继续获取读锁(获取读锁时如果发现写 锁被占用,只有写锁没有被当前线程占用的情况才会获取失败)。而对于获得写锁的线程,它一定独占了读写 锁,因此可以继续让它获取读锁,当它同时获取了写锁和读锁后,还可以先释 放写锁继续持有读锁,这样一个写锁就“降级”为了读锁。获取写锁、获取读锁再释放写锁的次序,写锁能够降级成为读锁。

2025-05-27 11:00:00 211

原创 线程池中阻塞队列有那些,该如何使用

本文介绍了阻塞队列和线程池的使用。阻塞队列在多线程中实现了高效的数据传输,支持自动阻塞和唤醒机制。文章详细讲解了BlockingQueue的核心方法,包括插入、移除和检查操作。在线程池部分,阐述了核心参数配置、工作流程及常见线程池类型(如FixedThreadPool、CachedThreadPool等)。最后强调应避免使用原生Executors创建线程池,以防止OOM风险,推荐自定义ThreadPoolExecutor,合理设置队列容量和拒绝策略。通过合理应用这些并发工具,可以构建高质量的多线程程序。

2025-05-26 23:09:24 1041

原创 java中并发辅助类

CyclicBarrier 看英文单词可以看出大概就是循环阻塞的意思,在使用中 CyclicBarrier 的构造方法第一个参数是目标障碍数,每次执行 CyclicBarrier 一 次障碍数会加一,如果达到了目标障碍数才会执行 cyclicBarrier.await()之后 的语句。CountDownLatch 类可以设置一个计数器,然后通过 countDown 方法来进行减 1 的操作,使用 await 方法等待计数器不大于 0,然后继续执行 await 方法 之后的语句。

2025-05-26 22:18:24 325

原创 java中锁的问题

Java中的synchronized锁机制有三种形式:1)实例同步方法锁定当前对象;2)静态同步方法锁定Class对象;3)同步代码块锁定指定对象。实例方法的锁与静态方法的锁互不影响,不同实例的锁也互不干扰,但同一类所有静态方法共享同一个锁。线程获取锁后才能执行同步代码,执行完毕或异常时会释放锁。

2025-05-26 22:03:19 232

原创 Java并发编程挑战

【代码】Java并发编程挑战。

2025-05-23 22:50:39 312

原创 关于java中的并发你真的懂吗?

本文主要探讨Java并发编程的核心概念与解决方案。首先阐述了进程与线程的区别,指出并发是指多个线程同时访问共享资源的现象,如经典的卖票问题中出现的线程安全问题。针对并发问题,介绍了两种主要解决方案:1)使用synchronized关键字实现同步,包括修饰代码块、方法、静态方法和类;2)通过Lock接口及其实现类ReentrantLock进行更灵活的锁控制。文章还详细讲解了线程间通信机制,包括基于synchronized的wait/notify和使用Condition的await/signal方法,并演示了定

2025-05-23 22:48:07 862

原创 通义代码模式:让每个人都能成为开发者

简易的应用生成:用户只需用自然语言描述所需应用的功能,无论是小游戏、数据图表、网站还是简历,通义代码模式都能快速生成。这一特性极大地降低了应用开发的门槛,让不懂编程的用户也能享受到创造的乐趣。实时预览与分享:生成的应用不仅可以即时在网页上预览,还可以方便地分享给他人。这意味着用户可以立即看到自己的想法变成了现实,并与朋友或同事分享成果。丰富的预置应用:对于那些不确定如何开始描述自己需求的用户,通义代码模式提供了一批热门应用作为起点,包括个人简历、2048小游戏、答案之书、音乐播放器等。

2024-11-18 19:52:26 515

原创 奇了怪了,为什么我的数据库查询的时候能查到上条的信息但是删除,却删不掉呢

在Spring框架中,@Cacheable是一个非常有用的注解,主要用于缓存方法的结果,从而提高应用程序的性能。- key:定义缓存的键,默认情况下,缓存的键通常是方法参数的组合。假设两条数据id为01,02,你此时查出的最大值为02,执行删除在查询,你会发现,删除为什么查出来还是02,你不信又删除了一次,还是拿到02, 为啥,大哥过来一看,你的注解@Cacheable,如果设置为`true`,那么在多线程环境下,对于同一个缓存键的多个请求,只有一个线程会更新缓存,其他线程会阻塞直到缓存加载完成。

2024-09-06 20:08:41 978

原创 因为一个抽搐的if判断,浪费了半小时

今天写一段史上最蠢,代码为判断失效,内容不说,数据结构复杂,简单就是,在从客户端传入的数据进行删除,在拿到客户端的东西的时候,直接拿过来进行判断,很显然这里有一个基础的知识点(抽风的我以为是bug),为啥判断失效了,浪费了我半小时做排查,最后发现,两个字符串作比较,不是常量比较的是引用地址,导致前端不管怎么删都还存在远来的数据,最后改成使用大家在使用if判断的新手门,一定要注意能使用现成api就不要直接写=这种。祝大家代码顺利跑,咋写都不报错。

2024-09-05 20:40:39 278

原创 springboot整合mybatis报错java.lang.IllegalArgumentException: Invalid value type for attribute月臣54于 2

文章提到在SpringBoot项目中,由于版本冲突,使用mybatis-plus-boot-starter3.5.3.1可能会遇到不兼容问题。建议升级到3.5.1.3版本,此版本与SpringBoot3以上版本兼容,减少错误并简化依赖管理。如果你的是springboot工程的版本超过了3,你在引入mybatis的时候引用这个3.5.1.3版本的mybatis-plus的最好,几乎不报错,这个版本话兼容了mybatis,也就是你引用这个版本后可以不用在引入一个mybatis。摘要由CSDN通过智能技术生成。

2024-09-05 11:28:48 854

原创 新人入职怎么优雅的写抽象类

后面我点进这个类发现破案了,以前经常使用lombok提供的注解,导致直接在取对象的元素出来的时候总是不注意(这个对象经常都是一种集合形式)为空,取出来后经常为空要重新写一个集合在set回去,而不是修改原来的数据。通过检查并初始化subCategories,确保只有一个列表实例被所有调用共享,有助于节省资源。很多地方都这个,并没有把categories 的subCategories重新设置回去,因为刚刚进入公司,很多出的代码都这样写,经常让我摸不到头脑,我经常就想,如果我没有这样取出来值不是很容易为空值吗,

2024-09-05 11:26:57 654

空空如也

空空如也

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

TA关注的人

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