Spring使用TransactionalEventListener解决事务未提交读取不到数据问题

背景在项目中,往往需要执行数据库操作后,发送消息或事件来异步调用其他组件执行相应的操作,例如:用户注册后发送激活码;配置修改后发送更新事件等。但是,数据库的操作如果还未完成,此时异步调用的方法查询数据库发现没有数据,这就会出现问题。伪代码如下:void ...

阅读全文



「Elasticsearch」ES重建索引怎么才能做到数据无缝迁移呢?

背景众所周知,Elasticsearch是⼀个实时的分布式搜索引擎,为⽤户提供搜索服务。当我们决定存储某种数据,在创建索引的时候就需要将数据结构,即Mapping确定下来,于此同时索引的设定和很多固定配置将不能改变。那如果后续业务发生变化,需要改变数据结...

阅读全文



Java的动态绑定和静态绑定

引言在Java方法调用的过程中,JVM是如何知道调用的是哪个类的方法源代码呢?这就涉及到程序绑定这个概念。程序绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对Java来说,绑定分为静态绑定和动态绑定;或者叫做前期绑定和后期绑定。静态绑定在程...

阅读全文



JVM知识点汇总

JVMClass文件结构魔数:唯一作用是用于确定这个文件是否为一个能被虚拟机接受的Class文件。版本号:确定Class文件编译器版本,低版本的虚拟机不能运行高版本编译器编译的Class文件。常量池:字面量符号引用访问标志:用于识别一些类或接口层次的访问...

阅读全文



Java Object.hashCode()返回的是对象内存地址?

基于OpenJDK 8一直以为Java Object.hashCode()的结果就是通过对象的内存地址做相关运算得到的,但是无意在网上看到有相应的意见争论,故抽时间从源码层面验证了剖析了hashCode的默认计算方法。先说结论:OpenJDK8 默认ha...

阅读全文