自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法学习笔记:11.冒泡排序——从原理到实战,涵盖 LeetCode 与考研 408 例题

本文详细介绍了冒泡排序算法,从基本原理到实际应用。冒泡排序通过相邻元素比较交换,使较大元素逐渐"下沉",时间复杂度为O(n²),最坏情况下需n-1轮排序。文章分析了算法的稳定性、原地性等特性,对比了与其他排序算法的差异,并提供了LeetCode例题的Java实现(如912题数组排序和164题最大间距)。针对考研408考点,重点讲解了时间复杂度分析、优化方法(如标志变量)等内容。虽效率不高,但冒泡排序仍是理解排序思想的经典入门案例,适合算法学习和考研备考。

2025-07-08 11:00:21 364

原创 算法学习笔记:10.Prim 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题

Prim算法是一种用于求解最小生成树的经典贪心算法,主要应用于网络设计、电路布线等领域。其核心思想是从初始顶点出发,逐步选择连接"已选顶点集"与"未选顶点集"的最小权值边来扩展生成树。本文详细介绍了Prim算法的基本概念、执行流程、解题思路,并通过LeetCode例题(如1584题)展示了Java实现代码。文章还分析了Prim算法与Kruskal算法的区别,以及在考研408中的常见考点,包括算法原理、时间复杂度分析和正确性证明。该算法适用于稠密图,时间复杂度为n²

2025-07-08 10:38:31 554

原创 算法学习笔记:9.Kruskal 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题

Kruskal算法深度解析:最小生成树经典解法 Kruskal算法是求解最小生成树的经典贪心算法,通过排序边集合并利用并查集检测环来构建最小树。本文系统讲解了算法原理:从图的定义、生成树概念到算法思想的贪心策略实现过程。结合LeetCode例题(如1135和332题),展示了代码实现方法,重点分析了并查集的使用技巧。针对考研408需求,文章对比了Kruskal与Prim算法的性能差异,指出Kruskal更适合稀疏图,时间复杂度为O(ElogE)。备考建议强调通过实践掌握算法变形应用能力,建立完整知识体系。

2025-07-07 17:46:41 723

原创 算法学习笔记:8.Bellman-Ford 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题

Bellman-Ford算法是处理带负权边单源最短路径问题的经典算法。本文系统介绍了该算法的基本原理、松弛操作核心思想以及|V|-1次迭代的关键步骤,并详细说明了负权回路的检测方法。通过LeetCode例题(787、1345)展示了算法在解决特定问题时的实际应用与代码实现(Java)。同时,针对考研408需求,分析了该算法的考察重点,包括时间复杂度分析(O(|V|×|E|))、与其他最短路径算法的对比等。文章强调掌握Bellman-Ford算法对算法竞赛、工程实践和考研备考的重要价值。(150字)

2025-07-07 16:40:53 389

原创 算法学习笔记:7.Dijkstra 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题

Dijkstra算法是求解单源最短路径问题的经典算法,由荷兰计算机科学家Edsger W. Dijkstra于1956年提出。该算法采用贪心策略,通过维护已确定和未确定最短路径的节点集合,逐步计算从源点到其他所有节点的最短路径距离。文章详细介绍了算法的基本概念、执行步骤和解题思路,并结合LeetCode例题(网络延迟时间和解救人质)展示了Java代码实现。此外,还分析了该算法在计算机考研408中的考点,包括图的存储结构、贪心算法思想、正确性证明以及算法变形应用等。Dijkstra算法在路径规划、网络路由等领

2025-07-04 16:16:44 1064

原创 算法学习笔记:6.深度优先搜索算法——从原理到实战,涵盖 LeetCode 与考研 408 例题

深度优先搜索(DFS)是一种基于递归或栈实现的搜索算法,广泛应用于图论、回溯、拓扑排序等领域。其核心思想是沿着路径尽可能深入探索,直到无法继续再回溯。DFS可通过递归(简洁但有栈溢出风险)或迭代(使用栈结构)实现,适用于岛屿数量计算、单词搜索等LeetCode题目及考研算法题。典型应用包括判断无向图回路、网格遍历等问题。该算法通过标记访问节点和回溯机制高效解决问题,是计算机科学中的重要基础算法。

