自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【网络】gateway 可以提供的一些功能之三 “ 支持Eureka服务发现 ”

因为在微服务架构中,服务数量庞大且动态变化,需要一种机制来管理和发现这些服务,而 Eureka 作为一种服务注册中心,提供了服务注册和发现的功能,可以让服务之间相互发现和通信。而网关则负责对外提供服务的入口,并进行流量控制、安全检查、请求转发等功能,通过与 Eureka 集成,网关可以动态地从 Eureka 中获取服务信息,实现请求的转发和路由,从而简化了服务间通信的管理和维护。这样做的好处是,网关和微服务之间的通信变得更加灵活和动态,可以随时根据服务的变化来调整路由规则,同时也方便了服务的管理和监控。

2024-05-10 17:21:18 470

原创 【JAVA】JAVA的垃圾回收机制详解

对于Java的垃圾回收机制,它是Java虚拟机(JVM)提供的一种自动内存管理机制,主要负责回收不再使用的对象以释放内存空间。需要注意的是,全局变量的生命周期与整个应用程序的生命周期相同,因此如果全局变量引用的对象一直存在于内存中而不被释放,可能会造成内存泄漏。因此,在使用全局变量时要合理管理其生命周期,确保不再需要时及时释放,以减少内存占用和提高系统性能。

2024-05-10 15:02:26 920 1

原创 【JAVA】JAVA中的静态变量、全局变量

因此,静态变量的作用范围是可以限定的,取决于其访问修饰符和所在的包结构。在实际开发中,要根据需求合理定义静态变量的访问修饰符,以确保数据的安全性和封装性。虽然静态变量可以被整个类的实例对象共享,但并不意味着它一定是全局的,它的作用范围是有限的,主要取决于其定义的位置和可访问性。通常情况下,单例模式中的静态变量是私有的,并且通过静态方法来获取该实例。被用来统计创建的对象个数,在每次创建对象时增加计数器的值。全局变量在Java中指的是整个应用程序范围内可访问的变量,通常是通过静态变量或者单例模式来实现的。

2024-05-09 17:45:56 882

原创 【JAVA】类加载过程,以及类加载器

启动类加载器(Bootstrap Class Loader):负责加载Java的核心类库,例如java.lang.Object等。扩展类加载器(Extension Class Loader):负责加载Java的扩展类库,例如java.lang.String等。应用程序类加载器(Application Class Loader):也称为系统类加载器,负责加载应用程序的类,例如项目中自定义的类。自定义类加载器:开发者可以根据需要编写自定义的类加载器,用于加载特定的类或者资源。

2024-05-09 17:34:44 1028

原创 【网络】gateway 可以提供的一些功能之二 “ 提供Restful服务器路由转发 ”

你可以根据实际需求和项目结构,配置更多的路由规则和参数,以实现更复杂的RESTful服务路由转发。同时,还可以结合其他功能,如断路器、限流、日志记录等,来完善网关的功能。对于需要动态配置的路由转发,你可以使用一些灵活的配置方式,例如基于配置文件、数据库、注册中心等。当请求到来时,网关会根据请求体中的内容动态更新路由规则,实现动态路由转发。在这个示例中,假设有两个RESTful服务,分别是用户服务和产品服务,它们分别运行在。网关将会根据请求的路径,将匹配到的请求转发到相应的后端服务上。

2024-04-28 16:44:12 1583

原创 【网络】gateway 可以提供的一些功能之一 “ 提供web静态资源服务 ”

