【问答式的】

一些需要研究的疑问,以及之后的一些解答。绿色代表已经解决,黄色代表还有部分疑惑,红色代表暂未解决。

问:测试mybatis缓存时,虽然清除掉了缓存,但是每次结果对象生成的hashcode值都一样,怎么每次都是同一个结果?即使是用普通的对象测试也是如此。

答:hashcode()底层是native方法c++实现的,值的生成并没有考虑到对象的地址,因此只要两个对象的各个字段值一样,那么其生成的hashcode值就必定一样。使用equals进行比较两个对象的话,也只是比较各个字段的值,如果相同则为true。如果用==比较的话,那么比较的就是对象的地址


问:在微服务中,服务的提供方模块被分为两个子模块,一个子模块中只有接口,另一个模块中有具体实现,而服务的消费方模块仅需导入只有接口的模块。为什么服务可以成功调用?为什么要这么做?

答:可能是jvm的类加载机制使得它可以成功或者是spring框架所提供的bean工厂的注入,之所以这么做,应该是可以提高效率,至于为什么,应该还是与jvm有关。


问;在seata的事务管理中,数据操作之前和之后的镜像都保存在undo_log表,所有分支都没有问题才会commit,若有一个则回滚。那么假如一个事务有4个分支,执行第3个的分支时有问题,此时前两个分支的操作是执行在了真实的数据库中还是在虚拟的数据库表中?

答:为什么会认为存在虚拟的数据表?

再答;如果不存在一张表来检测一个sql语句是否成功执行的话,那么commit这个操作就是多余的,每条指令直接在数据库中操作,如果失败,可以通过日志文件逐条回滚,所以每个分支都会在真实的数据库中执行。

答;应该还有问题。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值