2025-07-04 15:41:35 899

原创 算法学习笔记:5.后缀数组——从原理到实战,涵盖 LeetCode 与考研 408 例题

摘要: 后缀数组是字符串处理的重要工具,通过字典序排序所有后缀构建而成,适用于最长公共前缀、字符串匹配等问题。本文详解倍增算法构建后缀数组的过程,结合排名数组和高度数组提升效率,并通过LeetCode例题(如1163、187)展示Java实现。此外,后缀数组与考研408的数据结构、排序算法、分治思想等核心知识点紧密相关,有助于深化算法理解与应试能力。通过理论解析与实战结合,本文为算法学习者和考研生提供系统指导,建议辅以练习巩固掌握。

2025-07-03 18:44:09 556

原创 算法学习笔记:4.KMP 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题

KMP算法是高效的字符串匹配算法,通过构建部分匹配表(next数组)避免重复比较。本文详解其核心思路:首先构建模式串的最长前缀后缀表,匹配时利用该表优化回溯过程。通过LeetCode例题(如28题字符串匹配、459题重复子串)和考研408案例分析,展示KMP算法的具体应用。文章提供Java代码实现,包括next表构建和匹配流程,强调该算法在减少时间复杂度(O(n+m))上的优势。掌握KMP算法对解决字符串匹配问题及计算机专业考试具有重要意义。

2025-07-03 11:40:44 1138

原创 算法学习笔记:3.广度优先搜索 (BFS)——二叉树的层序遍历

广度优先搜索(BFS)是一种逐层遍历的算法,常用于查找最短路径和层级遍历。其核心思想是通过队列实现从起点开始,逐层向外扩展搜索,确保先访问距离起点近的节点。BFS与DFS不同,前者像地毯式搜索适合找最短路径,后者则深度优先。以二叉树层序遍历为例,BFS通过队列存储节点,每次取出当前层所有节点,将其子节点加入队列,最终按层次返回节点值集合。代码实现中,使用队列存储待访问节点,循环取出并处理当前层节点,同时将下一层节点入队,形成层次遍历效果。

2025-06-13 20:00:00 447

原创 算法学习笔记:2.大根堆算法——数据流的中位数​​or最后一块石头的重量

两题均采用堆结构解题。1046题使用大根堆处理石头重量问题,每次取出最大两块石头相减,差值重新入堆,直至剩余0或1块。295题实现动态数据流的中位数查找,通过大小根堆配合:大根堆存较小半部分,小根堆存较大半部分。插入时根据总数奇偶性调整堆结构,奇数时大根堆多1元素,偶数时两堆平衡,中位数取堆顶或平均值。时间复杂度均为O(logN),空间复杂度O(N)。堆结构有效简化了动态数据的排序与查询过程

2025-06-12 22:00:00 1047

原创 算法学习笔记:1.摩尔投票算法——多数元素(Moore‘s Voting Algorithm)

摩尔投票算法是一种用于在数组中寻找多数元素的有效方法。所谓的多数元素就是在数组中出现次数超过一半以上的元素。所以经常用于众数的查找

2025-03-01 15:52:22 587 1

原创 DeepSeek 结合 IDEA!辅助编程太强了!

对于 Java 开发者而言,将 DeepSeek 集成到 IDEA 中,就如同为自己的编程之路配备了一位智能助手,大幅提升开发效率,让编程变得更加轻松愉悦。重复上述的设置操作,在IDEA中找到已经安装的插件 CodeGpt 工具的设置,然后依次找到 Custom OpenAI 的设置。这里有三部分需要配置,高版本的 IDEA 不仅在功能上更加完善,而且在与 DeepSeek 的兼容性和稳定性方面也有更好的表现,能够为后续的集成工作提供坚实的基础。通过上述步骤,即可配置完成,配置完成后,点击应用和确认即可。

2025-02-07 18:01:28 2184 2

原创 Redis不同类型使用操作方法一文流(超级干货附带源码)

