当前位置: 首页 > news >正文

从0到1实现RPC | 11 丰富测试案例

测试案例主要针对服务消费者consumer,复杂逻辑都在consumer端。

  1. 常规int类型,返回User对象

图片

参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试方法重载,同名方法,参数不同

图片

方法签名的实现,主要逻辑都在MethodUtils工具类中。

  1. 测试返回字符串

图片

参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试重载方法返回字符串

图片

参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试local toString方法

图片

本地方法不走远程调用,主要逻辑都在MethodUtils工具类中。

  1. 常规int类型,返回int

图片

基本参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试long+float类型

图片

基本参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试参数是User类型

图片

对象参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试返回long[]

图片

数组参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试参数和返回值都是long[]

图片

数组参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试参数和返回值都是List类型

图片

List参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试参数和返回值都是Map类型

图片

Map参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试参数和返回值都是Boolean/boolean类型

图片

基本参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试参数和返回值都是User[]类型

图片

对象数组参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 试参数为long,返回值是User类型

图片

基本参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试参数为boolean,返回值都是User类型

图片

基本参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试服务端抛出一个RuntimeException异常

图片

异常处理,主要实现逻辑都在RpcInvocationHandler工具类中。

  1. 测试服务端抛出一个超时重试后成功的场景

图片

异常超时重试,主要实现逻辑都在RpcInvocationHandler工具类中。

  1. 测试通过Context跨消费者和提供者进行传参

图片

跨线程传参

  • 使用ThreadLocal实现;
  • 在RpcRequest中携带传递的参数;
  • 在consumer端,使用ParameterFilter将参数从RpcContext传递到RpcRequest;
  • 在provider端,反射调用之前,从RpcRequest中获取到参数封装到当前RpcContext。调用完成之后,需要清除,防止内存泄漏和上下文污染

源码:

https://github.com/midnight2104/midnight-rpc/tree/lesson11

相关文章:

从0到1实现RPC | 11 丰富测试案例

测试案例主要针对服务消费者consumer,复杂逻辑都在consumer端。 常规int类型,返回User对象 参数类型转换,主要实现逻辑都在TypeUtils工具类中。 测试方法重载,同名方法,参数不同 方法签名的实现,主要逻辑…...

在前端开发中用到了哪些设计模式?

在前端开发中用到了哪些设计模式? 1.单例模式2.观察者模式3.工厂模式4.适配器模式5.装饰器模式6.命令模式7.迭代器模式8.组合模式9.策略模式10.发布订阅模式 1.单例模式 确保一个类只有一个实例,提供一个全局访问点,vue就是一个单例模式&…...

ES6 的解构赋值

解构赋值(Destructuring assignment)是一种方便快捷的方式,可以从对象或数组中提取数据,并将数据赋值给变量。解构赋值是ES6中一项强大且常用的特性. 1. 基本数组解构 首先,让我们看看如何对数组进行解构赋值。假设我…...

蓝桥杯物联网竞赛_STM32L071KBU6_全部工程及国赛省赛真题及代码

包含stm32L071kbu6全部实验工程、源码、原理图、官方提供参考代码及国、省赛真题及代码 链接:https://pan.baidu.com/s/1pXnsMHE0t4RLCeluFhFpAg?pwdq497 提取码:q497...

关于UCG游戏平台的一些思考

UCG游戏平台,全称User Generated Content,即用户生成内容。它涵盖了所有玩家可以自主编辑的部分,包含并不限于换装、捏脸、关卡摆放等内容。 UCG概念在最近又火了起来,但这个模式出现的并不早。早在10多年前,war3编辑器…...

一起学习python——基础篇(20)

前言,之前经常从网上找一些免费的接口来测试,有点受制于人的感觉。想了想还不如直接写一个接口,这样方便自己测试。自己想返回什么格式就返回什么样子,不用担心服务报错,因为自己就可以完全掌控。然后宿舍二哥告诉我py…...

云服务器安装Mysql、MariaDB、Redis、tomcat

前置工作 进入根目录 cd / 创建java文件夹 mkdir java 进入java文件夹 cd java 上传压缩包 rz 压缩包 Mysql 1.下载并安装MySQL官方的 Yum Repository wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noa…...

Android笔记--MediaCodec(二)

