自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用easyexcel报错:java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86) at java.bas

在新的Linux系统服务器未安装字体,EasyExcel 在生成 Excel 文件时,如果需要渲染某些特定字体,而这些字体在服务器上不存在,就会抛出类似的错误,导致报空指针异常。

2025-01-18 07:30:00 83

原创 异常Caused by: com.alibaba.fastjson2.JSONException: format null not support, input Thu, 16 Jan 2025 00

日期:Fri, 17 Jan 2025 00:00:01 +0000。

2025-01-17 07:45:00 265

原创 mybatis:配置说明

时,MyBatis会使用延迟加载机制,即在需要时才加载关联对象,而不是在主查询时立即加载所有关联对象。这个设置控制MyBatis是否自动将下划线命名的数据库列映射到Java中的驼峰命名的属性。时,MyBatis会使用二级缓存,这可以提高读取数据库的效率,减少对数据库的重复查询。时,MyBatis可以处理存储过程返回的多个结果集,每个结果集可以映射到不同的结果类型。时,MyBatis会使用结果集中列的标签,这在列名与Java对象的属性不匹配时非常有用。)在被调用时会触发关联对象的加载。

2025-01-17 07:30:00 386

原创 注解:@MapperScan

是MyBatis与Spring集成的关键部分,它通过自动扫描和注册映射器接口,简化了数据库操作的管理。是MyBatis的注解,用于扫描并注册MyBatis映射器接口。通常用于Spring配置类上,以指定包含MyBatis映射器接口的包。例如,我可以指定多个包,或者使用通配符来包含子包。包下的所有接口,并将它们注册为映射器。是否正确工作,我可以在启动应用程序后检查映射器接口是否被正确加载。,这允许为特定的映射器接口定义额外的属性,例如自定义的。来检索映射器bean,可以确认它们是否被正确注册。

2025-01-16 16:30:12 296

原创 自定义SqlSessionFactory时mybatis-config.xml失效

使用多数据源时,自定义创建SqlSessionFactory对象,没有正确读取到mybatis-config.xml配置,导致下划线驼峰映射失效,sql语句输出不显示等问题。

2025-01-16 11:36:57 400

原创 sql查询条件:查询当天的新增的数据

它允许我们根据需要灵活地定义日期和时间的格式,从而在查询结果中展示更加友好和可读的日期时间信息。是MySQL中的一个函数,用于按照指定的格式对日期和时间进行格式化。函数在SQL中用于按照指定的格式对日期和时间进行格式化,通过使用各种格式化占位符,可以灵活地定义输出格式。函数,我们可能需要使用其他函数或表达式来实现相同的结果,但大多数现代数据库系统都支持这些函数。字段包含时间部分,我们只关心日期部分,上述查询仍然有效,因为它只比较日期部分。函数,其用法类似但不完全相同。字段的日期部分与当前日期相同的记录。

2025-01-15 16:46:12 355

原创 计算接口的耗时时长

具体来说,可以在发送请求之前记录一个时间戳,然后在收到响应之后再记录一个时间戳,最后计算这两个时间戳之间的差值。为了减少这些因素的影响,可以多次测量并取平均值,以获得更准确的结果。首先,明确“接口的耗时时长”具体指的是什么。通常,这指的是从发送请求到收到响应之间的时间。综上所述,计算接口的耗时时长可以通过在请求发送前后记录时间戳并计算差值来实现。具体实现时,可以使用。获取当前时间,然后在收到响应之后再次获取当前时间,最后计算这两个时间的差值。此外,如果在多线程环境中进行测量,需要确保时间测量的线程安全。

2025-01-15 16:40:21 222

原创 避免在循环语句中执行sql插入操作

在循环中插入数据到数据库效率低下的主要原因是每次插入操作都会生成一个单独的SQL语句,导致大量的网络往返和解析开销。通过使用批处理、预编译语句和可能的异步操作,可以显著减少这些开销,从而提高性能。我认为问题的关键在于每次插入操作都会生成一个单独的SQL语句,这些语句通过网络发送到数据库。例如,比较循环插入和批处理插入相同数量记录所需的时间。假设我们有一个包含多个对象的列表,每个对象代表一条需要插入数据库的记录。这些步骤在每次迭代中都会重复,导致大量的开销。通过这些方法,我们可以显著提升插入数据的效率。

2025-01-10 16:52:41 493

原创 cn.idev.excel.exception.ExcelAnalysisException: java.lang.NoSuchMethodError: org.apache.commons.io.o