将StringRedisTemplate引用到对应工具类对应的工具类源文件已经上传。

2024-10-24 10:54:03 739 2

原创 【设计模式】JAVA Design Patterns——State(状态模式)

State(状态)模式是一种对象行为型设计模式,它允许对象在其内部状态发生改变时改变其行为。State模式的核心思想是将对象的行为封装在不同的状态对象中,并且使得对象在不同状态下可以切换。状态模式是一种允许对象在内部状态改变时改变它的行为的行为型设计模式。状态模式可以被理解为策略模式,它能够通过调用在模式接口中定义的方法来切换策略。当在长毛象的自然栖息地观察长毛象时,似乎它会根据情况来改变自己的行为。允许对象在内部状态改变时改变它的行为。对象看起来好像修改了它的类。状态模式允许对象改变它的行为。

2024-06-08 08:54:55 1041 9

原创 【设计模式】JAVA Design Patterns——Servant(服务模式)

在软件工程中,仆人模式定义了一个对象,用于向一组类提供某些功能,而无需在每个类中定义该功能。仆人是一个类,其实例(甚至只是类)提供了处理所需服务的方法,而仆人为其(或与谁)做某事的对象被视为参数。Servant(仆人)模式,也称为Active Object 模式,是一种并发设计模式,用于提供并发对象之间的服务。仆人类被用于向一组类提供一些行为,区别于在每个类定义行为-或者当我们无法排除。皇家是一个接口,它被国王和女王类实现,以获取仆人的服务。确保一个仆人对象为一组被服务的对象提供一些特定的服务。

2024-06-07 09:30:00 693 3

原创 【设计模式】JAVA Design Patterns——Proxy(代理模式)

在最一般的形式上,代理是一个类,它充当与其他对象的接口。代理是客户端调用的包装器或代理对象,以访问后台的实际服务对象。在代理中,可以提供额外的功能,例如在对实对象的操作占用大量资源时进行缓存,或者在对实对象的操作被调用之前检查前提条件。想象有一个塔,当地的巫师去那里学习他们的法术。这里的代理就代表的塔的功能并添加访问控制。代理适用于需要比简单指针更广泛或更复杂的对象引用的情况。为另一个对象提供代理或占位符以控制对其的访问。使用代理模式,一个类代表另一个类的功能。创建一个简单的巫师类。然后这是进入塔的场景。

2024-06-06 09:30:00 1208 4

原创 【设计模式】JAVA Design Patterns——Private Class Data(私有类数据设计模式)

私有类数据设计模式试图通过限制属性的可见性来减少属性的暴露。通过将它们封装在单个Data对象中,可以减少类属性的数量。你想阻止家庭成员在你烹饪时偷偷品尝菜品,否则后面可能东西不够吃了。私有类数据模式通过将数据与使用它的方法分离到维护数据状态的类中,从而防止了对不可变数据的操纵。类 ,它的属性没有被私有类数据保护,从而使炖菜的成分对类方法易变。私有类数据是计算机编程中的一种设计模式,用于封装类属性及其操作。根据上面炖汤的例子。现在,其中的方法无法处理。在以下情况下使用私有类数据模式。创建每个类并调用其方法。

2024-06-05 09:30:00 433 4

原创 【设计模式】JAVA Design Patterns——Observer(观察者模式)

consumer想要消费kafka broker中的数据需要发送request,request发送的结果用RequestFuture来表示,RequestFuture中包含RequestFutureListener,当request处理完成后RequestFutureListener的相关方法会被调用。观察者模式是这样的一种软件设计模式:它有一个被称为主题的对象,维护着一个所有依赖于它的依赖者清单,也就是观察者清单,当主题的状态发生改变时,主题通常会调用观察者的方法来自动通知观察者们。

2024-06-04 10:12:06 1065 32

原创 【设计模式】JAVA Design Patterns——Monitor(监视器模式)

