天天看点

修改phprpc源码以支持集合类的string类型的转换

原文地址:http://www.buildapp.net/java/show.asp?id=10197

remoting协议而言,用得比较多的是hessian与phprpc,但phprpc的转化效率比hessian高很多。以下链接是牛人对此两者的序列化/反序列化效率作出的比较:

http://www.javaeye.com/topic/333720

我因为开发的需要,对两者能支持的数据类型也进行了一些测试和比较,总结如下:

hessian

1.不支持集合内含有char数组;

2.除1外,完美支持各种集合、元素类型的解析转换;

phprpc

1.不支持集合内value为string类型的值,需由客户自己转换,代码如:new String((byte[])test.getMap().get("1"),"utf-8")

2.集合内除byte[]外,不支持其它数组,如int[]、float[]、char[]等

乍一看觉得用hessian就够了,虽然hessian对集合内的char数组不支持转换,但是由于在实际运用中使用机率较低。但是眼看着效率高 hessian N倍的phprpc不用怪蛋痛,于是着手研究代码,企图从源码解决这个不支持集合内value为string类型值的问题。

其实问题原因在于PHPRPC在反序列化(unserialize)过程,无法正确识别集合中子元素的字符串类型。而PHPRPC中,负责序列化与反序列 化过程的类为PHPSerializer.java。所以定位好问题后就不难解决了。此处省略N千字,其实也就是添加一行代码的问题,却耗尽了一整个下午 的精力。

http://chembo.javaeye.com/blog/905038    下载jar

spring-security中添加用户过期功能

Strategy模式

Jetty5和Jetty6之间的代码大重构

修改phprpc源码以支持集合类的string类型的转换

jdk tomcat solr架构全站搜索

java读取和写入EXCEL

系统记录当前在线用户列表

mysql分表方法实现

DCI之转账简单Example

img标签指向jsp图片不显示的问题

关于时间DateFormat 很诡异的问题。

java annotation

Decorator模式

springside3.*中log4j和java.util.concurrent的结合使用

Hibernate映射id为uuid.hex时如何构造POJO和设置映射

maven中央库建立工具nexus

FreeMarker 生成静态html

GateIn在Tomcat下启动报错

spring,jpa(hibernate)的一个test(个人记录)

jsp页面读取系统日志并显示

日志模块

企业应用中的公式管理功能

关于commons dbutils组件的一个小缺陷分析

JavaScript中非逻辑操作数的逻辑运算

使用jsp生成彩色汉字验证码

jsp 图形验证码 IllegalStateException 异常

java 传值给js 丢失

Struts2 的validation校验方法之xml

Junit4 最简单用法和实例

FreeMarker在java项目中的应用

filter实例

java 缩略图显示缓慢问题

apache commons io

JDBC处理大数据量的方法-addBatch

SCA实践-运用tuscany实现SCA(一)

Java 写的低级落雨游戏

Digester 读API随记

HTTP 1.1与HTTP 1.0的区别

weblogic故障处理(BEA-000362)

使用XMLConfiguration读取XML文件

Struts2中应用UrlRewrite无反应的解决方案

信息: Port busy 8100 java.net.BindException: Address already in use: JVM_Bind

Spring3.0 + 自定义注解实现操作日志记录功能

IO代码文件加密

又一个URI请求参数编码问题

配置JDK、MyEclipse配置加载库类JDK、编译JDK和Tomcat远行JDK详解

server push&servlet asynchronous

"beans:beans", must match DOCTYPE root "null".

JAVA的动态执行1 - javax.script.ScriptEngineManager

hive处理日志,自定义inputformat

Eclipce结合Ant进行编译、打包、传输、运行

调停者模式

JAVA实现直接插入排序

Google Translator

java中的静态类

java的四舍五入的问题

Java JPA

配置struts框架后心得

设计模式学习系列(Facade模式和Adapter模式)

对于构造方法有可能产生异常的情况下垃圾清理问题的研究

Java JDK常用命令

Jbpm4.4 获得Start节点和任务节点中的表单路径

linux下图片添加中文乱码解决

Richfaces复选框树(Checkbox tree)的纯java解决方案

eclipse e4的web版本开发工具orion

注册JDBC驱动的三种方式

让Hibernate Query返回组织好的VO对象列表

Java的事件监听器

Java Web方向与Android方向的选择

groovy代码执行效率

BeanShell执行标准Java语句和表达式

经典JAVA入门题,等待输入,求最大数、最小数、总和等。

MapReduce: JT默认task scheduling策略

java MD5

使用Ant+xdoclet来生成Hibernate的配置文件和数据库映射文件

XML访问方式

XFire 开发WebService

myeclipse出现Could not find the main class原因分析

使用InstallShield打包java程序exe以及jdk,安装完成自动运行

总结一下网站注入与防范的方法

SWT源码分析 (一)

swing自制组件(一)

lucene + hadoop 分布式搜索运行框架 Nut 1.0a9

java数据结构-HashMap

根据图片的exif时间信息-重命名jpg文件

Ajax验证用户ID是否存在

String 导致的内存溢出

关于StreamGobbler读取Stream的线程同步问题

hadoop部署错误之一:java.lang.IllegalArgumentException: Wrong FS

webservice开发的一些心得体会

java实现快速排序

JBOSS6.0 final安装配置运行停止

MySQL Cluster(MySQL 集群) 初试

堆和栈的区别

使用ant编译时错误:Specify at least one source--a file or resource

java面试中String、StringBuffer、StringBuilder

解决Mina的传输中造成的TIME_WAIT过多的问题(不能立即断开连接)

pojo与hibernate.hbm.xml与数据库表字段对应与否

解决方案:Tomcat启动时窗口一闪而过(startup.bat)

spring中加载Bean配置文件的常用方式

更多java开发资料,请访问http://www.buildapp.net/java/

转载于:https://blog.51cto.com/2648928/675731