创建静态资源文件夹:首先,在你的项目中创建一个文件夹,用来存放静态资源文件,比如HTML、CSS、JavaScript文件等。这个配置将会把/static/**路径映射到classpath:/static/下的静态资源文件,例如index.html可以通过http://localhost:8080/static/index.html来访问。访问静态资源:当网关项目启动后,你可以通过浏览器或其他HTTP客户端访问配置的静态资源路径,查看静态页面或资源文件。要在网关实现中提供Web静态资源服务,你可以使用。

2024-04-28 15:16:55 1580

原创 【注解】 @SneakyThrows 自动捕获并处理异常

SneakyThrows 是 Lombok 库中的一个注解,用于简化 Java 异常处理的代码。这个注解可以自动抛出检查型异常(checked exceptions),而无需在方法签名中显式声明 throws 子句。这样做可以减少代码的冗余,特别是在你不想处理异常或只是想向上传递异常的情况下。

2024-04-28 11:09:05 417

原创 【idea】idea 中 git 分支多个提交合并一个提交到新的分支

- `commit`:命令用于将你的代码变更保存到**本地代码仓库**中,它创建了一个新的提交(commit)记录,记录了代码的变更内容以及相关的提交信息(如作者、时间、提交说明等)。- `push`:命令用于将本地仓库中的代码推送(上传)到**远程代码仓库**,将你的代码变更分享给其他开发者或者备份到远程服务器。- `cherry pick`:命令用于从一个分支中**选择性地合并某个提交(commit)到当前分支**,它允许你只合并需要的提交而不是整个分支的变更。- `squash`: 用于将**多

2024-04-25 16:21:24 1535 2

原创 【JAVA】java 中的Stream 常用函数

Java中的Stream是一种用于处理集合元素的工具,它提供了一种流式操作的方式,可以轻松地对集合进行过滤、映射、聚合等操作,以及进行并行处理。Stream是Java 8引入的一种新的抽象概念,它代表了一种数据元素的序列。Stream不是数据结构,而是数据元素的流水线,可以进行一系列的操作来处理这些元素。

2024-04-25 11:33:00 937

原创 【SQL】MySQL中的字符串处理函数:concat 函数拼接字符串,COALESCE函数处理NULL字符串

如果contentKeyword参数为NULL,那么就返回空字符串,然后检查bp.title或bp.content是否包含该关键词的子串。可以有多个参数,如果第一个参数不为空,则返回第一个参数的值;如果第一个参数为空,则继续检查第二个参数,以此类推。这一点在构建包含潜在NULL值的数据库查询时特别重要,因为它可能影响到你的查询结果。函数是一个非常实用的字符串函数,用于将两个或多个字符串参数连接成一个单一的字符串。函数总是返回第一个非空参数的值。,也不会影响其他条件的判断,从而实现了动态条件的查询。

2024-04-24 17:11:51 1098

原创 【注解】Mapper的注解 @Mapper、@Repository、@MapperScan

Mapper是 Mybatis 的注解,和 Spring 没有关系,是 Spring 的注解,用于声明一个 Bean。是Spring Boot 提供的注解,用于指定要扫描的Mapper接口包路径,并将这些接口自动注册为Spring Bean。

2024-04-24 09:28:18 1154

原创 【JAVA】final

在Java中,final是一个关键字,它可以用于声明类、方法和变量。final当final关键字用于变量时,这意味着该变量一旦被初始化之后,其值就不能再被改变。对于基本数据类型,这意味着你不能改变基本值;对于引用类型的变量,这意味着你不能再让它引用另一个对象,但是所指向的对象的内部状态是可以改变的(除非对象本身也全部由final字段组成)。当一个方法被声明为final时,这意味着这个方法不能在子类中被覆盖(重写)。这常用于防止继承层次中的行为被修改,或者确保方法的行为在整个继承结构中保持一致性。

2024-04-22 17:11:21 192

原创 【idea】一个新的项目代码,从零上传到Gitee仓库

首先我们在 file -》setting -》Version Control -》Gitee 里增加 Gitee 用户,这个地方要输入gitee的账号和密码,用的是邮箱。配置完成之后,就是要把我们的代码分享到 Gitee 云端了。在 VSC 菜单中找到 Share Project on Gitee ,分享。再去远端 https://gitee.com/ 检查一下。仓库创建完成就会让我们 add 代码到仓库里。会出现让我们填写远端仓库的名称,以及描述。

2024-04-18 19:14:25 172

原创 【JAVA】Assert.isTrue()来做判断,并抛出异常

是一种断言(Assertion)方法,通常用于测试或验证代码中的逻辑条件是否为真。在许多编程语言和测试框架中都有类似的断言方法,用于编写单元测试或确保代码中的条件符合预期。必须为真,否则会抛出一个断言错误,并显示指定的错误消息。这种断言方法对于确保代码中的逻辑正确性非常有用,尤其在编写单元测试时能够帮助捕捉潜在的问题。方法通常是测试框架中的一部分,如果你想使用它,需要确保你的项目中已经包含了对应的测试库,并按照该测试框架的规范来编写和运行测试代码。它用于在测试中验证某个条件是否为真。

2024-04-11 19:49:30 787

原创 【数据库】GROUP BY 详解、示例、注意事项

GROUP BY语句在 SQL 中用于将来自数据库表的记录分组,以便可以对每个组执行聚合函数(如COUNT()MAX()MIN()SUM()AVG()等)。使用GROUP BY时,数据库会根据一个或多个列的值将结果集分为多个分组,在每个分组内可以独立地使用聚合函数。GROUP BY通常与SELECT语句一起使用,以汇总每个分组的数据。

2024-04-11 16:28:11 1977

原创 【JAVA】StringBuffer详解,和StringBuilder区别

StringBuffer 是 Java 中用于表示可变字符序列的一个类。它和是线程安全的,这意味着它的方法是同步的,可以在多线程环境中安全地使用。相比之下,不是线程安全的,但它在单线程环境下运行得更快。由于中的大多数方法都通过使用内部锁同步,这就使得它在多线程操作中可以避免数据不一致的问题。然而,这种线程安全特性也意味着如果你的应用不需要在多线程环境中操作字符串,使用可能会导致不必要的性能开销。

2024-04-08 15:14:36 977

原创 【JAVA】StringBuilder 详解,append 源码分析,及其底层思想剖析应用

StringBuilder 是一个在 Java 编程语言中非常有用的类,用于创建和操作动态字符串。与字符串(String)类不同,StringBuilder 允许进行可变字符串操作,这意味着你可以在不生成新对象的情况下修改字符串的内容,从而提高了处理字符串时的效率和性能。StringBuilder 类是在 Java 5 中引入的,作为一个对 StringBuffer 类的轻量级和不同步的替代品。由于StringBuilder 不是线程安全的。

2024-04-08 14:38:32 757

原创 【软考】23种设计模式详解,记忆方式,并举例说明

抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式是工厂方法模式的一种扩展,它用于处理多维度的大规模产品族,而不是单一产品的创建问题。抽象工厂模式可以想象成一个大型工厂,这个大工厂里有好几个小工厂,每个小工厂负责生产一系列相关的产品。这种设计模式的核心就是帮助我们在不直接指定具体类的情况下创建一系列相关或依赖对象。

2024-04-07 16:31:31 2035

原创 【Spring】Spring框架中的一个核心接口ApplicationContext 简介,以及入口 Run() 的源码分析

ApplicationContext 是Spring框架中的一个核心接口,它是Spring IoC容器的实现之一,用于管理和组织应用程序中的各种Bean,同时提供了一系列功能来支持依赖注入、AOP等特性。简单来说,ApplicationContext 是一个大型的、高级的Spring IoC容器,它扩展了BeanFactory接口,提供了更多的功能和特性,比如事件传播、国际化支持、资源加载、生命周期回调等。

2024-03-26 17:13:25 786 1

原创 【事务】开发用到的事务,TransactionDefinition实例详解,事务的传播机制

是Spring框架中定义事务属性的接口。它提供了定义事务的各种属性和行为的方法,包括事务的隔离级别、传播行为、超时设置等。在Spring中,通过TransactionDefinition可以灵活地配置事务的行为,以满足不同业务场景的需求。

2024-03-22 18:09:58 1030

原创 【软考】数据库范式详解 (1NF、2NF、3NF、BCNF;包括候选键、非平凡函数)

1NF、2NF、3NF和BCNF是关系数据库中常用的范式(Normalization)概念,用于设计规范化的数据库模式,确保数据库的数据结构良好、无冗余、便于管理和维护。

2024-03-21 14:27:04 873

原创 【软考】关系代数篇(基础操作、关系公式、各种连接)

关系代数是数据库管理系统中的一种数学工具,用于描述和操作关系数据库中的数据。基本运算:关系代数定义了一些基本的运算,如选择、投影、连接、并、差等,用于从一个或多个关系中获取所需的数据。关系操作:这些基本运算可以组合使用,形成更复杂的关系操作,如自然连接、交集、并集、除法等,用于实现更复杂的数据查询和操作。完备性:关系代数是完备的,即可以通过组合基本运算来实现所有可能的数据库操作。形式化:关系代数提供了一种形式化的方式来描述数据库操作,使得数据库系统的设计和实现更加规范和易于理解。理论基础。

2024-03-21 10:59:08 1205

原创 【JAVA】实体类继承关系,强制转换的例子

在方法m1中传递的参数是类型为B的对象(b),而b实际上是类A的对象,因为类A继承了公共类B。由于私有属性tt只能在类A内部访问,您需要通过类A提供的公共方法来间接获取私有属性tt的值。在Java中,如果尝试将一个对象强制转换为其不是实际类型的父类或子类,或者尝试将一个对象转换为与其不兼容的接口类型,就会抛出。如果类A和类B之间存在继承或实现关系,但强制转换的方向不正确(例如,将类B转换为类A而不是将类A转换为类B),也会导致ClassCastException异常。接收的参数类型为B的对象。

2024-03-20 15:02:47 401

原创 【JAVA】多种情况下的判空操作

这种判断适用于需要处理具有实际内容的字符串,即字符串中包含有意义的字符或数据。例如,输入框中的用户输入、文件中的文本内容等,这些内容可能对程序逻辑有影响,因此需要确保字符串不为空,才能继续进行后续的处理或操作。需要注意的是,这些方法适用于不同类型的数据,包括字符串、字符数组、集合、Map、数组以及普通对象。在判空时,**通常会先判断对象或字符串不为 null,然后再进一步判断对象或字符串是否为空或空白字符。例如,输入框中的用户输入如果只包含空格或空白字符,可能需要视作空值处理,而不是有效的数据。

2024-03-20 14:35:53 1113

原创 【JAVA】ifPresent 的使用

在上面的示例中,我们首先创建了一个包含值的 Optional 对象和一个空的 Optional 对象。而对于空的 Optional 对象,则不会执行任何操作。在 Java 中,ifPresent 是一个用于 Optional 类型的方法,用于检查 Optional 对象中是否存在值并执行相应的操作。ifPresent 方法接受一个 Consumer 函数式接口作为参数,如果 Optional 对象中包含值,则将该值传递给 Consumer 接口的实现方法。

2024-03-15 13:52:09 1290

原创 【JAVA】Date、LocalDate、LocalDateTime 详解,实践应用

在 Java 中,处理日期和时间的方式经历了演变。在Java 8 之前,主要使用 java.util.Date 类来表示日期和时间,但它存在一些问题,如不可变性、线程安全性等。Java 8 引入了新的日期时间 API,位于 java.time 包中,提供了更加强大、易用和安全的日期时间处理方式。

2024-03-13 15:07:05 1917

原创 【JAVA】Collections.sort()方法详解

是 Java 集合框架(Java Collections Framework)中的一个静态方法,用于对列表(List)中的元素进行排序。此方法利用了 Java 的泛型机制,可以很方便地对各种类型的列表进行排序。源码方法体:参数list:需要排序的列表。列表中的元素必须实现了 Comparable 接口,以便能够比较它们的大小。

2024-03-11 15:25:52 3131 1

原创 【网络】主机连接 TCP 三次握手

所以服务端会先将 ACK 发过去告诉客户端我收到你的断开请求了,但请再给我一点时间,这段时间用来发送剩下的数据报文,发完之后再将 FIN 包发给客户端表示现在可以断了。TCP进行可靠传输的关键就在于维护一个序列号,三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值。主要原因是当服务端收到客户端的 FIN 数据包后,服务端可能还有数据没发完,不会立即close。如果只是两次握手, 至多只有客户端的起始序列号能被确认, 服务器端的序列号则得不到确认。

2024-03-07 11:22:56 845

原创 【MybatisPlus】QueryWrapper、UpdateWrappe、LambdaQueryWrapper、LambdaUpdateWrapper

和都是 MyBatis-Plus 框架中用于构建条件的工具类,它们之间的关系是继承关系。其中和是基于普通的对象属性名来构建条件的,而和则是基于 Lambda 表达式来构建条件的。下面是AbstractWrapper中的方法。

2024-03-06 16:57:24 1106

原创 【MybatisPlus】BaseMapper详解,举例说明

MyBatis-Plus 的核心类 BaseMapper 主要是用于提供基本的 CRUD(创建、读取、更新、删除)操作的接口定义。它是 MyBatis-Plus 框架中的一个重要组成部分,可以大大简化基于 MyBatis 的数据访问层代码的编写。insert:插入一条记录到数据库中。deleteById:根据主键 ID 删除一条记录。updateById:根据主键 ID 更新一条记录。selectById:根据主键 ID 查询一条记录。selectList:查询所有符合条件的记录列表。

2024-03-06 15:56:26 5807

原创 【知识点】程序存储器、指令寄存器、程序计数器、地址寄存器有什么区别?都是干什么的?

总的来说,程序存储器用于存储程序和数据,指令寄存器用于存储当前执行的指令,程序计数器用于跟踪程序的执行位置,而地址寄存器用于存储地址信息。程序计数器:程序计数器是CPU中的另一个特殊寄存器,用于存储当前正在执行的指令的地址或位置。它用于跟踪程序的执行位置,每当一条指令被执行完毕,程序计数器会自动递增以指向下一条指令的地址。程序存储器是计算机中存储程序和数据的主要地方,它们被CPU读取并执行。在整个执行过程中,这些寄存器相互配合,确保程序按照预期顺序执行,并且正确地从内存中读取数据和写入数据。

2024-03-05 09:35:05 1145

原创 【架构】五大常见架构模式,集中式架构、分布式架构、面向服务的系统架构、微服务架构等区别详解

​​​​​​​​分布式架构比集中式架构更加模块化,允许相对容易地添加其他服务器,并能为特定用户添加具有特定功能的客户端,从而提供更大的灵活性和多中心化的组织治理机制,这有可能令架构决策与组织治理目标更协调。微服务架构可以看作是面向服务架构的一种实现方式,它强调了**更小、更自治**的服务单元,并且通常与现代的云原生技术结合使用,以支持敏捷开发和部署。

2024-03-04 14:29:12 1812

原创 【划重点】【软考-高级软件工程师-信息系统项目管理师】 第四章 信息系统管理

钻石模型将组织计划的关键组成部分标识为其信息与控制、人员、结构和任务,所有组件都是相互关联的。现在使用一个基本的矩阵框架来理解组织必须做出的与信息系统相关的决策,如表 4-1。设计和实施:针对信息系统解决方案的定义、采购和实施,以及他们与业务流程的整合。突出了业务战略、信息系统和组织机制之间的必要一致性,如图 4-2。运维和服务:针对信息系统服务的运行交付和支持,包括安全。规划和组织:针对信息系统的整体组织、战略和支持活动。@专注差异化,寻求细分市场内的产品或服务的差异化。信息系统支撑组织实施其业务战略。

2024-03-01 16:12:25 186

原创 【划重点】【软考-高级软件工程师-信息系统项目管理师】 第二章 信息系统治理知识点

软件定义网络(SoftwareSDN)是一种新型网络创新架构,是网络虚拟化的一种实现方式,它可通过软件编程的形式定义和控制网络.将网络设备的控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络变得更加智能,为核心网络及应用的创新提供了良好的平台。SDN的整体架构由下到上(由南到北)分为数据平面控制平面和应用平面,具体如2-1 所示。其中,数据平面由交换机等网络通用硬件组成,各个网络设备之间通过不同规则形成的 SDN数据通路连接;控制平面包含了逻辑上为中心的。

2024-02-29 17:45:28 739

原创 【五分钟看懂】【软考-高级软件工程师-信息系统项目管理师】 第三章 信息系统治理知识点

管理体系包括质量管理、项目管理、投资管理、服务管理、业务连续性管理、信息安全管理、风险管理、供方管理、资产管理和其他管理;资源包括 基础设施、应用系统和数据。:业务和 IT 在治理委员会中的构成、组织 IT 与各分支机构的 IT 权责边界等;务管理、业务连续性管理、信息安全管理、风险管理、供方管理、资产管理和其他管理;治理实施的方法论,包括统筹和规划、构建 和运行、监督和评估、改进和优化。管理体系治理域包含信息技术相关的质量管理、项目管理、投资管理、服。个人和组织的文化、道德和行为作为治理和管理活动的成。

2024-02-28 15:44:40 895

原创 【JAVA】《接口,抽象方法,抽象类 》之四 、开发实践

首先定义一个接口,其中包含一个抽象方。这种设计模式的应用场景是在需要一种默认的行为,但这种行为又可能因为不同的子类而不同的情况下。**抽象类提供了一个默认的行为实现**,**同时通过接口定义了子类必须实现的抽象方法**,**而具体的实现则由子类完成**。这样一来,所有的子类都可以通过继承抽象类来获得默认的行为,同时又能够自由地实现接口定义的抽象方法。

2024-02-20 14:20:09 1301 1

原创 【JAVA】《接口,抽象方法,抽象类 》之二 、抽象方法详解

接口中的方法通常都是抽象方法,但自从 Java 8 开始,接口也可以包含默认方法(Default Method)和静态方法(Static Method)。如果一个类继承了抽象类或实现了接口,并且其中包含抽象方法,**那么子类必须实现这些抽象方法,除非子类自己也声明为抽象类。类分别实现了该方法,提供了自己的面积计算逻辑。这样,无论是圆还是矩形,都可以通过统一的方法来计算它们的面积。在编写代码时,应该根据具体的需求和设计原则来合理使用抽象方法,确保代码的清晰、可读和易于维护。抽象方法不能是私有的或静态的。

2024-02-20 11:27:24 713

原创 【java】《接口,抽象方法,抽象类 》之一、接口详解

当一个接口被多个类实现时,如何确定使用的是哪个类的方法实现体,通常取决于调用方选择的对象类型。在 Java 中,方法的具体实现取决于对象的运行时类型(而不是编译时类型),这就是动态绑定(Dynamic Binding)的概念。接口定义了一组方法的签名,但没有提供方法的实现。类可以实现(implement)接口,从而承诺提供接口中定义的方法的实现。如果一个类继承了抽象类或实现了接口,并且其中包含抽象方法,那么子类必须实现这些抽象方法,2.6、使用抽象方法的注意事项。方法,实现了多态的应用。

2024-02-20 11:25:03 875

原创 【JAVA】《接口,抽象方法,抽象类 》之三 、抽象类详解

抽象类通常包含抽象方法,这些方法没有具体的实现,而是留给子类来实现。抽象类提供了一种抽象的、规范性的概念,用于表示一组类共同的特征和行为。如果一个类继承了抽象类或实现了接口,并且其中包含抽象方法,那么子类必须实现这些抽象方法,2.6、使用抽象方法的注意事项。抽象类是一种特殊的类,它。下面介绍一下抽象类。2.1、抽象方法概念。

2024-02-20 11:20:01 863

原创 【数据库】数据库模式有哪些?举例说明。

将对象的概念引入数据库设计中,通过对象、类、继承、多态等概念来组织和管理数据。常见的数据库模式包括关系模式、文档模式、图模式等。每种数据库模式都有其适用的场景和优缺点,选择合适的数据库模式需要综合考虑数据的结构、访问模式、性能要求以及团队的技术能力等因素。这种模式简单直接,适用于简单的应用场景,但不利于数据的组织和管理。使用关系型数据库管理系统(RDBMS)存储数据,通过**表、列和关系(主键、外键)**来组织和管理数据。使用文档数据库存储数据,数据以文档的形式组织,通常使用JSON、XML等格式。

2024-02-19 16:47:12 1232

空空如也

空空如也

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

TA关注的人

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