当您有代码的关键部分一次只需要由一个线程执行时。在并发编程(也称为并行编程)中,监视器是一种同步构造,它允许线程具有互斥性和等待(阻止)特定条件变为假的能力。:当您的应用程序涉及需要由多个线程访问和更新的共享数据结构、变量或资源时。主要目的是为多个线程或进程提供一种结构化和受控的方式来安全地访问和操作共享资源,例如变量、数据结构或代码的关键部分,而不会导致冲突或竞争条件。在应用监视器模式之前,建议彻底分析应用程序的并发需求,并选择最适合您需求的同步方法,同时考虑性能、复杂性和可用语言功能等因素。

2024-06-03 10:49:17 1383 9

原创 【设计模式】JAVA Design Patterns——Iterator(迭代器模式)

百宝箱包含一组魔法物品。有多种物品,例如戒指,药水和武器。可以使用藏宝箱提供的迭代器按类型浏览商品。在面向对象的编程中,迭代器模式是一种设计模式,其中迭代器用于遍历容器并访问容器的元素。提供一种在不暴露其基础表示的情况下顺序访问聚合对象的元素的方法。容器可以提供与表示形式无关的迭代器接口,以提供对元素的访问。遍历在宝箱中找到的戒指类型物品。创建含物品的藏宝箱是主要类。以下情况使用迭代器模式。

2024-06-01 10:34:53 781 14

原创 【设计模式】JAVA Design Patterns——Factory Method(虚拟构造器模式)

在基于类的编程中,工厂方法模式是一种创建型设计模式用来解决创建对象的问题,而不需要指定将要创建对象的确切类。这是通过调用工厂方法创建对象来完成的,而不是通过调用构造器。该工厂方法在接口中指定并由子类实现,或者在基类实现并可以选择由子类重写。为创建一个对象定义一个接口,但是让子类决定实例化哪个类。精灵需要精灵武器,而兽人需要兽人武器。现在随着客户的到来,会召唤出正确类型的铁匠并制造出要求的武器。它为类提供了一种把实例化的逻辑委托给子类的方式。以上面的铁匠为例,创建铁匠的接口和一些它的实现。

2024-05-31 09:41:12 683 5

原创 【设计模式】JAVA Design Patterns——Facade(外观模式)

Facade模式通常涉及一个名为Facade的单一类,该类提供了一个高级接口,用于与客户端交互,并将客户端的请求委派给系统内部的一组相关对象。这是你所相信的因为你在使用一个金矿对外提供的一个简单接口,在内部它要却要做很多事情。这个简单的接口对复杂的子系统来说就是一个外观。为一个子系统中的一系列接口提供一个统一的接口。外观定义了一个更高级别的接口以便子系统更容易使用。外观是为很大体量的代码(比如类库)提供简单接口的一种对象。使用上面金矿的例子。外观模式为一个复杂的子系统提供一个简单的接口。

2024-05-30 13:23:58 740 4

原创 【设计模式】JAVA Design Patterns——Dependency Injection(依赖注入模式)

依赖注入是一种软件设计模式,其中一个或多个依赖项(或服务)被注入或通过引用传递到一个依赖对象(或客户端)中,并成为客户端状态的一部分。可测试性:依赖注入允许将依赖项注入到组件中,这样在单元测试时可以轻松地替换真实的依赖项为模拟对象或者桩对象。改变行为:通过依赖注入,可以更容易地改变组件的行为,例如切换实现、调整配置等,而无需修改组件本身的代码。解耦配置和实现:依赖注入允许将组件的配置信息与其实现分离,这样可以更容易地管理和调整配置,并且可以减少重复的代码。依赖注入将客户端依赖的创建与其自身行为分开。

2024-05-29 09:28:55 1769 33

原创 【设计模式】JAVA Design Patterns——Decorator(装饰器模式)

在面向对象的编程中,装饰器模式是一种设计模式,它允许将行为静态或动态地添加到单个对象中,而不会影响同一类中其他对象的行为。装饰器模式通常对于遵守单一责任原则很有用,因为它允许将功能划分到具有唯一关注领域的类之间。附近的山丘上住着一个愤怒的巨魔之王。通常它是徒手的,但有时它有武器。为了武装巨魔不必创建新的巨魔,而是用合适的武器动态的装饰它。装饰者模式让你可以在运行时通过把对象包装进一个装饰类对象中来动态的改变一个对象的行为。动态的为对象附加额外的职责。接下来为巨魔之王添加棒球棒,可以使用装饰者来动态实现。