通常表示在运行时,JVM尝试调用一个方法,但该方法在对应的类中并不存在。这通常是因为依赖的库版本不匹配,或者编译时和运行时的类路径不一致。更新依赖后,我需要重新构建项目,以确保新的库被正确下载并使用。然而,如果更新依赖不是选项,或者项目有其他约束,我可能需要考虑其他解决方案。需要确保项目使用的是包含该方法的Apache Commons IO版本。方法,或者修改代码以使用不同的方法,该方法在当前库版本中可用。因此,如果项目当前使用的版本低于2.12.0,就会出现。方法,但可能是在较新的版本中引入的。

2025-01-10 15:40:33 253

原创 BigDecimal:高精度数值运算类

BigDecimal是一个用于高精度数值运算的类,它比基本的double或float类型更精确,非常适合需要精确计算的场景,如金融计算、科学计算等,因为这些领域对数值精度要求非常高,不能容忍浮点运算带来的误差。为什么需要BigDecimal。double和float在表示某些小数时存在精度问题,因为它们是基于二进制的。例如,0.1在二进制中是一个循环小数,这会导致计算结果出现意外的误差。因此,BigDecimal应运而生,它以字符串的形式存储数值,确保精确的十进制表示。为什么使用BigDecimal。

2025-01-09 18:33:50 398

原创 批量上传文件

批量上传文件是一个常见的需求,尤其是在处理大量文件或需要将文件上传到服务器的场景中。在Java中,可以使用多种方式来实现这一功能。下面是一个简单的示例,展示如何使用Java的和Spring Boot框架来实现批量文件上传。

2025-01-03 17:35:33 257

原创 面试题:AOP(Aspect-Oriented Programming)面向切面编程

AOP(Aspect-Oriented Programming)即面向切面编程,是一种通过分离应用中的横切关注点(Cross-Cutting Concerns)来实现模块化的软件开发范式。

2025-01-02 18:10:41 473

原创 面试题:@Transactional 注解在自调用情况下会失效原因

Transactional 注解在自调用情况下会失效,这主要是由于 Spring 事务管理的实现机制所导致的。

2025-01-02 18:09:30 729

原创 Java中实现对象的深拷贝(Deep Copy)

在Java中实现对象的深拷贝(Deep Copy)意味着创建一个对象的副本,使得原对象和副本对象完全分离,对副本对象的任何修改都不会影响到原对象。

2024-12-31 18:09:01 355

