自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mybatis-flex小记

MyBatis-Flex 通过分层设计实现了 “类型安全的单表开发” 与 “灵活的多表查询” 的平衡:Lambda 体系保障业务代码的健壮性与可维护性,TableDef 体系提供编译期安全的 SQL 表达能力;而 TableDef 内部静态单例与别名化实例的分化设计,同时兼顾了常规场景的简洁性与复杂场景的灵活性 —— 静态 final 单例支持无变量链式调用,代码极简高效;别名化实例则解决了自连接等复杂场景的命名冲突问题。BaseMapper 与 Db 双执行入口则分别适配工程化开发与灵活即席场景。

2026-08-27 21:22:14 208

原创 Maven小记

Maven 构建生命周期(Build Lifecycle)是对项目构建流程的抽象与标准化,定义了从项目初始化、编译、测试、打包到部署的完整有序阶段集合。其核心设计思想是约定优于配置,所有项目遵循统一的构建流程,消除了自定义构建脚本的碎片化问题。Maven 定义了三套相互独立、互不干扰的生命周期,每套生命周期由一系列具有严格先后顺序的阶段(Phase)组成。核心原则:同一生命周期内部,执行任意后续阶段,都会自动依次执行其前面所有阶段;

2026-08-26 21:20:27 384

原创 @ConfigurationProperties和@value

和@Value都是 Spring 中用于注入配置属性的核心注解,但它们的和截然不同。是的“结构派”,适合处理一组有共同前缀的、复杂的配置。@Value是的“灵活派”,适合处理零散的、单个的配置值。

2026-08-24 17:51:23 213

原创 Java 原生反射 VS Reflections框架

原生反射提供了操作类、方法、字段的底层API,而Reflections框架则在此基础上,封装了在类路径下元数据的便捷方法ClassMethodField@Service。

2026-08-20 08:46:11 162

原创 Lombok注解

通过生成的构造函数,可以实现依赖的自动注入。这对于Spring框架中的依赖注入尤为重要,特别是推荐的构造器注入方式,可以确保依赖的不可变性和非空性。最终,编译器依据修改后的 AST 生成字节码文件,从而实现在源码层面无显式定义、但编译产物中包含对应方法的目标。这种不变性有助于创建更稳定、可预测的代码,尤其是在多线程环境中,不变对象天然地是线程安全的。自动生成的构造函数明确要求必须提供所有必需的依赖,这使得开发者在使用类的时候更加清晰地了解到哪些依赖是必须的,有助于提高代码的可读性和可维护性。

2026-08-19 10:40:00 310

原创 JavaScript Object.assign()

对象 “复制粘贴” 神器。

2026-08-18 10:40:55 153

原创 npm npx yarn

yran命令依赖PATH,需要将路径加入到PATH里,否则会找不到npx不依赖PATH,找不到会下载。

2026-08-14 10:42:01 216

原创 Vue小记

Vue 3 的 Composition API 本质上是一组 函数 API ( ref 、 reactive 、 onMounted 等),它们的设计原理是:在组件创建阶段(setup)同步调用,返回响应式数据或注册生命周期回调。Vue 2 的 data 、 methods 、 computed 是分散在各个选项中,由 Vue 内部在适当时机调用。Vue 3 统一改为 setup() 入口,所有逻辑在里面通过函数调用注册。方式二:在setup中按功能分区。setup是VUE3的入口点。

2026-08-10 11:39:12 184

原创 这是个测试

这是一个测试。

2026-08-07 08:49:28 217

原创 职责链模式

职责链模式又称为责任链模式,是一种对象行为型模式。

2024-08-31 23:15:40 1802

原创 装饰者模式

