修改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/

你可能感兴趣的:(java,职场,休闲,phprpc源码)