Thrift 将可选转换为默认或必需

2024-04-13

我有一个节俭的结构

struct Message {
    1: optional int userID;
    ...
} 

将其更改为默认需求是否安全?

struct Message {
    1: int userID;
    ...
} 

如果我知道它总是已设置?那么“需要”呢?


如中所述这个答案 https://stackoverflow.com/questions/37558302/how-do-i-make-a-required-thrift-field-optional,Thrift 中存在三个级别的(所谓的)需求:

  • required:读取时必须存在,写入时必须设置
  • optional:可以设置也可以不设置,完全可选
  • “默认”:读取时可能不存在,总是写入(除非它是null指针)

回答所提出的问题:

  1. 改变是安全的optional恢复为默认值(即删除optional关键词)。

  2. 改变optional to required可能会破坏兼容性。除非您确保所有客户端/服务器都相应更新,否则旧端可能不会为此类字段提供值。在这种情况下,另一端将拒绝传入的请求或响应不完整,因为required接收到的数据中缺少字段。

要进一步阅读该主题,您可能需要咨询 Diwaker Gupta 强烈推荐的“缺少指南 https://diwakergupta.github.io/thrift-missing-guide/#_defining_structs".

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Thrift 将可选转换为默认或必需 的相关文章

  • WebClient.DownloadDataAsync 冻结了我的 UI

    我在 Form 构造函数中的 InitializeComponent 之后有以下代码 using WebClient client new WebClient client DownloadDataCompleted new Downloa
  • 如何使用 ASP.NET MVC 编辑多选列表?

    我想编辑一个如下所示的对象 我希望用 UsersGrossList 中的一个或多个用户填充 UsersSelectedList 使用 mvc 中的标准编辑视图 我只得到映射的字符串和布尔值 下面未显示 我在 google 上找到的许多示例都
  • 是否可以从 C++ 应用程序调用 C# 应用程序?

    我是一名编程学生 现在我已经上了两门 C 课程 这个学期我将参加我的第一门 C 课程 出于好奇 是否可以从 C 应用程序调用 C 应用程序 如果是的话 是否还可以检查运行该程序的计算机是否具有 NET框架 我只是很好奇 我想如果可能的话 这
  • c# 从另一个类中的另一个静态事件引发事件

    需要帮助从另一个班级调用事件 我有已声明事件的课程 public class MxPBaseGridView GridView public event AddNewItemsToPopUpMenuEventHandler AddNewIt
  • 锁定 ASP.NET 应用程序变量

    我在 ASP NET 应用程序中使用第三方 Web 服务 对第 3 方 Web 服务的调用必须同步 但 ASP NET 显然是多线程的 并且可能会发出多个页面请求 从而导致对第 3 方 Web 服务的同时调用 对 Web 服务的调用封装在自
  • 并行化斐波那契序列生成器

    我正在学习并行化 在一项练习中 我得到了一些我应该提高性能的算法 其中之一是斐波那契数列生成器 array 0 0 array 1 1 for q 2 q lt MAX q array q array q 1 array q 2 我怀疑 这
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 为什么需要数字后缀?

    C 语言 我确信还有其他语言 需要在数字文字末尾添加后缀 这些后缀指示文字的类型 例如 5m是一个小数 5f是一个浮点数 我的问题是 这些后缀真的有必要吗 或者是否可以从上下文中推断出文字的类型 例如 代码decimal d 5 0应该推断
  • 在 C# 中何时使用 ArrayList 而不是 array[]?

    我经常使用一个ArrayList而不是 正常 array 当我使用时 我感觉好像我在作弊 或懒惰 ArrayList 什么时候可以使用ArrayList在数组上 数组是强类型的 并且可以很好地用作参数 如果您知道集合的长度并且它是固定的 则
  • 通过 C# Mailkit / Mimekit 发送电子邮件,但出现服务器证书错误

    Visual Studio 2015 中的 0 代码 1 我正在使用 Mailkit 最新版本 1 18 1 1 从我自己的电子邮件服务器发送电子邮件 2 电子邮件服务器具有不受信任的自签名证书 3 我在代码中添加了以下两行 以忽略服务器证
  • 使用 C# 中的 Google 地图 API 和 SSIS 包获取行驶距离

    更新 找到了谷歌距离矩阵并尝试相应地修改我的代码 我在这里收到无效参数错误 return new GeoLocation dstnc uri ToString catch return new GeoLocation 0 0 https 基
  • 子目录中的头文件(例如 gtk/gtk.h 与 gtk-2.0/gtk/gtk.h)

    我正在尝试使用 GTK 构建一个 hello world 其中包括以下行 include
  • 无法为 wsdl 文件创建服务引用

    I have wsdl文件和xsd我本地机器上的文件 我想在项目中添加服务引用 我没有网络服务 我只有wsdl file 我收到以下错误 The document was understood but it could not be pro
  • 浮点字节序?

    我正在为实时海上模拟器编写客户端和服务器 并且由于我必须通过套接字发送大量数据 因此我使用二进制数据来最大化可以发送的数据量 我已经了解整数字节顺序以及如何使用htonl and ntohl为了规避字节顺序问题 但我的应用程序与几乎所有模拟
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • Autoconf 问题:“错误:C 编译器无法创建可执行文件”

    我正在尝试使用 GNU 自动工具构建一个用 C 编写的程序 但显然我设置错误 因为当configure运行 它吐出 configure error C compiler cannot create executables 如果我看进去con
  • Linq.Select() 中的嵌套表达式方法调用

    I use Select i gt new T 每次手动点击数据库后将我的实体对象转换为 DTO 对象 以下是一些示例实体和 DTOS 用户实体 public partial class User public int Id get set
  • 有没有办法直接在函数参数中格式化字符串而不是使用临时字符串?

    我有一个接受字符串 字符数组 作为参数的函数 void enterString char my string 当使用这个函数时 我经常发现自己想要输入格式化的字符串 我使用 sprintf 来做到这一点 然而 我每次都必须创建一个临时字符串
  • printf或iostream如何指定点后的最大位数

    字符串采用什么格式printf or iomanip我应该使用 iostream 中的运算符以以下格式打印浮点数 125 0 gt 125 125 1 gt 125 1 125 12312 gt 125 12 1 12345 gt 1 12
  • 如何提高环复杂度?

    对于具有大量决策语句 包括 if while for 语句 的方法 循环复杂度会很高 那么我们该如何改进呢 我正在处理一个大项目 我应该减少 CC gt 10 的方法的 CC 并且有很多方法都存在这个问题 下面我将列出一些例如我遇到的问题的

