Dubbo 4 Dubbo 高级特性 4.2 Dubbo 常用高级配置 4.2.1 序列化

news2024/12/29 23:02:21

Dubbo

【黑马程序员Dubbo快速入门,Java分布式框架dubbo教程】

4 Dubbo 高级特性

文章目录

      • Dubbo
      • 4 Dubbo 高级特性
        • 4.2 Dubbo 常用高级配置
          • 4.2.1 序列化

4.2 Dubbo 常用高级配置

4.2.1 序列化

【一个问题】

两个机器传输数据,如何传输Java对象?

举个栗子

在这里插入图片描述

现在 有个生产者 和一个 消费者,消费者要查询 生产者 提供的服务,

生产者 去查询数据库 就可以搞出来 一个数据,比如User 对象

在这里插入图片描述

在这里插入图片描述

最后生产者 再把User 对象发送给消费者, 就算 完成了这个过程

【但是】

这两个 服务将来 肯定是两台 机器上 的两个 项目,如何传输 User 这个Java 对象?

【做法 就是序列化】

在这里插入图片描述

生产者 将User 对象 序列化为流的数据

在这里插入图片描述

前提是 这个User 对象 要实现Serializable 接口

现在就可以通过 流 把数据 发送到消费者

在这里插入图片描述

消费者 拿到这个 流数据后

在这里插入图片描述

通过反序列 化, 将流数据 重新转回 User 对象

注意,不管是序列化 还是反序列化,消费者 和生产者 这两端 都要 用到User 这个类

在这里插入图片描述

所以一般做法就是 把User 这个类,独立到一个模块中

然后消费者 和 生产者 都通过Maven 依赖 来依赖这个带有 User类 的 模块

【如何实现??】

  • dubbo 内部已经将序列化和反序列化的过程内部封装了
  • 我们只需要在定义pojo类时实现Serializable接口即可
  • 一般会定义一个公共的pojo模块,让生产者和消费者都依赖该模块。

【试试】

先来一个 新的模块

在这里插入图片描述

OK,直接创建

在这里插入图片描述

OK, 一个全新的 Maven模块

直接来一个实体类

package com.dingjiaxiong.pojo;

/**
 * ClassName: User
 * date: 2022/11/14 13:17
 *
 * @author DingJiaxiong
 */


public class User {

    private int id;
    private String username;
    private String password;

    public User() {
    }

