Rumah pembangunan bahagian belakang tutorial 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。
下载便能用。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara docker menggunakan SpringBoot dan menggantikan pakej jar Cara docker menggunakan SpringBoot dan menggantikan pakej jar May 12, 2023 pm 02:16 PM

Buat fail dockerfile dalam direktori projek dockerfile, yang akan digunakan kemudian. Fail itu digunakan dalam folder /data/docker/hellolearn yang baru dibuat pada pelayan (laluan fail boleh disesuaikan dengan pakej maven packaged jar dan fail dockerfile yang dibuat di atas ke folder yang baru dibuat pada pelayan (/data). /docker/hellolearn). Hasilkan imej dockerbuild-thellolearn.dockerbuild-t Nama imej: kedudukan relatif fail docker label, titik mewakili direktori semasa dan lalai adalah terkini jika tiada teg ditulis. Mulakan doc bekas

Bagaimana untuk menjalankan fail jar di Linux Bagaimana untuk menjalankan fail jar di Linux Feb 20, 2024 am 10:40 AM

Prasyarat untuk menjalankan fail JAR Menjalankan fail JAR pada sistem Linux memerlukan pemasangan Java Runtime Environment (JRE), yang merupakan komponen asas yang diperlukan untuk melaksanakan aplikasi Java, termasuk Java Virtual Machine (JVM), perpustakaan kelas teras, dsb. Banyak pengedaran Linux arus perdana, seperti Ubuntu, Debian, Fedora, openSUSE, dll., menyediakan perpustakaan perisian pakej JRE untuk memudahkan pemasangan pengguna. Artikel berikut akan memperincikan langkah-langkah untuk memasang JRE pada pengedaran popular. Selepas menyediakan JRE, anda boleh memilih untuk menggunakan terminal baris arahan atau antara muka pengguna grafik untuk memulakan fail JAR mengikut keutamaan peribadi anda. Pilihan anda mungkin bergantung pada kebiasaan dengan cangkerang Linux dan keutamaan peribadi

Bagaimana untuk membungkus springboot ke dalam pakej balang dalam maven Bagaimana untuk membungkus springboot ke dalam pakej balang dalam maven May 17, 2023 am 08:19 AM

arahan maven: 1.mvncleanpackage-DskipTests: Jalankan arahan ini dalam direktori projek untuk menjana pakej jar atau pakej perang dalam direktori sasaran. 2.mvnclean: Bersihkan fail sementara yang dihasilkan oleh projek, biasanya direktori sasaran di bawah modul 3.mvncompile-DskipTests: Perintah pemasangan modul menyalin fail jar/war yang dibungkus ke gudang tempatan anda untuk digunakan oleh modul lain -Dmaven .skip=ujian langkau benar (testcompile juga akan dilangkau).4.mvntest: perintah ujian, atau jalankan src/test/java/

Tukar jenis data asas kepada rentetan menggunakan fungsi String.valueOf() Java Tukar jenis data asas kepada rentetan menggunakan fungsi String.valueOf() Java Jul 24, 2023 pm 07:55 PM

Tukar jenis data asas kepada rentetan menggunakan fungsi String.valueOf() Java Dalam pembangunan Java, apabila kita perlu menukar jenis data asas kepada rentetan, kaedah biasa ialah menggunakan fungsi valueOf() kelas String. Fungsi ini boleh menerima parameter jenis data asas dan mengembalikan perwakilan rentetan yang sepadan. Dalam artikel ini, kami akan meneroka cara menggunakan fungsi String.valueOf() untuk penukaran jenis data asas dan menyediakan beberapa contoh kod untuk

Bagaimana untuk menukar tatasusunan char kepada rentetan Bagaimana untuk menukar tatasusunan char kepada rentetan Jun 09, 2023 am 10:04 AM

Kaedah menukar tatasusunan char kepada rentetan: Ia boleh dicapai dengan penugasan Gunakan sintaks {char a[]=" abc d\0efg ";string s=a;} untuk membenarkan tatasusunan char terus memberikan nilai kepada rentetan, dan laksanakan. kod untuk melengkapkan penukaran.

Bagaimana untuk memulakan, menghentikan dan memulakan semula pakej springboot jar dalam penyuntingan Linux Bagaimana untuk memulakan, menghentikan dan memulakan semula pakej springboot jar dalam penyuntingan Linux May 14, 2023 am 09:37 AM

Kata Pengantar Dalam fail konfigurasi springboot, nama-nama fail konfigurasi mempunyai makna dan kegunaannya sendiri persekitaran pembangunan prod persekitaran ujian (lalai) memuatkan fail konfigurasi yang ditentukan--spring.profiles.active=prod Cara-cara untuk. springboot untuk memuatkan pakej balang adalah/ / Mulakan terus dalam konsol Kelemahannya ialah projek akan ditutup apabila konsol ditutup. java-jarbootdo.jar//Kaedah ini boleh dijalankan di latar belakang, tetapi jika shell dilancarkan, ia juga akan menggantung java-jar/bootdo-2.0.0.jar>bootdolog.file2>&

Bagaimanakah SpringBoot menggantung fail konfigurasi di luar pakej balang? Bagaimanakah SpringBoot menggantung fail konfigurasi di luar pakej balang? May 15, 2023 pm 03:01 PM

1. SpringBoot menentukan laluan fail konfigurasi: Dalam SpringBoot, fail konfigurasi boleh diletakkan di luar pakej balang, supaya konfigurasi boleh diubah suai dengan mudah tanpa pembungkusan semula dan penggunaan. Berikut ialah beberapa cara untuk menentukan direktori fail konfigurasi: (diisih daripada keutamaan keberkesanan tinggi ke rendah) 1) Gunakan parameter baris arahan: Apabila memulakan aplikasi, anda boleh menggunakan --spring.config.location atau -Dspring.config parameter baris arahan lokasi menentukan laluan ke fail konfigurasi, contohnya: (konfigurasi / selepas tidak boleh ditinggalkan) java-jartest.jar--spring.config.locatio

Bagaimana untuk menyelesaikan masalah Java menggunakan Class.forName untuk memuatkan fail kelas Jar luaran Bagaimana untuk menyelesaikan masalah Java menggunakan Class.forName untuk memuatkan fail kelas Jar luaran May 10, 2023 pm 11:49 PM

Latar belakang cerita adalah dalam rangka kerja yang dipanggil magic-api Anda boleh menulis kod dengan cara kod rendah dan menyusun dan melaksanakannya secara dinamik Walau bagaimanapun, jika anda ingin memuatkan beberapa kelas import, anda perlu memuatkan balang dalam projek sebelum anda boleh mengimportnya Kemudian setiap kali anda datang ke Untuk kelas baharu, anda perlu memuatkan semula kelas ke dalam projek, kemudian membungkus projek, dan kemudian mengimport... Ia sangat membosankan! ! ! Sudah tentu, kita juga perlu menyebut proses pelaksanaan umum sihir Apabila anda mendapat salinan kod sumber, import pada fail pengepala akan dimuatkan ke dalam memori melalui Class.forName dalam kod sumber , hanya gunakan URLClassLo.

See all articles