首頁 後端開發 php教程 批改phprpc源码以支持集合类的string类型的转换

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

Jun 13, 2016 am 10:39 AM
char jar string

修改phprpc源码以支持集合类的string类型的转换
就remoting协议而言,用得比较多的是hessian与phprpc,但phprpc的转化效率比hessian高很多。以下链接是牛人对此两者的序列化/反序列化效率作出的比较:
http://www.iteye.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千字,其实也就是添加一行代码的问题,却耗尽了一整个下午的精力。以下是编译好了的spring2.5需要用到phprpc的三个jar 文件,分别是:phprpc_client.jar phprpc_spring.jar phprpc.jar。
下载便能用。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
docker怎麼部署SpringBoot及替換jar包 docker怎麼部署SpringBoot及替換jar包 May 12, 2023 pm 02:16 PM

工程目錄dockerfile檔案建立dockerfile文件,後面會用到。檔案部署在伺服器新建/data/docker/hellolearn資料夾(檔案路徑可自訂),將maven打包好的jar包和上文中建立的dockerfile檔案複製到伺服器新建的資料夾(/data/docker/hellolearn) 。產生映像dockerbuild-thellolearn.dockerbuild-t映像名稱:標籤dockerfile的相對位置,點號代表目前目錄,不寫tag預設是latest。啟動容器doc

如何在 Linux 中運行 jar 文件 如何在 Linux 中運行 jar 文件 Feb 20, 2024 am 10:40 AM

執行JAR檔案的先決條件在Linux系統上執行JAR檔案需要安裝Java執行環境(JRE),它是執行Java應用程式所需的基本元件,包括Java虛擬機器(JVM)、核心類別庫等。許多主流Linux發行版,如Ubuntu、Debian、Fedora、openSUSE等,都提供了JRE套件的軟體庫,方便使用者安裝。後文將詳細介紹在流行的發行版上安裝JRE的步驟。設定完JRE後,可以根據個人喜好選擇使用命令列終端機或圖形使用者介面來啟動JAR檔案。您的選擇可能取決於對Linuxshell的熟悉程度和個人偏好

怎麼在maven中將springboot打成jar包 怎麼在maven中將springboot打成jar包 May 17, 2023 am 08:19 AM

maven的命令:1.mvncleanpackage-DskipTests:在專案目錄下執行此命令,在target目錄下產生jar包或war包。 2.mvnclean:清理專案生產的臨時檔案,一般是模組下的target目錄3.mvncompile-DskipTests:模組安裝指令將打包的的jar/war檔複製到你的本地倉庫中,供其他模組使用-Dmaven. test.skip=true跳過測試(同時會跳過testcompile).4.mvntest:測試指令,或執行src/test/java/下

使用java的String.valueOf()函數將基本資料型別轉換為字串 使用java的String.valueOf()函數將基本資料型別轉換為字串 Jul 24, 2023 pm 07:55 PM

使用Java的String.valueOf()函數將基本資料型別轉換為字串在Java開發中,當我們需要將基本資料型別轉換為字串時,常見的方法是使用String類別的valueOf()函數。這個函數可以接受基本資料類型的參數,並傳回對應的字串表示。在本文中,我們將探討如何使用String.valueOf()函數進行基本資料型別轉換,並提供一些程式碼範例來

怎麼把char數組轉string 怎麼把char數組轉string Jun 09, 2023 am 10:04 AM

char陣列轉string的方法:可以透過賦值來實現,使用{char a[]=" abc d\0efg ";string s=a;}語法,讓char陣列對string直接賦值,執行程式碼即可完成轉換。

SpringBoot怎麼將設定檔掛到jar包外面 SpringBoot怎麼將設定檔掛到jar包外面 May 15, 2023 pm 03:01 PM

一、SpringBoot指定設定檔路徑:在SpringBoot中,可以將設定檔放在jar包外面,這樣可以方便地修改配置而不需要重新打包和部署。以下是指定設定檔目錄的幾種方法:(按生效優先順序從高到低排序)1)使用命令列參數:在啟動應用程式時,可以使用--spring.config.location或-Dspring.config. location命令列參數來指定設定檔的路徑,例如:(config後面的/不可省略)java-jartest.jar--spring.config.locatio

Linux編輯啟動、停止與重啟springboot jar套件的方法 Linux編輯啟動、停止與重啟springboot jar套件的方法 May 14, 2023 am 09:37 AM

前言springboot的設定檔中,設定檔的名字都有各自的意義跟用途dev開發環境prod生產環境(預設)test測試環境載入指定設定檔--spring.profiles.active=prodspringboot載入jar包的方式有/ /直接在控制台啟動,缺點就是控制台關閉專案也就關閉了。 java-jarbootdo.jar//這種方式可以運行在後台,但是如果推出了shell的話,那也會掛java-jar/bootdo-2.0.0.jar>bootdolog.file2>&

SpringBoot怎麼刪除引用jar包中的無用bean SpringBoot怎麼刪除引用jar包中的無用bean May 14, 2023 pm 08:07 PM

前言公司有個項目,時間比較趕,而且項目的部分需求,和之前做的項目部分功能一樣,為了趕速度和直接將之前多模組的maven項目中的部分模組,直接以jar包的形式引入到新專案中了,雖然省去了不少開發時間,但是造成專案需要導入引入專案jar的相關依賴,導致專案臃腫,啟動很慢。有沒有辦法讓專案只載入自己需要的bean呢?當然我們可以直接修改原始碼重新打包引入去解決,但這個辦法太多麻煩。透過百度的手段,查詢可以在springboot啟動類別上用@ComponentScan註解去實現程式碼範例@Componen

See all articles