    public User(int id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

OK,先不急 实现接口

在这里插入图片描述

在dubbo-interface 公共接口模块中再来一个 接口

先引入 pojo 模块的依赖

在这里插入图片描述

OK, 编写接口

/**
 * 查询用户
 * */
public User findUserById(int id);

在这里插入图片描述

OK,这样方法 就加上 了

在service 模块中的实现类 里对这个接口进行实现

public User findUserById(int id) {

    // 查询User 对象【这里躲懒了,不走数据库】
    User user = new User(1,"zhangsan","123");
    
    return user;
}

在这里插入图片描述

OK,这样就行了

在web 模块中再来一个接口,方便测试

// 根据ID 查询用户信息
@RequestMapping("/find")
public User find(int id){

    return userService.findUserById(id);
}

其实吧,实现类 那儿,id 写死了 …

在这里插入图片描述

没事,测试嘛

OK, install 模块

pojo:

在这里插入图片描述

interface:

在这里插入图片描述

OK, 重启 service 和 web 两个服务

在这里插入图片描述

OK,开始测试

在这里插入图片描述

OK, 不出意外,直接报错了,查看控制台 的日志

老师的很明确的打印了,User 类 必须实现序列化 接口

【笔者没找到】现在 加上实现

在这里插入图片描述

OK, 重新安装 pojo 模块

在这里插入图片描述

OK,重启service 和 web 服务

在这里插入图片描述

再试一次

在这里插入图片描述

OK, 这样就可以了

这就是 序列化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/98019.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【YOLOv7-环境搭建⑥】PyTorch安装

下载链接: 来源:(博主)唐三. 链接:https://pan.baidu.com/s/1y6s_EScOqvraFcx7iPSy1g 提取码:m1oa 安装步骤: 在命令指示符中输入以下命令: activate→conda activate py37→输入以下命令&#xff08…

【Python机器学习】密度聚类DBSCAN、OPTICS的讲解及实战演示(附源码 超详细)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 划分聚类、密度聚类和模型聚类是比较有代表性的三种聚类思路 1:划分聚类 划分(Partitioning)聚类是基于距离的,它的基本思想是使簇内的点距离尽量近、簇间的点距离尽量远。k…

UOS SDN

​ 文章目录 一.安装相关软件包二.上传并解压opendaylight软件包三.创建拓扑四.下发流表五.启动HTTP-server服务六.截图测试启动 OpenDayLight 的 karaf 程序,并安装如下组件: feature:install odl-restconf feature:install odl-l2switch-switch-ui feature:install odl-…

关于torch.fx的使用

torch.fx 前言 最近在学习一些AI编译器,推理框架的知识,恰好看到了torch.fx这个部分。这个其实在1.10就已经出来了,但是一直不知道,所以花了一点时间学习了这部分的内容。 以下所有的代码基于Mac M1 pytorch 1.13,其…

JavaScript(六):数组

JavaScript数组数组的创建方式数组的索引(不使用内置方法)数组的遍历数组中新增元素(不使用内置方法)数组的检测数组的方法数组的创建方式 1.利用new创建数组 var 数组名 new Array(); 例如: var arr new Array();…

一句话生成角色动画 # text2motion

‍‍‍‍当你和他人谈论人工智能的潜力时,很多人都表露出同样的担心:害怕被取代‍特别在最近几个月,随着生成式人工智能的投资和创新的爆炸性增长,这些不安的感觉更加强烈。机器学习中相对较新的创新,即扩散模型&#…

干货 | 轮廓逼近原理与OpenCV应用(附Python-OpenCV文档下载)

导 读 本文主要介绍轮廓逼近的原理及其在OpenCV中的使用演示。同时可在文末获取Python-OpenCV学习文档pdf。 背景介绍 轮廓逼近的应用比较广泛,如下路线俯视图的简化: 通过迭代平滑一些顶点,从而产出更加线性的路线: 当然这只是轮廓逼近的其中一个应用,后续我们将…

nodejs企业工厂设备维修管理系统vue

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 web简介 4 2.3 B/S结构 4 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:技术背景 5 …

【Linux权限】文件权限值,权限掩码,粘滞位,普通用户添加信任名单

目录 1.权限分为2种用户:超级用户,普通用户 2.文件类型和访问权限 ​3.权限掩码(八进制) 4.sudo短暂提升权限 5.粘滞位 1.权限分为2种用户:超级用户,普通用户 超级用户(通常为root&#x…

【前端开发学习】5.JQuery

文章目录1 JQuery2 快速上手3 寻找标签3.1 直接寻找3.2 间接寻找案例:菜单转换4 操作样式5 值的操作案例:动态创建数据库6 事件案例:表格操作7 前端整合案例1 JQuery 一个 JavaScript 的第三方模块(第三方类库)。 基…

再学C语言7:数据类型(3)——char类型

char类型用于存储字母和标点符号之类的字符 在技术实现上,char是整数类型,因为char类型实际存储的是整数而不是字符 为了处理字符,计算机使用一种数字编码,用特定的整数表示特定的字符 经典和常用的是ASCII码,标准A…

React学习29(react-redux最终完整版)

说明 1)所有变量名字要规范,尽量触发对象的简写形式 2)reducers文件夹中,编写index.js专门用于汇总并暴露所有的reducer 项目结构 代码示例 index.js import React from react import ReactDOM from react-dom import App fr…

ios 证书与签名

证书与签名 XCode中配置的Code Signing Identity(entitlements、certificate)必须与Provisioning Profile匹配,并且配置的Certificate必须在本机Keychain Access中存在对应Public/Private Key Pair,否则编译会报错。 X…

Improved Techniques for Training Score-Based Generative Models论文阅读

论文链接:Improved Techniques for Training Score-Based Generative Models 文章目录摘要引言背景郎之万动力学基于分数的生成模型选择噪声尺度初始的噪声尺度其它噪声等级结合噪音信息配置退火朗之万动力学EMA改善稳定性组合所有技巧定量结果消融研究更高分辨率结…

[附源码]计算机毕业设计PythonQ宝商城(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

同样是1亿数据,为什么nutsdb扛不住,而badgerdb可以?

背景 ​ 之前在知乎上看到一个问题:作为一个KV数据库,levelDB为什么使用LSM树实现,而不是hash索引?当时就想作答一番。不过看到问题下方已经有大佬作答了,而我也说不出什么新东西来。于是选择作罢。 ​ 但是最近有nut…

磁共振功能成像BOLD-fMRI原理

小川诚二(Seiji Ogawa)教授于1990年首次在大鼠上实现了功能磁共振成像 fMRI的对比度产生机制 fMRI的信号来源仍然为氢质子,MRI解剖图像对解剖结构的差别非常敏感,fMRI功能图像对神经元活动所伴随的生理变化敏感fMRI的生理学基础 脑的血液动力学&#x…

【Ubuntu】将Qt程序打包制作成deb

1、打包Qt程序 1.1 下载linuxdeployqt 如果使用环境是x86可以直接下载,下载地址 https://github.com/probonopd/linuxdeployqt/releases如果使用环境是嵌入式,需要下载linuxdeployqt源码,自行编译 1.2 安装linuxdeployqt 将下载解压后的linuxdeployqt,拷贝到/usr/local…

Dubbo 3 Dubbo 快速入门 3.2 Dubbo 快速入门 3.2.1 Spring和 SpringMvc 整合

Dubbo 【黑马程序员Dubbo快速入门,Java分布式框架dubbo教程】 3 Dubbo 快速入门 文章目录Dubbo3 Dubbo 快速入门3.2 Dubbo 快速入门3.2.1 Spring和 SpringMvc 整合3.2 Dubbo 快速入门 3.2.1 Spring和 SpringMvc 整合 依然拿着 架构图来比着搞 【实现步骤】 ①创…

5G无线技术基础自学系列 | 单站点验证准备

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 单站点验证需要的准备工作包括硬件及通…