Heim Backend-Entwicklung PHP-Tutorial 批改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。
下载便能用。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So führen Sie JAR-Dateien unter Linux aus So führen Sie JAR-Dateien unter Linux aus Feb 20, 2024 am 10:40 AM

Voraussetzungen für die Ausführung von JAR-Dateien Die Ausführung von JAR-Dateien auf einem Linux-System erfordert die Installation der Java Runtime Environment (JRE), der Grundkomponente, die zum Ausführen von Java-Anwendungen erforderlich ist, einschließlich der Java Virtual Machine (JVM), Kernklassenbibliotheken usw. Viele gängige Linux-Distributionen wie Ubuntu, Debian, Fedora, openSUSE usw. bieten Softwarebibliotheken mit JRE-Paketen, um die Benutzerinstallation zu erleichtern. Im folgenden Artikel werden die Schritte zur Installation von JRE auf gängigen Distributionen detailliert beschrieben. Nach dem Einrichten der JRE können Sie je nach Ihren persönlichen Vorlieben das Befehlszeilenterminal oder die grafische Benutzeroberfläche zum Starten der JAR-Datei verwenden. Ihre Wahl hängt möglicherweise von Ihrer Vertrautheit mit Linux-Shells und Ihren persönlichen Vorlieben ab

Wie Docker SpringBoot bereitstellt und JAR-Pakete ersetzt Wie Docker SpringBoot bereitstellt und JAR-Pakete ersetzt May 12, 2023 pm 02:16 PM

Erstellen Sie im Projektverzeichnis eine Dockerfile-Datei, die später verwendet wird. Die Datei wird im neu erstellten Ordner /data/docker/hellolearn auf dem Server bereitgestellt (der Dateipfad kann angepasst werden). Kopieren Sie das Maven-gepackte JAR-Paket und die oben erstellte Dockerfile-Datei in den neu erstellten Ordner auf dem Server (/data). /docker/hellolearn). Generieren Sie das Bild dockerbuild-thellolearn.dockerbuild-t Bildname: Die relative Position der Beschriftung der Docker-Datei, der Punkt stellt das aktuelle Verzeichnis dar und der Standardwert ist „Latest“, wenn kein Tag geschrieben wird. Containerdokument starten

So packen Sie Springboot in ein JAR-Paket in Maven So packen Sie Springboot in ein JAR-Paket in Maven May 17, 2023 am 08:19 AM

Maven-Befehl: 1.mvncleanpackage-DskipTests: Führen Sie diesen Befehl im Projektverzeichnis aus, um ein JAR-Paket oder WAR-Paket im Zielverzeichnis zu generieren. 2.mvnclean: Bereinigen Sie die vom Projekt erstellten temporären Dateien, normalerweise das Zielverzeichnis unter dem Modul. 3.mvncompile-DskipTests: Der Modulinstallationsbefehl kopiert die gepackte JAR-/War-Datei zur Verwendung durch andere Module – Dmaven-Test .skip=true überspringt Tests (testcompile wird ebenfalls übersprungen).4.mvntest: Testbefehl oder src/test/java/ ausführen

Konvertieren Sie grundlegende Datentypen mit der Java-Funktion String.valueOf() in Strings Konvertieren Sie grundlegende Datentypen mit der Java-Funktion String.valueOf() in Strings Jul 24, 2023 pm 07:55 PM

Konvertieren Sie grundlegende Datentypen mit der Java-Funktion String.valueOf() in Strings. Wenn wir in der Java-Entwicklung grundlegende Datentypen in Strings konvertieren müssen, ist eine gängige Methode die Verwendung der Funktion valueOf() der String-Klasse. Diese Funktion kann Parameter grundlegender Datentypen akzeptieren und die entsprechende Zeichenfolgendarstellung zurückgeben. In diesem Artikel untersuchen wir, wie die Funktion String.valueOf() für grundlegende Datentypkonvertierungen verwendet wird, und stellen einige Codebeispiele dafür bereit

So konvertieren Sie ein Char-Array in einen String So konvertieren Sie ein Char-Array in einen String Jun 09, 2023 am 10:04 AM

Methode zum Konvertieren eines char-Arrays in einen String: Dies kann durch Zuweisung erreicht werden. Verwenden Sie die Syntax {char a[]=" abc d\0efg ";string s=a;}, damit das char-Array dem String direkt einen Wert zuweisen und ausführen kann Der Code zum Abschließen der Konvertierung.

So starten, stoppen und starten Sie das Springboot-JAR-Paket unter Linux So starten, stoppen und starten Sie das Springboot-JAR-Paket unter Linux May 14, 2023 am 09:37 AM

Vorwort In der Konfigurationsdatei von Springboot haben die Namen der Konfigurationsdateien ihre eigene Bedeutung und Verwendung. Dev-Entwicklungsumgebung, Prod-Produktionsumgebung (Standard), Test-Testumgebung, lädt die angegebene Konfigurationsdatei – spring.profiles.active=prod Springboot lädt JAR-Pakete direkt in der Konsole. Der Nachteil besteht darin, dass das Projekt geschlossen wird, wenn die Konsole geschlossen wird. java-jarbootdo.jar//Diese Methode kann im Hintergrund ausgeführt werden, aber wenn die Shell gestartet wird, bleibt sie auch hängen java-jar/bootdo-2.0.0.jar>bootdolog.file2>&

Wie hängt SpringBoot die Konfigurationsdatei außerhalb des JAR-Pakets? Wie hängt SpringBoot die Konfigurationsdatei außerhalb des JAR-Pakets? May 15, 2023 pm 03:01 PM

1. SpringBoot gibt den Pfad der Konfigurationsdatei an: In SpringBoot kann die Konfigurationsdatei außerhalb des JAR-Pakets platziert werden, sodass die Konfiguration ohne Umpacken und Bereitstellen einfach geändert werden kann. Es gibt mehrere Möglichkeiten, das Konfigurationsdateiverzeichnis anzugeben: (sortiert von hoher bis niedriger Effektivitätspriorität) 1) Verwenden Sie Befehlszeilenparameter: Beim Starten der Anwendung können Sie --spring.config.location oder -Dspring.config verwenden Der Befehlszeilenparameter „location“ gibt den Pfad zur Konfigurationsdatei an, zum Beispiel: (das / nach config kann nicht weggelassen werden) java-jartest.jar--spring.config.locatio

So lösen Sie das Problem, dass Java Class.forName zum Laden externer Jar-Klassendateien verwendet So lösen Sie das Problem, dass Java Class.forName zum Laden externer Jar-Klassendateien verwendet May 10, 2023 pm 11:49 PM

Der Hintergrund der Geschichte liegt in einem Framework namens Magic-API. Sie können Code auf Low-Code-Art schreiben und ihn dynamisch kompilieren und ausführen. Wenn Sie jedoch einige Importklassen laden möchten, müssen Sie das JAR laden Projekt, bevor Sie es importieren können. Dann müssen Sie jedes Mal, wenn Sie zu neuen Klassen kommen, die Klasse neu in das Projekt laden, dann das Projekt packen und dann importieren ... Das ist sehr mühsam! ! ! Natürlich müssen wir auch einen allgemeinen Ausführungsprozess von Magic erwähnen. Wenn Sie eine Kopie des Quellcodes erhalten, wird der Import in die Header-Datei über Class.forName im Quellcode geladen , dann verwenden Sie URLClassLo direkt.

See all articles