天天看點

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