<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[绝望的生鱼片]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sunwei_pyw</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sunwei_pyw]]></copyright><item><title><![CDATA[梳理Dubbo扩展的理解]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/79627681</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/79627681</guid><author>sunwei_pyw</author><pubDate>Tue, 20 Mar 2018 16:30:47 +0800</pubDate><description><![CDATA[不得不扩展



从SPI说起



ExtensionLoader



验证自定义协议





不得不扩展

Dubbo分为很多逻辑层，对于各个层的接口，Dubbo都提供了很多种的实现， 
对于需要满足很多使用个性需求的框架来说，单单是多提供几个实现是不够的。 
重要的是需要在框架设计层面有一个好的解决方案，能让框架能应对不断扩张的需求。 
这样才能在不改动最原始逻辑的基础上，不断丰富框架的...]]></description><category></category></item><item><title><![CDATA[Dubbo的扩展机制]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/79615253</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/79615253</guid><author>sunwei_pyw</author><pubDate>Mon, 19 Mar 2018 18:01:30 +0800</pubDate><description><![CDATA[Dubbo的扩展机制



Dubbo扩展原理



ExtensionLoader的设计和实现方式



自定义扩展例子




Dubbo的扩展原理


Dubbo采用的是内核+扩展的体系结构，除了Service和Config层，其他层的功能都是可扩展的（Proxy、Registry、Cluster、Monitor、Protocol、Exchange、Transport、Serialize）。...]]></description><category></category></item><item><title><![CDATA[Motan客户端源码阅读]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/79241869</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/79241869</guid><author>sunwei_pyw</author><pubDate>Fri, 02 Feb 2018 17:55:13 +0800</pubDate><description><![CDATA[本文着重从源码的角度探究Motan客户端的如下几个方面：



客户端的使用



客户端的实现

之前了解了一些Motan的服务启动的底层代码，了解到服务端其实是在Netty服务的基础上绑定处理Handler并且进行包装，以motan协议为通讯方式，并最终监听在发布端口上。 
本篇将涉及到以上几个关键点，分析(走马观花)，如有纰漏，望乞斧正：


客户端的配置


Motan客户端的结合Spri]]></description><category></category></item><item><title><![CDATA[再谈Motan服务的启动]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/79132237</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/79132237</guid><author>sunwei_pyw</author><pubDate>Mon, 22 Jan 2018 18:40:09 +0800</pubDate><description><![CDATA[之前简要地过了一遍Motan服务的启动过程，感觉理解得还不够清楚，所以接下来会就有疑惑的几个点来做一次分析。 
     和之前一样，以Motan服务的启动为依托，分析启动过程中的几个重要节点以及类，以此来窥探Motan服务端的设计架构和原则。



ExtensionLoader
URL
ConfigHandler
Exporter
Provider
Protocol
EndpointFacto]]></description><category></category></item><item><title><![CDATA[Motan服务的启动]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/79122224</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/79122224</guid><author>sunwei_pyw</author><pubDate>Sun, 21 Jan 2018 19:29:32 +0800</pubDate><description><![CDATA[Motan是新浪于2016年开源的一个RPC框架，类似的已有的RPC框架有像阿里开源的Dubbo，还有后来在此基础上做二次开源的当当网的dubbox。 
Motan分为服务提供方和服务调用方，服务提供方发布服务，服务调用方调用服务。 
看这样一个简单的例子： 
1、创建一个接口，并且简单实现：



public interface FooService {
    public String h]]></description><category></category></item><item><title><![CDATA[Spring配置文件解析]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/79036633</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/79036633</guid><author>sunwei_pyw</author><pubDate>Thu, 11 Jan 2018 17:28:16 +0800</pubDate><description><![CDATA[解析配置

解析配置，是Dubbo服务启动的第一步，基于Spring配置结合的框架都是从这一步开始启动的（包括之前提到的Motan）； 
Dubbo官方文档中提到：


  初始化过程的第一步是从解析服务开始的，基于 dubbo.jar 内的 META-INF/spring.handlers 配置， 
  Spring 在遇到 dubbo 名称空间时，会回调 DubboNamespaceHandl]]></description><category></category></item><item><title><![CDATA[Spring Boot初体验]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/78163595</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/78163595</guid><author>sunwei_pyw</author><pubDate>Fri, 06 Oct 2017 00:47:47 +0800</pubDate><description><![CDATA[Spring Boot 入门例子和说明
刚接触Spring Boot，记录一些简单入门的知识点；  Spring Boot能让我们以最简单的方式创建独立的、产品级别的基于Spring的应用。
  
  本文大部分内容来自spring boot的官方文档，以及Youtube的入门讲解.
  
  总的来说，你可以用很少的配置，并且以很简单优雅的方式启动你的Spring Boot应用。Spring Bo]]></description><category></category></item><item><title><![CDATA[B-Tree / B+Tree 结构以及MySQL索引]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/78055754</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/78055754</guid><author>sunwei_pyw</author><pubDate>Thu, 21 Sep 2017 19:12:23 +0800</pubDate><description><![CDATA[对MySQL的索引相关的问题以前一直是空白，最近了解了下树和索引之间的关系，对这方面有了新的认识，留下一些笔记。
B-树
B-树不一定是二叉树，B树是一种平衡树，它的高度是固定的； 
B树是一种多路查找树，也就是说它的节点上有多个存储的值；BTree每个节点存储的数据量很大，可以算一算，每个节点的数据如果为100个，层高M为3，则总的数据量，将近似为：(1000+1)^3 - 1;这将超过10亿个。]]></description><category></category></item><item><title><![CDATA[Spring MVC源码分析 - 请求和参数]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/78022644</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/78022644</guid><author>sunwei_pyw</author><pubDate>Mon, 18 Sep 2017 19:15:20 +0800</pubDate><description><![CDATA[Perf4j是一个应用性能分析工具，它能输出方法的调用耗时，以便帮助开发者了解系统里性能耗时的情况。 
Perf4j的输出文件，按tag分类，从不同的方面对一段时间内的调用，从数量上进行了分析和统计，稍后将会提到。 
此外，Perf4j还可以和JMX结合，作为JMX MBean的属性展示数据，同时在性能低于可接受阈值的情况下发送JMX通知。 
它能跟Spring 结合，并且使用切面+注解的方式进行方]]></description><category></category></item><item><title><![CDATA[Perf4j的使用]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/77972625</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/77972625</guid><author>sunwei_pyw</author><pubDate>Wed, 13 Sep 2017 23:50:25 +0800</pubDate><description><![CDATA[perf4j介绍Perf4j是一个应用性能分析工具，它能输出方法的调用耗时，以便帮助开发者了解系统里性能耗时的情况。 
Perf4j的输出文件，按tag分类，从不同的方面对一段时间内的调用，从数量上进行了分析和统计，稍后将会提到。 
此外，Perf4j还可以和JMX结合，作为JMX MBean的属性展示数据，同时在性能低于可接受阈值的情况下发送JMX通知。 
它能跟Spring 结合，并且使用切面+]]></description><category></category></item><item><title><![CDATA[Hessian的使用以及理解]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/74002351</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/74002351</guid><author>sunwei_pyw</author><pubDate>Fri, 30 Jun 2017 15:42:00 +0800</pubDate><description><![CDATA[Hessian的使用以及理解
Hessian版本：3.1.5
将包括如下的内容：
Hessian的基本使用
Hessian的原理
Hessian和Spring 的结合使用
扩展
简单说来，Hessian是一个轻量级的RPC框架(RPC是什么？请参考这里)。它基于HTTP协议传输，使用Hessian二进制序列化，对于数据包比较大的情况比较友好。但是它的参数和返回值都需要实现Serializable接口]]></description><category></category></item><item><title><![CDATA[Spring AOP和动态代理]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/70229366</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/70229366</guid><author>sunwei_pyw</author><pubDate>Tue, 18 Apr 2017 16:01:35 +0800</pubDate><description><![CDATA[Spring AOP是Spring的一项很强大的功能。它的“面向切面编程”的思想是面向对象编程OOP的补充和完善。AOP允许我们从横向的角度关注我们的程序，使得程序在安全处理，日志，性能采集等代码能在一个地方统一进行处理，而不用分布在各个方法和调用点。这些代码集合在一起就称为“切面”。 
连接点：被拦截到的点，Spring只支持方法类型的连接点，所以在Spring中，连接点就是指被拦截到的方法。]]></description><category></category></item><item><title><![CDATA[Java动态代理]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/70115854</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/70115854</guid><author>sunwei_pyw</author><pubDate>Tue, 11 Apr 2017 19:37:59 +0800</pubDate><description><![CDATA[代理模式
Java动态代理
动态代理实现
代理是一种设计模式。在一些情况下，一个对象并不能或者并不希望被其他某些调用，代理就可以在这其中起到中介的作用。 
这样既可以使用真实对象的方法，又可以保护目标对象，还可以在真实方法调用的前后进行一些操作。常见的代理模式实现方式如下： 
定义一个接口：public interface Subject {
String doSth(String name);
}]]></description><category></category></item><item><title><![CDATA[Parallel 收集器]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/70114792</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/70114792</guid><author>sunwei_pyw</author><pubDate>Tue, 11 Apr 2017 19:34:35 +0800</pubDate><description><![CDATA[1、如何查看JVM的运行参数[root@vm-10-11-146-1 deploy]# jcmd 29473 VM.flags
29473:
-XX:CICompilerCount=3 -XX:InitialHeapSize=62914560 -XX:MaxHeapSize=1004535808 -XX:MaxNewSize=334495744 -XX:MinHeapDeltaBytes=52428]]></description><category></category></item><item><title><![CDATA[源码第一步]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/68275565</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/68275565</guid><author>sunwei_pyw</author><pubDate>Thu, 30 Mar 2017 00:21:41 +0800</pubDate><description><![CDATA[读框架源码，一开始的时候还真是不知道如何下手。 
本篇文字以motan框架为例，记录下我是从哪里入手开始看源码的，个人感觉有通用性。 
本人读源码不多，大牛请无视。]]></description><category></category></item><item><title><![CDATA[Autowired注解闲谈]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/67640493</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/67640493</guid><author>sunwei_pyw</author><pubDate>Tue, 28 Mar 2017 19:12:24 +0800</pubDate><description><![CDATA[早上看到一个朋友的个人空间说到自己面试被问及@autowired的实现。结果是卡壳了，回来之后觉得应该是反射之类的方式实现。个人感觉他说的也不能算错，不过不是我想看到的答案，自己查了查资料，顺便记下。 
本段文字将包含如下几个方面的内容：BeanPostProcessor接口的例子 
BeanPostProcessor接口结合注解的例子 
Autowired注解Autowired是个注解类]]></description><category></category></item><item><title><![CDATA[在Postman中添加脚本(Pre-request Script)]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/54919782</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/54919782</guid><author>sunwei_pyw</author><pubDate>Wed, 08 Feb 2017 00:40:15 +0800</pubDate><description><![CDATA[Postman是谷歌浏览器插件中，发送http请求的代表性产品。平时用Postman测试Restful接口是很平常很方便的事情。 
填入服务地址，选择请求类型，添上必要的Headers和Body参数就可以发送请求了。如果需要在发送请求之前做一些处理(如数据构造)，可以添加脚本： 
 
该脚本遵循JS语法，本例子中的用法是： 
1、假定taskAnalyze接口接收一组订单号，返回订单的状态 
2、在]]></description><category></category></item><item><title><![CDATA[最重要的事只有一件，写在2017年的开头]]></title><link>https://blog.youkuaiyun.com/sunwei_pyw/article/details/54919727</link><guid>https://blog.youkuaiyun.com/sunwei_pyw/article/details/54919727</guid><author>sunwei_pyw</author><pubDate>Wed, 08 Feb 2017 00:33:12 +0800</pubDate><description><![CDATA[新年快乐！ 
 正月初十开始上班，本应该循规蹈矩写点什么类似计划、励志的语句。以便激励自己新年再接着努力。后面发现自己似乎已经没有这份动力了，最近耳边时不时能想起大学毕业之前听到的一些关于工作，关于社会的经验。「等工作几年，就会发现其实也就那样，过几年就会没有激情的」我当时是很不以为然的，甚至还带着点轻蔑的味道。这绝对是危言耸听，或许只是有些没“混”好的人的满腹抱怨罢了。时隔多年，现在想想这些话，可]]></description><category></category></item></channel></rss>