自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一文玩转MybaitslPlus saveBatch 方法

MyBatis Plus 是 Java 生态中一款流行的库,它扩展了 MyBatis 的功能,MyBatis 是一个简化 Java 应用中数据库操作的持久化框架。在数据库操作中,批量保存多条记录是一项常见任务。MyBatis Plus 提供了对批量操作的支持,包括批量保存。

2024-05-10 21:09:24 3173 66

原创 Java 使用multipartFile对象解析Execl

1.需要使用 multipartFile 包 package org.springframework.web.multipart;注意:对于不同的Execl Java提供了不同的解析对象。xls使用HSSFWorkbook 对象进行解析。xlsx使用XSSWorkbook 对象进行解析。3.主要解析的业务逻辑。

2023-04-13 09:28:25 3568 88

原创 将二进制文件流转化为MockMultipartFile 文件

将二进制文件流转化为MockMultipartFile 文件

2022-11-29 14:49:15 3826 29

原创 Java 面试题篇 Sleep()方法与Wait() 方法的区别

当调用 wait() 方法时,当前线程释放对象的锁,并进入 WAITING 或者 TIMED_WAITING 状态,直到被其他线程调用相同对象的 notify() 或 notifyAll() 方法唤醒,或者等待超时。- 调用 wait() 方法会让线程释放对象锁,并且进入等待状态,直到其他线程调用相同对象上的 notify() 或 notifyAll() 方法来唤醒它,或者等待时间到达。- wait() 需要其他线程调用相同对象的 notify() 或 notifyAll() 方法来唤醒。

2024-06-17 23:12:05 717 29

原创 Java @Aysn实现异步 及导致失效原因

在 Java 中,@Async 注解用于表明一个方法是异步执行的。这意味着方法会在调用时立即返回,而不会等待方法体内的代码执行完毕。这对于需要异步执行长时间操作的方法非常有用,比如发送邮件、处理大量数据等。

2024-06-17 23:03:57 861 40

原创 CompletableFuture方法介绍及代码示例

CompletableFuture 是 Java 8 引入的一个类,用于支持异步编程。它实现了 Future 接口,并提供了非常强大的功能来处理异步操作。下面是 CompletableFuture 的一些关键内部方法及其详细解释。基础方法。

2024-06-16 13:28:38 986 47

原创 Java 插入Mysql 报错:Column count doesn‘t match value count at row 1

2. 自动递增列的处理:如果你的表定义了一个自动递增的主键列(比如上述例子中的 `id` 列),在插入数据时不需要为这个列指定值。因此,你在插入时应该忽略这个列,或者在INSERT语句中不包含这个列。3. 其他错误:有时候,这个错误可能是因为表的定义和你尝试插入的数据之间存在其他的不匹配,比如数据类型不匹配或者NULL值问题。1. 列数与值数量不匹配:确保你插入的数据中,列的数量与你指定的列数是一致的。如果你在INSERT语句中指定了列名,那么你提供的值的数量必须与列名的数量一致,并且顺序要匹配。

2024-06-13 21:45:43 759 35

原创 Java数据库存储文件名称 保持文件名称不重复 重复的话给名称+(递增数字)

`fileNameExists`方法执行一个查询,检查文件名是否已经存在于数据库中。- `getUniqueFileName`方法通过在文件名后添加数字递增来生成一个唯一的文件名,直到找到一个不重复的名称为止。- `main`方法是程序的入口,示例文件名`example.txt`将被处理并存储到数据库中。- `saveFileName`方法首先获取一个唯一的文件名,然后将其插入到数据库中。- 确保数据库表`files`存在,并且包含一个名为`file_name`的字段。

2024-05-24 08:24:45 419 31

原创 Java跨库事务如何保证

在Java中,跨库事务(即分布式事务)的管理相对复杂,需要使用专门的技术和框架来确保事务的原子性、一致性、隔离性和持久性(ACID属性)。常见的方法包括使用XA协议、Spring的分布式事务管理器或第三方分布式事务协调器如Atomikos、Narayana、Seata等。不同的场景和需求可能需要不同的分布式事务解决方案。选择合适的分布式事务解决方案时,需要综合考虑事务的一致性要求、系统的性能需求以及系统的复杂性。Spring提供了对JTA的支持,可以使用Spring的分布式事务管理器来管理跨库事务。