装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。装饰模式降低了系统的耦合度,可以动态增加或删除对象的职责,并使需要装饰的具体构件类和用于装饰的具体装饰类都可以独立变化,增加新的具体构件类和具体装饰类都非常方便,符合开闭原则。装饰模式的定义如下:装饰模式是一种对象结构型模式,它以对客户透明的方式动态地给一个对象附加上更多的责任,可以在不需要创建更多子类的情况下让对象的功能得以扩展。

2024-08-29 15:41:22 970

原创 单例模式及应用

单例模式的定义如下:单例模式是一种对象创建型模式,其有3个要点:(1)某个类只能有一个实例(2)该类必须自行创建并保存这个实例(3)该类必须自行向整个系统提供这个实例。为了满足前两个条件,需要满足(1)单例类构造函数的可见性为private(2)提供一个类型为自身的静态私有成员变量;为了满足第三个条件,需要满足:(3)提供一个公有的静态工厂方法单例模式是结构最简单的设计模式,它只包含一个类,即单例类,其结构图如图1所示。

2024-08-14 23:08:26 1202

原创 适配器模式

适配器模式可以将一个类的接口和另一个类的接口匹配起来,而无需修改原来的适配者接口和抽象目标类接口。适配器模式的别名为包装器(Wrapper)模式,它既可以作为类结构型模式,也可以作为对象结构型模式。在适配器模式的定义中所提及的接口是指广义的接口,它可以表示一个方法或方法的集合。

2024-08-11 21:26:11 2042

原创 模板方法模式

模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式。模板方法模式是最简单的行为型设计模式,在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类中提供了一个称为模板方法的方法来定义这些基本方法的执行次序,而通过其子类来覆盖某些步骤,从而使得相同的算法框架可以有不同的执行结果。模板方法模式提供了一个模板方法来定义算法框架,而某些具体步骤的实现可以在其子类中完成。

2024-08-02 21:35:08 743

原创 策略模式及用例

策略模式用于算法的自由切换和扩展,对应于解决某一问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问题,同时可以方便地更换算法和增加新的算法。策略模式实现了算法定义和算法使用的分离,它通过继承和多态的机制实现对算法族的使用和管理,是一个简单,实用的设计模式。策略模式的定义如下:策略模式又称为政策(Policy)模式,它是一种对象行为型模式。

2024-08-01 22:06:16 2201

原创 中介者模式

如果在一个系统中对象之间存在多对多的相互关系,可以将对象之间的一些交互行为从各个对象中分离出来,集中封装在一个中介者对象中,并由该中介者进行统一协调,这样对象之间多对多的复杂关系就转化为相对简单的一对多关系。中介者模式又称为调停者模式,它是一种对象行为型模式。在中介者模式中,通过引入中介者对象来简化对象之间的复杂交互,中介者模式是迪米特法则的一个典型应用。

2024-07-31 23:04:21 1045

原创 观察者模式与java事件处理1

观察者模式是使用频率最高的设计模式之一,它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中发生改变的对象称为观察目标,而被通知的对象称之为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间可以没有任何相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。Observer本来的意思时“观察者”,但实际Observer角色并非主动地去观察,而是被动地接受来自Subject的通知。

2024-07-15 22:09:00 804

原创 16.合并区间

将数组按照左端点进行排序,记录当前最大的右端点值(该值不一定是最右边的数组右端点,因此需要记录一下),然后遍历,如果当前遍历的数组左端点大于记录的当前最大右端点值,说明不重合,将相应的左右端点放入结果集中。输入:intervals = [[1,3],[2,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].输入:intervals = [[1,4],[4,5]]输出:[[1,6],[8,10],[15,18]]输出:[[1,5]]

2024-07-12 10:36:15 206

原创 15.最大子数组和

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6。示例2:输入:nums = [1]输出:1示例3:输入:nums = [5,4,-1,7,8]输出:23。

2024-07-12 09:34:02 347

原创 4.移动0

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。示例1:输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]示例2:输入: nums = [0]输出: [0]

2024-07-03 11:00:34 205 1

空空如也

空空如也

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

TA关注的人

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