聊聊spring事务的propagation

2023-09-13
阅读 9 分钟
473
spring事务定义了Propagation枚举,主要有REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER、NESTED

聊聊spring的UnexpectedRollbackException

2023-09-12
阅读 12 分钟
550
UnexpectedRollbackException继承了TransactionException,一般是事务嵌套,内层事务抛出了异常,外层事务给catch住了,然后试图提交事务报错

聊聊spring的TransactionalEventListener

2023-09-11
阅读 12 分钟
2.9k
TransactionalEventListener是EventListener的事务感知版本,默认的是TransactionPhase是AFTER_COMMIT

聊聊TransactionSynchronization的invokeAfterCompletion

2023-09-10
阅读 7 分钟
1.1k
org/springframework/transaction/support/TransactionSynchronization.java

聊聊spring的TransactionSynchronizationAdapter

2023-09-09
阅读 8 分钟
1.3k
使用TransactionSynchronizationManager.registerSynchronization注册了一个TransactionSynchronizationAdapter,在其afterCommit方法也就是事务提交成功之后执行一些额外逻辑

聊聊springboot的ConfigurationProperties的绑定

2023-09-07
阅读 11 分钟
813
org/springframework/boot/context/properties/ConfigurationPropertiesBindingPostProcessor.java

聊聊如何获取PreparedStatement的参数

2023-09-06
阅读 12 分钟
883
PreparedStatement继承了Statement接口,它主要是多定义了一系列的set方法,但是没有定义get方法,只是定义了getParameterMetaData方法返回ParameterMetaData

聊聊ShardingSphere是怎么进行sql重写的

2023-09-05
阅读 25 分钟
791
org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java

聊聊mysql jdbc的prepareStatement

2023-09-04
阅读 22 分钟
1.1k
mysql-connector-java-5.1.21-sources.jar!/com/mysql/jdbc/ConnectionImpl.java

聊聊jasypt的IVGenerator

2023-09-03
阅读 11 分钟
2.8k
IVGenerator定义了generateIV及includePlainIVInEncryptionResults方法,它有三个实现类,分别是NoOpIVGenerator、StringFixedIVGenerator、RandomIVGenerator

聊聊jasypt的SaltGenerator

2023-09-02
阅读 9 分钟
2.3k
SaltGenerator接口定义了generateSalt及includePlainSaltInEncryptionResults方法,其中generateSalt方法根据指定的长度参数来生成salt,而includePlainSaltInEncryptionResults则返回是否需要将salt包含在加密结果中,通常对于随机生成的需要返回true,对于固定salt的则不需要,它有几类,分别是FixedSaltGenerator、Ze...

聊聊Jasypt的StandardPBEByteEncryptor

2023-09-01
阅读 11 分钟
900
Jasypt即Java Simplified Encryption,它主要是简化项目加解密的工作,内置提供了很多组件的集成,比如hibernate、spring、spring-security等

聊聊PBE算法

2023-08-31
阅读 2 分钟
2.5k
PBE即Password Based Encryption,基于口令的加密,它是一种组合算法,即一般是哈希+对称算法,比如PBEWithMD5AndDES,就是用MD5做哈希,用DES做加解密,而其密钥则是口令+salt基于哈希函数计算而来

聊聊mybatis的Interceptor机制

2023-08-30
阅读 11 分钟
979
Interceptor定义了intercept方法,其参数为Invocation类型,同时默认提供了plugin方法,通过Plugin.wrap(target, this)进行包装

mybatis的MappedStatement是线程安全的吗

2023-08-29
阅读 8 分钟
678
序本文主要研究一下mybatis MappedStatementMappedStatementorg/apache/ibatis/mapping/MappedStatement.java {代码...} MappedStatement定义了SqlSourceMappedStatement.Builder {代码...} MappedStatement定义了一个Builder用于构造MappedStatementMapperBuilderAssistantorg/apache/ibatis/builder/MapperBuilderAssi...

聊聊mybatis的ParamNameResolver

2023-08-28
阅读 3 分钟
1k
在mybatis的interceptor获取MapperMethod.ParamMap这种参数类型时,经常会多出param1,param2,collection,list,array这些参数,这些不是接口自己定义的,而是ParamNameResolver自动添加的

聊聊mybatis-plus的sql加载顺序

2023-08-27
阅读 16 分钟
1.5k
com/baomidou/mybatisplus/extension/spring/MybatisSqlSessionFactoryBean.java

