3 Mr Xiang

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 29w+

项目扩展性设计原则

http://baijiahao.baidu.com/s?id=1589208155817565299&wfr=spider&for=pc

2020-07-02 18:34:16

synchronized

用户态与内核态JDK早期,synchronized 叫做重量级锁, 因为申请锁资源必须通过kernel, 系统调用;hello.asm;write(int fd, const void *buffer, size_t nbytes)section data msg db "Hello", 0xA len equ $ - msgsection .textglobal _start_start: mov edx, len mov ecx, msg

2020-06-12 18:11:04

dubbo服务暴露简版总结

dubbo服务导出1.serviceBean实现了ApplicationListener接口,当spring刷新上下文的时候,会回调onApplicationevent事件2.是否延迟导出,执行export方法3.执行父类ServiceConfig的export方法,4.执行doExport5.执行doExportUrl导出服务6.执行doExportUrlForProtocol为每个协议下面导出服务7.执行RegisteyProtocol里面的export方法,将服务者链接包装成invoke

2020-06-02 18:50:14

Dubbo调用过程

对于接口方法,我们可以按照需求标注 Adaptive 注解。在获取实现类的过程中,如果某个实现类被 Adaptive 注解修饰了,那么该类就会被赋值给 cachedAdaptiveClass 变量。以 Protocol 接口为例,该接口的 destroy 和 getDefaultPort 未标注 Adaptive 注解,其他方法均标注了 Adaptive 注解。Dubbo 不会为没有标注 Adaptive 注解的方法生成代理逻辑,对于该种类型的方法,仅会生成一句抛出异常的代码。Registry.

2020-05-20 15:21:38

Runnable+线程池

