自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Less的博客

各凭本事!

  • 博客(51)
  • 收藏
  • 关注

原创 深入理解Spring中的@Autowired注解

Autowired注解是Spring框架中实现自动装配的重要注解之一。通过使用@Autowired,我们可以简化Bean之间的依赖关系管理,提高代码的可维护性和灵活性。但是,在使用时需要注意一些细节,避免出现潜在的问题。

2024-05-09 15:46:28 600 4

原创 针对macOS上的maven安装配置

Maven是一个基于项目对象模型(POM)的项目管理工具,它可以帮助开发人员构建、管理和发布任何Java项目。它提供了一种标准的项目结构和构建生命周期,并且自动处理项目所需的依赖项。

2024-05-09 15:31:31 504

原创 MySQL中SELECT语句的执行流程详解

MySQL的查询优化器是一个重要的组件,它负责分析查询语句并生成最优的查询执行计划。查询优化器会考虑多个因素,如索引的使用、表连接的顺序、子查询的优化等,以选择最有效的查询执行路径。如果查询包含排序或聚合操作(如GROUP BY、HAVING、ORDER BY),MySQL将对结果进行排序或聚合操作,以生成最终的查询结果。查询优化器生成最优的查询执行计划后,MySQL将根据执行计划开始执行查询。结果可以是完整的结果集,也可以是分页的结果集,取决于查询语句和应用程序的需求。

2024-05-09 15:26:25 481 1

原创 深入解析JVM G1 垃圾回收器

G1 垃圾回收器是一种基于分代的垃圾回收器,但与传统的分代回收器不同,它不再将堆空间划分为固定大小的年轻代和老年代,而是将堆空间划分为多个大小相等的区域(Region)。这些区域可以是年轻代或老年代,G1 回收器会根据垃圾回收的情况进行动态调整。

2024-04-23 10:22:54 491

原创 解决Java Heap Space问题的排查与优化方法

在 Java 开发中,经常会遇到 “java heap space” 错误,这意味着程序需要更多的堆内存来执行所需的操作。本文将介绍如何排查和解决这个问题,并提供一些优化方法,以避免类似的错误发生。

2024-04-23 10:13:53 765 1

转载 GC-Java 垃圾回收收集器

它是 Client 模式下的默认新生代收集器,因为在用户的桌面应用场景下,分配给虚拟机管理的内存一般来说不会很大。是 Server 模式下的虚拟机首选新生代收集器,除了性能原因外,主要是因为除了 Serial 收集器,只有它能与 CMS 收集器配合工作。其它收集器关注点是尽可能缩短垃圾收集时用户线程的停顿时间,而它的目标是达到一个可控制的吞吐量,它被称为“吞吐量优先”收集器。Serial Old 收集器是 Serial 收集器的老年代版本,也是给 Client 模式下的虚拟机使用。Serial 收集器。

2024-03-07 14:40:48 33

原创 二分查找算法的不同实现(JAVA)

2、注意「搜索区间」和 while 的终止条件,如果存在漏掉的元素,记得在最后检查。1、分析二分查找代码时,不要出现 else,全部展开成 else if 方便理解。4、如果将「搜索区间」全都统一成两端都闭,好记,只要稍改。3、如需定义左闭右开的「搜索区间」搜索左右边界,只要在。时做修改即可,搜索右侧时需要减一。条件处的代码和返回的逻辑即可。

2024-03-05 14:49:12 235

原创 java8-Stream流常用API

Stream(流)是 Java 8 引入的一个新的抽象概念,它代表着一种处理数据的序列。简单来说,Stream 是一系列元素的集合,这些元素可以是集合、数组、I/O 资源或者其他数据源。Stream API 提供了丰富的操作方法,可以对 Stream 中的元素进行各种转换、过滤、映射、聚合等操作,从而实现对数据的处理和操作。Stream API 的设计目标是提供一种高效、可扩展和易于使用的方式来处理大量的数据。

2023-09-06 16:41:58 216

原创 软件测试-白盒测试

白盒测试也称为结构测试,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,检查是否满足测试的需要。白盒测试常用技术:逻辑覆盖、循环覆盖、基本路径测试。

2023-05-14 13:18:22 521

原创 系统设计基本原理-耦合与内聚

耦合是模块之间的相互独立性(互相连接的紧密程度)的度量,耦合取决于各个模块之间接口的复杂程度、调用模块的方式以及通过接口的信息类型等。

2023-05-14 12:47:30 812

原创 VisualGC插件使用

Visual GC插件详解

2023-04-13 15:39:11 967

原创 设计模式之访问者模式

