自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 资源 (2)
  • 收藏
  • 关注

原创 20. 线程间的通信方式

共享变量:需要同步机制保护。:用于线程间的协调。:用于生产者-消费者模型。管道:适用于两个线程之间的单向通信。:等待多个线程完成。:多个线程在屏障点同步。Exchanger:两个线程交换数据。选择合适的通信方式取决于具体的应用场景和需求。

2025-04-24 15:40:59 374

原创 19. 产生死锁的四个必要条件&如何避免死锁

死锁(Deadlock)是指多个线程因竞争资源而陷入互相等待的僵局,无法继续执行。是实践中最常用的策略。在复杂系统中,结合代码审查、静态分析工具(如FindBugs)和运行时监控,能更有效地预防死锁。死锁的四个必要条件缺一不可,破坏任意一个条件即可避免死锁。避免死锁的核心思想是。

2025-04-24 15:39:42 747

原创 18. 锁的优化机制

通过合理选择锁优化策略,可以显著降低多线程程序的同步开销,提高吞吐量和响应速度。但需结合实际场景权衡,例如偏向锁在低竞争时高效,但在高竞争时可能因频繁撤销偏向而降低性能。锁的优化机制是提升多线程程序性能的关键手段,主要通过减少锁竞争、降低同步开销和避免不必要的阻塞来实现。

2025-04-24 15:38:34 592

原创 17. 程序是如何执行的

程序的执行是一个复杂的过程,涉及多个层次和组件的协作。从源代码到最终的执行结果,程序经历了编译、链接、加载、运行等多个阶段。以下是程序执行的详细过程:对于编译型语言(如 C、C++),源代码需要经过编译器的处理:编译的结果是一个目标文件(如 或 文件),其中包含机器码和符号表。程序加载到内存后,CPU 开始执行程序的指令。执行过程包括以下步骤:对于解释型语言(如 Python、JavaScript),程序的执行过程有所不同:以 C 语言为例,程序的执行过程如下:编译源代码:链接生成可执行文件 。

2025-04-24 15:37:54 844

原创 16. 线程池

线程池是一种管理线程的机制,用于减少线程创建和销毁的开销,提高系统性能和资源利用率。通过线程池,可以复用线程、控制并发数量,并管理任务的执行。当任务队列满且线程数达到最大值时,线程池会执行拒绝策略。Java 提供了几种常用的线程池,通过。

2025-04-24 15:36:22 904

原创 15. 线程安全

是指在多线程环境下,程序能够正确处理共享资源的访问,确保数据的一致性和正确性。当多个线程并发访问共享资源时,如果没有适当的同步机制,可能会导致数据不一致、程序崩溃或其他不可预期的行为。

2025-04-24 15:34:09 920

原创 14. Thread.yield()

是 Java 中Thread类的一个静态方法,用于提示线程调度器当前线程愿意让出 CPU 资源,以便其他具有相同或更高优先级的线程有机会运行。不过,yield()并不保证当前线程一定会暂停,具体行为取决于操作系统的线程调度策略。

2025-04-24 15:31:41 218

原创 13. submit vs execute

方法都用于提交任务,但它们在功能和使用场景上有显著区别。在Java线程池中,

2025-04-24 15:30:48 755

原创 12.三个线程如何按特定顺序依次执行

(例如 T1 → T2 → T3),可以通过线程协作的同步机制实现。方法强制当前线程等待目标线程执行完毕,是最简单直接的方案。在 Java 多线程编程中,若需要强制三个线程。通过共享对象的锁和条件控制线程执行顺序。通过链式调用实现异步任务的顺序执行。通过倒计时门闩控制线程启动顺序。实现更精细的线程协作。

2025-04-24 15:28:47 321

原创 11. SynchronizedMap vs ConcurrentHashMap

是两种常用的线程安全 Map 实现,但它们在设计目标、并发性能和使用场景上有显著差异。在 Java 多线程编程中,

2025-04-24 15:27:52 587

原创 10. Synchronized vs ReentrantLock

是两种常用的锁机制,它们的核心目标都是实现线程同步,但在设计、功能和性能上存在显著差异。在 Java 多线程编程中,

2025-04-24 15:25:54 669

原创 9. synchronized关键字

是确保线程安全的核心关键字,它通过锁机制实现对共享资源的互斥访问。是 Java 并发编程的基石,理解其底层原理和优化策略,能帮助开发者编写高效、安全的并发代码。在 Java 多线程编程中,synchronized。

2025-04-24 15:24:58 1553

原创 8. interrupted() vs isInterrupted

方法都用于检查线程的中断状态,但它们的行为和用途有显著区别。:当前线程需要处理中断后,确保后续代码不再感知中断。:监控其他线程的中断状态,不干扰其标志位。在 Java 多线程编程中,

2025-04-24 15:08:50 748

原创 7. volatile 关键字

问题,但它并不保证原子性。编译器或 CPU 为提高性能可能调整指令顺序,导致多线程下逻辑错误。在 Java 多线程编程中,

2025-04-24 15:07:56 312

原创 6. wait()和notify()

方法的行为与对象锁(Monitor)机制深度绑定,其设计逻辑和强制要求在同步块中调用的规则,是为了保证线程安全和协作的可靠性。:支持多个等待队列(如“非空条件”和“非满条件”),更细粒度的控制。:同样抛出异常,无法唤醒任何线程。在 Java 多线程设计中,:直接抛出异常,程序终止。:若在非同步块中调用。Java 5 引入的。

2025-04-24 15:06:53 229

原创 16. 如何选择合适的垃圾回收器

如何选择合适的垃圾回收器

2025-03-25 11:08:30 306

原创 15. 永久代的垃圾回收机制 & 元空间

永久代的垃圾回收机制 & 元空间

2025-03-25 11:07:27 118

