- 博客(11)
- 收藏
- 关注
原创 AOP(面向切面编程)的执行顺序
AOP(面向切面编程)的执行顺序是先执行代理对象动态绑定到目标对象,然后在目标对象方法执行前执行前置通知,接着执行目标对象的方法,最后在目标对象方法执行后执行后置通知。所以正确的执行顺序是:代理对象动态绑定到目标对象 -> 前置通知 -> 目标对象方法 -> 后置通知。
2024-01-14 09:30:19
677
1
原创 引入druid连接池后并不能自动切换连接池
在Spring Boot 3.x 版本中,引入Druid连接池依赖后需要手动配置数据源类型为DruidDataSource,以确保项目能够正确地使用Druid连接池。这是因为在Spring Boot 3.x 中可能增加了一些自动配置的策略,而不会自动切换到Druid连接池。这样配置后,Spring Boot 3.x 项目就应该能够正确地使用Druid连接池了。
2024-01-06 20:42:54
461
1
原创 动态代理 InvocationHandler中的invoke()方法是在哪被调用的?
在执行这个方法之前,Java虚拟机会调用与代理对象关联的 `InvocationHandler` 的 `invoke()` 方法,并将相应的参数传递给它。在 `invoke()` 方法中,我们可以根据需要进行一些操作,例如记录日志、执行前置或后置逻辑,然后再通过 `Method.invoke()` 方法调用原始对象的方法并返回相应的结果。因此,`InvocationHandler` 的 `invoke()` 方法在代理对象的方法被调用时被Java虚拟机触发,将执行我们所定义的自定义逻辑。
2023-07-26 22:55:02
316
1
原创 Class<T> clazz 与 T clazz 区别
Class<T> clazz 表示一个 Java 类型 T 对应的 class 对象,并且在使用时需要通过实际的类型参数 T 进行替换。可以看到,Class<T> clazz 主要用于获取某个类型的 class 对象,而 T clazz 主要用于方法参数列表或内部变量定义中的泛型语法。public <T> void print(T clazz) { // 定义一个泛型方法,输入参数为 T 类型。Class<T> clazz 和 T clazz 都是表示某个类型的变量,但含义和用法不同。
2023-05-20 22:58:36
898
1
原创 在使用aapeche工具类中queryrunner(),pojo类没有set,get方法返回的结果集全是Null
这种映射需要根据 POJO 中的数据类型、访问修饰符以及对应的 Setter 和 Getter 方法进行处理,如果缺少任何一项,将导致映射失败,进而产生全是 Null 的结果集。因此,您需要添加 POJO 类的 Setter 和 Getter 方法,以确保映射可以正常进行。如果您在使用 Apache 的 QueryRunner 类时,返回的结果集全是 Null,很有可能是因为 POJO 类没有对应的 Setter 和 Getter 方法。
2023-05-20 18:35:38
115
1
原创 where 与 having 区别
在 SQL 查询中,聚合函数是应用于结果集的一组函数,用于对结果集中的行进行分组统计,并返回一个聚合值,例如平均值、总和或计数。关键字用于 SQL 聚合函数之后的筛选,可以对查询结果进行分组,并对每个组进行聚合(例如求和或计数),然后过滤聚合结果。子句将返回的结果集拆分成不同的分组,而聚合函数则根据分组计算出聚合值,分别返回每个分组的结果。聚合函数非常有用,可以在查询中生成有意义的统计信息,例如计算销售总额、平均价格、最高利润等。关键字用于在查询中指定条件,限制查询结果集中的行。在 SQL 查询中,
2023-05-13 09:52:07
917
原创 MySQL 与DBMS关系
通过 MySQL,用户可以创建数据库并存储数据,并使用 SQL(结构化查询语言)语言来查询和操作数据。MySQL 还提供了许多高级特性,如支持事务、多用户、安全性等,使得其成为了一个广泛使用的数据库管理工具。除 MySQL 外,还有一些其他的 DBMS 工具,比如 Oracle、SQL Server、PostgreSQL 等,它们也都能创建和管理数据库,具有相似的功能和特性。MySQL 是一种关系型数据库管理系统(DBMS),也被广泛认可为一种开源的关系型数据库管理系统。
2023-05-12 22:44:40
451
原创 AI绘图工具会取代设计师?
随着人工智能技术的不断发展,越来越多的人开始关注AI与各行各业的融合,其中设计行业也不例外。近期,一个名为Midjourney的AI绘图工具受到了广泛的关注和赞誉,有人认为它可以取代设计师的工作职位。但是真的是这样吗?让我们来探讨一下这个问题。
2023-05-06 08:57:59
102
1
原创 数组拷贝方法
其中 `src` 表示源数组,`srcPos` 表示源数组的起始位置,`dest` 表示目标数组,`destPos` 表示目标数组的起始位置,`length` 表示要拷贝的元素个数。其语法为:`copyOf(originalArray, newLength)`。其中 `originalArray` 表示源数组,`newLength` 表示新数组的长度。3. 使用 for 循环:也可以使用 for 循环来遍历源数组,将其中的元素逐一赋值给目标数组。
2023-05-05 13:29:59
368
原创 String str = new String(“hello“) 和 String str = “hello“ 的区别是
1. 对象的创建方式不同。第一种方式是使用了String类的构造方法,新建了一个String对象,并将其赋值给变量str;第二种方式是直接使用字符串字面量,也就是直接赋值给变量str,会由编译器自动创建一个String对象。3. 由于常量池中的对象会被JVM自动进行管理和回收,所以在使用字符串字面量创建字符串对象时,能够提高Java应用程序的性能和效率。2. 存在于内存中的位置不同。第一种方式会将新建的对象存储在堆内存中,而第二种方式会将字符串对象放在常量池中。
2023-05-05 09:23:19
210
1
原创 Integer.valueOf() 和 new Integer()
因此,在使用"new Integer()"进行对象实例化时,如果创建了相同值的Integer对象,每次都会产生一个全新的对象实例,而"Integer.valueOf()"则使用现有的缓存实例,这样就可以节约内存空间和提高性能。在使用"new Integer()"进行对象实例化时,每次都会创建一个新的对象实例。Integer.valueOf()"和"new Integer()"的返回值确实都是Integer类型的,但它们的返回值类型具体存在一些微妙的差别。
2023-05-05 09:11:41
359
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人