2024-05-20 22:02:39 282 9

原创 多数据源@DS注解失效原因

确保Spring的配置文件(如`application.properties`或`application.yml`)中正确配置了数据源信息。- 如果@DS注解在方法上,方法必须是公共的(public),并且该方法应当是通过代理对象调用的,而不是在同一个类中直接调用的方法。- 检查是否在`DataSource`配置类中配置了合适的`DataSourceTransactionManager`。- 如果使用多数据源,确保在配置类中正确配置了多数据源,并且配置的Bean正确。

2024-05-20 21:58:17 2210 1

原创 Java设计模式之工厂模式

工厂模式(Factory Pattern)是一种创建型设计模式,它提供了创建对象的最佳方式之一。工厂模式使用工厂类来创建对象,而不是通过直接调用构造函数来实例化对象。这样做的好处是可以将对象的创建和使用分离,提供更好的灵活性和可扩展性。工厂模式主要分为三种类型:1. 简单工厂模式(Simple Factory Pattern)2. 工厂方法模式(Factory Method Pattern)3. 抽象工厂模式(Abstract Factory Pattern)

2024-05-18 22:59:51 366 13

原创 程序员的实用神器

选择合适的工具并将其集成到开发流程中,配置合理的规则和策略,生成详细的报告和反馈,持续改进,这些步骤都能够帮助实现高效的自动化代码审查流程。通过明确测试目标、使用适当的设计模式和测试框架,结合覆盖率分析工具和持续集成系统,你可以编写高效的测试用例并显著提高代码覆盖率,从而确保软件的高质量和稳定性。- 配置审查工具的规则和策略,确保它们符合项目的编码规范和质量标准。这些工具和资源能够覆盖开发过程中的各个方面,从代码编写、调试、版本控制到自动化部署、项目管理和安全保障,帮助程序员提高工作效率和代码质量。

2024-05-18 22:56:25 656 2

原创 EasyExcel来解析Excel文件(导入数据库)

使用EasyExcel来解析Excel文件并将内容插入数据库是一个很好的选择,因为EasyExcel具有高效、简单的特点。以下是一个使用EasyExcel和JDBC来完成这一任务的示例。依赖首先,确保你在项目中包含了EasyExcel和JDBC的相关依赖。示例代码以下示例代码展示了如何使用EasyExcel读取Excel文件并将数据插入到MySQL数据库中。定义数据模型首先,定义一个类来表示Excel中的数据。读取Excel文件并插入数据库。

2024-05-17 22:20:11 810

原创 Apache POI库来处理Excel文件(导入数据)

要使用Java解析Excel文件并将内容插入数据库,可以使用Apache POI库来处理Excel文件,再使用JDBC(Java Database Connectivity)来进行数据库操作。以下是一个基本的示例,展示了如何实现这一功能。通过上述步骤,你可以使用Java读取Excel文件并将其内容插入到数据库中。首先,确保你在项目中包含了Apache POI和JDBC的相关依赖。以下示例代码展示了如何读取Excel文件并将数据插入到MySQL数据库中。

2024-05-17 22:16:09 375

原创 Spring与SpringBoot 装配原理

Spring 会将这些类实例化为 Bean,并根据注解的类型进行分类注册,例如,使用 `@Service` 注解的类会被注册为服务类,使用 `@Repository` 注解的类会被注册为数据访问类。- Spring 容器启动时,会扫描指定的包路径,并解析其中的注解(如 `@Component`, `@Service`, `@Repository`等),识别出需要被 Spring 管理的类。通过以上的解释,你可以对 Spring Boot 的自动装配原理有一个基本的了解。

2024-05-16 22:28:00 590

原创 数据库表设计三大范式

