自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 梳理Dubbo扩展的理解

不得不扩展从SPI说起ExtensionLoader验证自定义协议不得不扩展Dubbo分为很多逻辑层,对于各个层的接口,Dubbo都提供了很多种的实现, 对于需要满足很多使用个性需求的框架来说,单单是多提供几个实现是不够的。 重要的是需要在框架设计层面有一个好的解决方案,能让框架能应对不断扩张的需求。 这样才能在不改动最原始逻辑的基础上,不断丰富框架的...

2018-03-20 16:30:47 482

原创 Dubbo的扩展机制

Dubbo的扩展机制Dubbo扩展原理ExtensionLoader的设计和实现方式自定义扩展例子Dubbo的扩展原理Dubbo采用的是内核+扩展的体系结构,除了Service和Config层,其他层的功能都是可扩展的(Proxy、Registry、Cluster、Monitor、Protocol、Exchange、Transport、Serialize)。...

2018-03-19 18:01:30 1756

原创 Motan客户端源码阅读

本文着重从源码的角度探究Motan客户端的如下几个方面:客户端的使用客户端的实现之前了解了一些Motan的服务启动的底层代码,了解到服务端其实是在Netty服务的基础上绑定处理Handler并且进行包装,以motan协议为通讯方式,并最终监听在发布端口上。 本篇将涉及到以上几个关键点,分析(走马观花),如有纰漏,望乞斧正:客户端的配置Motan客户端的结合Spri

2018-02-02 17:55:13 546

原创 再谈Motan服务的启动

之前简要地过了一遍Motan服务的启动过程,感觉理解得还不够清楚,所以接下来会就有疑惑的几个点来做一次分析。 和之前一样,以Motan服务的启动为依托,分析启动过程中的几个重要节点以及类,以此来窥探Motan服务端的设计架构和原则。ExtensionLoaderURLConfigHandlerExporterProviderProtocolEndpointFacto

2018-01-22 18:40:09 1871

原创 Motan服务的启动