2024-05-28 09:30:05 853 8

原创 【设计模式】JAVA Design Patterns——Data Transfer Object(数据传递对象模式)

在编程领域,数据传输对象(DTO)是在进程之间承载数据的对象。使用它的动机是,通常依靠远程接口(例如Web服务)来完成进程之间的通信,在这种情况下,每个调用都是昂贵的操作。因为每个(方法)调用的大部分成本与客户端和服务器之间的往返时间有关,所以减少调用数量的一种方法是使用一个对象(DTO)来聚合将要在多次调用间传输的数据,但仅由一个调用提供。我们不使用一次查询一个属性,而是使用DTO一次传送所有相关属性。次将具有多个属性的数据从客户端传递到服务器,以避免多次调用远程服务器。类充当客户信息的服务器。

2024-05-28 09:16:07 518

原创 【设计模式】JAVA Design Patterns——Data Access Object(数据访问对象模式)

在计算机软件中,数据访问对象(DAO)是一种模式,可为某种类型的数据库或其他持久性机制提供抽象接口。有一组客户数据需要持久化到数据库中。我们需要整个额外的增删改查操作以便操作客户数据。对象为某种类型的数据库或其他持久性机制提供了抽象接口。DAO是我们通过基本持久性机制提供的接口。接口及其两个不同的实现。

2024-05-27 09:45:04 569 5

原创 【设计模式】JAVA Design Patterns——Curiously Recurring Template Pattern(奇异递归模板模式)

奇异递归模板模式(curiously recurring template pattern,CRTP)是C++模板编程时的一种惯用法:其中类X派生自使用X本身作为模板参数的类模板实例化。对于正在策划赛事的综合格斗推广活动来说,确保在相同重量级的运动员之间组织比赛至关重要。这样可以防止体型明显不同的拳手之间的不匹配,例如重量级拳手与雏量级拳手的对决。效果: 允许拳手与相同重量级的对手交手,如果对手是不同重量级,则会出现错误。使类型中的某些方法接受特定于其子类型的参数。定义MmaFighter 的一些子类型。

2024-05-27 09:23:38 647

原创 【设计模式】JAVA Design Patterns——Converter(转换器模式)

转换器模式的目的是提供相应类型之间双向转换的通用方法,允许进行干净的实现,而类型之间无需相互了解。此外,Converter模式引入了双向集合映射,从而将样板代码减少到最少。在真实的应用中经常有这种情况,数据库层包含需要被转换成业务逻辑层DTO来使用的实体。对于潜在的大量类进行类似的映射,我们需要一种通用的方法来实现这一点。现在就可以做到User和UserDto之间的映射编简单。转换器模式让一个类的实例映射成另一个类的实例变得简单。

2024-05-25 10:52:45 1174 4

原创 【设计模式】JAVA Design Patterns——Composite Entity(复合实体模式)

对于一个控制台对象,需要管理许多接口功能。通过使用复合实体模式,将消息对象、信号对象等依赖性对象组合在一起,直接使用单个对象对其进行控制。复合实体模式用于对一组相关联的持久化对象进行建模、描述和管理,用于取代对这组对象描述为单独粒度的实体。复合实体模式允许使用一个统一对象来管理一组相互关联的对象。适用console 复合实体进行消息对象,信号对象的分配。创建一个console复合实体继承上面的通用类。创建一个通用的符合对象。

2024-05-25 10:40:35 499

原创 【设计模式】JAVA Design Patterns——Composite(组合模式)

在软件工程中,组合模式是一种分区设计模式。组合模式中,一组对象将像一个对象的单独实例一样被对待。组合的目的是将对象“组成”树状结构,以表示部分整体层次结构。实现组合模式可使客户统一对待单个对象和组合对象。每个句子由单词组成,单词又由字符组成。这些对象中的每一个都是可打印的,它们可以在它们之前或之后打印一些内容,例如句子始终以句号结尾,单词始终在其前面有空格。将对象组合成树结构以表示部分整体层次结构。组合可以使客户统一对待单个对象和组合对象。组合模式使客户能够以统一的方式对待各个对象。

