Rumah pembangunan bahagian belakang tutorial php 批改phprpc源码以支持集合类的string类型的转换

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

Jun 13, 2016 pm 01:18 PM
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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 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)

Topik panas

Tutorial Java
1672
14
Tutorial PHP
1276
29
Tutorial C#
1256
24
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.

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 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 memadamkan kacang yang tidak berguna dalam pakej balang yang dirujuk? Bagaimanakah SpringBoot memadamkan kacang yang tidak berguna dalam pakej balang yang dirujuk? May 14, 2023 pm 08:07 PM

Prakata: Syarikat mempunyai projek yang sedang tergesa-gesa, dan beberapa keperluan projek adalah sama dengan beberapa fungsi projek sebelumnya Untuk mempercepat dan memperkenalkan secara langsung beberapa modul dalam projek maven berbilang modul sebelumnya dalam bentuk pakej jar Projek baru dilancarkan Walaupun ia menjimatkan banyak masa pembangunan, ia juga menyebabkan projek itu perlu mengimport kebergantungan yang berkaitan dengan balang projek, menyebabkan projek menjadi kembung dan lambat dimulakan. Adakah terdapat cara untuk membuat projek memuatkan hanya kacang yang diperlukan? Sudah tentu, kita boleh mengubah suai kod sumber secara langsung dan membungkusnya semula untuk menyelesaikan masalah, tetapi kaedah ini terlalu menyusahkan. Melalui kaedah Baidu, pertanyaan boleh menggunakan anotasi @ComponentScan pada kelas permulaan springboot untuk melaksanakan contoh kod @Componen

See all articles