- 博客(31)
- 收藏
- 关注
原创 zset的使用场景
ZSet(有序集合)是Redis中的一种数据结构,它保留了集合不能有重复成员的特点,但与普通集合不同的是,ZSet中的每个元素都与一个唯一的浮点类型的分数(score)相关联,这使得ZSet中的元素可以维护有序性。
2025-01-02 13:06:37
426
原创 Spring Boot的懒加载
在Spring框架中,默认情况下,所有的Bean都是在容器启动时被实例化并初始化的。然而,对于一些大型应用程序,如果有很多Bean,并且其中一些Bean的初始化需要大量的时间和资源,那么整个应用程序的启动时间可能会很长。为了解决这个问题,Spring引入了懒加载的功能。懒加载机制通过将Bean的初始化延迟到第一次使用时,可以减少应用程序启动时的开销。这样不仅可以提高应用程序的启动速度,而且只有在需要时才会实例化和初始化Bean,从而更有效地利用系统资源。
2024-11-01 10:31:51
1000
原创 Java使用zipfile解压文件时,解压出来的文件里面有中文命名的文件导致解压不成功,处理方式 error:java.lang.IllegalArgumentException: MALFORMED
在Java中使用ZipFile类解压包含中文命名文件的ZIP文件时,如果遇到解压不成功并报异常的问题,通常是由于字符编码问题导致的。ZIP文件通常使用ZIP文件的默认编码(通常是系统默认的编码,如Windows上的GBK)来存储文件名,而Java的ZipFile类默认使用平台默认字符集来解码这些文件名。如果ZIP文件的编码和Java平台的默认编码不一致,就可能导致中文文件名乱码或解压失败。
2024-10-29 13:47:39
617
原创 正则表达式学习
匹配单个汉字字符,不考虑位置。匹配一个或多个连续的汉字字符,且这些汉字必须出现在输入字符串的末尾。在实际应用中,选择哪个正则表达式取决于你的具体需求。如果你只需要检查字符串中是否包含汉字(无论位置如何),则使用。如果你需要检查字符串是否以连续的汉字结尾,则使用。
2024-10-29 11:17:27
777
原创 java.io.File类中,File.delete()方法在尝试删除非空目录时的行为,删除不成功解决方法
并且不会删除该目录。这是因为大多数操作系统(包括Windows和Linux)都不允许直接删除非空目录,以防止数据丢失。Java标准库没有提供直接删除非空目录的方法,但您可以使用Apache Commons IO库中的。要删除非空目录,需要编写额外的代码来递归地删除目录中的所有文件和子目录。对象表示的是一个目录,并且该目录不为空(即包含文件或子目录),则。方法,或者编写自己的递归删除逻辑来实现这一功能。从文档说明中可以看到,如果。方法无法删除非空目录。
2024-10-23 14:30:03
223
原创 springboot配置文件加密
使用Jasypt提供的加密工具或自定义加密逻辑生成敏感数据的加密字符串。通过以上步骤,就可以使用Jasypt对Spring Boot配置文件中的敏感数据进行加密和解密了。Jasypt是一个强大的加密库,它提供了对Spring Boot配置文件中配置项进行加密的功能,从而增强了应用的安全性。为了让Spring Boot能够解密配置文件中的加密字符串,需要在应用启动时指定解密密钥。例如,对于Maven项目,可以在。在Spring Boot的配置文件中,将敏感数据替换为加密后的字符串,并使用。
2024-10-14 10:53:13
410
原创 使用@Cacheable注解问题
这样,下次尝试获取这个 key 的值时,缓存中不会有这个 key,因此会调用实际的方法来获取新的值,并将其存储到缓存中。配置缓存的失效策略(如 TTL, TTI 等),这样缓存中的值会在一定时间后自动失效,从而触发新的缓存加载。这个注解会调用方法,并将结果存储到缓存中,无论缓存中是否已经存在这个 key 的值。如果可能,你可以监听数据源的变化(如数据库触发器),并在变化发生时触发缓存更新或失效。在某些情况下,你可能需要更细粒度的控制,这时可以手动管理缓存。如果你希望在更新数据源的同时更新缓存,可以使用。
2024-10-10 11:39:34
313
原创 Idea在启动一个spring boot程序的时候做了什么
IntelliJ IDEA在启动一个Spring Boot程序时,会进行项目配置检查、构建项目、识别启动类、配置JVM参数、加载应用程序上下文、自动配置以及运行应用程序等一系列步骤。项目配置检查:IDEA会首先检查项目的配置,包括pom.xml或build.gradle文件中定义的依赖项、JDK版本等。启动类识别:IDEA会识别项目中的Spring Boot启动类,即包含@SpringBootApplication注解的主类。启动类是Spring Boot应用程序的入口点,包含了main方法。
2024-10-09 01:23:22
362
原创 方法传输的参数过大会不会有影响 多大算大?
重要的是要理解,当我们说Java是按引用传递对象时,我们实际上是在说传递的是对象的引用(即对象的内存地址),而不是对象本身。如果这样的操作频繁发生,可能会消耗大量的堆内存,进而影响程序的性能,甚至可能导致内存溢出错误(OutOfMemoryError)。过多的参数或过大的参数会使方法的签名变得复杂,降低代码的可读性和可维护性。这可能导致其他开发者难以理解方法的用途和参数的意义,增加出错的风险。,这个类可能包含大量的数据或者复杂的结构,但为了示例的简洁性,我们仅在其中包含一个字符串数组来模拟大型对象。
2024-09-29 16:24:50
626
原创 Nexus仓库管理器是什么 与Maven中央仓库有什么关系
Nexus仓库管理器是由Sonatype公司发布的一款强大的仓库(Repository)管理软件,它常被用来搭建Maven私服,因此也被称为“Maven仓库管理器”。Nexus的主要功能和优势包括支持多种仓库类型(如代理仓库、私有仓库和仓库组)、提供对构件的上传、下载、搜索和管理的全面支持,以及支持多种协议和工具(如Maven、Docker、npm等)。
2024-09-29 13:18:54
383
原创 kafka.common.errors.TimeoutException:Expire 1 records
kafka.common.errors.TimeoutException: Expire 1 records 这个错误通常出现在使用 Apache Kafka 时,特别是在处理生产者(Producer)或消费者(Consumer)与 Kafka 集群的交互过程中。这个错误表明有一些记录(在这个例子中是1条记录)在发送到 Kafka 或从 Kafka 消费时,由于超时而未能成功处理。
2024-09-06 14:19:01
586
1
原创 byte数组转换成String的时候出现NUL域,怎么过滤或者去除 nul域被显示为空格
但是,需要注意的是,\0在Java字符串中并不是一个有效的转义序列来表示NUL字符;不过,由于我们的目标是处理byte数组转换后得到的字符串中的NUL字符,这些字符在字符串中是不可见的,并且它们的存在只是增加了字符串的长度,所以我们可以通过遍历字符串并检查每个字符的ASCII值来过滤它们。在Java中,当你将byte数组转换成String时,如果byte数组中包含NUL字符(即值为0的字节),这些NUL字符在转换后的字符串中也会体现出来,表现为字符串中的空字符(虽然肉眼不可见,但会占用字符串的长度)。
2024-07-31 15:02:23
597
原创 【笔记】Java实现日志在正式环境不打印,在测试环境打印
在Java中,控制日志在不同环境(如正式环境和测试环境)的打印行为,通常依赖于日志框架(如Logback, Log4j2等)的配置文件。这些配置文件可以根据不同的环境来设置不同的日志级别或输出位置。:确保日志框架的配置文件(如或log4j2.xml)位于正确的位置,并且文件名符合框架的要求。:一些配置可能会根据环境变量或系统属性来区分不同的环境。:虽然直接通过POM文件配置日志框架的情况不常见(通常是通过POM引入依赖),但确保你正确引入了所需的依赖。:确保在启动应用时,没有覆盖配置文件中的设置。
2024-07-11 15:51:57
463
原创 【笔记】使用HttpClient时因为空格出现的java.lang.IllegalArgumentException异常解决
当你使用Java的URL类或者HttpURLConnection、HttpClient(Java 11及以上版本中的HttpClient,或者Apache HttpClient等第三方库)等HTTP客户端时,通常不需要手动编码URL中的空格,因为大多数库都提供了自动编码URL参数的机制。在Java中,URL(统一资源定位符)的值如果包含空格,那么这些空格在URL中必须被编码,因为空格在URL中有特殊的含义(通常用作参数分隔符)。在URL中,空格可以通过%20来编码。// 原始URL,包含空格。
2024-07-11 14:45:34
387
原创 【笔记】assert关键字
如果条件为假(即断言失败),则程序会抛出异常或错误,并可能停止执行。避免使用断言控制业务流程:虽然断言可以用于验证程序的某个条件是否为真,但应该避免使用断言来控制程序的业务流程。断言的开启:在Java中,断言默认是关闭的。调试和验证:通过断言机制,开发者可以在程序的关键位置设置断言,以验证程序的状态是否符合预期。防止错误传播:在程序的关键路径上设置断言,可以及早发现并阻止错误的传播。通过断言,开发者可以明确地表达代码的预期行为,使其他开发者更容易理解代码的逻辑和目的。
2024-07-04 09:27:11
443
原创 【笔记】Java中this关键字
虽然在这个特定的例子中,this.printNumber() 和 printNumber() 是等价的(因为 printNumber 不是静态的,也没有被隐藏),但使用 this 可以使代码更清晰,特别是在处理更复杂的类结构时,其中方法可能因为继承、重载或隐藏而变得不那么直观。总的来说,this关键字在Java中是一个非常重要的概念,它主要用于引用当前类的实例变量、调用当前类的构造器、返回当前对象的引用以及在内部类中引用外部类的实例。在内部类中,this关键字通常指的是内部类的实例。
2024-07-03 09:45:09
246
原创 【笔记】instanceof类
instanceof 是 Java 中用于判断对象实例与类或接口之间关系的关键字,它返回布尔值以指示对象是否是指定类或接口(或其子类/实现类)的实例。在使用时,需要注意对象与类之间的继承关系,以及编译状态与运行状态的区别。instanceof 是 Java 语言中的一个保留关键字,它是一个二元运算符,用于测试左边的对象是否是其右边类或接口的实例。如果 Class 是一个接口,并且 object 是该接口的实现类的实例,那么 instanceof 也会返回 true。object:一个对象实例。
2024-07-01 13:32:20
226
原创 【笔记】AOP(面向切面编程)避免selectOne
AOP(面向切面编程)本身并不能直接避免selectOne方法的报错,因为selectOne通常是在与数据库交互的上下文中使用的,比如在使用MyBatis或类似的ORM框架时。然而,AOP可以用于在selectOne方法调用前后添加额外的逻辑,以处理可能的异常或进行日志记录等操作,从而间接地帮助避免或更好地处理报错。事务管理:虽然这不是直接避免selectOne报错的方法,但AOP可以用于实现声明式事务管理,确保在selectOne方法调用失败时,数据库事务能够正确地回滚或提交。
2024-07-01 10:44:40
273
原创 【笔记】JoinPoint类
ProceedingJoinPoint是JoinPoint的子接口,除了提供JoinPoint的功能外,还允许在环绕通知中控制被通知方法的执行(通过调用proceed()方法)。通过结合通知和JoinPoint,可以实现诸如前置通知(在方法执行前执行逻辑)、后置通知(在方法执行后执行逻辑)、环绕通知(在方法执行前后都执行逻辑)等功能。总的来说,JoinPoint类在AOP中扮演着至关重要的角色,它使得开发人员能够在程序执行过程中的特定位置插入额外的逻辑,从而实现对横切关注点的模块化和复用。
2024-07-01 10:34:27
223
原创 【笔记】Mac消息认证码算法
MAC 是一种用于确保信息传输完整性和认证性的技术,通常用于验证消息的来源和完整性,以防止消息被篡改。javax.crypto.Mac 类在 Java 中提供的消息认证码(MAC)算法,如 HMAC-SHA256,在正确使用时是安全的。算法选择:选择经过充分验证和广泛使用的 MAC 算法,如 HMAC-SHA256,可以确保算法本身的安全性。系统安全实践:除了算法本身的安全性外,还需要遵循最佳的安全实践,如定期更换密钥、限制错误尝试次数、使用安全的密钥存储和传输机制等,以确保整个系统的安全性。
2024-06-28 16:33:13
291
原创 MyBatis底层原理实现(基于动态代理)
对于想了解MyBatis底层机制又实在读不进源码的人有一定的帮助,主要是通过基础知识梳理了MyBatis这一优秀框架的简单实现,可加深对MyBatis的理解,并对JDBC和反射机制以及动态代理的复习。
2022-07-30 01:07:01
843
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人