java - java:使用位编码标签的存在
问题描述
我有一个 A 类,它最多可以有 50 个标签,并且 A 的实例在存储为 json + 压缩的列表中多次出现(想想几十万)。标签名称和值是自由格式的文本,每个最多 1024 个字符。同一列表中不同标签的数量上限为 50。
目前,我不打算转向其他类型的编码,例如 protobuf 或使用不同的压缩算法。
为了减少存储数据的大小,我正在考虑使用位编码来捕获某些标签的存在。例如,在序列化数据之前,扫描 A 的实例列表并收集所有 tagName:tagValue 集并将编号分配给每个不同的标签,如下所示
1: tagA:valueA
2: tagB:valueB
4: tagC:valueC
8: tagD:valueD
16: ...
并且每个实例都有表示位值的长字段,例如,如果 A 有 tagA、tagC、tagD,它将有
long tagSet = 13; //(0001 | 0100 | 1000 = 13)
我还将维护一个字符串数组作为映射。这样,原始标签字符串不会在 A 的每个实例中重复。
有没有更好的方法来做到这一点,例如一些内置的 java 集合甚至完全不同的编码机制?
解决方案
推荐阅读
- php - foreach 遗漏了第一个值
- reactjs - 如何将 apollo 查询数据放入受控输入?
- c# - 无法使用 for 循环反转字符串
- c# - SqlException:'1' 附近的语法不正确
- php - 如何通过 id 的 Laravel 数组获取列表的记录
- bash - sed 在处理大文件时不适用于 psexec 和重定向
- docker - 未找到 Docker 网络
- java - 如何使用jsp从数据库中获取JSON格式的视图数据
- ios - 在iOS上颤动Firebase Facebook登录内部错误
- c# - 如何在 SQL Server Express 中创建表 - Microsoft