|
1
2
思想:
|
|
|
2
1
从你的个人资料来看,我会用双关语猜测“name”属性实际上是一个文件路径。如果空间比时间更重要,那么可以使用编码方案来表示路径,其中可能存在大量重复数据。 将文件路径表示为一个int数组的路径,以及一个字符串和实际文件名的文件名(这可能更独特,因此不值得编码)。您可以将路径拆分为其组成部分,然后使用两个字典来存储正向和反向查找。通过这种方式,可以减少到整数数组的路径。比绳子小得多。 |
|
|
3
1
以utf8格式存储字符串:
(编辑:一开始想用ASCII码) 想法1 : 如果您希望大多数值在大多数时间内都不会被填充,那么您可以将每个字段存储在某种单独的键值查找数据结构中——字典、带二进制搜索的有序列表、二进制树等。使用二进制搜索的有序列表可能是最节省空间的,但是查找将是O(log n)。 因此,您应该
其中,每个值中的int键是一个条目的ID。 想法2 : 如果您确信这些日期时间在一个相当小的范围内(大约30年),例如2010年1月1日,您可以将其转换为一个32位的int值,表示自该日期以来/之前的秒数。这将使每个日期时间减少4个字节。 想法3 : 您可以考虑制定一个真正节省空间的序列化方案,其中每个字段的第一个字节指定类中后续字节所包含的哪个字段。字符串值可能只是用\n或其他东西分隔。将整个内容存储在一个字节数组中,并按需反序列化它。 所以类似这样,没有空格,在适当的情况下使用二进制值:
如果标记引用了一个活动对象,您可能需要将其单独地抛出序列化之外的包装结构中。或者,就像第一个想法一样,您可以只存储一个int,标识标签,然后在外部有一个列表>,其中包含对标签的实际引用。 |
|
|
4
0
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |