批改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。
下载便能用。

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

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

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

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()函数。这个函数可以接受基本数据类型的参数,并返回对应的字符串表示。在本文中,我们将探讨如何使用String.valueOf()函数进行基本数据类型转换,并提供一些代码示例来

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

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

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

前言公司有个项目,时间比较赶,而且项目的部分需求,和之前做的项目部分功能一样,为了赶速度和直接将之前多模块的maven项目中的部分模块,直接以jar包的形式引入到新项目中了,虽然省去了不少开发时间,但是造成项目需要导入引入项目jar的相关依赖,导致项目臃肿,启动很慢。有没有办法让项目只加载自己需要的bean呢?当然我们可以直接修改源代码重新打包引入去解决,但是这个办法太多麻烦。通过百度的手段,查询可以在springboot启动类上用@ComponentScan注解去实现代码示例@Componen
