Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
6df5d556
C
ClickHouse
项目概览
2dot5
/
ClickHouse
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
ClickHouse
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6df5d556
编写于
6月 21, 2017
作者:
A
Alexey Milovidov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Changed namespace [#DEVTOOLS-3381].
上级
a99f25f2
变更
20
隐藏空白更改
内联
并排
Showing
20 changed file
with
43 addition
and
43 deletion
+43
-43
contrib/libcityhash/include/city.h
contrib/libcityhash/include/city.h
+1
-1
contrib/libcityhash/include/citycrc.h
contrib/libcityhash/include/citycrc.h
+1
-1
contrib/libcityhash/src/city.cc
contrib/libcityhash/src/city.cc
+2
-2
dbms/src/AggregateFunctions/AggregateFunctionUniq.h
dbms/src/AggregateFunctions/AggregateFunctionUniq.h
+2
-2
dbms/src/AggregateFunctions/AggregateFunctionUniqUpTo.h
dbms/src/AggregateFunctions/AggregateFunctionUniqUpTo.h
+1
-1
dbms/src/AggregateFunctions/UniqVariadicHash.h
dbms/src/AggregateFunctions/UniqVariadicHash.h
+4
-4
dbms/src/Common/UInt128.h
dbms/src/Common/UInt128.h
+2
-2
dbms/src/Common/tests/hashes_test.cpp
dbms/src/Common/tests/hashes_test.cpp
+5
-5
dbms/src/Core/StringRef.h
dbms/src/Core/StringRef.h
+2
-2
dbms/src/Functions/FunctionsHashing.h
dbms/src/Functions/FunctionsHashing.h
+7
-7
dbms/src/IO/CompressedReadBufferBase.cpp
dbms/src/IO/CompressedReadBufferBase.cpp
+2
-2
dbms/src/IO/CompressedWriteBuffer.cpp
dbms/src/IO/CompressedWriteBuffer.cpp
+1
-1
dbms/src/IO/HashingWriteBuffer.h
dbms/src/IO/HashingWriteBuffer.h
+3
-3
dbms/src/IO/tests/hashing_buffer.h
dbms/src/IO/tests/hashing_buffer.h
+4
-4
dbms/src/IO/tests/hashing_read_buffer.cpp
dbms/src/IO/tests/hashing_read_buffer.cpp
+1
-1
dbms/src/IO/tests/hashing_write_buffer.cpp
dbms/src/IO/tests/hashing_write_buffer.cpp
+1
-1
dbms/src/Interpreters/tests/hash_map_string.cpp
dbms/src/Interpreters/tests/hash_map_string.cpp
+1
-1
dbms/src/Interpreters/tests/hash_map_string_2.cpp
dbms/src/Interpreters/tests/hash_map_string_2.cpp
+1
-1
dbms/src/Interpreters/tests/hash_map_string_3.cpp
dbms/src/Interpreters/tests/hash_map_string_3.cpp
+1
-1
dbms/src/Storages/MergeTree/MergeTreeDataPart.h
dbms/src/Storages/MergeTree/MergeTreeDataPart.h
+1
-1
未找到文件。
contrib/libcityhash/include/city.h
浏览文件 @
6df5d556
...
...
@@ -55,7 +55,7 @@
* - this version of CityHash is exposed in cityHash64 function in ClickHouse SQL language;
* - and already used by many users for data ordering, sampling and sharding.
*/
namespace
CityHash
64
_v1_0_2
namespace
CityHash_v1_0_2
{
typedef
uint8_t
uint8
;
...
...
contrib/libcityhash/include/citycrc.h
浏览文件 @
6df5d556
...
...
@@ -30,7 +30,7 @@
#include <city.h>
namespace
CityHash
64
_v1_0_2
namespace
CityHash_v1_0_2
{
// Hash function for a byte array.
...
...
contrib/libcityhash/src/city.cc
浏览文件 @
6df5d556
...
...
@@ -71,7 +71,7 @@ using namespace std;
#endif
#endif
namespace
CityHash
64
_v1_0_2
namespace
CityHash_v1_0_2
{
static
uint64
UNALIGNED_LOAD64
(
const
char
*
p
)
{
...
...
@@ -363,7 +363,7 @@ uint128 CityHash128(const char *s, size_t len) {
#include <citycrc.h>
#include <nmmintrin.h>
namespace
CityHash
64
_v1_0_2
namespace
CityHash_v1_0_2
{
// Requires len >= 240.
...
...
dbms/src/AggregateFunctions/AggregateFunctionUniq.h
浏览文件 @
6df5d556
...
...
@@ -266,7 +266,7 @@ struct OneAdder<T, Data, typename std::enable_if<
typename
std
::
enable_if
<
std
::
is_same
<
T2
,
String
>::
value
>::
type
*
=
nullptr
)
{
StringRef
value
=
column
.
getDataAt
(
row_num
);
data
.
set
.
insert
(
CityHash
64
_v1_0_2
::
CityHash64
(
value
.
data
,
value
.
size
));
data
.
set
.
insert
(
CityHash_v1_0_2
::
CityHash64
(
value
.
data
,
value
.
size
));
}
};
...
...
@@ -290,7 +290,7 @@ struct OneAdder<T, Data, typename std::enable_if<
typename
std
::
enable_if
<
std
::
is_same
<
T2
,
String
>::
value
>::
type
*
=
nullptr
)
{
StringRef
value
=
column
.
getDataAt
(
row_num
);
data
.
set
.
insert
(
CityHash
64
_v1_0_2
::
CityHash64
(
value
.
data
,
value
.
size
));
data
.
set
.
insert
(
CityHash_v1_0_2
::
CityHash64
(
value
.
data
,
value
.
size
));
}
};
...
...
dbms/src/AggregateFunctions/AggregateFunctionUniqUpTo.h
浏览文件 @
6df5d556
...
...
@@ -107,7 +107,7 @@ struct AggregateFunctionUniqUpToData<String> : AggregateFunctionUniqUpToData<UIn
{
/// Keep in mind that calculations are approximate.
StringRef
value
=
column
.
getDataAt
(
row_num
);
insert
(
CityHash
64
_v1_0_2
::
CityHash64
(
value
.
data
,
value
.
size
),
threshold
);
insert
(
CityHash_v1_0_2
::
CityHash64
(
value
.
data
,
value
.
size
),
threshold
);
}
};
...
...
dbms/src/AggregateFunctions/UniqVariadicHash.h
浏览文件 @
6df5d556
...
...
@@ -39,14 +39,14 @@ struct UniqVariadicHash<false, false>
{
StringRef
value
=
(
*
column
)
->
getDataAt
(
row_num
);
hash
=
CityHash
64
_v1_0_2
::
CityHash64
(
value
.
data
,
value
.
size
);
hash
=
CityHash_v1_0_2
::
CityHash64
(
value
.
data
,
value
.
size
);
++
column
;
}
while
(
column
<
columns_end
)
{
StringRef
value
=
(
*
column
)
->
getDataAt
(
row_num
);
hash
=
CityHash
64_v1_0_2
::
Hash128to64
(
CityHash64_v1_0_2
::
uint128
(
CityHash64
_v1_0_2
::
CityHash64
(
value
.
data
,
value
.
size
),
hash
));
hash
=
CityHash
_v1_0_2
::
Hash128to64
(
CityHash_v1_0_2
::
uint128
(
CityHash
_v1_0_2
::
CityHash64
(
value
.
data
,
value
.
size
),
hash
));
++
column
;
}
...
...
@@ -68,14 +68,14 @@ struct UniqVariadicHash<false, true>
{
StringRef
value
=
column
->
get
()
->
getDataAt
(
row_num
);
hash
=
CityHash
64
_v1_0_2
::
CityHash64
(
value
.
data
,
value
.
size
);
hash
=
CityHash_v1_0_2
::
CityHash64
(
value
.
data
,
value
.
size
);
++
column
;
}
while
(
column
<
columns_end
)
{
StringRef
value
=
column
->
get
()
->
getDataAt
(
row_num
);
hash
=
CityHash
64_v1_0_2
::
Hash128to64
(
CityHash64_v1_0_2
::
uint128
(
CityHash64
_v1_0_2
::
CityHash64
(
value
.
data
,
value
.
size
),
hash
));
hash
=
CityHash
_v1_0_2
::
Hash128to64
(
CityHash_v1_0_2
::
uint128
(
CityHash
_v1_0_2
::
CityHash64
(
value
.
data
,
value
.
size
),
hash
));
++
column
;
}
...
...
dbms/src/Common/UInt128.h
浏览文件 @
6df5d556
...
...
@@ -42,7 +42,7 @@ struct UInt128Hash
{
size_t
operator
()(
UInt128
x
)
const
{
return
CityHash
64
_v1_0_2
::
Hash128to64
({
x
.
first
,
x
.
second
});
return
CityHash_v1_0_2
::
Hash128to64
({
x
.
first
,
x
.
second
});
}
};
...
...
@@ -122,7 +122,7 @@ struct UInt256Hash
size_t
operator
()(
UInt256
x
)
const
{
/// NOTE suboptimal
return
CityHash
64_v1_0_2
::
Hash128to64
({
CityHash64_v1_0_2
::
Hash128to64
({
x
.
a
,
x
.
b
}),
CityHash64
_v1_0_2
::
Hash128to64
({
x
.
c
,
x
.
d
})});
return
CityHash
_v1_0_2
::
Hash128to64
({
CityHash_v1_0_2
::
Hash128to64
({
x
.
a
,
x
.
b
}),
CityHash
_v1_0_2
::
Hash128to64
({
x
.
c
,
x
.
d
})});
}
};
...
...
dbms/src/Common/tests/hashes_test.cpp
浏览文件 @
6df5d556
...
...
@@ -48,12 +48,12 @@ int main(int argc, char ** argv)
for
(
size_t
i
=
0
;
i
<
rows
;
++
i
)
{
*
reinterpret_cast
<
UInt64
*>
(
&
hashes
[
i
*
16
])
=
CityHash
64
_v1_0_2
::
CityHash64
(
strings
[
i
].
data
(),
strings
[
i
].
size
());
*
reinterpret_cast
<
UInt64
*>
(
&
hashes
[
i
*
16
])
=
CityHash_v1_0_2
::
CityHash64
(
strings
[
i
].
data
(),
strings
[
i
].
size
());
}
watch
.
stop
();
UInt64
check
=
CityHash
64
_v1_0_2
::
CityHash64
(
&
hashes
[
0
],
hashes
.
size
());
UInt64
check
=
CityHash_v1_0_2
::
CityHash64
(
&
hashes
[
0
],
hashes
.
size
());
std
::
cerr
<<
std
::
fixed
<<
std
::
setprecision
(
2
)
<<
"CityHash64 (check = "
<<
check
<<
")"
...
...
@@ -78,7 +78,7 @@ int main(int argc, char ** argv)
watch.stop();
UInt64 check = CityHash
64
_v1_0_2::CityHash64(&hashes[0], hashes.size());
UInt64 check = CityHash_v1_0_2::CityHash64(&hashes[0], hashes.size());
std::cerr << std::fixed << std::setprecision(2)
<< "SipHash (check = " << check << ")"
...
...
@@ -99,7 +99,7 @@ int main(int argc, char ** argv)
watch
.
stop
();
UInt64
check
=
CityHash
64
_v1_0_2
::
CityHash64
(
&
hashes
[
0
],
hashes
.
size
());
UInt64
check
=
CityHash_v1_0_2
::
CityHash64
(
&
hashes
[
0
],
hashes
.
size
());
std
::
cerr
<<
std
::
fixed
<<
std
::
setprecision
(
2
)
<<
"SipHash, stream (check = "
<<
check
<<
")"
...
...
@@ -121,7 +121,7 @@ int main(int argc, char ** argv)
watch
.
stop
();
UInt64
check
=
CityHash
64
_v1_0_2
::
CityHash64
(
&
hashes
[
0
],
hashes
.
size
());
UInt64
check
=
CityHash_v1_0_2
::
CityHash64
(
&
hashes
[
0
],
hashes
.
size
());
std
::
cerr
<<
std
::
fixed
<<
std
::
setprecision
(
2
)
<<
"MD5 (check = "
<<
check
<<
")"
...
...
dbms/src/Core/StringRef.h
浏览文件 @
6df5d556
...
...
@@ -165,7 +165,7 @@ struct StringRefHash64
{
size_t
operator
()
(
StringRef
x
)
const
{
return
CityHash
64
_v1_0_2
::
CityHash64
(
x
.
data
,
x
.
size
);
return
CityHash_v1_0_2
::
CityHash64
(
x
.
data
,
x
.
size
);
}
};
...
...
@@ -177,7 +177,7 @@ struct StringRefHash64
inline
UInt64
hashLen16
(
UInt64
u
,
UInt64
v
)
{
return
CityHash
64_v1_0_2
::
Hash128to64
(
CityHash64
_v1_0_2
::
uint128
(
u
,
v
));
return
CityHash
_v1_0_2
::
Hash128to64
(
CityHash
_v1_0_2
::
uint128
(
u
,
v
));
}
inline
UInt64
shiftMix
(
UInt64
val
)
...
...
dbms/src/Functions/FunctionsHashing.h
浏览文件 @
6df5d556
...
...
@@ -638,9 +638,9 @@ struct URLHashImpl
{
/// do not take last slash, '?' or '#' character into account
if
(
size
>
0
&&
(
data
[
size
-
1
]
==
'/'
||
data
[
size
-
1
]
==
'?'
||
data
[
size
-
1
]
==
'#'
))
return
CityHash
64
_v1_0_2
::
CityHash64
(
data
,
size
-
1
);
return
CityHash_v1_0_2
::
CityHash64
(
data
,
size
-
1
);
return
CityHash
64
_v1_0_2
::
CityHash64
(
data
,
size
);
return
CityHash_v1_0_2
::
CityHash64
(
data
,
size
);
}
};
...
...
@@ -844,10 +844,10 @@ struct NameIntHash64 { static constexpr auto name = "intHash64"; };
struct
ImplCityHash64
{
static
constexpr
auto
name
=
"cityHash64"
;
using
uint128_t
=
CityHash
64
_v1_0_2
::
uint128
;
using
uint128_t
=
CityHash_v1_0_2
::
uint128
;
static
auto
Hash128to64
(
const
uint128_t
&
x
)
{
return
CityHash
64
_v1_0_2
::
Hash128to64
(
x
);
}
static
auto
Hash64
(
const
char
*
const
s
,
const
std
::
size_t
len
)
{
return
CityHash
64
_v1_0_2
::
CityHash64
(
s
,
len
);
}
static
auto
Hash128to64
(
const
uint128_t
&
x
)
{
return
CityHash_v1_0_2
::
Hash128to64
(
x
);
}
static
auto
Hash64
(
const
char
*
const
s
,
const
std
::
size_t
len
)
{
return
CityHash_v1_0_2
::
CityHash64
(
s
,
len
);
}
};
struct
ImplFarmHash64
...
...
@@ -862,9 +862,9 @@ struct ImplFarmHash64
struct
ImplMetroHash64
{
static
constexpr
auto
name
=
"metroHash64"
;
using
uint128_t
=
CityHash
64
_v1_0_2
::
uint128
;
using
uint128_t
=
CityHash_v1_0_2
::
uint128
;
static
auto
Hash128to64
(
const
uint128_t
&
x
)
{
return
CityHash
64
_v1_0_2
::
Hash128to64
(
x
);
}
static
auto
Hash128to64
(
const
uint128_t
&
x
)
{
return
CityHash_v1_0_2
::
Hash128to64
(
x
);
}
static
auto
Hash64
(
const
char
*
const
s
,
const
std
::
size_t
len
)
{
union
{
...
...
dbms/src/IO/CompressedReadBufferBase.cpp
浏览文件 @
6df5d556
...
...
@@ -42,7 +42,7 @@ size_t CompressedReadBufferBase::readCompressedData(size_t & size_decompressed,
if
(
compressed_in
->
eof
())
return
0
;
CityHash
64
_v1_0_2
::
uint128
checksum
;
CityHash_v1_0_2
::
uint128
checksum
;
compressed_in
->
readStrict
(
reinterpret_cast
<
char
*>
(
&
checksum
),
sizeof
(
checksum
));
own_compressed_buffer
.
resize
(
COMPRESSED_BLOCK_HEADER_SIZE
);
...
...
@@ -80,7 +80,7 @@ size_t CompressedReadBufferBase::readCompressedData(size_t & size_decompressed,
compressed_in
->
readStrict
(
&
compressed_buffer
[
COMPRESSED_BLOCK_HEADER_SIZE
],
size_compressed
-
COMPRESSED_BLOCK_HEADER_SIZE
);
}
if
(
!
disable_checksum
&&
checksum
!=
CityHash
64
_v1_0_2
::
CityHash128
(
&
compressed_buffer
[
0
],
size_compressed
))
if
(
!
disable_checksum
&&
checksum
!=
CityHash_v1_0_2
::
CityHash128
(
&
compressed_buffer
[
0
],
size_compressed
))
throw
Exception
(
"Checksum doesn't match: corrupted data."
,
ErrorCodes
::
CHECKSUM_DOESNT_MATCH
);
return
size_compressed
+
sizeof
(
checksum
);
...
...
dbms/src/IO/CompressedWriteBuffer.cpp
浏览文件 @
6df5d556
...
...
@@ -102,7 +102,7 @@ void CompressedWriteBuffer::nextImpl()
throw
Exception
(
"Unknown compression method"
,
ErrorCodes
::
UNKNOWN_COMPRESSION_METHOD
);
}
CityHash
64_v1_0_2
::
uint128
checksum
=
CityHash64
_v1_0_2
::
CityHash128
(
compressed_buffer_ptr
,
compressed_size
);
CityHash
_v1_0_2
::
uint128
checksum
=
CityHash
_v1_0_2
::
CityHash128
(
compressed_buffer_ptr
,
compressed_size
);
out
.
write
(
reinterpret_cast
<
const
char
*>
(
&
checksum
),
sizeof
(
checksum
));
out
.
write
(
compressed_buffer_ptr
,
compressed_size
);
...
...
dbms/src/IO/HashingWriteBuffer.h
浏览文件 @
6df5d556
...
...
@@ -15,7 +15,7 @@ template <class Buffer>
class
IHashingBuffer
:
public
BufferWithOwnMemory
<
Buffer
>
{
public:
using
uint128
=
CityHash
64
_v1_0_2
::
uint128
;
using
uint128
=
CityHash_v1_0_2
::
uint128
;
IHashingBuffer
<
Buffer
>
(
size_t
block_size_
=
DBMS_DEFAULT_HASHING_BLOCK_SIZE
)
:
BufferWithOwnMemory
<
Buffer
>
(
block_size_
),
block_pos
(
0
),
block_size
(
block_size_
),
state
(
0
,
0
)
...
...
@@ -25,14 +25,14 @@ public:
uint128
getHash
()
{
if
(
block_pos
)
return
CityHash
64
_v1_0_2
::
CityHash128WithSeed
(
&
BufferWithOwnMemory
<
Buffer
>::
memory
[
0
],
block_pos
,
state
);
return
CityHash_v1_0_2
::
CityHash128WithSeed
(
&
BufferWithOwnMemory
<
Buffer
>::
memory
[
0
],
block_pos
,
state
);
else
return
state
;
}
void
append
(
DB
::
BufferBase
::
Position
data
)
{
state
=
CityHash
64
_v1_0_2
::
CityHash128WithSeed
(
data
,
block_size
,
state
);
state
=
CityHash_v1_0_2
::
CityHash128WithSeed
(
data
,
block_size
,
state
);
}
/// computation of the hash depends on the partitioning of blocks
...
...
dbms/src/IO/tests/hashing_buffer.h
浏览文件 @
6df5d556
...
...
@@ -4,19 +4,19 @@
#define FAIL(msg) { std::cout << msg; exit(1); }
CityHash
64
_v1_0_2
::
uint128
referenceHash
(
const
char
*
data
,
size_t
len
)
CityHash_v1_0_2
::
uint128
referenceHash
(
const
char
*
data
,
size_t
len
)
{
const
size_t
block_size
=
DBMS_DEFAULT_HASHING_BLOCK_SIZE
;
CityHash
64
_v1_0_2
::
uint128
state
(
0
,
0
);
CityHash_v1_0_2
::
uint128
state
(
0
,
0
);
size_t
pos
;
for
(
pos
=
0
;
pos
+
block_size
<=
len
;
pos
+=
block_size
)
{
state
=
CityHash
64
_v1_0_2
::
CityHash128WithSeed
(
data
+
pos
,
block_size
,
state
);
state
=
CityHash_v1_0_2
::
CityHash128WithSeed
(
data
+
pos
,
block_size
,
state
);
}
if
(
pos
<
len
)
state
=
CityHash
64
_v1_0_2
::
CityHash128WithSeed
(
data
+
pos
,
len
-
pos
,
state
);
state
=
CityHash_v1_0_2
::
CityHash128WithSeed
(
data
+
pos
,
len
-
pos
,
state
);
return
state
;
}
dbms/src/IO/tests/hashing_read_buffer.cpp
浏览文件 @
6df5d556
...
...
@@ -12,7 +12,7 @@ void test(size_t data_size)
for
(
size_t
i
=
0
;
i
<
data_size
;
++
i
)
data
[
i
]
=
rand
()
&
255
;
CityHash
64
_v1_0_2
::
uint128
reference
=
referenceHash
(
data
,
data_size
);
CityHash_v1_0_2
::
uint128
reference
=
referenceHash
(
data
,
data_size
);
std
::
vector
<
size_t
>
block_sizes
=
{
56
,
128
,
513
,
2048
,
3055
,
4097
,
4096
};
for
(
size_t
read_buffer_block_size
:
block_sizes
)
...
...
dbms/src/IO/tests/hashing_write_buffer.cpp
浏览文件 @
6df5d556
...
...
@@ -11,7 +11,7 @@ void test(size_t data_size)
for
(
size_t
i
=
0
;
i
<
data_size
;
++
i
)
data
[
i
]
=
rand
()
&
255
;
CityHash
64
_v1_0_2
::
uint128
reference
=
referenceHash
(
data
,
data_size
);
CityHash_v1_0_2
::
uint128
reference
=
referenceHash
(
data
,
data_size
);
DB
::
WriteBufferFromFile
sink
(
"/dev/null"
,
1
<<
16
);
...
...
dbms/src/Interpreters/tests/hash_map_string.cpp
浏览文件 @
6df5d556
...
...
@@ -76,7 +76,7 @@ struct DefaultHash<CompactStringRef>
{
size_t
operator
()
(
CompactStringRef
x
)
const
{
return
CityHash
64
_v1_0_2
::
CityHash64
(
x
.
data
(),
x
.
size
);
return
CityHash_v1_0_2
::
CityHash64
(
x
.
data
(),
x
.
size
);
}
};
...
...
dbms/src/Interpreters/tests/hash_map_string_2.cpp
浏览文件 @
6df5d556
...
...
@@ -65,7 +65,7 @@ struct DefaultHash<STRUCT> \
{ \
size_t operator() (STRUCT x) const \
{ \
return CityHash
64
_v1_0_2::CityHash64(x.data, x.size); \
return CityHash_v1_0_2::CityHash64(x.data, x.size); \
} \
};
...
...
dbms/src/Interpreters/tests/hash_map_string_3.cpp
浏览文件 @
6df5d556
...
...
@@ -68,7 +68,7 @@ struct DefaultHash<STRUCT> \
{ \
size_t operator() (STRUCT x) const \
{ \
return CityHash
64
_v1_0_2::CityHash64(x.data, x.size); \
return CityHash_v1_0_2::CityHash64(x.data, x.size); \
} \
};
...
...
dbms/src/Storages/MergeTree/MergeTreeDataPart.h
浏览文件 @
6df5d556
...
...
@@ -16,7 +16,7 @@ namespace DB
/// Checksum of one file.
struct
MergeTreeDataPartChecksum
{
using
uint128
=
CityHash
64
_v1_0_2
::
uint128
;
using
uint128
=
CityHash_v1_0_2
::
uint128
;
size_t
file_size
{};
uint128
file_hash
{};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录