但要注意,过多的索引会增加写操作的成本,并占用额外的存储空间,因此需要根据实际需求权衡选择。8. 定期维护和优化:数据库结构的设计并不是一次性的工作,随着业务需求的变化和数据量的增长,可能需要对数据库结构进行调整和优化。- 例如,如果一个"员工"表中的"部门电话"字段依赖于"部门名称",而"部门名称"又依赖于"部门编号",那么存在传递依赖,不符合第三范式。- 在第二范式中,数据库表必须符合第一范式,并且表中的每一列都必须完全依赖于表的候选键(唯一标识表中每一行数据的字段,通常是主键)。

2024-05-16 22:21:16 819

原创 Mybatis分页拦截器介绍

在进行数据查询时,经常需要使用分页功能,MyBatis 通过拦截器(Interceptor)提供了方便的分页功能。其原理是在查询数据之前,拦截 SQL,动态地修改 SQL 语句,加入分页的逻辑。2. 在 `intercept` 方法中,通过 `Invocation` 参数获取到 `MappedStatement` 对象,然后通过该对象获取到原始的 SQL 语句。1. 实现 `Interceptor` 接口,重写 `intercept` 方法,这是拦截器的核心方法。

2024-05-15 23:12:02 330

原创 数据库ID生成策略及相应的代码示例(优缺点)

【代码】数据库ID生成策略及相应的代码示例(优缺点)

2024-05-15 22:32:33 1553 1

原创 Java红黑树详解及示例

红黑树(Red-Black Tree)是一种自平衡的二叉查找树(Binary Search Tree),它确保了在最坏情况下基本操作(比如插入、删除、查找)都能在O(log n)时间内完成。红黑树的关键在于它在每个节点上存储了一个额外的位用于表示节点的颜色(红色或黑色),通过一组严格的规则来保证树的大致平衡。

2024-05-14 22:15:17 427 4

原创 Java保证字符串唯一(不唯一加数字后缀)

在Java中,如果你有一个字符串列表,并希望确保每个字符串都是唯一的,那么可以通过检查重复项并为重复的字符串添加后缀数字来实现。这种方法可以扩展到更复杂的场景,例如处理文件名、用户输入等,确保所有字符串都唯一且易于识别。- 如果在映射中,增加计数,并将计数作为后缀添加到字符串后,添加到唯一列表。- 如果不在映射中,将其添加到映射并设置计数为0,并添加到唯一列表。- 遍历输入列表:对于每个字符串,检查是否已经在映射中。- 唯一列表:用来存储处理后的唯一字符串。- 输入列表:包含可能重复的字符串。

2024-05-14 22:09:00 335 4

原创 Java二分查找

在`main`方法中,我们定义了一个有序数组`array`和一个目标值`target`,然后调用`binarySearch`方法进行查找。如果找到目标值,则输出目标值在数组中的索引;如果未找到,则输出目标值不在数组中的提示信息。这段代码定义了一个`binarySearch`方法,它接受一个有序数组和一个目标值作为参数,并返回目标值在数组中的索引,如果目标值不在数组中,则返回-1。二分查找(Binary Search)是一种在有序数组中查找目标值的算法。

2024-05-13 22:28:42 435

原创 IT行业现状与未来趋势

深度学习模型的复杂性和参数量大大超过了以往的方法,但通过GPU和分布式计算等技术的支持,使得其训练和应用成为可能。4. 物联网(IoT)的普及:物联网连接了各种设备和传感器,实现了设备之间的通信和数据交换,为智能城市、智能工厂等领域带来了新的机遇。综合来看,IT人才培养与教育需要结合学术教育、技术培训、在线学习、实践经验等多种途径,注重理论与实践相结合,培养学生的创新意识和问题解决能力,以应对不断变化的技术和市场需求。5. 安全和隐私的重要性:随着数字化进程的加速,安全和隐私成为了重要的关注点。

2024-05-13 22:25:08 688

原创 一文玩转@Transactional SpringAOP声明式事务

