- 博客(133)
- 收藏
- 关注
原创 JUC下的ThreadLocalRandom详解
ThreadLocalRandom 是Java并发包(java.util.concurrent)中提供的一个随机数生成器类,它是从Java 7开始引入的。相较于传统的Math.random()或Random类,ThreadLocalRandom更适用于多线程环境,因为它为每个线程维护了一个独立的随机数生成器实例,减少了线程之间的竞争,提高了性能。
2024-05-13 22:13:44
1702
原创 JUC下的Future 详解
java.util.concurrent.Future 是Java并发编程中一个重要的接口,它代表一个异步计算的结果。当你提交一个任务到执行器(如ExecutorService的submit方法),它会返回一个Future对象。这个对象允许你查询任务是否完成、取消任务、获取任务结果(如果已完成)或者等待结果的完成。Future的出现极大地增强了Java在处理并发异步操作时的灵活性和可控性。
2024-05-13 21:43:17
1305
原创 Java 守护线程 ( Daemon Thread )详解
在Java多线程编程中,守护线程(Daemon Thread)是一种特殊类型的线程,其存在的目的是为了服务于用户线程(User Thread),提供辅助功能,如垃圾回收、监控或日志记录等。Java虚拟机(JVM)的正常运行并不依赖于守护线程的活动,当所有非守护线程(即用户线程)结束执行后,无论守护线程是否还在运行,JVM都会自动退出。这一特性使得守护线程非常适合执行那些不需要伴随程序整个生命周期的任务。
2024-05-12 22:42:43
3181
原创 JUC下的Java java.util.concurrent.Locks详解
java.util.concurrent.locks 包是Java并发编程中非常重要的一个部分,它提供了比内置synchronized关键字更为灵活的锁机制,用于多线程环境下的同步控制。这个包中最核心的是Lock接口,以及一系列实现类,如ReentrantLock, ReentrantReadWriteLock, StampedLock, 和Condition接口等。
2024-05-12 22:14:02
1243
原创 JUC下的BlockingQueue详解
BlockingQueue是Java并发包(java.util.concurrent)中提供的一个接口,它扩展了Queue接口,增加了阻塞功能。这意味着当队列满时尝试入队操作,或者队列空时尝试出队操作,线程会进入等待状态,直到队列状态允许操作继续。这种设计模式有效地解决了生产者-消费者问题,确保了线程间的协作和同步,避免了忙等待,提高了系统的效率和响应性。
2024-05-11 22:23:43
1184
原创 Tomcat 内核详解 - Web服务器机制
Apache Tomcat,作为一款流行的开源Web服务器和Servlet容器,是许多Java Web应用程序的首选部署平台。它遵循Java Servlet、JavaServer Pages (JSP)、Expression Language和WebSocket规范,提供了一个强大而灵活的环境来运行Java Web应用。
2024-05-11 21:47:04
1058
原创 JUC下CountDownLatch详解
CountDownLatch是Java并发包java.util.concurrent中提供的一个同步工具类,它允许一个或多个线程等待其他线程完成操作后再继续执行。这个工具类基于一个计数器,计数器的初始值可以由构造函数设定。线程调用countDown()方法会将计数器减1,而其他线程调用await()方法会阻塞,直到计数器为0。这在多线程协作中非常有用,特别是在需要等待某些条件达成(比如所有子任务完成)之后,再继续执行后续操作的场景。
2024-05-10 21:26:58
981
原创 JUC下的CompletableFuture详解
CompletableFuture是Java 8引入的一个实现Future接口的类,它代表一个异步计算的结果。与传统的Future相比,CompletableFuture提供了更丰富的功能,比如链式调用、组合异步操作、转换结果、异常处理等,极大地增强了Java在处理异步编程的能力。
2024-05-10 21:08:51
1145
原创 详解Java Google Guava
Guava是Java开发中非常有价值的工具库,它通过提供高级数据结构、并发工具、实用工具类等,极大地提高了开发效率和代码质量。然而,开发者在享受其便利的同时,也应注意其学习成本、版本兼容性和性能优化等问题,通过合理的使用策略和持续的学习,最大化Guava的效用。
2024-05-09 23:29:43
3829
原创 JUC下的ForkJoinPool详解
ForkJoinPool 是 Java 并发包 (java.util.concurrent) 中的一个特殊线程池,专为分治算法设计,能够高效地处理大量可分解的并行任务。它基于工作窃取(work-stealing)算法,当一个工作线程的任务队列为空时,它会尝试从其他工作线程的任务队列中“窃取”任务来执行,从而提高了线程的利用率和系统的整体性能。
2024-05-09 22:55:04
1543
原创 JUC下的ScheduledThreadPoolExecutor详解
ScheduledThreadPoolExecutor是Java并发包java.util.concurrent中的一个类,它是专门为定时和周期性任务执行而设计的线程池。它继承自ThreadPoolExecutor,因此具备了线程池的所有特性,同时增加了任务调度的功能。它使用一个无界优先队列来存储待执行的任务,这些任务根据它们的延时或周期进行排序。
2024-05-08 23:07:48
1054
原创 Java 线程池之 ThreadPoolExecutor
Java线程池,特别是ThreadPoolExecutor,是构建高性能、可扩展应用程序的基石之一。它不仅关乎效率,还直接关系到资源管理与系统稳定性。想象一下,如果每来一个请求就创建一个新的线程,服务器怕是很快就要举白旗了。而ThreadPoolExecutor就是那个懂得“量入为出”,合理调配资源的智慧管家。
2024-05-08 22:47:21
1303
原创 Java 线程池 ( Thread Pool )的简单介绍
Java线程池是Java并发编程中的重要组成部分,它通过预先创建一定数量的线程并将其维护在一个池中,以备后续任务使用,从而减少了线程创建和销毁的开销,提高了系统资源的使用效率。Java中线程池的核心实现是java.util.concurrent.ThreadPoolExecutor类,它是基于生产者-消费者模型设计的,由线程集合、任务队列和拒绝策略处理器组成。此外,java.util.concurrent.Executors类提供了创建不同类型线程池的便捷方法。
2024-05-07 22:41:49
831
原创 Java的Fork-Join简单介绍
Java的Fork-Join框架是Java 7引入的一个用于并行处理的轻量级框架,它基于分治策略(Divide and Conquer),特别适合于那些可以被分解为多个子任务的任务。Fork-Join框架的核心思想是将一个大任务(Task)拆分成足够小的子任务,这些子任务可以并行处理,最后将子任务的结果合并以获得最终结果。这种模式非常适合于数据并行处理和递归算法的实现。
2024-05-07 22:10:25
798
原创 Java的java.util.concurrent.ExecutorService简介
Java的ExecutorService是Java并发编程中非常重要的一部分,它是java.util.concurrent包提供的高级线程管理工具,允许以更加灵活和高效的方式执行异步任务。ExecutorService本质上是一个线程池,它不仅提供了线程的管理和复用机制,还支持任务调度、线程同步、异常处理等功能,从而简化了并发编程的复杂度并提高了程序性能。
2024-05-06 22:24:54
1141
原创 设计模式之传输对象模式
传输对象(Transfer Object, TO)模式,又称为数据传输对象(Data Transfer Object, DTO),是一种设计模式,主要用于不同的软件模块或者不同系统之间传输数据。它的核心思想是通过创建一个简单的、专为数据传输而设计的对象,来减少网络通信的成本或提高模块间的数据交换效率。这个对象通常包含一系列的属性和对应的get/set方法,不包含业务逻辑,仅用于封装数据。
2024-05-06 22:01:15
1399
原创 设计模式之服务定位器模式
服务定位器模式(Service Locator Pattern)是一种设计模式,旨在解耦客户端与服务实现之间的直接依赖关系,提供一种灵活的方式来查找和获取服务实例。该模式通过引入一个称为服务定位器(Service Locator)的组件来管理服务的查找和获取过程,从而使得客户端可以间接访问服务,而无需了解服务实现的细节或具体位置。
2024-05-05 21:56:09
1248
原创 设计模式之拦截过滤器模式
拦截过滤器模式,顾名思义,是一种允许你“拦截”请求并在其传递给目标之前进行一系列“过滤”操作的设计模式。每个过滤器负责执行特定的任务,如登录验证、权限检查、日志记录等,而这些任务可以独立于核心业务逻辑存在。Spring Security的核心过滤器链就是这一模式的典型应用。
2024-05-05 21:37:47
1092
原创 设计模式之前端控制器模式
握前端控制器模式,就像是给你的Web应用安装了一个智能大脑,它不仅让请求处理井然有序,还为未来可能的变化预留了足够的灵活性。在这个快速迭代的时代,前端控制器无疑是你Java Web开发工具箱中不可或缺的利器!
2024-05-04 22:23:16
1680
1
原创 设计模式之数据访问对象模式
DAO模式,简单来说,就是建立一个面向对象的接口,封装所有对数据源(通常是数据库)的访问操作。它隔离了业务逻辑与数据访问细节,让你的代码更加整洁、灵活,还易于维护和测试。就像是在数据库和应用程序之间架起了一座桥,让数据流动变得更加高效、安全。
2024-05-04 22:07:04
1448
原创 设计模式之组合实体模式
组合实体模式(Composite Entity Pattern)是特定于企业级JavaBeans (EJB) 持久化机制中的设计模式,主要用于简化EJB实体bean在处理关联对象时的复杂性。该模式在EJB框架内工作,目的是高效地管理和持久化具有复杂关联关系的对象图。
2024-05-03 14:45:29
1287
1
原创 设计模式之业务代表模式
业务代表模式(Business Delegate Pattern)是J2EE设计模式之一,主要用于简化表示层(如用户界面)与业务层(如EJBs、Web服务等)之间的交互,并降低它们之间的耦合度。这种模式通过引入一个中间层(即业务代表)来封装对业务服务的访问细节,使得表示层可以以一种统一且抽象的方式与业务逻辑交互,而无需直接了解底层业务服务的技术细节或复杂性。
2024-05-03 14:22:08
1117
原创 设计模式之MVC模式
MVC(Model-View-Controller)模式是一种软件设计模式,广泛应用于构建用户界面的软件架构中,特别是在Web应用程序开发中。
2024-05-02 23:53:20
1648
原创 设计模式之访问者模式
访问者模式,作为设计模式的一种高级形式,它在解决特定问题领域时展现出独特的魅力。这个模式属于行为模式的范畴,它主要用于实现在不修改对象结构的情况下,为对象结构中的各个元素添加新的功能或行为。访问者模式通过将操作与数据结构分离,使得两者可以独立变化,这对于处理复杂对象结构时特别有用。
2024-05-02 23:30:54
1624
1
原创 设计模式之模板模式
模板模式通过把不变的行为搬移到超类,去除子类中的重复代码,提供一个固定的执行框架。这个框架由一个抽象类实现,其中定义了一个或多个抽象方法,这些抽象方法由子类具体实现,同时定义了一个模板方法,用于调用这些抽象方法,从而实现特定的业务逻辑流程。
2024-05-02 22:57:51
910
1
原创 设计模式之策略模式
策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户,使算法可以在不影响到客户端的情况下发生变化。
2024-05-01 16:36:02
1390
原创 设计模式之空对象模式
空对象模式(Null Object Pattern)也称为零对象模式,是一种设计模式,用于代表空值的对象,而不是返回null。它的目的是让空对象能够像任何其他非空对象一样被使用,从而避免在代码中进行空值检查,提高代码的健壮性和可读性。空对象模式提供了一个能够安全调用的替代品,即使在没有实际对象可用的情况下,也能表现出默认行为,避免NullPointerException
2024-05-01 15:23:08
1207
原创 设计模式之状态模式
状态模式(State Pattern)是一种行为设计模式,它允许对象在其内部状态改变时改变其行为,对象看起来似乎修改了它的类。这种模式将状态的改变逻辑封装在独立的状态类中,使得对象状态的变化不会影响到对象的行为逻辑,使得代码更加清晰和易于维护。
2024-04-29 22:10:47
1680
原创 设计模式之观察者模式
观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于实现事件处理系统、实时数据更新、消息订阅等场景。
2024-04-29 21:58:15
1529
1
原创 设计模式之备忘录模式
备忘录模式(Memento Pattern)是一种行为设计模式,它为对象提供了一种恢复到之前状态的能力,而不会破坏对象的封装性。这种模式非常适合需要撤销操作或保存和恢复状态的场景,比如文本编辑器的撤销/重做功能、游戏中的存档/读档功能等。
2024-04-28 22:20:01
1062
原创 设计模式之中介者模式
中介者模式(Mediator Pattern)是一种行为设计模式,它通过定义一个中介类来封装多个对象之间的交互,使各对象不需要显示地相互引用,从而降低耦合度,提高系统的可维护性和灵活性。中介者模式将原本一对多的网状关系转变为一对多的关系,即每个对象只与中介者对象通信,而中介者负责将消息转发给正确的对象,从而实现对象之间的解耦。
2024-04-28 22:09:50
1296
原创 设计模式之迭代器模式
迭代器模式的核心在于定义一个迭代器接口,该接口规定了遍历集合元素所需的基本操作(如hasNext()、next()等)。具体的集合类(称为“聚合”)通过提供一个创建相应迭代器实例的方法(如iterator())来支持迭代。这样,客户端代码只需要与迭代器接口交互,就可以透明地遍历任何实现了该接口的聚合对象。
2024-04-27 20:14:29
931
原创 设计模式之解释器模式
解释器模式的核心在于定义一个解释器接口和一组实现该接口的类,这些类用于解释特定语言的各个组成部分,如表达式、操作符、变量等。解释器模式通常构建一个抽象语法树(AST),用于表示待解释的语句结构。通过遍历这个树结构,解释器能够逐层解析和计算语句的值。
2024-04-27 20:06:19
1325
原创 RESTful的简单介绍
RESTful API 是一种基于 Representational State Transfer(REST)架构风格设计的 API。它遵循一系列设计原则,旨在构建易于使用、可伸缩且松耦合的 Web 服务接口。
2024-04-26 21:19:39
1071
原创 设计模式之命令模式
命令模式是一种行为型设计模式,它将“请求”封装为一个对象,使得使用请求、参数化请求、队列请求、撤销请求、日志请求等多种请求变得简单。命令模式通过将“行为请求者”与“行为实现者”解耦,使得请求的发送者和接收者完全分离,实现命令的发送者与执行者之间的解耦。
2024-04-26 21:07:41
1186
原创 设计模式之责任链模式
责任链模式是一种行为型设计模式,它允许将请求的发送者与接收者解耦,使多个对象都有机会处理请求,从而形成一条处理请求的责任链。当一个对象接收到请求时,它要么亲自处理请求,要么将请求转发给链上的下一个对象。请求在链上传递直至被处理或到达链尾。
2024-04-26 21:03:07
1084
原创 设计模式之代理模式
代理模式是一种结构型设计模式,它为对象提供了一个代理对象,以便控制对原对象的访问。代理模式通过引入一个新的代理对象,来作为原对象的代表,为原对象增加一层间接访问层,从而在不改变原有业务逻辑的情况下,增强或扩展功能,如添加访问控制、日志记录、缓存、延迟加载等。
2024-04-25 23:15:31
1670
原创 设计模式之享元模式
享元模式是一种结构型设计模式,通过共享对象来有效支持大量细粒度对象的复用,减少内存消耗并提高性能。这种模式通过共享已经存在的相同或相似对象,而不是每次请求都创建新的对象,来减少系统中对象的数量,从而降低内存消耗和提高运行效率。享元模式的核心思想是运用共享技术来有效支持大量细粒度对象的复用。
2024-04-25 23:03:36
1325
原创 设计模式之外观模式
外观模式(Facade Pattern)是一种结构型设计模式,它为子系统的一组接口提供了一个统一的入口点(外观类)。外观模式简化了客户端与子系统之间的交互,屏蔽了子系统内部的复杂性,使客户端能够以更简单的方式使用子系统。
2024-04-24 21:39:57
1339
原创 设计模式之装饰器模式
装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许向一个现有的对象添加新的功能,同时保持对象的类结构不变。装饰器模式通过创建一个装饰器类,包裹原有的对象,并在保持接口一致的前提下,提供额外的功能。这种模式可以实现对象功能的动态扩展,且不会影响其他对象。
2024-04-24 21:29:52
1424
Java推箱子的设计流程和实现要点
2024-03-31
Tomcat启动闪退原因分析及问题解决办法分析
2024-03-31
浅谈AI未来发展趋势与挑战
2024-03-31
Java代码实现俄罗斯方块(简单版)
2024-03-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人