Maison développement back-end tutoriel 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。
下载便能用。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment exécuter des fichiers jar sous Linux Comment exécuter des fichiers jar sous Linux Feb 20, 2024 am 10:40 AM

Conditions préalables à l'exécution de fichiers JAR L'exécution de fichiers JAR sur un système Linux nécessite l'installation de Java Runtime Environment (JRE), qui est le composant de base requis pour exécuter des applications Java, notamment la machine virtuelle Java (JVM), les bibliothèques de classes principales, etc. De nombreuses distributions Linux grand public, telles qu'Ubuntu, Debian, Fedora, openSUSE, etc., fournissent des bibliothèques logicielles de packages JRE pour faciliter l'installation par l'utilisateur. L'article suivant détaillera les étapes pour installer JRE sur les distributions populaires. Après avoir configuré le JRE, vous pouvez choisir d'utiliser le terminal de ligne de commande ou l'interface utilisateur graphique pour démarrer le fichier JAR selon vos préférences personnelles. Votre choix peut dépendre de votre familiarité avec les shells Linux et de vos préférences personnelles.

Comment Docker déploie SpringBoot et remplace les packages jar Comment Docker déploie SpringBoot et remplace les packages jar May 12, 2023 pm 02:16 PM

Créez un fichier dockerfile dans le fichier dockerfile du répertoire du projet, qui sera utilisé ultérieurement. Le fichier est déployé dans le dossier /data/docker/hellolearn nouvellement créé sur le serveur (le chemin du fichier peut être personnalisé). Copiez le package jar packagé maven et le fichier docker créé ci-dessus dans le dossier nouvellement créé sur le serveur (/data/). docker/hellolearn). Générez l'image dockerbuild-thellolearn.dockerbuild-t Nom de l'image : la position relative du fichier docker de l'étiquette, le point représente le répertoire courant, et la valeur par défaut est la plus récente si aucune balise n'est écrite. Démarrer la documentation du conteneur

Comment emballer Springboot dans un package jar dans maven Comment emballer Springboot dans un package jar dans maven May 17, 2023 am 08:19 AM

Commande maven : 1.mvncleanpackage-DskipTests : exécutez cette commande dans le répertoire du projet pour générer un package jar ou un package war dans le répertoire cible. 2.mvnclean : Nettoyez les fichiers temporaires produits par le projet, généralement le répertoire cible sous le module 3.mvncompile-DskipTests : La commande d'installation du module copie le fichier jar/war emballé dans votre entrepôt local pour une utilisation par d'autres modules -Dmaven test. .skip=true ignore les tests (la compilation de tests sera également ignorée).4.mvntest : commande de test ou exécutez src/test/java/

Convertissez les types de données de base en chaînes à l'aide de la fonction String.valueOf() de Java Convertissez les types de données de base en chaînes à l'aide de la fonction String.valueOf() de Java Jul 24, 2023 pm 07:55 PM

Convertir les types de données de base en chaînes à l'aide de la fonction String.valueOf() de Java Dans le développement Java, lorsque nous devons convertir les types de données de base en chaînes, une méthode courante consiste à utiliser la fonction valueOf() de la classe String. Cette fonction peut accepter les paramètres des types de données de base et renvoyer la représentation sous forme de chaîne correspondante. Dans cet article, nous explorerons comment utiliser la fonction String.valueOf() pour les conversions de types de données de base et fournirons quelques exemples de code pour

Comment convertir un tableau de caractères en chaîne Comment convertir un tableau de caractères en chaîne Jun 09, 2023 am 10:04 AM

Méthode de conversion d'un tableau de caractères en chaîne : cela peut être réalisé par affectation. Utilisez la syntaxe {char a[]=" abc d\0efg ";string s=a;} pour laisser le tableau de caractères attribuer directement une valeur à la chaîne et l'exécuter. le code pour terminer la conversion.

Comment démarrer, arrêter et redémarrer le package Springboot Jar dans l'édition Linux Comment démarrer, arrêter et redémarrer le package Springboot Jar dans l'édition Linux May 14, 2023 am 09:37 AM

Avant-propos Dans le fichier de configuration de springboot, les noms des fichiers de configuration ont leurs propres significations et utilisations. dev environnement de développement prod environnement de production (par défaut) test environnement de test charge le fichier de configuration spécifié--spring.profiles.active=prod Les moyens de le faire. springboot pour charger les packages jar est/ /Démarrer directement dans la console. L'inconvénient est que le projet sera fermé à la fermeture de la console. java-jarbootdo.jar//Cette méthode peut s'exécuter en arrière-plan, mais si le shell est lancé, elle se bloquera également java-jar/bootdo-2.0.0.jar>bootdolog.file2>&

Comment SpringBoot bloque-t-il le fichier de configuration en dehors du package jar ? Comment SpringBoot bloque-t-il le fichier de configuration en dehors du package jar ? May 15, 2023 pm 03:01 PM

1. SpringBoot spécifie le chemin du fichier de configuration : Dans SpringBoot, le fichier de configuration peut être placé en dehors du package jar, afin que la configuration puisse être facilement modifiée sans reconditionnement ni déploiement. Il existe plusieurs façons de spécifier le répertoire du fichier de configuration : (triés de priorité d'efficacité élevée à faible) 1) Utilisez les paramètres de ligne de commande : lors du démarrage de l'application, vous pouvez utiliser --spring.config.location ou -Dspring.config. Le paramètre de ligne de commande location spécifie le chemin d'accès au fichier de configuration, par exemple : (le / après la configuration ne peut pas être omis) java-jartest.jar--spring.config.locatio

Comment résoudre le problème de Java en utilisant Class.forName pour charger des fichiers de classe Jar externes Comment résoudre le problème de Java en utilisant Class.forName pour charger des fichiers de classe Jar externes May 10, 2023 pm 11:49 PM

L'arrière-plan de l'histoire se trouve dans un framework appelé magic-api. Vous pouvez écrire du code de manière low-code, le compiler et l'exécuter dynamiquement. Cependant, si vous souhaitez charger certaines classes d'importation, vous devez charger le fichier jar dans le fichier. projet avant de pouvoir l'importer. Ensuite, chaque fois que vous arrivez à de nouvelles classes, vous devez recharger la classe dans le projet, puis empaqueter le projet, puis importer... C'est très fastidieux ! ! ! Bien sûr, nous devons également mentionner un processus général d'exécution de la magie. Lorsque vous obtenez une copie du code source, l'importation sur le fichier d'en-tête sera chargée dans la mémoire via Class.forName dans le code source. , utilisez simplement URLClassLo.

See all articles