2024-05-24 13:58:13 379 4

原创 【设计模式】JAVA Design Patterns——Commander(指挥官模式)

如果当前运输可用,但支付服务不可用,或者反之,当我们已经收到用户的订单后,我们应该如何处理?我们需要有一个机制来处理这些情况。我们必须将订单指向其中一个服务(在这个例子中是运输),然后将订单添加到另一个服务的数据库中(在这个例子中是支付),因为两个数据库不能原子地更新。如果我们当前无法做到这一点,应该有一个队列,可以将这个请求排队,并且必须有一个机制,允许队列中出现失败。所有这些都需要通过不断的重试,在保证幂等性(即使请求多次,变化只应用一次)的情况下,由一个指挥类来完成,以达到最终一致性的状态。

2024-05-24 13:49:17 553

原创 【设计模式】JAVA Design Patterns——Command(事务模式)

有一个巫师在地精上施放咒语。咒语在地精上一一执行。第一个咒语使地精缩小,第二个使他不可见。然后巫师将咒语一个个的反转。这里的每一个咒语都是一个可撤销的命令对象。在面向对象编程中,命令模式是一种行为型设计模式,它把在稍后执行的一个动作或触发的一个事件所需要的所有信息封装到一个对象中。将请求封装为对象,从而使你可以将具有不同请求的客户端参数化,队列或记录请求,并且支持可撤销操作。用命令对象的方式存储请求以在将来时可以执行它或撤销它。创建咒语的目标:地精。

2024-05-23 10:49:51 798 7

原创 【设计模式】JAVA Design Patterns——Combinator(功能模式)

简单地说,有一些类型 T,一些用于构造类型 T 的“原始”值的函数,以及一些可以以各种方式组合类型 T 的值以构建更复杂的类型 T 值的“组合器”在计算机科学中,组合逻辑被用作计算的简化模型,用于可计算性理论和证明理论。尽管组合逻辑很简单,但它捕获了计算的许多基本特征。组合器是一个高阶函数,仅使用函数应用程序和之前定义的组合器来定义其参数的结果。从开发人员的角度来看,API 由领域中的术语组成。组合器允许从先前定义的“事物”创建新的“事物”。另一个组合器用于一些复杂的查找器。首先构造一个实例,然后执行它。

2024-05-23 09:35:53 592

原创 【设计模式】JAVA Design Patterns——Static Content Hosting(静态内容托管模式)

与由 Web 应用程序生成的动态网页相反,静态网页(有时称为平面网页或固定网页)是完全按照存储的方式传送到用户的网页浏览器的网页。静态内容托管模式利用云原生存储服务来存储内容和全球内容交付网络,将其缓存在世界各地的多个数据中心。全球性的营销网站(静态内容)需要快速的部署以开始吸引潜在的客户。CloudFormation 分发部署需要一些时间,但一旦完成,您的网站就会从全球各地的数据中心提供服务!命令的舒勇将显示准确的分配配置项,包括包括可用于测试的生成的 CloudFront 域名,例如。

2024-05-22 17:27:32 1171 3

原创 【设计模式】JAVA Design Patterns——Circuit Breaker(断路器模式)

