- 浏览: 366010 次
- 性别:
- 来自: 阿里巴巴
文章分类
- 全部博客 (207)
- Maven (5)
- Cassandra (2)
- Hadoop (3)
- LDAP (2)
- SOA (7)
- 认证、加密、安全 (6)
- 搜索引擎相关技术 (3)
- REST (7)
- 数据库 (11)
- Java 基础相关 (38)
- UML (1)
- Java NIO 框架 (3)
- javassist (1)
- Bean容器 (4)
- 网络编程 (1)
- NoSQL (4)
- XML、Json (1)
- JS (2)
- Google (6)
- Warp-MVC (2)
- 持久层 (2)
- sitebricks (1)
- MVC (6)
- CSS (2)
- JPA (2)
- RDBMS (5)
- cache (4)
- tomcat (1)
- 其它 (3)
- eclipse (1)
- bigpipe (1)
- RDBMS MySQL (1)
- MySQL (2)
- ant (1)
- 前端 (2)
- Groovy (1)
- linux (3)
- Scala (1)
- zookeeper (1)
- redis (2)
- 测试 (1)
- 监控 (1)
- mac (3)
- 区块链 (3)
- 工具 (1)
最新评论
-
masuweng:
好好好,辛苦了!!
Spring Data JPA 简单介绍 -
masuweng:
Spring Data JPA 简单介绍 -
zhangjianxinjava:
您好,大神本人小白一个最近在研究不知道可否 通过邮箱进行交流, ...
JAVA Metrics度量工具 - Metrics Core -
xzs603:
http://zhengdl126.iteye.com/blo ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
JavaStart:
运行mysql2redis 的install.sh 文件为何提 ...
mysql到redis的复制
demo中客户端和服务端的hessian版本都是4.0.7,下面是客户端向服务器端发送的hessian调用及序列化参数的二进制数据,这些数据作为Http Post请求的数据部分传递给了服务器端。
99 2 0 109 0 3 115 97 121 77 116 0 20 104 101 115 115 105 97 110 46 84 114 97 100 101 73 116 101 109 68 116 111 83 0 6 97 109 111 117 110 116 77 116 0 20 106 97 118 97 46 109 97 116 104 46 66 105 103 68 101 99 105 109 97 108 83 0 5 115 99 97 108 101 73 0 0 0 0 83 0 6 105 110 116 86 97 108 78 122 122 122
Hessian被称为二进制协议(区别于类似Http的文本协议),是因为hessian调用会被转换为类似上面的字节流,服务器端需要能够解析这个字节流,所以字节流的形成和解析就要遵循hessian协议。特别的hessian同样定义了自己的序列化协议,并没有采用java的序列化机制。与其相比,hessian序列化简单、形成的字节流更加的精简。
下面我们先简单翻译下上面的字节流,大致是这个样子:
'c' 2 0 'm' 0 3 's' 'a' 'y' 'M' 't' 0 20 'h' 'e' 's' 's' 'i' 'a' 'n' '.' 'T' 'r' 'a' 'd' 'e' 'I' 't' 'e' 'm' 'D' 't' 'o' 'S' 0 6 'a' 'm' 'o' 'u' 'n' 't' 'M' 't' 0 20 'j' 'a' 'v' 'a' '.' 'm' 'a' 't' 'h' '.' 'B' 'i' 'g' 'D' 'e' 'c' 'i' 'm' 'a' 'l' 'S' 0 5 's' 'c' 'a' 'l' 'e' 'I' 0 0 0 0 'S' 0 6 'i' 'n' 't' 'V' 'a' 'l' 'N' 'z' 'z' 'z'
上面只不过是将一些asii字节码翻译为了字符,还是不够清晰,下面就清楚些了,这就是按照Hessian协议进行的一次简单远程调用,意思是此为2.0的rpc,要调用远程service的say方法,方法的参数为hessian.TradeItemDto对象,这个对象有一个字段amount,类型是java.math.BigDecimal类型,amount.scale=0,amount.intVal=null,也就是说amount=0。相当于调用远程service.say(tradeItemDto),而tradeItemDto.amount=0,这里其实是有问题的,demo中传递的是2999,而这里确变为了0,这个问题暂时还没弄清楚。
c 2 0 m 0 3 say M t 0 20 hessian.tradeItemDto S 0 6 amount M t 0 20 java.math.BigDecimal S 0 5 scale I 0 0 0 0 S 0 6 intVal N z z z
下面是服务器端返回给客户端的字节流
72 2 0 82 10 72 101 108 108 111 32 50 57 57 57
'H' 2 0 'R' 10 'H' 'e' 'l' 'l' 'o' ' ' '2' '9' '9' '9'
翻译一下,意思是说,hessian协议是2.0版本,这是一个对远程调用的Reply,返回的是一个长度为10的字符串"Hello 2999"。包括上面的字节流和这里其实demo中返回的是"H 2 0 R 7 Hello 0",因为客户端传过来的就是tradeItemDto.amount=0,下面结果是经过我修改的,是应该返回的结果。
H 2 0 R 10 Hello 2999
在demo里面遇到一个问题,现象是参数tradeItemDto.amount是2999,事实序列化成的字节流里是0, 那个问题貌似是因为序列化出了问题,这个还要在研究下在后面在谈这个问题。
HessianProxyFactory里可以设置一些标志,比如是否支持方法重载setOverloadEnabled,设置读超时setReadTimeout,设置连接超时setConnectTimeout,设置Hessian 2.0请求setHessian2Request,设置Hessian 2.0 Reply setHessian2Reply,默认是1.0请求,2.0 Reply。上面的Demo中就是1.0请求,2.0Reply
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/huoyijie/archive/2010/09/26/5907169.aspx
发表评论
-
浮点数计算
2020-08-25 16:15 323@Test public void test2() ... -
AQS、ReentrantLock、CLH锁 、MCS锁 分析
2018-12-25 23:45 6781. ReentrantLock的介绍 Reentran ... -
Java并发编程:CountDownLatch、CyclicBarrier、Semaphore、Phaser
2015-02-26 16:41 1369在java 1.5中,提供了 ... -
技术网站资料
2014-07-17 11:53 0http://javakaiyuan.com ht ... -
Java之死-前言
2014-07-15 10:14 751用了好多年的java之后越来越感觉其并不像 ... -
通过JVM获取相关的服务器信息 .
2013-01-07 20:18 2169http://blog.csdn.net/zgmzyr/art ... -
Java中使用OpenSSL生成的RSA公私钥进行数据加解密
2012-10-25 11:34 4376openssl genrsa -out rsa_pr ... -
java开源
2012-05-29 14:34 1492开源不是开放编译器的源代码,而是写了一个软 ... -
用Ant打Jar包--在Manifest中引用Classpath
2012-03-15 13:20 1590用Ant打Jar包--在Manifest ... -
分布式锁服务器
2011-11-07 22:14 1949在分布式系统中如何 ... -
Java 7 Fork/Join 并行计算框架概览
2011-11-05 16:26 1073http://www.iteye.com/topic/ ... -
Apache Jakarta Commons 工具集简介
2011-11-03 11:22 1589org.apache.commons.collectio ... -
JDBC batch批处理Statement executeBatch 详解
2011-09-28 13:25 2745http://blog.csdn.net/basene ... -
代码动态生成利器ASM
2011-09-22 20:02 1056前言 代码生成器(code generato ... -
Fastjson技术内幕
2011-09-13 23:51 1341文章来源:http://code.alibabatech.co ... -
基于Spring可扩展Schema提供自定义配置支持
2011-08-07 16:01 1232在很多情况下,我们需要为系统提供可配置化支持,简单的做法可以直 ... -
Mule 与 Spring2.0's extensible XML configuration mechanism
2011-08-07 15:50 1361mule2.2.1已经采用从sprin ... -
alibaba fastjson(json序列化器)序列化部分源码解析
2011-08-03 21:11 2016本文copy自http://www.flydmeng.co ... -
JVM 远程调试 参数
2011-07-28 09:49 1886远程调试 参数 -server -Xdebug -Xnoag ... -
Sequential Lock in Java
2011-07-03 16:22 14021 Overview Linux内核中常见的同步机制 ...
相关推荐
Umi-OCR-main.zip
基于springboot+Web的毕业设计选题系统源码数据库文档.zip
基于springboot校外兼职教师考勤管理系统源码数据库文档.zip
58商铺全新UI试客试用平台网站源码
基于springboot大学生就业信息管理系统源码数据库文档.zip
基于SpringBoot的口腔诊所系统源码数据库文档.zip
数据存放网盘,txt文件内包含下载链接及提取码,永久有效。失效会第一时间进行补充。样例数据及详细介绍参见文章:https://blog.csdn.net/T0620514/article/details/143956923
3-240P2162218.zip
网络安全 基于Qt创建的Linux系统下的浏览器.zip
C++ 类和对象:多态-练习题目2(制作咖啡和茶叶)
基于springboot+J2EE在线项目管理与任务分配中的应用源码数据库文档.zip
简介本项目提供了一个在51单片机上运行的简单操作系统,旨在帮助学习者深入理解操作系统的基本原理和任务调度机制。该操作系统通过汇编和C语言编写,实现了任务调度、中断处理等核心功能,并提供了详细的源代码和注释,方便学习和实践。
本文将深度卷积神经网络(CNN)设计实现一个复杂结构的生成模型,旨在通过多阶段的编码器-解码器结构,能够有效地将灰度图像转换为彩色图像。最后,本文将实现一个简单的Web应用,用户可以通过上传灰度图像,应用会使用预训练的Caffe模型对其进行颜色化,并将结果返回给用户。 1.模型设计:模型由多个卷积层、ReLU激活函数和批归一化层组成,通过前向传播函数将输入的灰度图像(L通道)转换为彩色图像(ab通道)。如果指定了 pretrained=True,则会自动下载并加载预训练的模型权重。 2. 系统通过Flask框架提供了一个Web应用,用户可以上传灰度图像,系统会自动将其转换为彩色图像,并在网页上显示结果。整个过程包括文件验证、图像处理、颜色化预测和结果展示,具有较高的实用性和用户体验。
一个JAVA图形化的、联网的五子棋游戏.zip javaweb
KWDB 是一款面向 【AIoT 场景】的【分布式多模数据库】,支持在同一实例同时建立时序库和关系库并融合处理多模数据,具备千万级设备接入、百万级数据秒级写入、亿级数据秒级读取等时序数据高效处理能力,具有稳定安全、高可用、易运维等特点。
页面数量:7页 网页主题:网站模板、酒店网站模板、官方网站模板 网页页面:首页、关于我们、相关服务、服务详情、在线博客、博客详情、在线留言 页面实现元素:加载动画、滚动加载、主题切换、导航栏 、轮播图、图文列表、图片切换、 文字列表、 按钮悬停、图片悬停、表单 实现技术:HTML、CSS 、JQuery 源码样式及js文件均分开存放,所有内容仅供初学者学习参考
内容概要:本文档提供了详细的 Neo4j 安装与配置指南,涵盖 Windows、Linux 和 Mac 系统的安装步骤。具体包括下载、安装、启动服务、修改配置文件(如端口配置、远程访问和内存限制)、设置管理员密码以及基本的 Cypher 查询语言使用方法。同时,还提供了一些常见问题及其解决方案。 适合人群:数据库管理员、软件开发人员、系统管理员。 使用场景及目标:①帮助初学者快速掌握 Neo4j 的安装与配置;②适用于需要搭建和使用图数据库的项目;③为已有用户解决常见问题。 其他说明:本文档不仅包含了基础的安装和配置流程,还提供了实际操作中可能遇到的问题及其解决方法,有助于提高使用者的实际操作能力。
基于SpringBoot+Vue的软件产品展示销售系统源码数据库文档.zip
《书戴嵩画牛》教学课件.pptx
20届智能车 【项目资源】:包含前端、后端、移动开发、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源,毕业设计等各种技术项目的源码。包括C++、Java、python、web、C#、EDA等项目的源码。 【适用人群】:适用于希望学习不同技术领域的初学者或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。