- 博客(72)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 Spring的三级缓存机制
主要介绍了Spring中通过三级缓存机制解决循环引用问题。其核心是三级缓存通过提前暴露对象引用,动态解决循环依赖,保证了单例 Bean 的完整性和可用性。
2025-01-16 16:10:32
984
原创 事务的特性和隔离级别
ACID特性确保了数据库事务的可靠性和数据的完整性。原子性保证了事务的不可分割性,一致性保证了事务执行前后数据库的完整性,隔离性保证了并发事务的正确性,持久性保证了事务提交后的永久性。这些特性共同作用,使得数据库在复杂的操作和并发环境下仍然能够保持数据的一致性和可靠性。
2025-01-13 12:09:33
863
原创 SpringBoot项目Jar包使用systemctl运行
SpringBoot项目打成jar包后,可以直接使用 java -jar xxx.jar 启动。但是为了方便启动和停止服务,通常我们会写两个脚本,分别是启动脚本 start.sh 和 停止脚本 shutdown.sh(这两个脚本内容我们下文会实现);再进一步的做法是可以把我们的服务添加成系统服务,使用systemctl 进行管理,就像使用 systemctl status firewalld.service 一样。
2024-12-19 00:20:34
1187
原创 一些Java小知识点 - SpringBoot配置优先级梳理
在某些SpringBoot项目中,有时会看到在配置文件中使用 ${xxx} 取值的情况,但是这些 xxx 变量在哪里进行设置呢?比如application.properties配置文件里面使用server.port=${PORT}指定程序的端口号
2024-12-18 00:06:33
935
原创 一些Java小知识点
Java中系统属性和环境变量;在开发过程中,有时会需要通过代码执行一些 命令行 指令,以下是一些示例代码,其中使用到了 hutool工具类;SpringBoot项目jar包在服务器上后台执行日志输出问题
2024-12-03 14:26:58
407
原创 Java代码实现生成证书吊销列表CRL
CRL (Certificate Revocation List) 证书吊销列表。是CA机构维护的一个已经被吊销的证书序列号列表,浏览器需要定时更新这个列表,浏览器在验证证书合法性的时候也会在证书吊销列表中查询此证书是否已经被吊销,如果被吊销了那这个证书也是不可信的。可以看出,这个列表随着被吊销证书的增加而增加,列表会越来越大,浏览器还需要定时更新,实时性也比较差。本篇博客实现如下功能:
2024-11-28 09:18:04
692
原创 Java代码实现数字信封
数字信封使用的是接收者的非对称密钥对。即:用接收者的公钥加密,且只能由接收者的私钥解密。其实现过程如下: (1)信息发送者发送信息时,首先生成一个共享的对称密钥,用该对称密钥加密要发送的明文,得到数据密文; (2)信息发送者用接收者的公钥加密此对称密钥,形成对称密钥密文; (3)信息发送者将(1)和(2)的结果结合在一起,形成数字信封,一并传给信息接收者。信息接收者接到数据后,使用自己的私钥解密对称密钥密文,得到共享的对称密钥;再用此对称密钥解密数据密文
2024-11-26 18:11:00
898
原创 SpringBoot之定时任务
论在单体项目,单个实例中的定时任务相关问题。开发中遇到的场景是:一个单体项目,就比如一个后台管理系统需要多个定时任务去做一些业务处理。分布式定时任务是接下来要详细讨论的问题。
2024-11-07 17:23:13
1701
1
原创 Java代码实现PKCS7填充
如果你也在做加解密相关的需求,比如调用国密标准0018接口的对称加密/解密接口。就会遇到需要自己填充数据原文为16字节的整数倍(因为SM4分组算法的加密数据长度必须是其密钥大小的整数倍,SM4密钥大小是128bit,即:16字节)
2024-11-01 11:18:36
773
原创 SpringBoot最佳实践之 - 使用AOP记录操作日志
有一个后台管理系统,此系统具有不同角色的用户,比如管理员、操作员、审计员等。当这些角色的用户登录到系统中,以及其在系统中所触发的 操作。我都想记录操作日志。然后存储到数据库中。然后可以查询出来,显示到页面上。对于一个业务敏感的后台管理系统来说,就可以通过这里查看哪些用户操作了什么功能。操作的结果是成功还是失败,如果操作失败,失败的原因是什么
2024-10-29 11:19:49
1754
原创 浅谈Java加密体系
Java安全领域分为四个大部分:JCA(Java Cryptography Architecture, Java加密体系结构)、JCE(Java Cryptography Extension, Java加密扩展包)、JSSE(Java Secure Sockets Extension, Java安全套接字扩展包)和JAAS(Java Authentication and Authorization Service, Java认证和授权服务)
2024-10-25 14:43:31
232
原创 SpringBoot最佳实践之 - 项目中统一记录正常和异常日志
在特定需求背景下,针对项目中统一记录日志(包括正常和错误日志)需求的实现方式之一,并不是普适的记录日志的解决方案。所以阅读本篇博客的朋友,可以参考此篇博客中记录日志的方式,可能会对你有些许帮助和启发。
2024-10-25 14:39:14
1899
原创 logback-spring.xml文件的一些记录
在SpringBoot项目开发的过程中,一般都是使用Slf4j作为日志门面,使用logback作为日志实现。logback日志实现框架需要指定并配置一个配置文件:logback-spring.xml
2024-10-23 17:59:27
246
原创 Javac命令和Java命令的使用复习
基本功很重要。使用Java中的 javac 和 java 命令成功编译并运行一个程序,借此来复习下Java的基本使用方式。
2024-10-22 16:29:47
1529
原创 Spring开发最佳实践之跨域处理
浏览器为了安全,默认会遵循同源策略。即:请求要去的服务器和当前项目(当前项目就理解成前端项目)所在的服务器必须是同一个源。如果不是,请求就会被拦截。那么什么是同一个源呢?什么不是同一个源呢?相同的源指的是 协议、域和端口号要完全相同,这三个地方有任何一处不一样,就是不同源。
2024-10-07 10:54:23
987
原创 浅聊前后端分离开发和前后端不分离开发模式
首先要知道,Spring MVC是Web开发领域的一个知名框架,可以开发基于请求-响应模式的Web应用。而Web开发的本质是遵循HTTP(Hyper Text Transfer Protocol: 超文本传输协议)协议【发请求,给响应】。所以作为服务端,只要能运行一个服务,此服务监听某个端口上由客户端发送过来的请求,然后获取请求数据,进行业务处理后,最后给客户端发送一个响应,就可以实现Web开发。所以理论上不使用Web开发框架(如Spring MVC)甚至不使用Servlet API,也可以实现Web开发。
2024-10-04 09:30:00
1750
原创 SpringBoot之Profile的两种使用方式
通常项目开发过程中,会经历多种环境转换,典型的如开发环境(dev)、测试环境(test)和生产环境(prod)。在这三种不同的环境下,连接数据库时使用的配置信息是不同的,即三个不同环境对应三个不同的数据库。 现在的需求是:当在不同的环境下,想通过修改配置文件来连接不同的数据库。比如在开发过程中启动项目时,想连接开发环境对应的数据库,可以在配置文件中指定 environment = dev。其他环境类似,此时就需要用到Spring为我们提供的Profile功能。
2024-09-30 10:25:46
2570
原创 Java文件拷贝的几种方式
此篇博客主要分为传统的阻塞IO(Blocking I/O)实现的文件拷贝和基于NIO(No-Blocking I/O)的FileChannel方式实现的文件拷贝。
2024-07-24 19:35:58
1261
原创 Spring中的事件监听器使用学习
Spring框架中的事件监听机制是一种设计模式,它允许你定义和触发事件,同时允许其他组件监听这些事件并在事件发生时作出响应。这种机制基于观察者模式,提供了一种松耦合的方式来实现组件间的通信。
2024-07-06 17:27:27
840
2
原创 浅谈Spring中的一些技术
在学习Spring或者SpringBoot原理时,心里要始终想着一件事情:只有把对象(也可以称之为组件、bean)放入到Spring的IOC容器中,才能使用Spring为我们提供的一系列强大功能
2024-07-05 22:56:08
835
原创 《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) 周志明》 - 第12章代码示例
最近在看《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) 周志明》这本书,书中有些代码示例是为了让读者理解作者表达的意思,但不是完整的代码示例,所以针对这些不完整的代码,自己动手写出完整的代码示例。(1)在看这本书的同学,可以拿我这里的示例代码做个参考,并欢迎提出意见和建议;(2)示例的标号,是和书中的代码示例标号相对应的。
2024-01-18 10:26:09
648
原创 2-《Java并发编程实战》(Java Concurrency in Practice) 代码示例
这是针对《Java并发编程实战》(Java Concurrency in Practice)一书中的示例代码进行扩展,并且进行验证的完整代码,具体背景可看这篇文章:
2024-01-13 12:02:03
535
原创 1-《Java并发编程实战》(Java Concurrency in Practice) 代码示例
(摘自书中的原话)在基于Web的服务中,命中计数器值的少量偏差或许是可以接受的,在某些情况下也确实如此。但如果该计数器被用来生产数值序列或者唯一的对象标识符,那么在多次调用中返回相同的值将导致严重的数据完整性问题。这种由于不恰当的执行时许而出现的不正确的结果是一种非常重要的情况,它有一个正式的名字:竞态条件(Race Condition)。
2024-01-13 11:00:31
1370
1
原创 项目引入Jar包的几种方式
项目中如何引入外部jar包,即外部jar包不能通过maven坐标的方式引入时,如何把一个外部jar包引入到项目中。有哪几种方式
2024-01-02 20:43:33
3371
原创 关于JVM的垃圾回收GC的一些记录
JVM的垃圾回收GC的一些记录,包括JVM内存区域划分、GC作用的区域(堆内存)、如何确定一个对象是否可以被当成垃圾进行回收、垃圾回收算法有哪些、JVM相关参数等
2023-12-23 21:20:10
486
原创 SpringBoot之自定义Starter
SpringBoot之自定义Starter。完整演示如何自定义SpringBoot的场景启动器startr
2023-12-04 00:54:51
386
Java布局管理器的相关问题
2016-05-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人