在阅读各种物联网消息传递协议时,我遇到了如下定义的结构:
http://localhost:8983/solr/collection1/mlt?q=title:"ABC"&fq=Source:("Test1")
http://localhost:8983/solr/collection1/mlt?q=title:"ABC"&fq=Source:("Test2")
我的问题是: #pragma keylist 关键字做了什么?我在哪里可以找到有关使用 #pragma 预处理程序指令的文档(我相信它是这样的指令。 )。
感谢。
答案 0 :(得分:4)
您正在查看的#pragma是用于在OMG-DDS(实时系统的数据分发服务)类型结构中定义键值的PrismTech方法。在这种情况下,它定义了简短的ID'作为关键价值。可比较的RTI定义是
struct TempSensorType {
short id; //@key
float temp;
float hum;
TempScale scale;
}
供应商之间的互操作性'实现,你可以放心地做到
struct TempSensorType {
short id; //@key
float temp;
float hum;
TempScale scale;
}
#pragma keylist TempSensorType id
因为RTI编译器忽略了pragma,而PT编译器忽略了// @ key。
这将随着可扩展类型规范的未来版本而改变,它将为所有供应商提供支持的标准方法。
请注意,如果您正在查看IoT消息传递协议的通用列表,那么"密钥"您正在查看的其他消息传递协议中可能不存在该值。
答案 1 :(得分:0)
请注意,通过编译指示的显式键列表规范允许在键中定义一个排序 - 根据用例 - 可能对维护(填充/读取/查询/过滤)&#有显着的性能影响39;多维存储'对于dataReader(和/或耐久性服务)
答案 2 :(得分:0)
请注意,对于符合最近采用的OMG DDS-XTYPES规范(http://www.omg.org/spec/DDS-XTypes/)的DDS实现,指定密钥的标准可移植方式是:
struct SensorType {
@key short id;
float temp;
float hum;
TempScale scale;
}
或者(为了避免破坏不理解IDL注释的IDL编译器):
struct SensorType {
short id; //@key
float temp;
float hum;
TempScale scale;
}