hessian

Dubbo 2.7.7 发布,FastJson 升级了!

孤人 提交于 2020-08-13 06:32:54
作者:局长 www.oschina.net/news/115796/dubbo-2-7-7-released Apache Dubbo 2.7.7 已发布,这是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用、智能容错和负载均衡,以及服务自动注册和发现。 新版本更新内容如下: Features [Solution] 提供集成 Apache Dubbo 与 Nacos 认证的解决方案 完整的 lfu 缓存建议 [Feature] 支持应用选择首选的网络接口 [Dubbo-Performance] 重用 Hessian2Output 和 Hessian2Input 实例来降低内存使用 [Feature] In-Memory MetadataReportFactory implementation @reference和@service 的命名问题 支持 RPC 调用链上的超时传递和倒计时 添加新的负载均衡策略 Enhancement 当 RPC 调用失败时会调用 onThrowable 升级 fastjson 至 1.2.68 升级 hessian-lite 至 3.2.7 [feature] 当线程池用尽时会发布 ThreadPoolExhaustedEvent 当处于 FINALIZE 状态时,ReferenceConfig(null)

Java架构师面试题系列之Dubbo面试专题(29题,含详细答案解析)

让人想犯罪 __ 提交于 2020-08-13 01:52:24
【 Java架构师面试网 】收集整理了几乎整个架构师学习途中会遇到的面试题,希望大家都能早日圆自己的架构师梦~ 网站近期在备案和迁移服务器,暂时无法打开,先关注一波公众号吧 公众号: Java架构师面试网 ,关注回复“ 资料 ”即可领取精美整理的面试资料一份哦~ 1. Dubbo 支持哪些协议,每种协议的应用场景,优缺点? dubbo : 单一长连接和 NIO 异步通讯,适合大并发小数据量的服务调用,以及消费者远大于提供者。传输协议 TCP,异步, Hessian 序列化; rmi : 采用 JDK 标准的 rmi 协议实现,传输参数和返回参数对象需要实现Serializable 接口,使用 java 标准序列化机制,使用阻塞式短连接,传输数据包大小混合,消费者和提供者个数差不多,可传文件,传输协议 TCP。多个短连接, TCP 协议传输,同步传输,适用常规的远程服务调用和 rmi 互操作。在依赖低版本的 Common-Collections 包, java 序列化存在安全漏洞; http : 基于 Http 表单提交的远程调用协议,使用 Spring 的 HttpInvoke 实现。多个短连接,传输协议 HTTP,传入参数大小混合,提供者个数多于消费者,需要给应用程序和浏览器 JS 调用; webservice : 基于 WebService 的远程调用协议,集成 CXF 实现

Dubbo2.7.7 反序列化漏洞绕过分析

陌路散爱 提交于 2020-08-10 16:50:50
作者:freddychi(迟长峰)@腾讯安全云鼎实验室 公众号: https://mp.weixin.qq.com/s/jKM-Z2BTFfk_Ro1rJAxg5w 北京时间2020-6-22日Apache官方发布了Dubbo 2.7.7版本,其中修复了一个严重的远程代码执行漏洞(CVE-2020-1948),这个漏洞是由腾讯安全玄武实验室的ruilin提交,该漏洞允许攻击者使用任意的服务名和方法名发送RPC请求,同时将恶意序列化参数作为有效载荷,当恶意序列化的参数被反序列化时将执行恶意代码。该漏洞与 CVE-2017-3241 RMI反序列化漏洞有点类似,都是在远程调用过程中通过方法参数传入恶意序列化对象,服务端在解析参数进行反序列化时触发。Dubbo Github Star数量32.8k,知名度不亚于fastjson,被大量企业使用,包括一些知名互联公司,漏洞影响十分广泛。 补丁分析 从补丁对比文件来看,在DecodeableRpcInvocation.java文件133-135行增加了对Method方法进行验证,如果验证不通过则抛出非法参数异常终止程序运行,核心代码代码如下: if (!RpcUtils.isGenericCall(path, this.getMethodName()) && !RpcUtils.isEcho(path, this.getMethodName(

上线前一个小时,dubbo这个问题可把我折腾惨了

扶醉桌前 提交于 2020-08-10 06:51:35
前因 那是一个月黑风高的夜晚,不管有没有圆圆的月亮,都无法解救要加班的我。这就是苦涩的人生啊! 那天正好是春节回家的日子,定了晚上的票,然后还是上线的日子。 测试在做回归测试的时候,发现一个老功能报错了,什么鬼,都没改过那块代码怎么会出问题?案件疑点重重呀。。。 为了能够早点上线,早点回家,所以这个 Bug 就显得十万火急了,因为就这一个问题,其他都没问题,解决好了就可以上线了,于是开启了破案之路。 第一步:找到错误信息 机智的我在第一时间打开了 Cat 查看具体的错误,由于当时并没有想到去写一篇文章出来,错误信息也就没有截图,后面通过模拟的操作,得到了类似的一样的错误信息如下: Cat错误信息 居然是类转换错误,点进去查看详细的错误信息,如下图: Cat错误详情 真正有价值的错误信息如下: dubbo version: 2 .7 .3, current host: 192 .168 .8 .224 java .lang .ClassCastException: java .util .HashMap cannot be cast to com .cxytiandi .kittycloud .user .api .request .Address 第二步:排查报错的代码 公司代码不方便透露,下面都是模拟的代码: public ResponseData<String> login

OpenCV开发笔记(六十四):红胖子8分钟带你深入了解SURF特征点(图文并茂+浅显易懂+程序源码)

允我心安 提交于 2020-08-05 18:48:06
若该文为原创文章,未经允许不得转载 原博主博客地址: https://blog.csdn.net/qq21497936 原博主博客导航: https://blog.csdn.net/qq21497936/article/details/102478062 本文章博客地址: https://blog.csdn.net/qq21497936/article/details/106816775 各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门) OpenCV开发专栏(点击传送门) 上一篇:《 OpenCV开发笔记(六十三):红胖子8分钟带你深入了解SIFT特征点(图文并茂+浅显易懂+程序源码) 》 下一篇:持续补充中… 前言   红胖子,来也!   识别除了传统的模板匹配之外就是体征点了,前面介绍了SIFT特征点,而SUFT是改进后SIFT特征点。 <br> Demo             <br> SURF特征点 概述   SURF,即加速稳健特征(Speeded Up Robust Features)是一个稳健的图像识别和描述算法,首先于2006年发表在欧洲计算机视觉国际会议

一文通透优化算法:从随机梯度、随机梯度下降法到牛顿法、共轭梯度

你。 提交于 2020-08-04 12:07:17
一文通透优化算法:从随机梯度、随机梯度下降法到牛顿法、共轭梯度 1 什么是梯度下降法 经常在机器学习中的优化问题中看到一个算法,即梯度下降法,那到底什么是梯度下降法呢? 维基百科给出的定义是梯度下降法(Gradient descent)是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。如果相反地向梯度正方向迭代进行搜索,则会接近函数的局部极大值点;这个过程则被称为梯度上升法。 额,问题又来了,什么是梯度?为了避免各种复杂的说辞,咱们可以这样简单理解,在单变量的实值函数的情况,梯度就是导数,或者,对于一个线性函数,也就是线的斜率。 1.1 梯度下降法示例 举个形象的例子吧,比如当我们要 做一个房屋价值的评估系统, 那都有哪些因素决定或影响 房屋的价值 呢? 比如说面积、 房子 的 大小 (几室几厅)、地段、朝向等等,这些影响房屋价值的变量被称为特征(feature)。在 这里 ,为了简单,我们 假定 房屋 只由 一个变量影响, 那 就是房屋的面积。 假设有一个房屋销售的数据如下: 面积(m^2) 销售价钱(万元) 123 250 150 320 87 160 102 220 … … 插句题外话,顺便吐下槽, 这 套房屋价格数据在五年前可能还能买到 帝都5环左右的

聊聊dubbo-go的DubboPackage

混江龙づ霸主 提交于 2020-07-29 00:45:40
序 本文只要研究一下dubbo-go的DubboPackage DubboPackage dubbo-go-v1.4.2/protocol/dubbo/codec.go //CallType call type type CallType int32 const ( // CT_UNKNOWN unknown call type CT_UNKNOWN CallType = 0 // CT_OneWay call one way CT_OneWay CallType = 1 // CT_TwoWay call in request/response CT_TwoWay CallType = 2 ) // SequenceType ... type SequenceType int64 // DubboPackage ... type DubboPackage struct { Header hessian.DubboHeader Service hessian.Service Body interface{} Err error } DubboPackage定义了Header、Service、Body、Err属性 Marshal dubbo-go-v1.4.2/protocol/dubbo/codec.go // Marshal ... func (p *DubboPackage)

Dubbo

喜夏-厌秋 提交于 2020-05-09 20:27:15
1.Dubbo是什么? Dubbo 是一个分布式、高性能、透明化的 RPC 服务框架,提供服务自动注册、自动发现等高效服务治理方案, 可以和 Spring 框架无缝集成。 RPC 指的是远程调用协议,也就是说两个服务器交互数据。 2.Dubbo的由来? 互联网的快速发展,Web应用程序的规模不断扩大,一般会经历如下四个发展阶段。 单一应用架构 当网站流量很小时,只需一个应用, 将所有功能都部署在一起即可。 垂直应用架构 当访问量逐渐增大,单一应用按照有业务线 拆成多个应用 ,以提升效率。 此时,用于加速前端页面开发的 Web框架(MVC) 是关键。 分布式服务架构 当垂直应用越来越多,应用之间交互不可避免, 将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心 ,使前端应用能更快速的响应多变的市场需求。 此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。 流动计算架构 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现, 此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率 。 此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。 3.Dubbo的主要应用场景? 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本

Dubbo源码学习总结系列一 总体认识

坚强是说给别人听的谎言 提交于 2020-05-02 14:32:50
本文写作时,dubbo最高版本是V2.6.0。 写这篇文章主要想回答以下4个问题: 一、dubbo是什么?完成了哪些主要需求? 二、dubbo适用于什么场景? 三、dubbo的总体架构是什么样的? 四、dubbo调用的过程是什么样的? 下面就一一道来。 一、dubbo是什么?完成了哪些主要需求? dubbo是一个面向服务治理(SOA)的分布式RPC框架。 它主要实现了以下一些需求: RPC方面: 实现了基本的RPC过程,开发了DubboProtocol作为默认的实现,并集成了Hession,RMI,HTTP,WebService,Thrift(被改造,与原Thrift不兼容),Rest等远程过程调用框架。基本组成为:Protocol(默认dubbo),Invoker,Transporter(默认netty),Codec2(默认Hession2编码)。 编解码方面提供了Hession2(默认,阿里修改过的 hessian lite )、dubbo、Java、JSON、Thrift(与原Thrift不兼容)、Kryo、FST序列化。 DubboProtocol实现了同步调用、异步请求、回调方法设置、本地调用等等灵活的调用特性。 服务治理方面: 1、实现了集群、容错、负载均衡及路由策略 2、实现了注册功能,完成提供者、消费者注册、订阅通知策略等; 3、对外提供了服务提供者、消费者配置信息

十、IntelliJ IDEA 中 Project 和 Module 的概念及区别

南楼画角 提交于 2020-05-01 00:24:04
在 IntelliJ IDEA 中,没有类似于 Eclipse 工作空间(Workspace)的概念,而是提出了 Project 和 Module 这两个概念。接下来,就让咱们一起看看 IntelliJ IDEA 官方是如何描述两者的吧! 对于 Project,IntelliJ IDEA 官方是这样介绍的: A project is a top-level organizational unit for your development work in IntelliJ IDEA. In its finished form, a project may represent a complete software solution. A project is a collection of: Your work results: source code, build scripts, configuration files, documentation, artifacts, etc. SDKs and libraries that you use to develop, compile, run and test your code. Project settings that represent your working preferences in the context of