3 赵润泽同学

尚未进行身份认证

暂无相关简介

等级
TA的排名 15w+

业务、线程、虚拟机、通信框架等对异常的处理

一. 前言异常是开发中,非常常见的。异常在不同的场景中,有不同的作用。本文就聊一聊,在 java 应用、线程、第三方框架等场景中,对异常常见的处理方式。二. 语言场景下的异常首先是超类 java.lang.Throwable ,超类有两种类型的子类,一类是 java.lang.Error ,一类是 java.lang.Exception 。前者是用来描述 java 内部在运行时出现错误或者资源耗尽情况,不应该被 catch 捕获。后者分为两种情况,一种是 java.lang.RuntimeExcept

2020-05-26 21:21:51

【Feign源码解析】feign 源码解析

一. 前言看 feign 源码有一个有趣的感受,feign 利用 spring 或者说与 spring 结合的方式,和 mybatis 是一样的,真是天下代码一大抄。先附上 feign 项目提供的示例,非常的全,藏在 github 仓库中,不看源码都没发现。。。feign官方示例二. feignclient bean 被代理的方式首先从 springboot 的启动项看起,springb...

2020-04-22 20:21:20

【MyBatis源码解析】spring-mybatis 源码解析

一。前言人们总是一边追逐一边回味。既要研究大型分布式框架,单机的优秀框架也不能错过。二。重要设计每次使用 mybatis,都会引入 mybatis-spring 包,并且设置两个bean‘,SqlSessionFactoryBean 和 MapperScanConfigurer,并且把 SqlSessionFactoryBean 当作属性,注入 MapperScanConfigurer。Sq...

2020-04-12 20:31:55

【中间件常用写法】一些设计上的基本常识

前一段时间,尝试过总结中间件的写法,奈何见识太少,总是不能清晰的抽象出来。后来偶然间看到梁飞大佬的博客,读来有醍醐灌顶之感,大佬在九年前就总结出来一套模型了和一些常见的写法示例,非常清晰。在这里放一些大佬的博客链接:一些设计上的基本常识:一些设计上的基本常识。大佬的 核心域、服务域、会话域的划分,和我前一篇博客想表达的一样,只不过我没总结好,不够清晰。还有 api 和 spi 分离,中间件...

2020-03-31 20:11:20

【SEATA源码分析】记一次 pr

一 . 导读为什么为想起来贡献 pr 呢?在写这个 pr 之前,研究了一个多月 seata 源码,看的多了手就痒了,恰好又看到了社区的 issues ,于是就动手了。二. pr 相关pr 内容:参与方回滚,地址。由参与方通知TC回滚,可以提前结束全局事务并释放锁,提高seata事务的吞吐量;至于发起方可以接收参与方抛出的约定异常,不再通知TC,直接结束。这里简单介绍一下现如今的做法,只有发...

2020-03-16 16:11:48

【SEATA源码分析】 配置相关源码解析

一 . 导读在实例化的时候通过 ConfigurationFactory 获取后作为参数注入的,需要重启才能生效,而在使用时通过 ConfigurationFactory 获取的,配置改了就可以生效。但是 config模块 提供了 ConfigurationChangeListener#onChangeEvent 接口方法,实例化了的类,可以通过实现这个接口方法,监听动态变化的属性,如果检测到...

2020-01-10 22:11:55

【SEATA源码分析】 core 模块源码解析

一 . 导读core 模块定义了事务的类型、状态,通用的行为,client 和 server 通信时的协议和消息模型,还有异常处理方式,编译、压缩类型方式,配置信息名称,环境context等,还基于 netty 封装了 rpc ,供客户端和服务端使用。按包顺序来分析一下 core 模块主要功能类:codec:定义了一个 codec 的工厂类,提供了一个方法,根据序列化类型来找对应的处理类。...

2019-12-14 15:34:15

【SEATA源码分析】 rm-datasource 模块源码解析

一 . 导读前几篇模块分析的时候说到,spring模块中的 GlobalTransactionScanner 实现了InitializingBean 这个接口类,重载 postProcessAfterInitialization() 方法,在这个方法中,判断被扫描的bean是否是 DataSource 类型,如果是,用 DataSourceProxy 替换。而 @GlobalTransact...

2019-12-02 23:27:36

【SEATA源码分析】 tm 模块源码解析

一 .导读首先放一张tm模块的主要类关系图:从图中可以很明显的看出,模块暴露出去的类是 TransactionalTemplate ,模板类中找 GlobalTransactionalContext 类获取业务业务类,而业务类持有了一个 TrancationManagerHolder 类,即由 TransactionManager 的实现类封装成的单例持有类,holder 通过SPI的方式加...