1.创建线程池 private ExecutorService executor; /** *启动项目的同时创建线程池 */ @PostConstruct private void initThreadPool() { executor = new ThreadPoolExecutor(5, 10, 1000, TimeUnit.SECONDS, linkedBlockingQueue);.

2020-05-20 10:20:36

Callbale+线程池

一创建线程池和Callable任务1.创建线程池//创建线程池public class ThreadExecutors { /** * 初始化线程池 */ static ThreadPoolExecutor pool = initExecutorPool(); public static String ThreadResult(Req req) { String respMsg = null; Future&lt.

2020-05-20 10:12:51

5-dubbo服务字典

1. 简介本篇文章,将开始分析 Dubbo 集群容错方面的源码。集群容错源码包含四个部分,分别是服务目录 Directory、服务路由 Router、集群 Cluster 和负载均衡 LoadBalance。这几个部分的源码逻辑相对比较独立,我们将会分四篇文章进行分析。本篇文章作为集群容错的开篇文章,将和大家一起分析服务目录相关的源码。在进行深入分析之前,我们先来了解一下服务目录是什么。服务目...

2020-05-08 14:58:38

2-dubbo自扩展适应

1.原理在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等。有时,有些拓展并不想在框架启动阶段被加载,而是希望在拓展方法被调用时,根据运行时参数进行加载。这听起来有些矛盾。拓展未被加载,那么拓展方法就无法被调用(静态方法除外)。拓展方法未被调用,拓展就无法被加载。对于这个矛盾的问题,Dubbo 通过自适应拓展机制很好...

2020-05-08 15:00:12

1-dubboSPI

1.简介SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。SPI 机制在第三方框架中也有所应用,比如 Dubbo 就是通过 SPI 机制加载所有的组件。...

2020-05-08 14:59:29

3-dubbo服务导出

1.简介本篇文章,我们来研究一下 Dubbo 导出服务的过程。Dubbo 服务导出过程始于 Spring 容器发布刷新事件,Dubbo 在接收到事件后,会立即执行服务导出逻辑。整个逻辑大致可分为三个部分,第一部分是前置工作,主要用于检查参数,组装 URL。第二部分是导出服务,包含导出服务到本地 (JVM),和导出服务到远程两个过程。第三部分是向注册中心注册服务,用于服务发现。本篇文章将会对这三...

2020-05-08 15:01:11

4-dubbo服务导入

1. 简介上一篇文章详细分析了服务导出的过程,本篇文章我们趁热打铁,继续分析服务引用过程。在 Dubbo 中,我们可以通过两种方式引用远程服务。第一种是使用服务直连的方式引用服务,第二种方式是基于注册中心进行引用。服务直连的方式仅适合在调试或测试服务的场景下使用,不适合在线上环境使用。因此,本文我将重点分析通过注册中心引用服务的过程。从注册中心中获取服务配置只是服务引用过程中的一环,除此之外,...

2020-05-08 15:02:00

6-dubbo路由配置

1. 简介上一篇文章分析了集群容错的第一部分 — 服务目录 Directory。服务目录在刷新 Invoker 列表的过程中,会通过 Router 进行服务路由,筛选出符合路由规则的服务提供者。在详细分析服务路由的源码之前,先来介绍一下服务路由是什么。服务路由包含一条路由规则,路由规则决定了服务消费者的调用目标,即规定了服务消费者可调用哪些服务提供者。Dubbo 目前提供了三种服务路由实现,分...

2020-05-08 14:57:35

7-dubbo集群

1.简介为了避免单点故障,现在的应用通常至少会部署在两台服务器上。对于一些负载比较高的服务,会部署更多的服务器。这样,在同一环境下的服务提供者数量会大于1。对于服务消费者来说,同一环境下出现了多个服务提供者。这时会出现一个问题,服务消费者需要决定选择哪个服务提供者进行调用。另外服务调用失败时的处理措施也是需要考虑的,是重试呢,还是抛出异常,亦或是只打印异常等。为了处理这些问题,Dubbo 定义...

2020-05-08 14:56:45

8-dubbo负载均衡

1.简介LoadBalance 中文意思为负载均衡,它的职责是将网络请求,或者其他形式的负载“均摊”到不同的机器上。避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况。通过负载均衡,可以让每台服务器获取到适合自己处理能力的负载。在为高负载服务器分流的同时,还可以避免资源浪费,一举两得。负载均衡可分为软件负载均衡和硬件负载均衡。在我们日常开发中,一般很难接触到硬件负载均衡。但软件负载均衡...

2020-05-08 14:55:54

9-dubbo服务调用

1. 简介在前面的文章中,我们分析了 Dubbo SPI、服务导出与引入、以及集群容错方面的代码。经过前文的铺垫,本篇文章我们终于可以分析服务调用过程了。Dubbo 服务调用过程比较复杂,包含众多步骤,比如发送请求、编解码、服务降级、过滤器链处理、序列化、线程派发以及响应请求等步骤。限于篇幅原因,本篇文章无法对所有的步骤一一进行分析。本篇文章将会重点分析请求的发送与接收、编解码、线程派发以及响...

2020-05-08 14:54:27

dubbo调用过程

完成了服务的初始化之后,生成了代理,生成的动态代理类对接口的方法进行了包装,每次调用都会调用到InvocationHandler的invoke()方法,此方法中会进行远程服务调用一些列复杂过程,诸如网络通信,编码,解码,序列化等,然后将结果返回。在InvokerInvocationHandler.invoker()方法中,最后调用invoker.invoke(new RpcInvocation(m...

2020-05-08 15:24:06

idea项目出现 Cannot resolve symbol XXX

早上起来打开idea,代码出现大面积爆红,依赖无法导入,解决方式如下1.点击idea的 File->Invalidate Caches/Restart2.重新reimport 完美解决

2020-05-05 10:04:35

lambda表达式总结

一、Java 8 Lambda 表达式Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用Lambda 表达式可以使代码变的更加简洁紧凑。1.1 语法lambda 表达式的语法格式如下:(parameters) -> expression或(parameters) -...

2019-12-01 09:34:09

数据库连接池二

https://zhuanlan.zhihu.com/p/57312091

2019-03-29 10:23:40

数据库连接池一

https://zhuanlan.zhihu.com/p/57311756

2019-03-29 10:26:18

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到达人
    签到达人
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv3
    阅读者勋章Lv3
    授予在CSDN APP累计阅读博文达到30天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。