这一节主要了解MediaCodec处理音频,MediaCodec直译媒体解码器,用于访问媒体编解码器,即编码器/解码器组件,它是 Android 多媒体支持基础设施的一部分;从广义上讲,编解码器处理输入数据以生成输出数据。它异…...

【Java探索之旅】方法重载 递归

🎥 屿小夏 : 个人主页 🔥个人专栏 : Java编程秘籍 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一、方法重载1.1 为什么要有方法重载1.2 方法重载的概念与使用1.3 方法签名 二、递归2…...

多输入多输出 | Matlab实现XGboost多输入多输出预测

多输入多输出 | Matlab实现XGboost多输入多输出预测 目录 多输入多输出 | Matlab实现XGboost多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 Matlab实现XGboost多输入多输出预测 1.data为数据集,10个输入特征,3个输出变量…...

【设计模式】3、builder 建造者模式

文章目录 三、builder 模式(生成器)3.1 build 房屋3.1.1 builder.go3.1.2 director.go3.1.3 director_test.go3.1.4 house.go3.1.5 igloo_builder.go3.1.6 normal_builder.go3.1.7 测试 3.2 option3.2.1 pool_test.go3.3.2 pool.go3.3.3 option.go 3.3 自…...

使用ROCm的HIP API向量加法程序

一、向量加法程序 Radeon Open Compute (ROCm) 是一个开源平台,用于加速高性能计算 (HPC) 和机器学习应用程序。它支持包括GPUs在内的多种硬件,并提供HIP (Heterogeneous-compute Interface for Portability) 作为CUDA代码的便捷转换工具。为了提供一个…...

Vue3---基础7(Props)

props&#xff0c;用于给子组件传递父组件的值的方法 代码示例&#xff1a; 父组件 <template><Text1 :list"personList"/> </template><script lang"ts" setup namae"App">import Text1 from ./components/text2.vu…...

第一节:什么是操作系统

什么是操作系统 一、一台计算机的组成部分1、计算机能干啥2、谈谈计算机硬件 二、什么是操作系统三、学习操作系统的层次 一、一台计算机的组成部分 如下图所示&#xff1a; 这就是就是构成一台计算机的组成部分 1、计算机能干啥 ∙ \bullet ∙计算机是我们专业吃饭的家伙&a…...

Day:007(1) | Python爬虫:高效数据抓取的编程技术(scrapy框架使用)

Scrapy的介绍 Scrapy 是一个用于抓取网站和提取结构化数据的应用程序框架&#xff0c;可用于各种有用的应用程序&#xff0c;如数据挖掘、信息处理或历史存档。 尽管 Scrapy 最初是为网络抓取而设计的&#xff0c;但它也可用于使用API提取数据或用作通用网络爬虫。 Scrapy的优势…...

Echarts使用dataTool写可自定义横坐标的盒须图(箱线图)

在vue2中的完整盒须图组件代码 可自适应浏览器窗体变化&#xff0c;可自定义横坐标&#xff0c;无需写箱线图数据处理逻辑。dataTool是echarts自带的&#xff0c;无需额外安装&#xff0c;只要引入。 <template><span><div ref"BoxPlotChart" id&qu…...

SpringBoot编写一个SpringTask定时任务的方法

1&#xff0c;在启动类上添加注解 EnableScheduling//开启定时任务调度 2&#xff0c; 任务&#xff08;方法&#xff09;上也要添加注解&#xff1a; Scheduled(cron " 0 * * * * ? ") //每分钟执行一次 域&#xff1a; 秒 分 时 日 月 周 &#xff08;年&#…...

【Qt编译】ARM环境 Qt5.14.2-QtWebEngine库编译 (完整版)

ARM 编译Qt5.14.2源码 1.下载源码 下载Qt5.14.2源代码&#xff08;可根据自己的需求下载不同版本&#xff09; 下载网站&#xff1a;https://download.qt.io/new_archive/qt/5.14/5.14.2/single/ 2.相关依赖(如果需要的话) 先参考官方文档的需求进行安装&#xff1a; 官方…...

vue简单使用二(循环)

目录 属性绑定 if判断&#xff1a; for循环&#xff1a; 属性绑定 代码的形式来说明 三元表达式的写法&#xff1a; if判断&#xff1a; for循环&#xff1a; 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"…...

