批改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脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

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

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

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

Dreamweaver CS6
视觉化网页开发工具

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

热门话题

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

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

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

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