- 浏览: 55102 次
- 性别:
- 来自: 广西
最新评论
文章列表
Java实现简易RPC框架(三)
- 博客分类:
- 分布式应用
实现带监听功能简易RPC
通过上一编博文的学习,我们同样利用socket、JDK动态代理实现一个带监听功能并能停止服务器的简易RPC框架。
首先定义一个服务器接口
package org.bird.rpc2.support;
import org.bird.rpc2.protocal.Invocation;
/**
* 服务器管理
* @author liangjf
*
*/
public interface Server {
/**
* 停止服务器
*/
public void stop();
/**
* 启动服务器
...
Java实现简易RPC框架(二)
- 博客分类:
- 分布式应用
上一遍blog我们已经说过了RPC的相关知识,接下来我们利用socket来实现RPC。
一、利用socket、动态代理实现RPC
参考阿里梁飞同学网上的例子,并调整单服务多线程模式,首先是框架代码
package org.bird.rpc;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect ...
Java实现简易RPC框架(一)
- 博客分类:
- 分布式应用
早些天看Hadoop源码的时候了解到Hadoop分布式环境中各个组件间的通信采用的RPC,由于暂无时间深入分析Hadoop中的RPC实现方式。参考网上资料学习跟例子实现简易RPC框架。
一、什么是RPC
RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和
1 、RMI是什么
在 Java 世界里,有一种技术可以实现“跨虚拟机”的调用,它就是 RMI(Remote Method Invocation,远程方法调用)。例如,服务A 在 JVM1 中运行,服务B 在 JVM2 中运行,服务A 与 服务B 可相互进行远程调用,就像调用本地 ...
java 代理(二)
- 博客分类:
- java
上一编bolg我们已经了解了jdk实现的动态代理,接下来我们再来了解一下cglib的动态代理。
首先我们先看一下cglib动态代理怎么写。
目标类:BookService
package com.cglib.proxy;
public class BookService {
public void add(){
System.out.println("添加图书....");
}
}
Cglib代理实现类:BookCglibProxy
package com.cglib.proxy;
import java.lang.refl ...
参考Mysql JDBC 驱动源码实现自定义驱动
- 博客分类:
- java
一、分析Mysql JDBC
平常我们直接以JDBC连接数据库代码基本都如下:
Connection con = null; //创建用于连接数据库的Connection对象
try {
Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动
con = DriverManager.getConnection(
"jdbc:mysql:// ...
今天在写一个jquery函数的时候刚好碰到了动态添加的元素无法触发事件的疑问。故了解了一下bind()方法跟live()方法的一些特性,在这里总结一下。
DOM树
首先我们看一下一个简单的HTML中DOM树的结构 根据这个DOM树。我们先用bind()函数实现对a标签的一个点击事件:
$('a').bind('click', function() { alert("点击我!") });
因此对a标签的单击操作会触发alert函数的执行 因为事件冒泡,click事件接着会向树的根方向传播,广播到父元素,然后接着是每个祖先元素,只要是它的某个后代元素 ...
java 代理(一)
- 博客分类:
- java
首先我们需要了解一下什么是代理
代理:就是一个角色代表另一角色完成某些特定的功能。
例如:汽车制造商,4S店,客户
客户购买汽车并不直接与汽车制造商打交道,也不用知道汽车是如何制造的,客户只与4S店打交道,而4S店可以对汽车进行一些包装,提供一些保修、保险等相关售后的服务。
下面我们根据实际的Java例子来说明代理
代理模式有三个角色: 1. 抽象主题角色 2. 代理主题角色 3. 实际被代理角色 其它类通过访问代理主题角色来访问实际被代理角色。
1. 静态代理
抽象主题角色
package com.staticproxy;
/**
* 抽象主题角色
* @aut ...
网站实现视频上传、转码、截图及在线播放功能
- 博客分类:
- 互联网应用
早些天一老同学问到怎么在网站上传自己制作的视频并在线播放呢?当时想了想自己还真没进行过这方面的应用开发。上传并在线播放视频现在应用非常广泛,优酷、土豆等在这方面应用得非常成熟。正好趁这几天不忙整理了一下这方面的知识。
在线视频播放网站主流播放格式为FLV。我们顺便了解一下什么是FLV?
FLV是
Docker - 容器级虚拟化解决方案
- 博客分类:
- Docker
是什么
简单的说Docker是一个构建在LXC之上的,基于进程容器(Processcontainer)的轻量级VM解决方案。
拿现实世界中货物的运输作类比, 为了解决各种型号规格尺寸的货物在各种运输工具上进行运输的问题,我们发明了集装箱
Docker的初衷也就是将各种应用程序和他们所依赖的运行环境打包成标准的container/image,进而发布到不同的平台上运行 从理论上跟各种虚拟机Image也起着类似的作用
Docker container和普通的虚拟机Image相比, 最大的区别是它并不包含操作系统内核.
普通虚拟机将整个操作系统运行在虚拟的硬件平台上, 进而提供 ...
前面一节中我们说过Mapper最小输入数据单元是InputSplit。比如对于那么对于一个记录行形式的文本大于128M时,HDFS将会分成多块存储(block),同时分片并非到每行行尾。这样就会产生两个问题
1. Hadoop的一个Block默认是128M,那么 ...
现在网上有很多在用户登陆或注册的时候为了防止程序攻击,加入了动态验证的技术,一般是让用户输入随即生成的验证码来实现。下面是一个用Servlet生成动态验证码的一个实例,可以根据实际需要进行修改。
1、生成动态验 ...
有关Java对象的序列化和反序列化也算是Java基础的一部分,下面对Java序列化的机制和原理进行一些介绍。
Java序列化算法透析
Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些 ...
Java中byte与16进制字符串的转换
- 博客分类:
- java
因工作上经常用到byte转换成16进制字符串、16进制字符串转换为byte等,故将相关知识整理一下:
Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以 ...
第一次使用ByteArrayOutputStream的时候是在做某个银行项目报文传输的组包/解包过程中,觉得确实是很好用,所以把它们的用法总结一下。
ByteArrayOutputStream的用法
以下是JDK中的记载:
public class ByteArrayOutputStream extends OutputStream
此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()和 toString()获取数据。
关闭 ByteArrayOutputStream 无效。此类 ...