Motan是新浪于2016年开源的一个RPC框架,类似的已有的RPC框架有像阿里开源的Dubbo,还有后来在此基础上做二次开源的当当网的dubbox。 Motan分为服务提供方和服务调用方,服务提供方发布服务,服务调用方调用服务。 看这样一个简单的例子: 1、创建一个接口,并且简单实现:public interface FooService { public String h

2018-01-21 19:29:32 4211 1

原创 Spring配置文件解析

解析配置解析配置,是Dubbo服务启动的第一步,基于Spring配置结合的框架都是从这一步开始启动的(包括之前提到的Motan); Dubbo官方文档中提到: 初始化过程的第一步是从解析服务开始的,基于 dubbo.jar 内的 META-INF/spring.handlers 配置, Spring 在遇到 dubbo 名称空间时,会回调 DubboNamespaceHandl

2018-01-11 17:28:16 196

原创 Spring Boot初体验

Spring Boot 入门例子和说明刚接触Spring Boot,记录一些简单入门的知识点; Spring Boot能让我们以最简单的方式创建独立的、产品级别的基于Spring的应用。 本文大部分内容来自spring boot的官方文档,以及Youtube的入门讲解. 总的来说,你可以用很少的配置,并且以很简单优雅的方式启动你的Spring Boot应用。Spring Bo

2017-10-06 00:47:47 366

原创 B-Tree / B+Tree 结构以及MySQL索引

对MySQL的索引相关的问题以前一直是空白,最近了解了下树和索引之间的关系,对这方面有了新的认识,留下一些笔记。B-树B-树不一定是二叉树,B树是一种平衡树,它的高度是固定的; B树是一种多路查找树,也就是说它的节点上有多个存储的值;BTree每个节点存储的数据量很大,可以算一算,每个节点的数据如果为100个,层高M为3,则总的数据量,将近似为:(1000+1)^3 - 1;这将超过10亿个。

2017-09-21 19:12:23 595

原创 Spring MVC源码分析 - 请求和参数

Perf4j是一个应用性能分析工具,它能输出方法的调用耗时,以便帮助开发者了解系统里性能耗时的情况。 Perf4j的输出文件,按tag分类,从不同的方面对一段时间内的调用,从数量上进行了分析和统计,稍后将会提到。 此外,Perf4j还可以和JMX结合,作为JMX MBean的属性展示数据,同时在性能低于可接受阈值的情况下发送JMX通知。 它能跟Spring 结合,并且使用切面+注解的方式进行方

2017-09-18 19:15:20 797

原创 Perf4j的使用

perf4j介绍Perf4j是一个应用性能分析工具,它能输出方法的调用耗时,以便帮助开发者了解系统里性能耗时的情况。 Perf4j的输出文件,按tag分类,从不同的方面对一段时间内的调用,从数量上进行了分析和统计,稍后将会提到。 此外,Perf4j还可以和JMX结合,作为JMX MBean的属性展示数据,同时在性能低于可接受阈值的情况下发送JMX通知。 它能跟Spring 结合,并且使用切面+

2017-09-13 23:50:25 1576

原创 Hessian的使用以及理解

Hessian的使用以及理解Hessian版本:3.1.5将包括如下的内容:Hessian的基本使用Hessian的原理Hessian和Spring 的结合使用扩展简单说来,Hessian是一个轻量级的RPC框架(RPC是什么?请参考这里)。它基于HTTP协议传输,使用Hessian二进制序列化,对于数据包比较大的情况比较友好。但是它的参数和返回值都需要实现Serializable接口

2017-06-30 15:42:00 57135 2

原创 Spring AOP和动态代理

Spring AOP是Spring的一项很强大的功能。它的“面向切面编程”的思想是面向对象编程OOP的补充和完善。AOP允许我们从横向的角度关注我们的程序,使得程序在安全处理,日志,性能采集等代码能在一个地方统一进行处理,而不用分布在各个方法和调用点。这些代码集合在一起就称为“切面”。 连接点:被拦截到的点,Spring只支持方法类型的连接点,所以在Spring中,连接点就是指被拦截到的方法。

2017-04-18 16:01:35 367

原创 Java动态代理

代理模式Java动态代理动态代理实现代理是一种设计模式。在一些情况下,一个对象并不能或者并不希望被其他某些调用,代理就可以在这其中起到中介的作用。 这样既可以使用真实对象的方法,又可以保护目标对象,还可以在真实方法调用的前后进行一些操作。常见的代理模式实现方式如下: 定义一个接口:public interface Subject {String doSth(String name);}

2017-04-11 19:37:59 231

原创 Parallel 收集器

1、如何查看JVM的运行参数[root@vm-10-11-146-1 deploy]# jcmd 29473 VM.flags29473:-XX:CICompilerCount=3 -XX:InitialHeapSize=62914560 -XX:MaxHeapSize=1004535808 -XX:MaxNewSize=334495744 -XX:MinHeapDeltaBytes=52428

2017-04-11 19:34:35 1819

原创 源码第一步

读框架源码,一开始的时候还真是不知道如何下手。 本篇文字以motan框架为例,记录下我是从哪里入手开始看源码的,个人感觉有通用性。 本人读源码不多,大牛请无视。

2017-03-30 00:21:41 326

原创 Autowired注解闲谈

早上看到一个朋友的个人空间说到自己面试被问及@autowired的实现。结果是卡壳了,回来之后觉得应该是反射之类的方式实现。个人感觉他说的也不能算错,不过不是我想看到的答案,自己查了查资料,顺便记下。 本段文字将包含如下几个方面的内容:BeanPostProcessor接口的例子 BeanPostProcessor接口结合注解的例子 Autowired注解Autowired是个注解类

2017-03-28 19:12:24 591

原创 在Postman中添加脚本(Pre-request Script)

Postman是谷歌浏览器插件中,发送http请求的代表性产品。平时用Postman测试Restful接口是很平常很方便的事情。 填入服务地址,选择请求类型,添上必要的Headers和Body参数就可以发送请求了。如果需要在发送请求之前做一些处理(如数据构造),可以添加脚本: 该脚本遵循JS语法,本例子中的用法是: 1、假定taskAnalyze接口接收一组订单号,返回订单的状态 2、在

2017-02-08 00:40:15 14757

原创 最重要的事只有一件,写在2017年的开头

新年快乐! 正月初十开始上班,本应该循规蹈矩写点什么类似计划、励志的语句。以便激励自己新年再接着努力。后面发现自己似乎已经没有这份动力了,最近耳边时不时能想起大学毕业之前听到的一些关于工作,关于社会的经验。「等工作几年,就会发现其实也就那样,过几年就会没有激情的」我当时是很不以为然的,甚至还带着点轻蔑的味道。这绝对是危言耸听,或许只是有些没“混”好的人的满腹抱怨罢了。时隔多年,现在想想这些话,可

2017-02-08 00:33:12 577

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除