自定义博客皮肤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的博客

各凭本事!

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

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

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

2024-04-23 10:22:54 249

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

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

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

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

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

2024-03-07 14:40:48 27

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

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

2024-03-05 14:49:12 231

原创 java8-Stream流常用API

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

2023-09-06 16:41:58 213

原创 软件测试-白盒测试

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

2023-05-14 13:18:22 512

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

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

2023-05-14 12:47:30 795

原创 VisualGC插件使用

Visual GC插件详解

2023-04-13 15:39:11 954

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

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

2023-04-03 09:30:00 110

原创 设计模式之策略模式

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

2023-04-02 14:00:00 112

原创 设计模式之状态模式

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

2023-04-02 09:00:00 269

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

观察者模式是一种设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖者(观察者)都会自动收到通知并进行更新。在 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 98

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

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

2023-03-31 14:00:00 258

原创 设计模式之命令模式

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

2023-03-31 09:00:00 185

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

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

2023-03-30 14:00:00 376

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

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

2023-03-30 09:00:00 154

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

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

2023-03-29 15:00:04 155

原创 设计模式之代理模式

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

2023-03-21 08:00:00 119

原创 设计模式之享元模式

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

2023-03-20 14:00:00 97

原创 设计模式之外观模式

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

2023-03-20 08:00:00 146

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

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

2023-03-19 14:00:00 126

原创 设计模式之组合模式

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

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

原创 设计模式之桥接模式

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

2023-03-18 14:00:00 125

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

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

2023-03-18 08:00:00 73

原创 设计模式之原型模式

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

2023-03-17 10:36:25 52

原创 设计模式之单例模式

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

2023-03-17 10:24:17 55

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

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

2023-03-17 10:05:41 360

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

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

2023-03-16 15:56:35 67

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

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

2023-03-15 10:38:52 54

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

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

2022-11-19 12:05:39 1174

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

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

2022-11-19 11:12:05 941

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

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

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

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

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

2022-06-11 13:51:05 3854

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

利用熵权法确定指标权重

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

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

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

2022-06-11 13:16:14 579

原创 针对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 361

原创 SpringBoot实现定时任务@EnableScheduling

1. 新建项目,在pom.xml导入必要的依赖。  <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.1.RELEASE</version> </parent>

2020-09-20 17:30:46 852

原创 Mybatis常用注解说明

@Insert : 插入sql , 和xml insert sql语法完全一样。@Select : 查询sql, 和xml select sql语法完全一样。@Update : 更新sql, 和xml update sql语法完全一样。@Delete : 删除sql, 和xml delete sql语法完全一样。@Param : 用于传递多个参数到xml。@Results : 结果集合@Result : 结果@ResultMap 实现引用@Results定义的封装@One 实现一对一结果集封

2020-06-30 15:09:57 273

原创 Memcached学习笔记总结

添加命令set:用于将value的值存储在指定的key中。参数:Key :结构中的key 用于查找缓存的值。flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息。extime: 在缓存中保存键值对的时间长度(以秒为单位,0表示永远)。bytes: 在缓存中存储的字节数。noreply:该参数告知服务器不需要返回数据。value:存储的值。set key valueadd:命令用于将value(数据值)存储在指定的key中。参数:Key :结构中的key

2020-06-30 14:36:12 146

空空如也

空空如也

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

TA关注的人

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