原创 @Transactional self-invocation (in effect, a method within the target object calling another method

在Spring框架中,注解用于声明事务管理。当你在一个类的方法上使用注解时,Spring 会为这个方法创建一个事务代理。这意味着方法的调用实际上是通过代理对象来转发的,以便Spring可以管理事务。然而,当一个注解的方法在同一个类的内部调用另一个注解的方法时,这种调用被称为“自调用”(self-invocation)。在这种情况下,Spring事务代理不会介入,因为代理对象没有被创建,或者调用没有通过代理对象转发。

2024-12-31 16:46:02 1098

原创 Optional类:避免NullPointerException

Optional类是Java 8中引入的一个容器类,用来包含或不包含非null对象。它的设计目的是为了提供一种更清晰、更安全的方式来处理可能为null的对象,从而避免。以下是Optional。

2024-12-30 20:13:02 511

原创 ‘Optional. get()‘ without ‘isPresent()‘ check

在Java中,Optional类被引入主要是为了解决的问题,它提供了一种更优雅的方式来处理可能为null的情况。方法用于获取Optional实例中包含的值,但如果Optional实例是空的(即没有值),则调用get()方法会抛出。因此,最佳实践是在调用get()之前检查Optional实例是否包含值,通常通过方法进行检查。如果不进行这样的检查,就有抛出异常的风险。

2024-12-30 20:09:39 329

原创 Iterator和ListIterator的区别

Iterator和IteratorIteratorIteratorIterableListIteratoradd(E e)set(E e)Iteratorremove()next()next()previous()IteratorIterator。

2024-12-28 08:00:00 289

原创 设计模式:迭代器(Iterator)

在Java中,迭代器(Iterator)是一种设计模式,用于顺序访问集合中的元素。Java集合框架(Java Collections Framework,JCF)中的接口提供了迭代集合元素的方法。以下是Iterator。

2024-12-28 07:30:00 381

原创 高频面试题:全局事务失效的原因

Spring事务是基于异常回滚的,如果业务代码捕获了所有异常,并且没有将异常原样抛出或设置事务回滚,事务将不会回滚。:在同一个类中的方法调用,由于使用的是同一个类的实例,Spring AOP无法代理,因此事务不会生效。:如果自定义切面与Spring事务切面的优先级相同,且没有正确处理异常,可能会导致事务失效。:不是所有的数据库引擎都支持事务,如果使用的数据库引擎不支持事务,那么全局事务将无法生效。:在Spring的父子容器环境中,如果事务配置不当,可能会导致事务失效。,事务将不会发生回滚。

2024-12-27 07:45:00 408

原创 高频面试题:Bean的循环依赖

在Java中,循环依赖通常指的是两个或多个类相互依赖对方,形成一个闭环。这种依赖关系在编译时不会造成问题,但在运行时,特别是在依赖注入(DI)框架中,可能会导致问题,因为框架需要确定一个实例化的顺序。循环依赖的问题通常源于设计上的不足,因此,最佳的做法是通过设计优化来避免循环依赖,而不是仅仅依赖于技术手段。在实际开发中,应该结合业务需求和项目结构,采取合适的策略来解决循环依赖问题。

2024-12-27 07:45:00 180

原创 使用自定义线程池批量导入数据

请注意,这个示例仅用于演示如何使用自定义线程池进行数据导入,实际的数据导入逻辑(如数据库操作)需要根据你的具体需求来实现。此外,错误处理和事务管理也是在实际应用中需要考虑的重要因素。实例,其中包含了核心线程数、最大线程数、线程空闲存活时间、时间单位和工作队列。然后,它创建了一个数据数组,并为每个数据项创建了一个。类来创建一个自定义的线程池。方法用于优雅地关闭线程池,等待所有任务执行完成或者超时后强制关闭。接口,定义了数据导入的具体逻辑。任务,提交给线程池执行。类创建了一个自定义的。

2024-12-26 07:30:00 316

原创 高频面试题:常见的线程池及特点

在实际应用中,应根据任务的特性(如CPU密集型、I/O密集型)和系统资源来选择合适的线程池类型。:当任务太多,无法被线程池及时处理,且工作队列已满时,使用的饱和策略。任务首先会被提交到这个队列中,然后由线程池中的线程取出并执行。包提供了多种线程池实现,每种都有其特定的用途和场景。时,多余的空闲线程能存活的时间。接口,可以自定义新线程的创建逻辑,比如设置线程名称、设置守护线程等。:线程池能够容纳同时执行的最大线程数量。:线程池的基本大小,即使空闲线程也会保持,除非设置了。:当线程池中的线程数量超过。

2024-12-26 07:30:00 400

原创 使用RedisTemplate执行Lua脚本

在Spring框架中,提供了执行 Lua 脚本的便捷方法。以下是如何使用。

2024-12-25 07:15:00 302

原创 高频面试题:如何确保分布式锁的原子性?

每个线程在获取锁时生成一个唯一的标识符,并将其作为锁的值存储在Redis中。: Redlock算法是一种改进的分布式锁算法,通过在多个Redis实例上获取锁来提高锁的可靠性和可用性。Redlock算法的核心思想是确保在多个实例上获取锁的过程是原子的,从而避免误删问题。通过Lua脚本,可以将检查锁是否存在和删除锁的操作合并为一个原子操作,这样可以避免在锁释放时发生竞态条件。通过上述方法,可以在实践中有效保障分布式锁的原子性,确保系统的稳定性和可靠性。这段脚本首先检查锁是否属于当前客户端,如果是,则删除锁。

2024-12-25 07:00:00 458

原创 实现注入非静态bean

实例,并将其存储在静态字段中,以便在类的方法中使用。这样可以确保在分布式锁的操作中,所有实例都使用同一个。总的来说,这段代码定义了一个用于分布式锁的模板类,它通过Spring的依赖注入机制获取。的Spring组件,它主要用于处理分布式锁的逻辑。这段代码定义了一个名为。连接到Redis服务器。

2024-12-24 08:00:00 323

原创 静态方法中注入非静态bean

在Spring框架中,由于静态方法不属于任何bean的实例,因此不能直接注入非静态bean。

2024-12-24 07:45:00 317

原创 IntelliJ IDEA中设置激活的profile

如果你的项目是通过Maven构建的,你可以在IDEA中直接使用Maven命令来激活特定的profile。通过以上任一方法,你都可以在IDEA中设置激活的profile,以便于根据不同环境进行配置管理。你也可以在运行或调试Spring Boot应用时,通过命令行参数来激活特定的profile。

2024-12-23 10:54:01 1233

原创 Spring Boot开发编译后读取不到@spring.profiles.active@的问题

在IDEA中,确保你已经正确设置了Run/Debug Configuration,包括正确的profile参数。如果问题仍然存在,可以检查IDEA的日志输出,查找是否有关于profile激活失败的错误信息,并根据错误信息进一步排查问题。: 有时候,IDEA的缓存可能会导致配置读取不正确。: 确保Spring Boot的启动类上没有硬编码的profile设置,这可能会覆盖外部配置。这样配置后,Maven会根据激活的profile替换。中已经定义了相应的profile,并且设置了。占位符,并且该文件位于。

2024-12-23 10:51:14 1157

原创 分布式事务中如何保证数据一致性?

在分布式系统中保证数据一致性是一个复杂的问题,涉及到多种技术和策略。这些方法和策略共同构成了分布式事务一致性的解决方案,帮助开发者在分布式场景下实现数据的一致性和可靠性。

2024-12-21 08:15:00 269

原创 高频面试题:分布式事务

分布式事务是指在分布式系统中,涉及多个独立节点的事务处理过程。它的目标是确保跨多个节点的操作具有ACID(原子性、一致性、隔离性和持久性)特性,即要么所有操作都成功,要么全部回滚。

2024-12-21 08:00:00 160

原创 手机号码:按百分比隐藏中间数字,避免泄露

展示在页面的时候,有时需要隐藏部分手机号码,避免泄露。

2024-12-20 07:45:00 170

原创 Java的Collectors常见方法

包的一部分,它提供了多种静态方法,用于在流(Stream)操作的最后阶段将元素汇总或整理成不同的形式。类中一些常用的收集器方法。它们可以帮助你将流中的元素汇总成不同的集合类型,或者进行更复杂的聚合操作。

2024-12-20 07:30:00 194

原创 PageHelper:上手教程(最详细)

PageHelper是一款基于MyBatis的分页插件,它简化了分页查询逻辑的编写,支持多种分页方式和结果集排序、筛选等操作。

2024-12-19 07:45:00 747

原创 PageHelper常见问题

在一对一和一对多时,根据分页条件查询出 100 条数据时,由于一对一和一对多会去重,经过嵌套处理后数据量会减少,因此分页想要获得 100 条数据无法实现。这种情况下由于 param1 存在 null 的情况,就会导致 PageHelper 生产了一个分页参数,但是没有被消费,这个参数就会一直保留在这个线程上。当这个线程再次被使用时,就可能导致不该分页的方法去消费这个分页参数,这就产生了莫名其妙的分页。的 sql,会抛出运行时异常,对于这样的 sql 建议手动分页,毕竟这样的 sql 需要重视。

2024-12-19 07:45:00 1067

原创 bootstrap.*配置文件的详细介绍

配置文件是Spring Boot和Spring Cloud应用中用于早期配置加载和配置中心集成的关键文件。它们允许开发者在应用启动早期配置必要的属性,从而实现灵活、动态的配置管理。

2024-12-18 08:00:00 254

原创 application.properties 和 application.yml的区别

选择还是主要取决于个人偏好和项目需求。如果你的配置相对简单,或者你更喜欢简单的键值对格式,那么可能是更好的选择。如果你的配置较为复杂,需要更好的结构化和可读性,那么可能更适合你。在实际开发中,可以根据具体情况灵活选择使用。

2024-12-18 07:45:00 320

原创 OCR:文字识别(最详细教程)

通过以上操作,就可以实现前端上传身份证文件,然后发送到百度云OCR,识别校验身份证。

2024-12-17 07:45:00 1553

原创 OCR识别:身份证信息加密传输

对result密文进行base64解码后得到byte流,再进行AES解密,得到识别结果的明文。使用AES加密来请求本身份证识别接口,支持对身份证图片及识别结果进行加密后传输,示意图如下。使用AES加密不影响身份证识别接口支持的质量检测、风险检测等其他能力,也不影响识别效果。

2024-12-17 07:30:00 226

原创 XXL-JOB:Cron表达式

Cron表达式是一个字符串,用于配置定时任务的执行计划。它由6或7个空格分隔的时间字段组成,每个字段代表一个特定的时间单位。Cron表达式被广泛用于定时任务调度,如Unix/Linux的crontab、Quartz调度器以及Spring框架的。在使用cron表达式时,需要根据具体的任务调度需求来配置合适的执行计划。

2024-12-16 09:44:40 513

中国官方省市区镇行政编码(最完整版)

sql语句,直接执行即可

2024-09-14

空空如也

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

TA关注的人

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