自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 深入理解Java类加载器:线程上下文类加载器

1 线程上下文类加载器  线程上下文类加载器(context class loader)是从 JDK 1.2 开始引入的。类 java.lang.Thread中的方法 getContextClassLoader()和 setContextClassLoader(ClassLoader cl)用来获取和设置线程的上下...

2018-02-27 00:10:27 277

转载 用Java SPI实现可插拔

前言: 在软件系统的设计中,可插拔是一个重要特性。它意味着给系统添加新功能的时候(或者将原来功能的实现替换成新的实现而保持接口不变),不改变系统已有功能。这样的可插拔的功能模块被称为插件。插件(plugin)的出现可以很好地支持系统的可扩展性(Extensibility). 一个扩展性好的系统意味着很容易替换或者增加某些功能。 本文的目的是使用JDK6(或以上)的SPI(Service Pro...

2018-02-26 00:34:13 647

转载 Java SPI 机制实现解耦与本地化

SPI 是 Java 提供的一种服务加载方式,全名为 Service Provider Interface,可以避免在 Java 代码中写死服务的提供者,而是通过 SPI 服务加载机制进行服务的注册和发现。通过这种方式,可以基于接口编程,实现多个模块的解耦。SPI 机制实现解耦 如下的示例展示了通过 ServiceLoader 类加载指定接口的所有服务提供者并进行调用的简单实现。1、定义...

2018-02-26 00:24:39 153

转载 Java的SPI机制

Dubbo等框架使用到必须掌握。package org.hadoop.java; public interface IService { public String sayHello(); public String getScheme(); } package org.hadoop.java; public class HDF...

2018-02-26 00:21:45 149

转载 Java 动态代理机制详解(JDK 和CGLIB,Javassist,ASM)

class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象: class字节码文件是根据JVM虚拟机规范中规定的字节码组织规则生成的、具体class文件是怎...

2018-02-26 00:06:10 111

转载 Javassist实现动态代理

动态代理模式简述:之所以会出现代理这种模式就是因为我们常有这么一种需求:在被代理类的方法调用前后执行一些其它的逻辑,这些逻辑不适合由被代理类来实现,那这些逻辑谁来实现?当然是代理类。那代理类是谁?从哪里来?代理类是我们利用字节码生成工具动态创建的,然后利用反射实例化而得到代理对象。tips:这篇文章讲的不是动态代理模式的思想而是怎么实现(简单实现)一个和java.lang.reflect.Pr...

2018-02-25 23:41:21 223

转载 Javassist的动态代理实现。

一提到jdk中的java.lang.reflect.Proxy,用过spring,hibernate等框架的人应该都有所了解,对!就是动态代理。AOP - 面向切面编程 - 就是基于动态代理实现的。 为什么要提代理模式。因为AOP的广泛实现都是通过动态代理,而动态代理又不得不说代理模式。 代理模式,顾名思义,就是对一个类的访问,变为访问这个类的代理人。经由代理再访问这个类。(代理与被代理的...

2018-02-25 18:32:26 119

转载 Javassist操作方法总结

参考手册: 1、读取和输出字节码 ClassPool pool = ClassPool.getDefault(); //会从classpath中查询该类 CtClass cc = pool.get("test.Rectangle"); //设置.Rectangle的父类 cc.setSuperclass(pool.get("test.Point")); //输出.R...

2018-02-25 18:19:20 399

转载 javassist使用中遇到的问题记录

Javassit提供了运行时操作Java字节码的方法,其效率低于asm。javassist主要是提供了代码级别的修改(也有bytecode级别),相比与asm的字节码级别的修改,学习成本低,开发效率高。因此,在实际应用中javassist是一个非常不错的选择。以下是在使用javassist的过程中碰到的问题及处理方法: 1、ClassLoader问题我们知道java中有ExtClassLoa...

2018-02-25 18:09:07 469

转载 javassist 常用方法整理

javassist简介 一个比较好的例子:http://yucaifu1989.iteye.com/blog/1850500比较好的文档:http://blog.csdn.net/u011425751/article/details/51917895Javassist是一个开源的java字节码操作工具,主要是对已经编译好的class文件进行修改和处理,这里我写了一个简单的说明,复杂的请去...

2018-02-25 17:51:42 240

转载 RPC框架Dubbo深入分析

1,背景随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键垂...

2018-02-10 23:38:33 226

转载 实现java RPC框架

主要利用socket通信,反射,代理实现类似RMI的RPC框架首先是框架的代码package framework; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.reflect.InvocationHandler; import java.lang...

2018-02-10 23:22:09 96

转载 Java序列化和hessian序列化的区别

在远程调用中,需要把参数和返回值通过网络传输,这个使用就要用到序列化将对象转变成字节流,从一端到另一端之后再反序列化回来变成对象。既然前面有一篇提到了hessian,这里就简单讲讲Java序列化和hessian序列化的区别。首先,hessian序列化比Java序列化高效很多,而且生成的字节流也要短很多。但相对来说没有Java序...

2018-02-10 19:17:33 191

转载 Hessian原理与程序设计

    Hessian是比较常用的binary-webservice,性能较高,适合互联网应用,主要使用在普通的webservice 方法调用,交互数据较小的场景中。hessian的数据交互基于http协议,通常hessian的server端设计需要使用到web server容器(比如servlet等)...

2018-02-10 19:08:47 127

转载 hessian序列化

背景:之前一篇文章介绍了java的序列化,http://blog.csdn.net/bohu83/article/details/51124079在java的序列化里面也是介绍rpc框架时候,在远程调用中,需要把参数和返回值通过网络传输,这个使用就要用到序列化将对象转变成字节流,从一端到另一端之后再反序列化回来变成对象。作用了说了,今天在看文章的时候发现别人贴出效率对比,hessian比j...

2018-02-10 18:41:54 162

转载 Hessian的使用以及理解

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

2018-02-10 18:37:43 142

转载 JSON-RPC、XML-RPC、SOAP三者的关系

JSON-RPC规范:http://json-rpc.org/wiki/specificationXML-RPC规范:http://www.xmlrpc.com/specSOAP规范:http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383487参考:http://weblog.masukomi.org/writings/xml-...

2018-02-10 15:00:57 1002

转载 Javassist 使用指南(二)

进行网络通信时,我们经常纠结于到底使用什么样的协议传输数据,下面我谈谈应该怎么选择一种合理的协议格式。网络协议 标准定义是这样的:  为计算机网络中进行数据交换而建立的规则、标准或约定的集合。  网络协议至少包括三要素:  语法:语法是用户数据与控制信息的结构与格式,以及数据出现的顺序。  语义:解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什...

2018-02-10 13:26:47 141

转载 Javassist 使用指南(一)

1. 读写字节码 我们知道 Java 字节码以二进制的形式存储在 class 文件中,每一个 class 文件包含一个 Java 类或接口。Javaassist 就是一个用来处理 Java 字节码的类库。在 Javassist 中,类 Javaassit.CtClass 表示 class 文件。一个 GtClass (编译时类)对象可以处理一个 class 文件,下面是一个简单的例子:

2018-01-31 00:51:37 393

转载 Failed to check the status of the service com.taotao.service.ItemService.

项目中用dubbo发生:    Failed to check the status of the service com.taotao.service.ItemService. No provider available for the service原因:Dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题,默认

2018-01-26 00:49:10 867

转载 理解redis高可用方案

理解redis高可用方案理解并从头搭建redis集群部分开发人员工作当中只是在应用中使用redis,比如用来做数据结果的缓存。而且现在有很多不错的redis客户端工具(redisson),基本上可以不用关注redis命令就可以完成相当部分的功能。所以可能会对如下这些问题关注点不够:如何容灾?即某个redis节点出了问题如何保证服务的高可用性 如何横向扩容?当数据量特别大时,如何解

2018-01-19 00:45:35 142

空空如也

空空如也

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

TA关注的人

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