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

各凭本事!

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

原创 数论问题之水仙花数

水仙花数的定义是:一个三位数,它的每个位上的数字的立方和等于它本身。通过这个算法,我们可以找到 100 到 999 之间的所有水仙花数。

2024-08-11 10:00:00 226 2

原创 数论问题之亲密数

亲密数的定义是:两个不同的数字,如果它们的所有真因子(不包括它们自身)之和是彼此的数字,那么这两个数字就是亲密数。220 的真因子是 1、2、4、5、10、11、20、22、44、55 和 110,它们的和是 284。284 的真因子是 1、2、4、71 和 142,它们的和是 220。通过这个算法,我们可以找到 1 到 10000 之间的所有亲密数。因此,220 和 284 是一对亲密数。

2024-08-11 09:30:00 270

原创 数论问题之自守数

通过这个算法,我们可以找到 1 到 100 之间的所有自守数。自守数的定义是:一个数的平方的末尾几位等于该数本身。

2024-08-11 09:15:00 153

原创 初等数论之完全数

496 也是一个完全数,因为它的真因子为 1、2、4、8、16、31、62、124、248,而 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248 = 496。28 也是一个完全数,因为它的真因子为 1、2、4、7、14,而 1 + 2 + 4 + 7 + 14 = 28。完全数的定义是:一个正整数,除了它自身之外,所有的真因子(即小于该数本身的因子)之和恰好等于这个数。6 是一个完全数,因为它的真因子为 1、2、3,而 1 + 2 + 3 = 6。

2024-08-11 09:00:00 232

原创 数论问题之平方回文算法

isPalindrome 方法是用于检查一个数字是否为回文数的通用方法,与前面提到的方法类似。121 的平方是 14641,是回文数,所以 121 是一个平方回文数。通过这个算法,我们可以在 1000 以内找到所有的平方回文数。1 的平方是 1,是回文数,所以 1 是一个平方回文数。2 的平方是 4,不是回文数,所以 2 不是平方回文数。3 的平方是 9,是回文数,所以 3 是一个平方回文数。平方回文数的定义是:一个数字的平方是回文数。

2024-08-05 14:11:05 346

原创 数论问题之回文素数

printPalindromePrimes 方法负责遍历指定范围内的所有数字,并打印出满足质数和回文素数条件的数字。每个方法都添加了详细的注释,说明了它们的作用和实现原理。这有助于增强代码的可读性和可维护性。回文素数的定义是:一个整数或者字符串,从前往后读和从后往前读是一样的。isPalindrome 方法用于判断一个数字是否为回文素数。isPrime 方法用于判断一个数字是否为质数。

2024-08-05 14:05:26 196

原创 UDP协议深入解析

总之,UDP协议凭借其简单高效的特点,在实时性要求高、容许一定丢包的应用场景中扮演着重要的角色。与TCP报文相比,UDP报文头非常简洁,没有序号、确认号等字段。这就使得UDP报文处理开销更小,传输效率更高。源端口号(Source Port):16位,标识发送方的端口号。校验和(Checksum):16位,用于检测报文在传输过程中是否发生错误。长度(Length):16位,表示UDP报文的总长度,包括报文头和数据部分。目标端口号(Destination Port):16位,标识接收方的端口号。

2024-07-04 14:55:21 379

原创 TCP协议深入解析

TCP(Transmission Control Protocol,传输控制协议)是互联网中最重要的协议之一,它为上层应用提供可靠的端到端数据传输服务。客户端发送一个 SYN 数据包,服务器回应一个 SYN-ACK 数据包,客户端最后发送一个 ACK 数据包确认连接建立。慢启动:TCP连接建立时,为防止网络拥塞,设置一个较小的congestion window。快速重传和快速恢复:当出现packet loss时,TCP不会立即进入慢启动,而是减小拥塞窗口并进入快速恢复状态。一. TCP连接的建立和断开。

2024-07-04 14:53:20 503

原创 详解 UML 中的关系概念

这些关系概念可以用来描述不同层面的系统元素之间的联系,帮助我们更好地进行系统建模和设计。在实际应用中,需要根据具体的需求选择恰当的关系类型进行建模。有向关联(Directed Association)继承(Generalization)关联(Association)包含(Composition)依赖(Dependency)扩展(Extension)

2024-05-24 16:34:01 339

原创 详解UML中4种关联关系

UML (Unified Modeling Language) 中的关联关系是描述系统中不同元素之间联系的重要概念。其中包括4种主要类型:依赖关系、关联关系、聚合关系和组合关系。让我们通过具体的例子来详细了解这4种关联关系。总的来说,这4种关联关系描述了模型元素之间不同层次和强度的联系。在实际的UML建模过程中,根据具体的需求选择恰当的关系,有助于更好地表达系统的结构和行为。组合关系(Composition)

2024-05-24 16:07:56 784

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

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

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

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

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

2024-05-09 15:31:31 632

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

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

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

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

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

2024-04-23 10:22:54 545

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

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

2024-04-23 10:13:53 1594 2

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

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

2024-03-07 14:40:48 46

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

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

2024-03-05 14:49:12 245

原创 java8-Stream流常用API

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

2023-09-06 16:41:58 249

原创 软件测试-白盒测试

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

2023-05-14 13:18:22 533

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

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

2023-05-14 12:47:30 887

原创 VisualGC插件使用

Visual GC插件详解

2023-04-13 15:39:11 1061

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

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

2023-04-03 09:30:00 139

原创 设计模式之策略模式

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

2023-04-02 14:00:00 132

原创 设计模式之状态模式

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

2023-04-02 09:00:00 310

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

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

2023-04-01 14:00:00 290

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

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

2023-04-01 09:00:00 125

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

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

2023-03-31 14:00:00 289

原创 设计模式之命令模式

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

2023-03-31 09:00:00 214

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

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

2023-03-30 14:00:00 386

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

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

2023-03-30 09:00:00 164

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

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

2023-03-29 15:00:04 183

原创 设计模式之代理模式

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

2023-03-21 08:00:00 132

原创 设计模式之享元模式

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

2023-03-20 14:00:00 102

原创 设计模式之外观模式

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

2023-03-20 08:00:00 176

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

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

2023-03-19 14:00:00 157

原创 设计模式之组合模式

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

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

原创 设计模式之桥接模式

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

2023-03-18 14:00:00 153

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

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

2023-03-18 08:00:00 81

原创 设计模式之原型模式

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

2023-03-17 10:36:25 58

原创 设计模式之单例模式

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

2023-03-17 10:24:17 66

空空如也

空空如也

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

TA关注的人

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