因此,如果其中一个远程服务缓慢或未成功响应,我们的应用程序将尝试使用多个线程/进程从远程服务获取响应,很快它们都会挂起(也称为 [线程饥饿]我们应该能够检测到这种情况并向用户显示适当的消息,以便他/她可以探索不受远程服务故障影响的应用程序的其他部分。.如果失败次数超过某个阈值,我们将进入“open”状态,这就像开路一样,阻止远程服务调用,从而节省资源。断路器允许优雅地处理失败的远程服务。以这样一种方式处理昂贵的远程服务调用,即单个服务/组件的故障不会导致整个应用程序宕机,我们可以尽快重新连接到服务。

2024-05-22 16:45:44 2225 14

原创 【设计模式】JAVA Design Patterns——Chain of responsibility(责任链模式)

在面向对象设计中,责任链模式是一种由源命令对象和一系列处理对象组成的设计模式。每个处理对象包含了其定义的可处理的命令对象类型的逻辑。剩下的会传递给链条中的下一个处理对象。通过给多个对象一个处理请求的机会,避免请求的发送者和它的接收者耦合。串联接收对象并在链条中传递请求直到一个对象处理它。兽王大声命令他的军队。最近响应的是指挥官,然后是军官,然后是士兵。指挥官,军官,士兵这里就形成了一个责任链。请求从一个对象中进入并结束然后进入到一个个对象中直到找到合适的处理器。兽人发起了请求(命令),创建请求类。

2024-05-22 16:30:19 221

原创 【设计模式】JAVA Design Patterns——Callback(回调模式)

在计算机编程中,回调又被称为“稍后调用”函数,可以是任何可执行的代码用来作为参数传递给其他代码;其它代码被期望在给定时间内调用回调方法。回调是一部分被当为参数来传递给其他代码的可执行代码,接收方的代码可以在一些方便的时候来调用它。我们需要被通知当执行的任务结束时。我们为调用者传递一个回调方法然后等它调用通知我们。回调是一个用来传递给调用者的方法,它将在定义的时刻被调用。执行一个任务完成时接受的一个回调。创建一个任务在完成之后执行回调。创建一个简单的方法接口。

2024-05-22 09:46:15 547

原创 【设计模式】JAVA Design Patterns——Bytecode(字节码模式)

巫师的行为需要经过精心的调整和上百次的游玩测试。每次当游戏设计师想改变巫师行为时都让程序员去修改代码这是不妥的,所以巫师行为以数据驱动的虚拟机方式实现。指令集定义了可以执行的低级操作。虚拟机一次一条地执行这些指令,中间的值用栈处理。通过组合指令,可以定义复杂的高级行为。展示虚拟机可用的指令。每个指令对于如何操作栈中的数据都有自己的语义。例如,增加指令,其取得栈顶的两个元素并把结果压入栈中。它将指令作为输入并执行它们以提供游戏对象行为。字节码模式支持由数据而不是代码驱动的行为。允许编码行为作为虚拟机的指令。

2024-05-22 09:25:47 647

原创 【设计模式】JAVA Design Patterns——Builder(构造器模式)

最简单的选择是让计算机为你创建角色。但是如果你想选择一些像专业,性别,发色等角色细节时,这个角色生成就变成了一个渐进的过程。构造器参数的数量很快就会失控同时参数的排列方式可能变得难以理解。另外,如果您将来希望添加更多选项,则此参数列表可能会继续增长。允许你创建不同口味的对象同时避免构造器污染。当一个对象可能有几种口味,或者一个对象的创建涉及到很多步骤时会很有用。建造者模式是一种对象创建的软件设计模式,旨在为伸缩构造器反模式寻找一个解决方案。将复杂对象的构造与其表示分开,以便同一构造过程可以创建不同的表示。

2024-05-21 09:45:00 816

原创 【设计模式】JAVA Design Patterns——Business Delegate(业务委托模式)

该模式旨在减少业务服务与连接的表示层之间的耦合,并隐藏服务的实现细节(包括EJB体系结构的查找和可访问性)。业务委托模式在表示层和业务层之间添加了一个抽象层。通过使用该模式,我们获得了各层之间的松散耦合,并封装了有关如何定位,连接到组成应用程序的业务对象以及与之交互的逻辑。它捕获用户的搜索字符串,并将其传递给业务委托层。业务委托层选择最合适的视频流服务,然后从那里播放视频。业务委托类使用业务查找服务将电影播放请求路由到合适的视频流服务。业务委托模式在表示层和业务层之间添加了一个抽象层。

2024-05-21 09:45:00 369

redis使用的操作工具类(超级干货)

将工具类放入指定目录,使用时将其应用调用其方法即可

2024-10-24

空空如也

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

TA关注的人

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