2019-11-30 11:44:11

【SEATA源码分析】 tcc 模块源码解析

一 .导读上一篇讲到,Seata的spring模块对bean进行处理,当GlobalTransactionalScanner 扫描到TCC服务的 ‘reference’ 时,对其进行动态代理,即给bean织入对应事务模式的MethodInterceptor 的实现类。TCC的实现类就是TccActionInterceptor ,在实现类中,调用TCC模式的事务处理方法,TCC 模块 主要功能...

2019-11-24 23:11:49

【SEATA源码分析】spring 模块源码解析

一. 导读spring是java开发必备框架,类一般都是通过spring进行管理。那spring之外的框架,尤其是想使用spring代理的类的框架,如何借助spring的扩展方式来操作bean?这篇文章主要分析seata如何借助spring扩展点对代理的bean进行操作,最终生成自己的数据库代理bean和织入interceptor。二. Spring模块主要类解析这儿是spring模...

2019-11-21 10:41:24

【中间件常用写法】中间件如何加载和控制类

一. 导读每一个框架都有客户端和服务端,一般客户端只需要引入一个包,然后通过注解自动开启客户端,这是如何左到的?有的框架,比如 Seata 没有引入 spring ,就无法使用 spring 的注解来定义bean,那么它是如何管控实例的?...

2019-11-07 14:45:18

【中间件常用写法】中间件架构中常用模型详解

一.写在前面源码看的多了,就会感觉到很多架构都有相似的地方,许多操作都有其通用性。就像框架中的一些组件,以及他们承担的责任,都有相似的地方,这篇博客就来分析一下组件中通用类的作用。二.组件中通用类分析首先我们看一下现在很流行的seata框架,它的全局事务的控制是如何做到的:这是seata的整体架构图,细节很多,主要说一下每个Microservice如何管控自己的Branch事务分支并与TC...

2019-11-03 12:21:51

springboot,接阿里云消息rocketmq (二),优雅的使用mq

上一篇文章仅仅使用了CommandLineRunner和@Configuration、@component等注解,如果仅仅是自己玩足够了,但是用在生产,实在不够优雅。再加上,之前玩过rabbitmq的starter,于是想弄一个rocketmq的starter。不想重复造轮子,于是谷歌了一下,发现alibaba开源了一个starter,扩展spring-cloud-stream,优雅的进行mq的...

2019-03-25 15:12:47

springboot,接阿里云消息rocketmq (一)

首先上一张rocketmq的架构图:Rocket主要使用两个组件:Name Server和Broker。Name Server:mq的寻址服务。用于把mq的Broker路由信息做聚合。客户端通过name server去获取topic的路由信息,从而决定对哪些Broker做连接。nameserver是无状态的,互相之间不通信息,客户端寻找nameserver是,随机选一个进行连接,namese...

2019-01-20 12:26:07

微信wap第三方登陆,springboot框架

首先,这里有个坑,微信开放平台和微信公众平台不是一回事。wap端登陆属于微信公众号的功能,而网页端第三方登陆才是微信开放平台的功能。附上微信公众平台的开发者文档地址:添加链接描述。首先要配置好微信公众号,这里还要区分一下订阅号和服务号。订阅号:每个月可以发的消息比较多,但是没有第三方登陆和支付的功能。服务号:可以有登陆支付等功能。配置服务号的时候要仔细看文档,在配置token验证地址的时...

2018-12-14 14:21:31

springboot中使用quartz进行定时任务操作

在springboot中使用quartz进行定时结算操作,并使用feign跨服务调用数据。

2018-11-22 12:04:41

将springcloud项目打成war包部署到tomcat中

1.首先把jar包改成war包,然后把内嵌的tomcat去掉<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLo...

2018-10-11 12:02:55

springcloud中组件feign使用研究记录

feign请求有两种方式:第一种,注解中直接使用spring.application.name,就是注解中name直接等于被调用的项目的name名。@FeignClient(name="clientname")public interface GoodsRemote @RequestMapping(method = RequestMethod.POST , value = "/ss...

2018-09-26 17:15:58

阿里云oss对象服务器操作研究

给阿里云上传内容(图片、视频、word等等)。 首先需要引入阿里云提供的包,然后就可以使用阿里云oss提供的api进行操作。 <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</art...

2018-08-02 11:04:31

查看更多

勋章 我的勋章
  • 图书勋章
    图书勋章
    CSDN技术图书作者专属勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。