访问者模式是一种行为型设计模式,它允许你在不修改对象结构的情况下定义新操作。这种模式通过将操作封装在称为“访问者”的类中来实现。访问者可以通过访问对象结构中的元素来执行操作。在访问者模式中,有两种主要的角色:元素和访问者。元素表示对象结构中的元素,访问者表示执行操作的类。当您需要在不修改对象结构的情况下添加新操作时。当您需要对对象结构中的元素执行多个不同的操作时。当您的对象结构包含多个具有不同接口的元素类时。总之,访问者模式是一种强大的设计模式,它可以使您的代码更加灵活和可扩展。

2023-04-03 09:30:00 110

原创 设计模式之策略模式

策略模式是一种行为型设计模式,它允许在运行时选择算法的行为。在策略模式中,我们定义一系列算法,将每个算法封装在单独的类中,并且使它们可以相互替换。这样,我们可以通过改变算法的实现来改变对象的行为。在 Java 中,策略模式可以通过定义一个接口来实现。接口定义了一组算法的方法,每个算法都有一个具体的实现类。然后,我们可以定义一个包含接口的类,并在该类中定义一个成员变量来保存当前使用的算法实现。在运行时,我们可以通过改变成员变量的值来选择不同的算法实现。使用策略模式的好处是它可以使我们的代码更加灵活和可扩展。

2023-04-02 14:00:00 113

原创 设计模式之状态模式

状态模式是一种行为型设计模式,它允许对象在内部状态改变时改变它的行为。状态模式基于状态的改变来改变对象的行为,而不是改变对象本身。状态模式的核心思想是将对象的状态封装成不同的类,这些类实现了共同的接口,这样在对象的生命周期中,它的状态可以随着时间的推移而改变,从而改变它的行为。在Java中,状态模式通常由一个状态接口和一些具体状态类组成。状态接口定义了所有状态类的共同方法,而具体状态类实现这些方法来改变对象的行为。上下文类持有一个状态接口的引用,并在需要时调用具体状态类的方法来改变对象的状态。

2023-04-02 09:00:00 275

原创 设计模式之观察者模式

观察者模式是一种设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖者(观察者)都会自动收到通知并进行更新。在 Java 中,可以使用 java.util.Observable 和 java.util.Observer 来实现观察者模式。其中,Observable 是主题对象,Observer 是观察者对象。具体实现步骤如下:定义主题对象(Observable)和观察者对象(Observer)。

2023-04-01 14:00:00 264

原创 设计模式之备忘录模式

备忘录模式(Memento Pattern)是一种行为型设计模式,它允许在不破坏对象封装的前提下,捕获并存储对象的内部状态,以便稍后可以恢复到先前的状态。在备忘录模式中,有三个主要角色:发起人(Originator):负责创建一个备忘录并记录其当前状态。备忘录(Memento):存储发起人的内部状态。管理者(Caretaker):负责保存备忘录。备忘录模式的典型应用场景是需要撤销操作的系统,例如文本编辑器、图形编辑器等。

2023-04-01 09:00:00 99

原创 设计模式之中介者模式

中介者模式是一种行为型设计模式,它允许对象之间通过一个中介对象进行通信。中介对象负责协调多个对象之间的交互,从而减少对象之间的耦合性。在 Java 中,中介者模式可以通过接口来实现。中介对象实现这个接口,它可以注册其他对象并协调它们之间的交互。其他对象也会实现这个接口,它们将自己注册到中介对象中,并在需要时调用中介对象来协调它们之间的通信。减少对象之间的直接依赖,提高系统的灵活性和可维护性。将对象之间的交互集中在一个中介对象中,使得交互更加可控和可预测。

2023-03-31 14:00:00 260

原创 设计模式之命令模式

命令模式是一种行为型设计模式,它将请求封装成对象,以便使用不同的请求、队列或日志来参数化其他对象。命令模式也支持可撤销操作。在命令模式中,有四个主要的角色:命令(Command):定义了一个接口,包含一个执行命令的方法execute(),所有的命令都实现这个接口。具体命令(ConcreteCommand):实现了命令接口,包含了执行命令的具体实现。调用者(Invoker):包含了一个命令对象,并且可以发出命令。接收者(Receiver):包含了具体的实现方法,被具体命令调用。

2023-03-31 09:00:00 186

原创 设计模式之责任链模式

责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许多个对象在一个链中按照顺序处理请求,直到其中一个对象处理了请求为止。这种模式将请求的发送者和接收者分离开来,使得多个对象都有机会处理请求,从而避免了请求发送者和接收者之间的耦合关系。在责任链模式中,每个处理者都有一个下一个处理者的引用,如果当前处理者无法处理请求,它会将请求传递给下一个处理者,直到请求被处理为止。

2023-03-30 14:00:00 376

原创 设计模式之模板方法模式