随机推荐

  • PHP 删除另一个数组项(如果存在)[重复]

    这个问题在这里已经有答案了 我有 2 个对象数组 数组 A 和数组 B 如何检查数组 B 中的对象是否存在于数组 A 中 如果存在 则将其从数组 A 中删除 Example Array A id 1 name item1 id 2 name
  • 将 string 类型转换为 unsigned int 时出现故障

    我编写的 C 函数遇到了一个恼人的问题 该函数的目的是验证用户输入 该函数读取用户输入 验证它是否是数字 如果是 则验证它是否在 min max 范围内 当我使用无符号类型调用模板函数时 就会出现问题 例如size t 输入为负数 字符串流
  • 数组行为混乱[重复]

    这个问题在这里已经有答案了 在编码测试中 我最近遇到一个问题 要求我找出控制台中将打印什么内容 问题如下 我不明白下面的代码将如何被理解和执行 需要帮忙 var arr a b c d 1 2 3 console log arr 这个 ar
  • 如何开发像 Coffee Script 这样的编程语言?

    要开发像咖啡脚本这样的编程语言 我需要知道的初始要求是什么 它基本上有自己的语法 但在编译后会更改为另一种语言 我对此进行了谷歌搜索 但找不到正确的答案 使用基本语言指定您的语言形式语法 http en wikipedia org wiki
  • Qt C++ QString 到 QByteArray 转换

    我创建了一个加密 解密程序 加密时我将加密的 QByteArray 存储在文本文件中 当尝试解密时 我检索了它 然后将其放入解密方法中 问题是我需要一种将其转换为 QByteArray 的方法不改变格式 否则无法正确解密 我的意思是 如果该
  • 用于转换 pandas groupby 数据框的 Python lambda 函数语法

    这应该是一个非常简单的问题 我有两行代码 第一个有效 第二个给出以下错误 SyntaxError invalid syntax 这是两行代码 第一行 工作正常 对 off0 on1 1 的行进行计数 第二行尝试对 off0 on1 0 的行
  • Java Socket 创建需要更多时间

    我给了Socket soc new Socket host port 现在 当主机启动并处于运行状态时 套接字将立即创建 但是 当机器关闭或重新启动时 该行大约需要 40 秒才能响应 我尝试使用soc setSoTimeout timeou
  • HBase 作为 Web 应用程序后端

    任何人都可以建议将 HBase 作为基于 Web 的应用程序的主要数据源是否是一个好主意 我主要关心的是 HBase 对查询的响应时间 是否有可能实现亚秒级响应 编辑 有关应用程序本身的更多详细信息 数据量 约500GB文本数据 预计很快将
  • 如何生成不带绿色复选标记的签名 PDF

    我正在使用 iText 签署 PDF 我在签名中添加了图形 这是可行的 但是验证文档时显示的绿色复选标记 或黄色问号 会干扰我插入的图形 使最终结果看起来很难看 它要么显示在签名图形的上方或下方 但我无法让它消失 有谁知道如何解决这一问题
  • JMS 生产者中的错误:AMQ212054 目标地址被阻止

    我正在尝试使用 Spring Boot 2 1 1 RELEASE 连接到远程 Artemis 2 6 3 发送器 到目前为止 在我发现的所有示例中 发件人在尝试发送消息时都会挂起 例如here https grokonez com spr
  • I-码头或码头

    我有一个要在 Android 设备上托管的网络应用程序 我目前正在使用 android sdk 提供的模拟器 我的应用程序将同时提供静态和动态数据 我目前使用的是jetty版本6 1 22 我想问什么是更好的选择 1 Jetty 网络服务器
  • 配置多个下一个插件:withMDX、withBundleAnalyzer

    我开始了一个nextjs网站已经附带了顺风博客启动器withBundleAnalyzer在 next config js 中 我现在正在努力获得 mdx文件直接从页面工作 文档说我需要withMDX在我的 nextjs config 文件中
  • PHP反序列化问题

    为什么反序列化没有恢复我的数组 请参阅下面的代码 prints a 1 s 8 txn type s 32 recurring payment profile cancel echo item response prints nothing
  • Android:验证密码、确认密码并通过按钮传递字符串值

    我的注册页面中有密码 确认密码和性别等字段 密码编辑文本 确认密码编辑文本 性别 按钮01 按钮02 对于密码和一致密码 我想验证这两个字段 我的意思是两个字段的条目 字符串值 应该相同 如果两者相同 那么我只想将密码值传递到服务器 而不是
  • 如何重新启动 git/GitHub 项目?

    我已经在 GitHub 上托管的项目上工作了一段时间 然而 我现在决定以不同的方式重写我的应用程序 并从头开始 我重命名了旧的本地存储库并创建了一个新的 如何使用新存储库替换 GitHub 上托管的存储库 我真的不在乎我的旧历史和问题是否存
  • 设置嵌入式 h2 数据库的端口号

    I use h2内存数据库仅用于测试目的 默认端口似乎是8082 这导致我的测试在 Heroku 上失败 我想更改此端口号 我怎样才能做到这一点 到目前为止我所做的 我的本地计算机上似乎有一个文件 USER HOME h2 server p
  • 异步方法上的 C# 实体框架错误

    我已经看到了这一点 但我遇到了另一个问题 我有这个服务类用于管理 ASP NET 身份角色 public class RoleService IRoleService private readonly RoleManager
  • 使用 Xptr 和 Function 调用 Rcpp 函数 - 仅 xptr 情况有效

    我正在尝试开发一个包 其中我需要输入用户的函数 可以使用定义Rcpp or in R 将其发送到另一个函数 在包内 struct并在那里处理它 当我使用Rcpp Xptr 即函数指针 代码可以工作 但同样不起作用Rcpp Function
  • python中的str性能

    在分析一段 python 代码时 python 2 6 up to 3 2 我发现str将对象 在我的例子中是整数 转换为字符串的方法几乎比使用字符串格式化慢一个数量级 这是基准 gt gt gt from timeit import Ti
  • Thrift 将可选转换为默认或必需

    我有一个节俭的结构 struct Message 1 optional int userID 将其更改为默认需求是否安全 struct Message 1 int userID 如果我知道它总是已设置 那么 需要 呢 如中所述这个答案 ht