- 博客(26)
- 收藏
- 关注
原创 Mybatis 中同一个mapper文件方法重载问题引发的生产事故
Mybatis 中同一个mapper文件方法重载问题引发的生产事故生产上遇到的问题问题描述:关于一个数量统计的问题,生产上给客户发送消息,统计发送失败的数量,结果发现发送失败数量往往大于消息数量的几倍甚至几十倍。问题排查:经过各种代码流程,消息触发日志等手段的分析排查,都没什么问题,头发即将掉光的时候,突然发现了更新消息发送失败数量的方法竟然有重载,终于抓住了一线希望,觉得重载似乎和这个问题没多少关系,但是这是唯一的突破点。所以闷着头,本地来一把调式,看看mapper重载的情况下,在加载和方法调用的
2021-11-03 19:25:25 1320 1
原创 ReentrantLock 源码分析总结
ReentrantLock 公平锁,非公平锁在加锁时候区别:非公平锁: 1. 加锁时候,直接上来就cas尝试获取锁; 2. 获取失败,acquire时候,如果同步器状态空闲,不管队列中是否有排队的线程,直接cas操作抢占锁。公平锁: 如果同步器状态空闲,先判断队列中是否含有排队的线程,没有则去抢占锁。非公平锁尝试获取锁代码: static final class NonfairSync extends Sync { final void lock() {
2021-10-21 18:15:10 128
原创 动态规划--硬币最优
三种硬币,2元、5元、7元,每种硬币足够多,买一本书需要27元,用最少的硬币组合package com.fenxiangbuy.scm.xdtools.common.utils;import cn.hutool.core.util.NumberUtil;/** * @Description TODO * @Date 2021/3/23 14:23 * @Created by renchengpeng */public class Test { public static voi
2021-03-23 17:30:09 432
原创 Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?
综上,各种对比之后,有如下建议:一般的业务系统要引入 MQ,最早大家都用 ActiveMQ,但是现在确实大家用的不多了,没经过大规模吞吐量场景的验证,社区也不是很活跃,所以大家还是算了吧,我个人不推荐用这个了;后来大家开始用 RabbitMQ,但是确实 erlang 语言阻止了大量的 Java 工程师去深入研究和掌控它,对公司而言,几乎处于不可控的状态,但是确实人家是开源的,比较稳定的支持,活跃度也高;不过现在确实越来越多的公司会去用 RocketMQ,确实很不错,毕竟是阿里出品,但社区可能有突然黄.
2020-11-24 16:25:39 522
原创 Java中BigDecimal类及8种舍入模式
package com.fenxiang.social.mall.sellerbase;/** * @Description TODO * @Date 2020/10/13 17:03 * @Created by renchengpeng */import java.math.BigDecimal;import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;public class
2020-10-13 17:48:58 254
原创 git 高级命令汇总
批量删除git远程分支命令git branch -r | grep 'release_202006' | sed 's/origin\///g' | xargs -I {} git push origin :{}本地分支设置描述信息git config branch.branch_name.description ‘描述信息’查看本地所有分支描述信息git config branch.branch_name.description查看本地所有分支描述信息git branch | xarg
2020-09-25 11:10:05 224
原创 MYSQL 死锁探究(一)
主键自增,唯一索引表结构:CREATE TABLE account (account_id bigint NOT NULL AUTO_INCREMENT COMMENT ‘主键’,user_id bigint NOT NULL DEFAULT ‘0’ COMMENT ‘用户Id’,balance varchar(255) NOT NULL DEFAULT ‘0.00’ COMMENT ‘余额’,status tinyint NOT NULL DEFAULT ‘1’ COMMENT ‘状态’,c
2020-07-31 14:56:10 494
原创 spring-boot中dubbo的配置冲突检测导致dubbo消费者的全局配置不生效
spring-boot中dubbo的配置冲突检测导致dubbo消费者的全局配置不生效首先,大概介绍下dubbo的配置冲突检测----DubboConfigBeanDefinitionConflictProcessor,主要是用来在项目启动时候,去检测项目中是否有多个org.apache.dubbo.config.ApplicationConfig配置。private void resolveU...
2020-01-19 19:11:09 6748 8
原创 spring boot 中mybatis plus的分页方式
spring boot 中mybatis plus的分页方式 ,总结了四种,三种是MP基于xml形式分页,第四种是基于MP的AR模式。service如下:/** * * 功能描述: MP基于xml形式分页--方式1 * * @param: * @return: * @auther: renchengpeng * @date:...
2019-08-16 15:25:20 461
原创 spring 对@Import注解的处理过程
Springboot对注解的处理都发生在AbstractApplicationContext -> refresh() -> invokeBeanFactoryPostProcessors(beanFactory) -> ConfigurationClassPostProcessor -> postProcessBeanDefinitionRegistry()方法中。(稍...
2019-08-12 16:08:53 1083
原创 SpringBoot ----深入探索SpringApplication执行流程
SpringBoot启动:每个SpringBoot程序都有一个主入口,也就是main方法,main里面调用SpringApplication.run()启动整个spring-boot程序,该方法所在类需要使用@SpringBootApplication注解,以及@ImportResource注解(if need),@SpringBootApplication包括三个注解,功能如下:@Enabl...
2019-08-07 11:21:37 165
原创 SpringBootApplication背后的秘密
@SpringBootApplication注解是Spring Boot的核心注解,它其实是一个组合注解:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentS...
2019-08-07 10:58:40 141
原创 @EnableAutoConfiguration解析
大家是否还记得Spring框架提供的各种名字为@Enable开头的Annotation定义?比如@EnableScheduling、@EnableCaching、@EnableMBeanExport等,如:@EnableScheduling是通过@Import将Spring调度框架相关的bean定义都加载到IoC容器。@EnableMBeanExport是通过@Import将JMX相关的be...
2019-08-07 10:55:25 514
原创 @Configuration解析
注解@Configuration对我们来说不陌生,它就是JavaConfig形式的Spring Ioc容器的配置类使用的那个@Configuration, SpringBoot社区推荐使用基于JavaConfig的配置形式,所以,这里的启动类标注了@Configuration之后,本身其实也是一个IoC容器的配置类。举几个简单例子回顾下,XML跟config配置方式的区别:(1)表达形式层面...
2019-08-07 10:27:21 725
原创 DUBBO扩展ExtensionLoader 之接口Wrapper实现剖析
起因,在服务接口的发布过程中,其中invoker会经过协议的导出后生成一个Exporter,如下图:上图代码中的 Exporter<?> exporter = protocol.export(invoker);这句代码里面会涉及到protocol的Wrapper 。其中的protocol是通过dubbo 的SPI机制动态生成的适配类产生的对象。其定义在ServiceConfig类中...
2019-08-01 17:57:55 300
原创 JDK 动态生成的代理对象在调用方法时,为什么总会掉我们实现的InvocationHandler接口里面的invoke方法
JDK 动态生成的代理类 查看在生成代理类前加入System.getProperties().put(“sun.misc.ProxyGenerator.saveGeneratedFiles”,“true”); 设置,即在Proxy.newProxyInstance(getClass().getClassLoader(), new Class[]{SpiTest.class}, new Invo...
2019-07-31 15:53:15 733
原创 springmvc 中关于配置相同url路径深度剖析
问题引入:生产环境查询推荐人列表信息查询不到(无任何报错信息,service中无日志打印,但是数据库中有相关数据)? 排查发现,项目中存在两个相同的(查询推荐人列表信息)url路径!!!!!!!为什么同一个项目中存在相同url路径,项目启动时候却不报错?首先,根据常识,在写一个接口时候,我们会尽量避免不会出现与之前相同的url路径,想着就算出现了相同的url路径,...
2019-07-30 18:28:09 981
转载 JVM--详解类加载机制
转载:https://blog.csdn.net/championhengyi/article/details/78680700Java虚拟机的体系结构前面我们探讨了Class文件的结构,如果你还没有学习,将不利于这部分知识的吸收与掌握,所以请移步:JVM–Class类文件结构(一)学习一个东西之前,我们务必要知道,这东西大概是干什么的,有什么作用。为了更清楚的阐释类加载机制到底是干什么的...
2019-07-18 16:12:27 192 1
原创 spring下的InitializingBean介绍
以SqlSessionFactoryBean 为例;在spring 启动时候,解析完各种BeanDefinition,进行一些bean工厂后置处理器,注册bean后置处理器等等操作后,会对单例的BeanDefinition进行实例化(原生对象和代理对象都在此创建)。创建 SqlSessionFactory bean 中,会调用InitializingBean的afterProper...
2019-07-12 16:50:46 275
原创 手撕Dubbo如何利用spring的扩展生成BeanDefinition(史上最全,结合spring启动)
spring 标签扩展机制抽象类NamespaceHandlerSupport介绍1.在spring中提供了标签扩展的抽象类NamespaceHandlerSupport,而Dubbo 则是在内部自定义了类DubboNamespaceHandler,继承spring 的NamespaceHandlerSupport。DubboNamespaceHandler的类继承关系如下:2. Name...
2019-06-24 18:31:07 882 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人