首页 后端开发 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。
下载便能用。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何在 Linux 中运行 jar 文件 如何在 Linux 中运行 jar 文件 Feb 20, 2024 am 10:40 AM

运行JAR文件的先决条件在Linux系统上运行JAR文件需要安装Java运行时环境(JRE),它是执行Java应用程序所需的基本组件,包括Java虚拟机(JVM)、核心类库等。许多主流Linux发行版,如Ubuntu、Debian、Fedora、openSUSE等,都提供了JRE包的软件库,方便用户进行安装。后文将详细介绍在流行的发行版上安装JRE的步骤。设置完JRE后,可以根据个人喜好选择使用命令行终端或图形用户界面来启动JAR文件。您的选择可能取决于对Linuxshell的熟悉程度和个人偏好

docker怎么部署SpringBoot及替换jar包 docker怎么部署SpringBoot及替换jar包 May 12, 2023 pm 02:16 PM

工程目录dockerfile文件创建dockerfile文件,后面会用到。文件部署在服务器新建/data/docker/hellolearn文件夹(文件路径可自定义),将maven打包好的jar包和上文中创建的dockerfile文件复制到服务器新建的文件夹(/data/docker/hellolearn)。生成镜像dockerbuild-thellolearn.dockerbuild-t镜像名称:标签dockerfile的相对位置,点号代表当前目录,不写tag默认是latest。启动容器doc

怎么在maven中将springboot打成jar包 怎么在maven中将springboot打成jar包 May 17, 2023 am 08:19 AM

maven的命令:1.mvncleanpackage-DskipTests:在项目目录下运行此命令,在target目录下生成jar包或war包。2.mvnclean:清理项目生产的临时文件,一般是模块下的target目录3.mvncompile-DskipTests:模块安装命令将打包的的jar/war文件复制到你的本地仓库中,供其他模块使用-Dmaven.test.skip=true跳过测试(同时会跳过testcompile).4.mvntest:测试命令,或执行src/test/java/下

使用java的String.valueOf()函数将基本数据类型转换为字符串 使用java的String.valueOf()函数将基本数据类型转换为字符串 Jul 24, 2023 pm 07:55 PM

使用Java的String.valueOf()函数将基本数据类型转换为字符串在Java开发中,当我们需要将基本数据类型转换为字符串时,一种常见的方法是使用String类的valueOf()函数。这个函数可以接受基本数据类型的参数,并返回对应的字符串表示。在本文中,我们将探讨如何使用String.valueOf()函数进行基本数据类型转换,并提供一些代码示例来

怎么把char数组转string 怎么把char数组转string Jun 09, 2023 am 10:04 AM

char数组转string的方法:可以通过赋值来实现,使用{char a[]=" abc d\0efg ";string s=a;}语法,让char数组对string直接赋值,执行代码即可完成转换。

Linux编辑启动、停止与重启springboot jar包的方法 Linux编辑启动、停止与重启springboot jar包的方法 May 14, 2023 am 09:37 AM

前言springboot的配置文件中,配置文件的名字都有各自的意义跟用途dev开发环境prod生产环境(默认)test测试环境加载指定配置文件--spring.profiles.active=prodspringboot加载jar包的方式有//直接在控制台进行启动,缺点就是控制台关闭项目也就关闭了。java-jarbootdo.jar//这种方式可以运行在后台,但是如果推出了shell的话,那也会挂java-jar/bootdo-2.0.0.jar>bootdolog.file2>&

SpringBoot怎么将配置文件挂到jar包外面 SpringBoot怎么将配置文件挂到jar包外面 May 15, 2023 pm 03:01 PM

一、SpringBoot指定配置文件路径:在SpringBoot中,可以将配置文件放在jar包外面,这样可以方便地修改配置而不需要重新打包和部署。下面是指定配置文件目录的几种方法:(按生效优先级从高到低排序)1)使用命令行参数:在启动应用程序时,可以使用--spring.config.location或-Dspring.config.location命令行参数来指定配置文件的路径,例如:(config后面的/不可省略)java-jartest.jar--spring.config.locatio

Java使用Class.forName加载外部Jar类文件的问题怎么解决 Java使用Class.forName加载外部Jar类文件的问题怎么解决 May 10, 2023 pm 11:49 PM

故事背景在一个框架叫magic-api里,可以低代码的方式写代码,动态编译执行,但是要想加载一些import类进来,需要前提在项目里加载jar完成后才可以import,那么这样每来一个新的class,就都需要重新加载class到项目,然后打包项目,再import……非常繁琐!!!当然这边还要提到magic的一个大概执行过程,拿到一份源码时,头文件上的import会经过源码里Class.forName进行加载到内存,有人会说,那直接用URLClassLo

See all articles