聊聊mybatis-plus的SafetyEncryptProcessor

2023-08-26
阅读 3 分钟
1.2k
mybatis-plus-boot-starter/src/main/java/com/baomidou/mybatisplus/autoconfigure/SafetyEncryptProcessor.java

聊聊springboot的启动事件

2023-08-25
阅读 9 分钟
1.1k
SpringApplicationEvent继承了ApplicationEvent,它有几个子类分表是ApplicationStartingEvent、ApplicationEnvironmentPreparedEvent、ApplicationContextInitializedEvent、ApplicationPreparedEvent、ApplicationStartedEvent、ApplicationReadyEvent,期间有异常则抛出ApplicationFailedEvent

聊聊springboot的EnvironmentPostProcessor

2023-08-24
阅读 6 分钟
1.4k
springboot提供了EnvironmentPostProcessor接口,该接口有postProcessEnvironment方法,其中envrionment参数类型为ConfigurableEnvironment,即应用可以通过实现这个接口进行env环境变量的操作

聊聊如何解析pom文件

2023-08-23
阅读 3 分钟
1.3k
序本文主要研究一下如何解析pom文件maven-modelmaven提供了maven-model的类库可以直接解析 {代码...} 使用 {代码...} 使用MavenXpp3Reader可以直接读取pom文件,之后就可以得到ModelModelmaven-model-3.9.4-sources.jar!/org/apache/maven/model/Model.java {代码...} Model继承了ModelBaseModelBasemaven-model-3.9.4-s...

聊聊springboot的Customizer

2023-08-22
阅读 5 分钟
1.2k
序本文主要研究一下springboot的CustomizerTaskExecutorCustomizer {代码...} 之后再构造的时候通过ObjectProvider获取即可 {代码...} TaskSchedulerCustomizer {代码...} RestTemplateCustomizer {代码...} 小结springboot提供了很多Customizer接口方便用户自行扩展,非常值得设计组件的时候使用

聊聊TaskExecutorMetricsAutoConfiguration

2023-08-21
阅读 8 分钟
1.3k
springboot2.6.0版本提供了TaskExecutorMetricsAutoConfiguration,可以自动给线程池加上metrics

聊聊java的java.security.egd

2023-08-18
阅读 6 分钟
1.4k
/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/src.zip!/sun/security/provider/SunEntries.java

聊聊springboot tomcat的maxHttpFormPostSize

2023-08-17
阅读 16 分钟
1.7k
tomcat-embed-core-9.0.37-sources.jar!/org/apache/catalina/connector/Request.java

聊聊elasticsearch的data-streams

2023-08-06
阅读 4 分钟
1.3k
首先data streams是由一个或者多个自动生成的隐藏索引组成的,它的格式为.ds-<data-stream>-<yyyy.MM.dd>-<generation>示例.ds-web-server-logs-2099.03.07-000034,generation是一个6位的数字,默认从000001开始

使用filebeat收集并解析springboot日志

2023-08-05
阅读 4 分钟
2k
序本文主要研究一下如何使用filebeat收集并解析springboot日志安装在官网的下载页面filebeat/downloads提供了一些特定平台的安装包,不过对应linux最为省事的安装方式就是直接下载x86_64压缩包,然后解压即可 {代码...} 解析filebat.yml主要有input和output组成json比如对于json格式的日志,其input示例如下 {代码...} ...

聊聊被AI坑到的经历

2023-08-04
阅读 3 分钟
1.3k
序本文主要介绍一下被AI坑到的经历经历1之前写聊聊如何自定义parallelStream的线程池这篇文章的时候,就被坑了一下。起初我是搜索了一下,发现需要类似如下使用: {代码...} 这种方式总感觉不太优雅,而且也不太好直观看出来实现原理,在submit里头用parallel就可以了?后来我用某gpt问了一下,给了如下答案,心想这个靠...

使用kind在mac本地搭建k8s及istio

2023-07-31
阅读 4 分钟
1.7k
之前使用multipass装ubuntu,然后再用microk8s搭建k8s,这会直接用orbstack及kind在本地搭建k8s及istio

jenkinsfile小试牛刀

2023-07-29
阅读 2 分钟
441
这里定义了Build,它先是git拉取代码,然后执行mvn进行编译,最后在post部分在状态为success时使用junit显示测试报告,并归档jar包