当前的 Apache Avro (1.8.2) 文档提到了“持续时间”逻辑类型:
持续时间逻辑类型注释大小为 12 的 Avro 固定类型,它存储三个小端无符号整数,代表不同时间粒度的持续时间。第一个以月为单位存储一个数字,第二个以天为单位存储一个数字,第三个以毫秒为单位存储一个数字。
虽然这一切都说得通,但我在 .Net 或 Java 库中都找不到实际的实现。逻辑类型的文档清楚地列出了除持续时间(日期、时间毫秒、时间微秒、时间戳毫秒和时间戳微秒)之外的所有逻辑类型。
“持续时间”在我的 Avro 架构中相应定义:
{
"type": "record",
"name": "DataBlock",
"fields": [
{
"name": "duration",
"type": {
"type": "fixed",
"name": "DataBlockDuration",
"size": 12
}
}]
}
Run Code Online (Sandbox Code Playgroud)
在.Net(请原谅VB)中,我必须手动序列化持续时间:
Dim ret(11) As Byte
Dim months = BitConverter.GetBytes(duration.Months)
Dim days = BitConverter.GetBytes(duration.Days)
Dim milliseconds = BitConverter.GetBytes(duration.Milliseconds)
Array.Copy(months, 0, ret, 0, 4)
Array.Copy(days, 0, ret, 4, 4)
Array.Copy(milliseconds, 0, ret, 8, 4)
Run Code Online (Sandbox Code Playgroud)
在 Java 中反序列化时,我必须通过执行以下操作转换为 …
我正在使用IO.DirectoryInfo来清理路径.但是,当路径以"\ CON"结尾时,它似乎表现出奇怪的行为.例如:
IO.DirectoryInfo("C:\FOOBAR\").FullName
Run Code Online (Sandbox Code Playgroud)
将返回:
C:\FOOBAR\
Run Code Online (Sandbox Code Playgroud)
但是,在这些例子中:
IO.DirectoryInfo("C:\CON").FullName
IO.DirectoryInfo("C:\SUB\CON").FullName
IO.DirectoryInfo("..\CON").FullName
IO.DirectoryInfo("CON").FullName
Run Code Online (Sandbox Code Playgroud)
返回值始终为:
\\.\CON
Run Code Online (Sandbox Code Playgroud)
因此,当用户想要创建一个名为"CON"的目录时,整个程序就会爆炸.
在我过去看过.Net Framework所做的所有奇怪的事情中,这都是需要的.谁能解释一下这里发生了什么?