原创 14. 对象一定分配在堆中吗?如何判断对象可以被回收

对象一定分配在堆中吗?如何判断对象可以被回收

2025-03-25 11:06:06 115

原创 13. Full GC 与 Minor GC 触发条件

Full GC 与 Minor GC 触发条件

2025-03-25 11:04:49 81

原创 12. JVM调优-常用命令及调优参数

JVM调优-常用命令及调优参数

2025-03-25 11:03:21 104

原创 11. 指针碰撞、空闲列表和TLAB

指针碰撞、空闲列表和TLAB

2025-03-25 11:01:43 93

原创 10. JVM及其主要组成

JVM及其主要组成

2025-03-25 11:00:20 96

原创 9. StopTheWorld、OopMap、安全点

StopTheWorld、OopMap、安全点

2025-03-25 10:58:17 81

原创 8. JVM加载class文件的原理机制

JVM加载class文件的原理机制

2025-03-25 10:56:39 77

原创 7. 类的生命周期

类的生命周期

2025-03-25 10:55:20 86

原创 6. 对象的结构、创建过程、内存分配规则以及优化技术

对象的结构、创建过程、内存分配规则以及优化技术

2025-03-25 10:53:58 103

原创 5. 堆 vs 栈

堆 vs 栈

2025-03-25 10:51:53 104

原创 4. 类加载与卸载

类加载与卸载

2025-03-25 10:50:37 100

原创 3. JVM 调优

JVM调优

2025-03-25 10:49:03 72

原创 2. JVM内存回收

jvm内存回收

2025-03-25 10:47:17 115

原创 1. JVM 内存模型

JVM 内存模型

2025-03-24 12:02:57 408

原创 14. 享元模式vs单例模式

(例如:单例的配置管理器内部使用享元优化重复配置项的存储。若单例对象需要持有多个享元实例,需避免混淆两者的设计目标。享元工厂本身可以实现为单例,确保全局统一管理共享对象池。例如:在游戏中,所有子弹享元对象由一个单例工厂管理。

2025-03-24 11:57:00 289

原创 13. 适配器模式

用于解决两个不兼容接口之间的兼容性问题。它通过将一个类的接口转换成客户端期望的另一种接口,使原本因接口不匹配而无法一起工作的类能够协同工作。适配器模式(Adapter Pattern)是一种。适配器模式是解决接口不兼容问题的利器,本质是。(组合优于继承),确保代码灵活性和可扩展性。

2025-03-24 11:55:40 348

原创 12. 享元模式

享元模式(Flyweight Pattern)是一种结构型设计模式,旨在通过共享对象来高效支持大量细粒度的对象,从而减少内存占用和对象创建开销。享元模式通过共享技术优化大量细粒度对象的内存使用,适用于可分离不变与可变状态的场景。正确使用时能显著提升性能,但需注意线程安全和设计复杂度。

2025-03-24 11:54:09 345

原创 11. 原型模式

原型模式通过克隆机制高效创建对象,是解决复杂对象复制问题的经典方案。它特别适用于对象初始化成本高或需要动态生成变体的场景,但需谨慎处理深拷贝与引用关系。合理使用原型模式能显著提升系统性能,但需权衡实现复杂度与维护成本。原型模式(Prototype Pattern)是一种创建型设计模式,其核心思想是通过。的场景,通过克隆避免重复初始化,提升性能并简化对象创建逻辑。来创建新对象,而非通过类实例化。接口(标记接口),实际开发中需重写。

2025-03-24 11:52:16 327

原创 10. 责任链模式

责任链模式通过链式传递机制,将请求发送者与多个处理者解耦,适用于需要动态扩展处理逻辑的场景。它是工作流系统和中间件设计的核心模式之一,合理使用能显著提升代码灵活性和可维护性,但需注意链条的构建和异常处理机制。责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它通过将多个处理对象连接成链式结构,使请求能够沿着链条传递,直到被某个对象处理为止。,允许多个对象都有机会处理请求,同时动态调整处理流程。

2025-03-24 11:50:20 848

原创 9. 模板方法模式

模板方法模式通过抽象类定义算法骨架,将变化步骤延迟到子类,是实现代码复用和流程控制的经典模式。适用于具有固定流程但需灵活扩展的场景,是框架和工具设计的基石之一。使用时需权衡继承的优缺点,确保核心流程稳定。模板方法模式(Template Method Pattern)是一种行为型设计模式,用于定义一个算法的框架,允许子类在不改变算法结构的情况下重定义某些步骤。

2025-03-24 11:49:31 226

原创 8. 装饰器模式vs代理模式

代理模式和装饰器模式都是结构型设计模式,通过包装对象来扩展功能,但它们的。是控制访问还是扩展功能。两者的选择最终取决于。

2025-03-24 11:48:52 416

原创 7. 装饰器模式

观察者模式

2025-03-24 11:38:46 241

原创 6. 观察者模式

观察者模式

2025-03-24 11:31:35 102

java基础深入理解-collection、map重点内容以及源码解析

java基础深入理解-collection、map重点内容以及源码解析

2025-03-13

计算方法-插值法(多项式插值、基函数插值法、Lagrange插值、Lagrange插值)

计算方法-插值法(多项式插值、基函数插值法、Lagrange插值、Lagrange插值)

2024-10-28

随机信号处理课程课件(西电)

随机信号处理课程课件(西电)

2024-10-28

雷达原理课件

雷达的基本知识、原理

2017-10-25

中文文本转语音引擎ekho源码

Ekho是一个把文字转换成声音的软件。它目前支持粤语、普通话(国语)、诏安客语、藏语、雅言(中国古代通用语)和韩语(试验中),英文则通过Festival间接实现。支持Linux。

2018-05-22

空空如也

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

TA关注的人

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