模板方法模式(Template Method Pattern)是一种行为型设计模式,它定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。模板方法模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。在Java中,可以使用抽象类和抽象方法来实现模板方法模式。抽象类定义了算法的骨架,并包含一个或多个抽象方法,用于在算法的不同步骤中提供实现。子类可以继承抽象类,并重写其中的抽象方法,从而改变算法的某些步骤。

2023-03-30 09:00:00 155

原创 设计模式之解释器模式

解释器模式(Interpreter Pattern)是一种行为型设计模式,它定义了一种语言,用于表示特定的领域知识,并提供一个解释器来解释该语言中的语句。解释器模式通常用于解析复杂的文本数据,例如编程语言、数学表达式或配置文件。在Java中,可以使用抽象语法树(AST)来实现解释器模式。AST是一种树形数据结构,它表示了程序代码的语法结构。解释器可以遍历AST并执行每个节点的操作,从而实现对程序代码的解释。例如,假设我们需要解释一个简单的数学表达式,如“2 + 3 * 4”。

2023-03-29 15:00:04 156

原创 设计模式之代理模式

代理模式是一种结构型设计模式,它允许你在不改变原始对象的情况下访问其方法。代理模式通常用于实现访问控制、缓存、延迟加载等功能。静态代理和动态代理都是代理模式的实现方式,根据具体的场景选择适合的实现方式。如果被代理对象的类型是固定的,并且需要在编译期间就确定代理关系,可以使用静态代理;如果被代理对象的类型不确定,或者需要在运行时动态生成代理对象,可以使用动态代理。

2023-03-21 08:00:00 120

原创 设计模式之享元模式

享元模式(Flyweight Pattern)是一种结构型设计模式,它通过共享对象来减少内存占用和提高性能。创建一个接口或抽象类,定义享元对象的公共方法。创建一个具体的享元类,实现接口或抽象类中定义的方法。该类应该包含内部状态和外部状态,内部状态是可以共享的,而外部状态则由客户端传递进来。创建一个享元工厂类,用于管理共享对象。工厂类应该维护一个享元对象的池,当客户端请求一个对象时,先从池中查找是否有可用的对象,如果有则返回,如果没有则创建一个新的对象并加入池中。

2023-03-20 14:00:00 97

原创 设计模式之外观模式

外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口,用于访问子系统中的一组接口。外观模式定义了一个高层接口,使得子系统更加容易使用。它隐藏了子系统的复杂性,并提供了一个简单的接口来访问子系统。定义一个外观类,该类提供了一个简单的接口来访问子系统中的一组接口。在外观类中创建一个子系统对象,该对象封装了子系统的复杂性,并隐藏了子系统的实现细节。在外观类中实现一个简单的接口,该接口将调用子系统中的一组接口,并将结果返回给客户端。

2023-03-20 08:00:00 148

原创 设计模式之装饰器模式

装饰器模式是一种结构型设计模式,它允许在运行时动态地添加行为或功能到对象中,而不需要修改原始对象的代码。在 Java 中,装饰器模式可以通过使用接口和抽象类来实现。定义一个接口或抽象类,它是被装饰对象和装饰器对象的公共接口或抽象类。实现一个具体的被装饰对象,它实现了上述接口或抽象类。定义一个装饰器抽象类,它也实现了上述接口或抽象类,并且包含一个指向被装饰对象的引用。实现一个具体的装饰器类,它继承自上述装饰器抽象类,并且在被装饰对象的基础上添加额外的行为或功能。

2023-03-19 14:00:00 128

原创 设计模式之组合模式

组合模式是一种结构型设计模式,可以将对象组合成树状结构,以表示部分-整体的层次结构。这种模式可以让客户端以一致的方式处理单个对象和对象组合。在组合模式中,有两种类型的对象:叶子对象和组合对象。叶子对象表示树的最底层,它们不再包含其他对象。而组合对象可以包含其他组合对象和叶子对象。组合对象的结构形成了一个递归结构,可以无限扩展。在Java中,可以使用抽象类或接口定义组合对象和叶子对象的共同行为。组合对象可以包含一个集合,用于存储其子节点。叶子对象没有子节点,因此可以不实现该集合。

2023-03-19 08:00:00 233 1

原创 设计模式之桥接模式

桥接模式是一种结构型设计模式,它允许你将抽象部分与实现部分分离,使它们可以独立变化。在桥接模式中,抽象部分和实现部分通过一个桥接接口连接起来,这样它们就可以在运行时动态地组合起来。在 Java 中,桥接模式通常通过接口和实现类来实现。抽象部分定义一个接口,实现部分则实现这个接口。桥接接口则将抽象部分和实现部分连接起来。分离抽象部分和实现部分,使它们可以独立变化。通过桥接接口,可以在运行时动态地组合抽象部分和实现部分。可以减少类的数量,简化系统的设计。

2023-03-18 14:00:00 126

原创 设计模式之适配器模式