JavaScript入门--变量

JavaScript入门--变量 一、JS变量二、变量命名三、常量四、局部变量 一、JS变量 定义变量a, b, c&#xff0c;并输出到控制台。 var a 1; var b 13.14; var c hello Js;console.log(a, b, c) //console.log()语句用于输出结果到控制台&#xff0c;类似python的print语句…...

别再死记硬背段码了!用Python脚本自动生成数码管显示码表(支持共阳/共阴)

用Python解放双手&#xff1a;动态生成数码管段码的工程实践 数码管作为电子设计中最基础的显示元件之一&#xff0c;其驱动原理看似简单却暗藏玄机。传统开发流程中&#xff0c;工程师需要反复查阅手册或记忆十六进制段码&#xff0c;这种低效模式在复杂项目中将消耗大量时间。…...

Windows平台PDF处理终极解决方案:Poppler预编译包深度解析

Windows平台PDF处理终极解决方案&#xff1a;Poppler预编译包深度解析 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 在Windows环境下处理PDF文件…...

Versal AI Engine加速椭圆曲线密码学计算实践

1. 项目概述&#xff1a;Versal AI Engine加速椭圆曲线密码学计算在当今的数字安全领域&#xff0c;椭圆曲线密码学&#xff08;ECC&#xff09;因其高安全性和计算效率成为主流方案。其中&#xff0c;多标量乘法&#xff08;MSM&#xff09;作为ECC的核心运算&#xff0c;在零…...

【AI】短期记忆:会话上下文管理与实现

短期记忆&#xff1a;会话上下文管理与实现 &#x1f4dd; 本章学习目标&#xff1a;本章深入探讨记忆机制&#xff0c;这是AI Agent持续执行的关键能力。通过本章学习&#xff0c;你将全面掌握"短期记忆&#xff1a;会话上下文管理与实现"这一核心主题。 一、引言&a…...

2026设备管理系统选型标准(技术向):8大核心维度,适配信创+全行业场景

对于企业IT运维、采购人员而言&#xff0c;设备管理系统选型需兼顾技术适配、合规要求、落地效率与长期扩展性。本文从技术与实践角度&#xff0c;梳理出8大核心选型标准&#xff0c;重点覆盖独享云部署、Excel导入能力、自定义扩展、信创适配等关键维度&#xff0c;为技术选型…...

如何在3分钟内完成Windows与Office智能激活:KMS_VL_ALL_AIO完全指南

如何在3分钟内完成Windows与Office智能激活&#xff1a;KMS_VL_ALL_AIO完全指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows操作系统和Office办公软件的正版激活而烦恼吗&…...

SITS 2026图计算方案深度解析,独家披露金融风控与生物医药两大场景的GNN工程化适配矩阵(含12个可复用配置模板)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生图计算应用&#xff1a;SITS 2026图神经网络工程化方案 SITS 2026 是面向大规模动态图场景的AI原生图计算框架&#xff0c;深度融合GNN训练、图拓扑实时更新与边缘-云协同推理能力。其核心设计摒…...

通过curl命令快速测试Taotoken提供的各类大模型API响应效果

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过curl命令快速测试Taotoken提供的各类大模型API响应效果 对于习惯命令行操作或需要在无SDK环境中验证集成的开发者而言&#xf…...

基于SEID模型与ode45数值解的艾滋病传播动力学建模与区域防控策略评估

1. 当数学模型遇上艾滋病防控 我第一次接触传染病建模是在研究生时期&#xff0c;当时导师扔给我一叠艾滋病流行病学数据&#xff0c;说&#xff1a;"试试用微分方程描述这个传播过程"。那会儿对着密密麻麻的病例报告&#xff0c;我完全没想到数学公式真能模拟现实中…...

通用汽车IT部门裁员600人,为AI人才腾空间,软件团队变革进行时

通用汽车IT部门裁员600人&#xff0c;AI人才成新宠 通用汽车证实已对其IT部门进行裁员&#xff0c;约600名领薪员工&#xff08;占比10%以上&#xff09;被裁&#xff0c;目的是清除专业知识不再适用的员工&#xff0c;为具有AI背景的人员腾出空间。公司表示这是面向未来做好准…...