Isolation` 是一个枚举类型,包含了不同的隔离级别选项,例如 `READ_UNCOMMITTED`、`READ_COMMITTED`、`REPEATABLE_READ` 和 `SERIALIZABLE` 等。在使用 `@Transactional` 注解时,你需要在Spring的配置文件中配置事务管理器,以便让Spring知道如何管理事务。总的来说,`@Transactional` 注解是Spring框架中用于声明式事务管理的重要工具,它使得在Spring应用中使用事务变得简单和便捷。

2024-05-11 22:35:25 575 1

原创 Java手动分页工具类

手动分页和自动分页是两种不同的分页方式,它们之间有一些区别:手动分页:1. 手动控制:手动分页是通过代码逻辑来手动控制数据集的分页过程,通常不依赖于框架或库的自动支持。2. 灵活性:手动分页更加灵活,可以根据具体需求自定义分页逻辑,例如根据不同的条件进行不同的分页处理。3. 性能影响:手动分页在处理大数据集时可能会对性能产生一定影响,特别是当数据量较大时,需要在内存中加载全部数据,然后再进行分页处理。

2024-05-10 21:17:44 570 4

原创 @JsonInclude 源码详解

@JsonInclude` 注解有一个属性 `value`,它的类型是 `Include` 枚举,默认值是 `Include.ALWAYS`。`Include` 枚举定义了几种预定义的包含条件,比如 `ALWAYS`、`NON_NULL`、`NON_ABSENT`、`NON_EMPTY` 和 `CUSTOM`。在这段简化的代码中,`@JsonInclude` 是一个注解,它使用 `@Target` 和 `@Retention` 元注解指定了它可以应用的目标和生命周期。

2024-05-07 21:56:54 331 1

原创 @JsonInclude用法详解(通过序列化数据处理返回值问题)

也就是说,如果 `field1` 和 `field2` 都是 `null`,那么在序列化时它们将被忽略。- `Include.NON_ABSENT`:仅包含值不为 "absent" 的字段,这对于 Java 8 中的 `Optional` 类型很有用。在这个示例中,`field1` 只有在非空时才会被包含,而 `field2` 则会在非空且非空字符串时才会被包含。在上面的示例中,`field1` 仅在不为空时才被包含,而 `field2` 则是在非空时才被包含。在类级别使用 `@JsonInclude`

2024-05-07 21:54:40 543 2

原创 Agent AI智能体的未来

例如,Agent AI的开发、维护和管理需要大量的技术人才;通过使用更复杂的神经网络结构和更大规模的数据训练,Agent AI可以实现更高级的语义理解和推理能力。6. 需要新的政策和培训: 面对Agent AI对经济和就业市场的影响,政府和企业需要采取相应的政策措施和培训计划,以确保劳动力能够适应新的技术环境,同时促进经济的可持续发展和社会的稳定。4. 个性化和上下文感知的能力: 新的Agent AI技术不仅能够根据用户的个性化偏好提供定制化的服务,还能够感知对话上下文并据此提供更连贯和有针对性的回应。

2024-05-03 10:57:59 708

原创 基于ZooKeeper的分布式锁

方法中,创建了一个临时顺序节点,并获取了父节点下的所有子节点,并对这些子节点进行排序。如果当前创建的节点是最小的节点,则表示获取到了锁;否则,设置对比当前节点小的最大节点的监听器,当该节点被删除时重新尝试获取锁。ZooKeeper 是一个分布式协调服务,提供了一套完善的分布式原语,可以用来实现分布式锁。需要注意的是,该示例中创建的节点是临时顺序节点,当客户端与 ZooKeeper 断开连接时,该节点会自动删除,从而释放锁。类,它封装了 ZooKeeper 的连接和操作方法,并提供了获取锁和释放锁的功能。

2024-04-25 22:01:45 327 3

原创 基于Redis的分布式锁

这个示例代码创建了一个 `RedisDistributedLock` 类,它封装了 Redis 的连接和操作方法,并提供了获取锁和释放锁的功能。否则输出获取锁失败的消息。最后,无论是否获取到锁,都会释放锁。基于 Redis 实现的分布式锁主要依赖于 Redis 的 SETNX(SET if Not eXists)命令,该命令用于设置键的值,但仅在键不存在时设置成功。需要注意的是,该示例中使用的是 Redis 的单机模式,如果要在生产环境中使用 Redis 集群,需要使用相应的连接池和集群模式进行连接。

