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 将可选转换为默认或必需 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 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