适配器模式(Adapter Pattern)是一种结构型设计模式,它可以将一个类的接口转换成客户端所期望的另一种接口,从而使原本不兼容的类能够协同工作。总的来说,适配器模式是一种非常有用的设计模式,它可以帮助我们解决接口不兼容的问题,提高代码的重用性和可维护性,但是在使用时需要权衡其优缺点。

2023-03-18 08:00:00 74

原创 设计模式之原型模式

原型模式是一种创建型设计模式,它允许通过克隆现有对象来创建新对象,而不必从头开始构建。它是一种简单而有效的方式来创建对象,特别是当对象的构造过程比较复杂或者需要大量资源时。在 Java 中,原型模式可以通过实现 Cloneable 接口来实现。该接口表示一个对象可以被克隆。当对象被克隆时,Java 会创建一个新的对象并将原始对象的属性复制到新对象中。原型模式是一种简单而有效的创建对象的方式,它允许通过克隆现有对象来创建新对象,而不必从头开始构建。

2023-03-17 10:36:25 52

原创 设计模式之单例模式

单例模式是一种创建型设计模式,它保证一个类只有一个实例,并且提供一个全局访问点。单例模式可以保证一个类只有一个实例,避免了重复创建对象的开销。单例模式提供一个全局访问点,方便对单例对象进行管理和调用。单例模式可以控制资源的使用,避免资源浪费。单例模式会使代码变得更加复杂,增加了设计和开发的难度。单例模式可能会对单例实例的并发访问造成影响,需要考虑线程安全问题。

2023-03-17 10:24:17 57

原创 设计模式之生成器模式

生成器模式是一种创建型设计模式,它提供了一种创建复杂对象的方法,而无需暴露对象的创建过程。这种模式将对象的创建过程分解为多个步骤,并提供了一种逐步构建对象的方法,使得客户端代码可以灵活地指定对象的各个部分。在Java中,生成器模式通常由一个抽象生成器类和多个具体生成器类实现组成。抽象生成器类定义了一个创建对象的抽象接口,具体生成器类实现了该接口,并负责按照一定的顺序构建对象的各个部分。此外,生成器模式还包括一个指导者类,它负责指导具体生成器类的工作流程。

2023-03-17 10:05:41 367

原创 设计模式之抽象工厂模式

抽象工厂模式是一种创建型设计模式,它提供了一个接口,用于创建相关或依赖对象的系列,而无需指定其具体类。在Java中,抽象工厂模式通常由一个抽象工厂接口和多个具体工厂类实现组成。每个具体工厂类都实现了抽象工厂接口,并负责创建一组相关的对象。这些对象可以是具体类的实例,也可以是其他抽象工厂对象的实例。抽象工厂模式的优点在于,它可以帮助我们创建一组相关的对象,而无需暴露这些对象的具体实现细节。这使得我们可以轻松地更改对象的实现方式,而不会影响客户端代码。

2023-03-16 15:56:35 71

原创 设计模式之工厂方法模式

工厂方法模式是一种创建型设计模式,它定义了一个用于创建对象的接口,但是让子类决定实例化哪个类。工厂方法模式让类的实例化推迟到子类中进行,在这个模式中,父类是一个抽象类或接口,它定义了一个工厂方法,该方法返回一个对象实例。在这个示例中,抽象产品类定义了产品的接口,具体产品类A和B实现了这个接口。抽象工厂类定义了工厂方法,具体工厂类A和B实现了这个方法,返回具体产品对象。客户端代码使用具体工厂类创建具体产品对象,并调用其方法使用产品。

2023-03-15 10:38:52 57

原创 能力成熟度模型集成(CMMI)

CMMI是若干过程模型的综合与改进,是支持多个工程学科和领域的、系统的、一致的过程改进框架,能适应现代工程的特点和需要,能提高过程的质量和综合改进。

2022-11-19 12:05:39 1207

原创 能力成熟度模型(CMM)

CMM是对软件组织进化阶段的描述,随着软件组织的定义、实施、测量、控制和改进其软件过程,软件组织的能力经过这些阶段逐步提高。

2022-11-19 11:12:05 951

原创 敏捷开发:5种主流方法介绍

敏捷开发方法.......

2022-11-13 16:06:10 2632 1

原创 利用灰色关联法确定指标权重

利用灰色关联法确定指标权重

2022-06-11 13:51:05 3996

原创 利用熵权法确定指标权重

利用熵权法确定指标权重

2022-06-11 13:35:00 2816 2

原创 利用对数函数法确定指标权重

利用对数函数法确定指标权重

2022-06-11 13:16:14 600

原创 针对Mac上的IDEA实现SpringBoot热部署

spring-boot-devtools简介spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。第一步:在pom.xml中添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-

2020-12-27 12:19:04 367

空空如也

空空如也

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

TA关注的人

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