2024-04-25 21:59:35 331 2

原创 SpringAOP 详解及使用示例

在 Spring AOP 中,切面可以是一个类,其中包含了一系列的通知(advice)和切点(pointcut)。- 环绕通知(Around Advice):在连接点之前和之后执行的通知,它可以控制连接点的执行,包括是否执行连接点以及修改连接点的返回值。- 返回通知(After Returning Advice):在连接点正常完成后执行的通知,可以访问连接点的返回值。它是一个表达式,匹配连接点的集合。- 后置通知(After Advice):在连接点之后执行的通知,不论连接点执行成功与否。

2024-04-02 14:43:37 245

原创 Java Stream 流 Collectors.joining() 方法源码解析

Collectors.joining()方法。

2024-03-27 16:13:22 529 1

原创 i++ 和 ++i 的区别(操作数栈中分析)

因此,表达式 i++ 的值是 i 的当前值,但在执行完这个表达式后,i 的值会增加 1。因此,表达式 ++i 的值是 i 的新值,而且在执行完这个表达式后,i 的值也会增加 1。总结起来,i++ 和 ++i 的区别在于对 i 的值的更新时机不同:i++ 是先使用 i 的当前值再自增,而 ++i 是先自增 i 再使用新值。.i++ 和 ++i 都是递增操作符,它们的作用是将变量 i 的值加一。而对于表达式 b = ++i,首先 i 的值增加 1,变成 6,然后 b 被赋值为 i 的新值(也是 6)。

2024-03-23 16:34:50 291

原创 Mysql explain关键字的作用 及各个参数代表的含义

id:这是查询中每个子查询的标识符。如果子查询中有嵌套查询,则每个子查询都会有一个唯一的标识符。关键字用于分析查询语句的执行计划,帮助开发者优化查询性能。它告诉你MySQL如何执行你的查询,以及它是如何访问表和索引的。通过使用EXPLAIN语句,开发者可以更好地了解MySQL执行查询的方式,以便优化查询语句和索引,从而提高查询性能。Extra:这包含关于MySQL执行计划的额外信息,如是否使用了临时表、是否使用了文件排序等。DERIVED:派生表,这是从FROM子句中的子查询派生出的表。

2024-03-23 16:26:20 580

原创 Java 将部门类的数据转为树状结构

1. 要将部门数据处理为树形结构数据,你可以使用适当的数据结构来表示树,并编写代码将给定的部门数据转换为树形结构。以下是一个示例代码,展示了如何实现这一点:首先定义了一个。方法将部门数据转换为树形结构,其中根节点是CEO,然后构建出整个部门树。方法用于打印树形结构,以便查看树中的部门层次关系。类来表示部门信息,以及一个。

2024-03-18 21:25:28 615

原创 Java递归 树结构数据 获取每个节点的数据

在Java中,如果你有一个递归树的结构数据,你可以使用递归的方法来获取每个节点的数据。通常,树的节点会有一个值和一个指向子节点的列表或者指针。

2024-03-18 21:18:39 550

原创 Java JDK1.8新特性Stream流 开发过程中常用方法

Collectors.joining() 方法。1.废话不多说直接上代码。2024年3月27日更新。

2024-01-03 15:32:21 543 1

原创 Java 通过反射获取实体类对应的注释

Java 通过反射获取实体类对应的注释

2023-06-13 11:48:37 2053

原创 Oracle sql 操作时间格式的数据

1.orcale 需要对 字符串日期进行格式化格式化的标准和mysql有区别。orcale 日期格式为"yyyy-mm-dd hh24:mi:ss"

2023-04-13 10:18:40 612

原创 Java 将Double双精度值转为日期格式

1.将double转为日期格式(有需要直接复制粘贴把代码中s改为自己需要转的数据)

2023-04-13 09:05:14 1077

原创 ArrayList扩容机制

ArrayList扩容机制

2023-01-08 21:20:42 311

空空如也

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

TA关注的人

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