批改phprpc源码以支持集合类的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。
下载便能用。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

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

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. 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

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.

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>&

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

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.
