java
文章平均质量分 60
法号大威天龙
哼!雕虫小技,竟敢班门弄斧,大威天龙!
展开
-
Invalid bound statement (not found) 异常分析
异常Invalid bound statement (not found)结论Mybatis 特殊字符未转义,导致SQL解析异常。原因在csdn上转了一圈,都是讲名字不对什么的,但是我这里根本没有XML文件,我这边是使用注解@Select,(至于为什么使用,为了保持团队风格统一),我也是第一次使用这玩意儿,简单的SQL写起来没啥问题,也少了很多成对的标记。。。扯远了,回到问题。百度无果后,然后打开vpn 去Google了一波(就应该一开始就使用Google的,大雾),看见下面这篇:https:原创 2020-12-28 00:02:27 · 263 阅读 · 0 评论 -
Transaction rolled back because it has been marked as rollback-only 异常分析
问题最近上线了一个新功能,在某个特定场景下保存数据时,一直提示Transaction rolled back because it has been marked as rollback-only异常。结论先说结论,**是因为@Transactional 注解使用的有问题。**我们这个case下将其中一个类上的@Transactional注解去掉就好了。问题是解决了,但是原因呢?得扒一扒。原因首先,再回顾下事务传播机制:https://blog.csdn.net/qq_17085835/arti原创 2020-12-27 23:47:01 · 20289 阅读 · 1 评论 -
rocketMQ的consumer 源码分析 -事务消息(5)
概述应用程序会有这样的场景,完成本地事务后,需要发布事件已完成的消息。消息完成和事务是两个操作,如何保证两个操作保持一致,就是下面要展开的。通过事务,让应用依赖若干实用的抽象保证,没有竞态条件,没有磁盘问题,事务隐藏了这些问题,应用无需担心这些问题。分布式事务有很多种实现:例如两阶段提交、三阶段提交等今天来分享一下rocketMQ的事务消息实现机制对于应用程序来说,执行流程是这样的开启本地事务发送prepare消息prepare消息成功后执行本地事务,并保存事务和消息的关系,如果成功则通原创 2020-12-21 00:17:22 · 196 阅读 · 0 评论 -
rocketMQ的consumer 源码分析 -消息拉取(4)
rocketMQ的consumer 源码分析概述消费者的启动流程消息拉取核心类pullRequest:拉取消息的请求ProcessQueue :消息在消费者端的快照核心属性消息拉取的基本流程这里的问题拉取到了为何消息结果还是为空?那么问题来了,什么时候拉取偏移量会不合法?概述消息消费是以消费组为单位,消费组可以订阅多个主题。每个消费组有两种模式,1.广播模式,一条消息被集群内的所有消费者消费;2.集群模式,同一条消息只能被所有消费者消费一次。消息传递的方式有两种,推模式和拉模式。推模式是在拉模式上包了一原创 2020-12-05 13:15:02 · 562 阅读 · 0 评论 -
LocalCache模版类实现
缓存和真实请求有一些关系,却又不是那么密切,Spring的缓存注解使用起来总是有那么一丝丝不顺滑。场景是:给外部的RPC接口加上本地1小段时间的cache,提升本系统的吞吐量注解不能很好解决的问题如下:查询的接口同时是写入缓存的接口缓存key不想使用表达式获取不同类型的缓存要放到不同的桶里面不同的桶要定制大小,过期时间监控报告,线上的东西一定要有监控需要支持Apollo 配置开启和关闭各个cache桶的功能综上,所以自己写一个适合的缓存模版类吧/** * localCache 模版原创 2020-10-31 16:09:01 · 125 阅读 · 0 评论 -
spring bean 的生命周期一览
我们就从最先执行的setBeanName开始一览,spring bean 的生命周期setBeanName 的执行流程先看一波 debug 栈的截图先是registerBeanPostProcessors这个都熟悉,接下来是 getBean相关的,不关心,我们关心初始化的时候干了嘛,那就从 createBean 开始看起,一定要记着这个时候类的构造方法已经调用过了哦。createBean方法开始有很多 check ,接着下面这句,猜测是跟代理初始化相关的,我们没添加代理,先放过// Give B原创 2020-06-30 00:14:42 · 178 阅读 · 0 评论 -
Mockito可以做哪些事情
Mockito可以做哪些事情1.验证行为 @Test public void verify_behaviour() { List mock = mock(List.class); // 使用mock对象执行操作 mock.add(1); mock.clear(); // 验证操作是否执行 verify(mock).clear(); verify(mock).add(1);原创 2020-06-04 23:12:31 · 412 阅读 · 0 评论 -
RPC极简单实现
为什么有了HTTP还要使用RPCHTTP是被设计用来在桌面浏览器上的 HTTP是无状态的、每次传输都需要携带报文头,会造成一部分额外的网络开销 适用于接口不多的情况下,简单,直接; RPC会有注册中心,有丰富的监控中心,提供软负载均衡,动态扩展,还有安全等最重要的一点,RPC是一套理论,使用HTTP协议也可以实现RPC,RPC是解耦的一种方式!!!RPC需要解决的问题服务调用问...原创 2018-09-24 20:30:42 · 242 阅读 · 0 评论