From 9af918a9b65e3a6d5370048d70a972992b022ad2 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Feb 2021 20:35:59 +0300 Subject: [PATCH] Fix Bloom filters --- ConnectionTest/Client/Client.csproj | 2 +- ConnectionTest/Server/Server.csproj | 2 +- .../FileTransferClient.csproj | 20 ++ .../FileTransferServer.csproj | 20 ++ TestApp/TestApp.csproj | 2 +- TestPipeLine/Consumer/Consumer.csproj | 20 ++ TestPipeLine/Processor/Processor.csproj | 20 ++ TestPipeLine/Source/Source.csproj | 20 ++ TestPipeLine/Watcher/Watcher.csproj | 20 ++ .../ZeroLevel.Discovery.csproj | 2 +- .../ZeroLevel.EventsServer.csproj | 2 +- ZeroLevel.Logger/ZeroLevel.Logger.csproj | 2 +- ZeroLevel.SQL/ZeroLevel.SQL.csproj | 2 +- ZeroLevel.SqLite/ZeroLevel.SqLite.csproj | 3 +- ZeroLevel.UnitTests/BloomFilterTest.cs | 4 +- .../ZeroLevel.UnitTests.csproj | 2 +- ZeroLevel.sln | 196 +++++++++--------- ZeroLevel/DataStructures/BloomFilter.cs | 176 ++++++++++------ ZeroLevel/DataStructures/HyperBloomBloom.cs | 75 ++++++- .../Services/HashFunctions/StringHash.cs | 54 +++++ .../Text/PlainTextTables/TextTableData.cs | 8 + ZeroLevel/ZeroLevel.csproj | 23 +- ZeroNetworkMonitor/App.config | 2 +- .../Properties/Settings.Designer.cs | 2 +- ZeroNetworkMonitor/ZeroNetworkMonitor.csproj | 34 ++- ZeroNetworkMonitor/packages.config | 4 + 26 files changed, 523 insertions(+), 194 deletions(-) create mode 100644 ZeroLevel/Services/HashFunctions/StringHash.cs create mode 100644 ZeroNetworkMonitor/packages.config diff --git a/ConnectionTest/Client/Client.csproj b/ConnectionTest/Client/Client.csproj index 4a3a678..7f1e03c 100644 --- a/ConnectionTest/Client/Client.csproj +++ b/ConnectionTest/Client/Client.csproj @@ -3,7 +3,7 @@ Exe netcoreapp3.1 - AnyCPU;x64 + AnyCPU;x64;x86 diff --git a/ConnectionTest/Server/Server.csproj b/ConnectionTest/Server/Server.csproj index 4a3a678..7f1e03c 100644 --- a/ConnectionTest/Server/Server.csproj +++ b/ConnectionTest/Server/Server.csproj @@ -3,7 +3,7 @@ Exe netcoreapp3.1 - AnyCPU;x64 + AnyCPU;x64;x86 diff --git a/FileTransferTest/FileTransferClient/FileTransferClient.csproj b/FileTransferTest/FileTransferClient/FileTransferClient.csproj index 22d48dd..68fd58d 100644 --- a/FileTransferTest/FileTransferClient/FileTransferClient.csproj +++ b/FileTransferTest/FileTransferClient/FileTransferClient.csproj @@ -57,6 +57,26 @@ MinimumRecommendedRules.ruleset true + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + true + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + true + diff --git a/FileTransferTest/FileTransferServer/FileTransferServer.csproj b/FileTransferTest/FileTransferServer/FileTransferServer.csproj index 0580d2c..5aeeb44 100644 --- a/FileTransferTest/FileTransferServer/FileTransferServer.csproj +++ b/FileTransferTest/FileTransferServer/FileTransferServer.csproj @@ -57,6 +57,26 @@ MinimumRecommendedRules.ruleset true + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + true + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + true + diff --git a/TestApp/TestApp.csproj b/TestApp/TestApp.csproj index 87d1d0a..0c6e824 100644 --- a/TestApp/TestApp.csproj +++ b/TestApp/TestApp.csproj @@ -3,7 +3,7 @@ Exe netcoreapp3.0 - AnyCPU;x64 + AnyCPU;x64;x86 diff --git a/TestPipeLine/Consumer/Consumer.csproj b/TestPipeLine/Consumer/Consumer.csproj index 1cf4aea..98940e1 100644 --- a/TestPipeLine/Consumer/Consumer.csproj +++ b/TestPipeLine/Consumer/Consumer.csproj @@ -55,6 +55,26 @@ MinimumRecommendedRules.ruleset true + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + true + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + true + diff --git a/TestPipeLine/Processor/Processor.csproj b/TestPipeLine/Processor/Processor.csproj index 614d554..d9ab861 100644 --- a/TestPipeLine/Processor/Processor.csproj +++ b/TestPipeLine/Processor/Processor.csproj @@ -55,6 +55,26 @@ MinimumRecommendedRules.ruleset true + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + true + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + true + diff --git a/TestPipeLine/Source/Source.csproj b/TestPipeLine/Source/Source.csproj index 519a040..5603f3e 100644 --- a/TestPipeLine/Source/Source.csproj +++ b/TestPipeLine/Source/Source.csproj @@ -55,6 +55,26 @@ MinimumRecommendedRules.ruleset true + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + true + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + true + diff --git a/TestPipeLine/Watcher/Watcher.csproj b/TestPipeLine/Watcher/Watcher.csproj index a78a7e0..87e60a7 100644 --- a/TestPipeLine/Watcher/Watcher.csproj +++ b/TestPipeLine/Watcher/Watcher.csproj @@ -55,6 +55,26 @@ MinimumRecommendedRules.ruleset true + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + true + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + true + diff --git a/ZeroLevel.Discovery/ZeroLevel.Discovery.csproj b/ZeroLevel.Discovery/ZeroLevel.Discovery.csproj index 8ac8cbd..63bb719 100644 --- a/ZeroLevel.Discovery/ZeroLevel.Discovery.csproj +++ b/ZeroLevel.Discovery/ZeroLevel.Discovery.csproj @@ -3,7 +3,7 @@ Exe netcoreapp3.1 - AnyCPU;x64 + AnyCPU;x64;x86 diff --git a/ZeroLevel.EventsServer/ZeroLevel.EventsServer.csproj b/ZeroLevel.EventsServer/ZeroLevel.EventsServer.csproj index 2bc99ac..173541c 100644 --- a/ZeroLevel.EventsServer/ZeroLevel.EventsServer.csproj +++ b/ZeroLevel.EventsServer/ZeroLevel.EventsServer.csproj @@ -2,7 +2,7 @@ netstandard2.0 - AnyCPU;x64 + AnyCPU;x64;x86 diff --git a/ZeroLevel.Logger/ZeroLevel.Logger.csproj b/ZeroLevel.Logger/ZeroLevel.Logger.csproj index 6361a35..510a3f8 100644 --- a/ZeroLevel.Logger/ZeroLevel.Logger.csproj +++ b/ZeroLevel.Logger/ZeroLevel.Logger.csproj @@ -3,7 +3,7 @@ Exe netcoreapp3.1 - AnyCPU;x64 + AnyCPU;x64;x86 diff --git a/ZeroLevel.SQL/ZeroLevel.SQL.csproj b/ZeroLevel.SQL/ZeroLevel.SQL.csproj index a0a71f3..4c1ce21 100644 --- a/ZeroLevel.SQL/ZeroLevel.SQL.csproj +++ b/ZeroLevel.SQL/ZeroLevel.SQL.csproj @@ -2,7 +2,7 @@ netstandard2.0 - AnyCPU;x64 + AnyCPU;x64;x86 Light wrapper over ado.net ogoun Copyright Ogoun 2020 diff --git a/ZeroLevel.SqLite/ZeroLevel.SqLite.csproj b/ZeroLevel.SqLite/ZeroLevel.SqLite.csproj index 1c8b6fb..35966e2 100644 --- a/ZeroLevel.SqLite/ZeroLevel.SqLite.csproj +++ b/ZeroLevel.SqLite/ZeroLevel.SqLite.csproj @@ -11,11 +11,12 @@ Based on System.Data.SQLite.Core https://github.com/ogoun/Zero zero.png - AnyCPU;x64 + AnyCPU;x64;x86 Fix bug 1.0.2.1 1.0.2.1 1.0.2.1 + Library diff --git a/ZeroLevel.UnitTests/BloomFilterTest.cs b/ZeroLevel.UnitTests/BloomFilterTest.cs index f7894b0..7289093 100644 --- a/ZeroLevel.UnitTests/BloomFilterTest.cs +++ b/ZeroLevel.UnitTests/BloomFilterTest.cs @@ -30,7 +30,7 @@ namespace ZeroLevel.UnitTests lines.Add(RandomString(i % 9 + 5)); lines_another.Add(RandomString(i % 9 + 5)); } - var bloom = new BloomFilter(16536 * 1024, true); + var bloom = new BloomFilter(16536 * 2048); // Act var sw = new Stopwatch(); sw.Start(); @@ -75,7 +75,7 @@ namespace ZeroLevel.UnitTests lines.Add(RandomString(i % 9 + 5)); lines_another.Add(RandomString(i % 9 + 5)); } - var bloom = new HyperBloomBloom(64, 16536 * 1024, true); + var bloom = new HyperBloomBloom(16, 16536 * 4096); // Act var sw = new Stopwatch(); sw.Start(); diff --git a/ZeroLevel.UnitTests/ZeroLevel.UnitTests.csproj b/ZeroLevel.UnitTests/ZeroLevel.UnitTests.csproj index 9aac41b..a899d08 100644 --- a/ZeroLevel.UnitTests/ZeroLevel.UnitTests.csproj +++ b/ZeroLevel.UnitTests/ZeroLevel.UnitTests.csproj @@ -5,7 +5,7 @@ false - AnyCPU;x64 + AnyCPU;x64;x86 diff --git a/ZeroLevel.sln b/ZeroLevel.sln index 1054288..79474d0 100644 --- a/ZeroLevel.sln +++ b/ZeroLevel.sln @@ -69,208 +69,208 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|Any CPU.Build.0 = Debug|Any CPU - {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|x64.ActiveCfg = Debug|Any CPU - {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|x64.Build.0 = Debug|Any CPU - {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|x86.ActiveCfg = Debug|Any CPU - {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|x86.Build.0 = Debug|Any CPU + {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|x64.ActiveCfg = Debug|x64 + {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|x64.Build.0 = Debug|x64 + {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|x86.ActiveCfg = Debug|x86 + {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Debug|x86.Build.0 = Debug|x86 {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Release|Any CPU.ActiveCfg = Release|Any CPU {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Release|Any CPU.Build.0 = Release|Any CPU {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Release|x64.ActiveCfg = Release|x64 {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Release|x64.Build.0 = Release|x64 - {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Release|x86.ActiveCfg = Release|Any CPU - {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Release|x86.Build.0 = Release|Any CPU + {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Release|x86.ActiveCfg = Release|x86 + {06C9E60E-D449-41A7-9BF0-A829AAF5D214}.Release|x86.Build.0 = Release|x86 {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|x64.ActiveCfg = Debug|Any CPU - {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|x64.Build.0 = Debug|Any CPU - {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|x86.ActiveCfg = Debug|Any CPU - {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|x86.Build.0 = Debug|Any CPU + {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|x64.ActiveCfg = Debug|x64 + {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|x64.Build.0 = Debug|x64 + {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|x86.ActiveCfg = Debug|x86 + {E5595DE0-B177-4078-AD10-8D3135014838}.Debug|x86.Build.0 = Debug|x86 {E5595DE0-B177-4078-AD10-8D3135014838}.Release|Any CPU.ActiveCfg = Release|Any CPU {E5595DE0-B177-4078-AD10-8D3135014838}.Release|Any CPU.Build.0 = Release|Any CPU {E5595DE0-B177-4078-AD10-8D3135014838}.Release|x64.ActiveCfg = Release|x64 {E5595DE0-B177-4078-AD10-8D3135014838}.Release|x64.Build.0 = Release|x64 - {E5595DE0-B177-4078-AD10-8D3135014838}.Release|x86.ActiveCfg = Release|Any CPU - {E5595DE0-B177-4078-AD10-8D3135014838}.Release|x86.Build.0 = Release|Any CPU + {E5595DE0-B177-4078-AD10-8D3135014838}.Release|x86.ActiveCfg = Release|x86 + {E5595DE0-B177-4078-AD10-8D3135014838}.Release|x86.Build.0 = Release|x86 {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|Any CPU.Build.0 = Debug|Any CPU - {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|x64.ActiveCfg = Debug|Any CPU - {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|x64.Build.0 = Debug|Any CPU - {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|x86.ActiveCfg = Debug|Any CPU - {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|x86.Build.0 = Debug|Any CPU + {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|x64.ActiveCfg = Debug|x64 + {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|x64.Build.0 = Debug|x64 + {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|x86.ActiveCfg = Debug|x86 + {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Debug|x86.Build.0 = Debug|x86 {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Release|Any CPU.ActiveCfg = Release|Any CPU {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Release|Any CPU.Build.0 = Release|Any CPU {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Release|x64.ActiveCfg = Release|x64 {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Release|x64.Build.0 = Release|x64 - {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Release|x86.ActiveCfg = Release|Any CPU - {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Release|x86.Build.0 = Release|Any CPU + {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Release|x86.ActiveCfg = Release|x86 + {674561F2-A3E2-40E6-8E5B-AD94276AD856}.Release|x86.Build.0 = Release|x86 {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|x64.ActiveCfg = Debug|Any CPU - {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|x64.Build.0 = Debug|Any CPU - {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|x86.ActiveCfg = Debug|Any CPU - {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|x86.Build.0 = Debug|Any CPU + {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|x64.ActiveCfg = Debug|x64 + {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|x64.Build.0 = Debug|x64 + {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|x86.ActiveCfg = Debug|x86 + {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Debug|x86.Build.0 = Debug|x86 {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Release|Any CPU.ActiveCfg = Release|Any CPU {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Release|Any CPU.Build.0 = Release|Any CPU {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Release|x64.ActiveCfg = Release|x64 {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Release|x64.Build.0 = Release|x64 - {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Release|x86.ActiveCfg = Release|Any CPU - {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Release|x86.Build.0 = Release|Any CPU + {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Release|x86.ActiveCfg = Release|x86 + {5CE51CC9-7884-4E21-9D68-2321CA14312E}.Release|x86.Build.0 = Release|x86 {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|x64.ActiveCfg = Debug|Any CPU - {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|x64.Build.0 = Debug|Any CPU - {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|x86.ActiveCfg = Debug|Any CPU - {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|x86.Build.0 = Debug|Any CPU + {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|x64.ActiveCfg = Debug|x64 + {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|x64.Build.0 = Debug|x64 + {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|x86.ActiveCfg = Debug|x86 + {6E04F32A-FB90-41D2-9059-F37311F813B3}.Debug|x86.Build.0 = Debug|x86 {6E04F32A-FB90-41D2-9059-F37311F813B3}.Release|Any CPU.ActiveCfg = Release|Any CPU {6E04F32A-FB90-41D2-9059-F37311F813B3}.Release|Any CPU.Build.0 = Release|Any CPU {6E04F32A-FB90-41D2-9059-F37311F813B3}.Release|x64.ActiveCfg = Release|x64 {6E04F32A-FB90-41D2-9059-F37311F813B3}.Release|x64.Build.0 = Release|x64 - {6E04F32A-FB90-41D2-9059-F37311F813B3}.Release|x86.ActiveCfg = Release|Any CPU - {6E04F32A-FB90-41D2-9059-F37311F813B3}.Release|x86.Build.0 = Release|Any CPU + {6E04F32A-FB90-41D2-9059-F37311F813B3}.Release|x86.ActiveCfg = Release|x86 + {6E04F32A-FB90-41D2-9059-F37311F813B3}.Release|x86.Build.0 = Release|x86 {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|x64.ActiveCfg = Debug|Any CPU - {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|x64.Build.0 = Debug|Any CPU - {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|x86.ActiveCfg = Debug|Any CPU - {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|x86.Build.0 = Debug|Any CPU + {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|x64.ActiveCfg = Debug|x64 + {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|x64.Build.0 = Debug|x64 + {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|x86.ActiveCfg = Debug|x86 + {A1D60994-5744-47D1-B684-C1C0B782998B}.Debug|x86.Build.0 = Debug|x86 {A1D60994-5744-47D1-B684-C1C0B782998B}.Release|Any CPU.ActiveCfg = Release|Any CPU {A1D60994-5744-47D1-B684-C1C0B782998B}.Release|Any CPU.Build.0 = Release|Any CPU {A1D60994-5744-47D1-B684-C1C0B782998B}.Release|x64.ActiveCfg = Release|x64 {A1D60994-5744-47D1-B684-C1C0B782998B}.Release|x64.Build.0 = Release|x64 - {A1D60994-5744-47D1-B684-C1C0B782998B}.Release|x86.ActiveCfg = Release|Any CPU - {A1D60994-5744-47D1-B684-C1C0B782998B}.Release|x86.Build.0 = Release|Any CPU + {A1D60994-5744-47D1-B684-C1C0B782998B}.Release|x86.ActiveCfg = Release|x86 + {A1D60994-5744-47D1-B684-C1C0B782998B}.Release|x86.Build.0 = Release|x86 {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|Any CPU.Build.0 = Debug|Any CPU - {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|x64.ActiveCfg = Debug|Any CPU - {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|x64.Build.0 = Debug|Any CPU - {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|x86.ActiveCfg = Debug|Any CPU - {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|x86.Build.0 = Debug|Any CPU + {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|x64.ActiveCfg = Debug|x64 + {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|x64.Build.0 = Debug|x64 + {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|x86.ActiveCfg = Debug|x86 + {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Debug|x86.Build.0 = Debug|x86 {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Release|Any CPU.ActiveCfg = Release|Any CPU {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Release|Any CPU.Build.0 = Release|Any CPU {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Release|x64.ActiveCfg = Release|x64 {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Release|x64.Build.0 = Release|x64 - {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Release|x86.ActiveCfg = Release|Any CPU - {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Release|x86.Build.0 = Release|Any CPU + {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Release|x86.ActiveCfg = Release|x86 + {806D0160-A4BF-4881-AF33-308F4FEF8E15}.Release|x86.Build.0 = Release|x86 {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|x64.ActiveCfg = Debug|Any CPU - {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|x64.Build.0 = Debug|Any CPU - {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|x86.ActiveCfg = Debug|Any CPU - {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|x86.Build.0 = Debug|Any CPU + {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|x64.ActiveCfg = Debug|x64 + {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|x64.Build.0 = Debug|x64 + {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|x86.ActiveCfg = Debug|x86 + {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Debug|x86.Build.0 = Debug|x86 {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Release|Any CPU.ActiveCfg = Release|Any CPU {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Release|Any CPU.Build.0 = Release|Any CPU {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Release|x64.ActiveCfg = Release|x64 {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Release|x64.Build.0 = Release|x64 - {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Release|x86.ActiveCfg = Release|Any CPU - {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Release|x86.Build.0 = Release|Any CPU + {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Release|x86.ActiveCfg = Release|x86 + {931DEA89-42D1-4C06-9CB8-A3A0412093D6}.Release|x86.Build.0 = Release|x86 {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|x64.ActiveCfg = Debug|Any CPU - {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|x64.Build.0 = Debug|Any CPU - {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|x86.ActiveCfg = Debug|Any CPU - {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|x86.Build.0 = Debug|Any CPU + {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|x64.ActiveCfg = Debug|x64 + {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|x64.Build.0 = Debug|x64 + {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|x86.ActiveCfg = Debug|x86 + {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Debug|x86.Build.0 = Debug|x86 {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Release|Any CPU.ActiveCfg = Release|Any CPU {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Release|Any CPU.Build.0 = Release|Any CPU {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Release|x64.ActiveCfg = Release|x64 {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Release|x64.Build.0 = Release|x64 - {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Release|x86.ActiveCfg = Release|Any CPU - {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Release|x86.Build.0 = Release|Any CPU + {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Release|x86.ActiveCfg = Release|x86 + {D25EC1F0-3BD2-409C-8A01-8C8339D5835C}.Release|x86.Build.0 = Release|x86 {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|x64.ActiveCfg = Debug|Any CPU - {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|x64.Build.0 = Debug|Any CPU - {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|x86.ActiveCfg = Debug|Any CPU - {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|x86.Build.0 = Debug|Any CPU + {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|x64.ActiveCfg = Debug|x64 + {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|x64.Build.0 = Debug|x64 + {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|x86.ActiveCfg = Debug|x86 + {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Debug|x86.Build.0 = Debug|x86 {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Release|Any CPU.ActiveCfg = Release|Any CPU {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Release|Any CPU.Build.0 = Release|Any CPU {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Release|x64.ActiveCfg = Release|x64 {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Release|x64.Build.0 = Release|x64 - {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Release|x86.ActiveCfg = Release|Any CPU - {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Release|x86.Build.0 = Release|Any CPU + {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Release|x86.ActiveCfg = Release|x86 + {EECF6EA0-6D9C-4B69-9CA3-23357C04B84C}.Release|x86.Build.0 = Release|x86 {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|x64.ActiveCfg = Debug|Any CPU - {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|x64.Build.0 = Debug|Any CPU - {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|x86.ActiveCfg = Debug|Any CPU - {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|x86.Build.0 = Debug|Any CPU + {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|x64.ActiveCfg = Debug|x64 + {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|x64.Build.0 = Debug|x64 + {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|x86.ActiveCfg = Debug|x86 + {D1C061DB-3565-43C3-B8F3-628DE4908750}.Debug|x86.Build.0 = Debug|x86 {D1C061DB-3565-43C3-B8F3-628DE4908750}.Release|Any CPU.ActiveCfg = Release|Any CPU {D1C061DB-3565-43C3-B8F3-628DE4908750}.Release|Any CPU.Build.0 = Release|Any CPU {D1C061DB-3565-43C3-B8F3-628DE4908750}.Release|x64.ActiveCfg = Release|x64 {D1C061DB-3565-43C3-B8F3-628DE4908750}.Release|x64.Build.0 = Release|x64 - {D1C061DB-3565-43C3-B8F3-628DE4908750}.Release|x86.ActiveCfg = Release|Any CPU - {D1C061DB-3565-43C3-B8F3-628DE4908750}.Release|x86.Build.0 = Release|Any CPU + {D1C061DB-3565-43C3-B8F3-628DE4908750}.Release|x86.ActiveCfg = Release|x86 + {D1C061DB-3565-43C3-B8F3-628DE4908750}.Release|x86.Build.0 = Release|x86 {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|x64.ActiveCfg = Debug|Any CPU - {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|x64.Build.0 = Debug|Any CPU - {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|x86.ActiveCfg = Debug|Any CPU - {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|x86.Build.0 = Debug|Any CPU + {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|x64.ActiveCfg = Debug|x64 + {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|x64.Build.0 = Debug|x64 + {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|x86.ActiveCfg = Debug|x86 + {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Debug|x86.Build.0 = Debug|x86 {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Release|Any CPU.ActiveCfg = Release|Any CPU {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Release|Any CPU.Build.0 = Release|Any CPU {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Release|x64.ActiveCfg = Release|x64 {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Release|x64.Build.0 = Release|x64 - {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Release|x86.ActiveCfg = Release|Any CPU - {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Release|x86.Build.0 = Release|Any CPU + {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Release|x86.ActiveCfg = Release|x86 + {5B545DD6-8573-4CDD-B32D-9B0AA2AC2F9A}.Release|x86.Build.0 = Release|x86 {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|Any CPU.Build.0 = Debug|Any CPU - {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|x64.ActiveCfg = Debug|Any CPU - {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|x64.Build.0 = Debug|Any CPU - {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|x86.ActiveCfg = Debug|Any CPU - {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|x86.Build.0 = Debug|Any CPU + {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|x64.ActiveCfg = Debug|x64 + {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|x64.Build.0 = Debug|x64 + {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|x86.ActiveCfg = Debug|x86 + {04219F58-4D3A-4707-82A8-4DDDC9882969}.Debug|x86.Build.0 = Debug|x86 {04219F58-4D3A-4707-82A8-4DDDC9882969}.Release|Any CPU.ActiveCfg = Release|Any CPU {04219F58-4D3A-4707-82A8-4DDDC9882969}.Release|Any CPU.Build.0 = Release|Any CPU {04219F58-4D3A-4707-82A8-4DDDC9882969}.Release|x64.ActiveCfg = Release|x64 {04219F58-4D3A-4707-82A8-4DDDC9882969}.Release|x64.Build.0 = Release|x64 - {04219F58-4D3A-4707-82A8-4DDDC9882969}.Release|x86.ActiveCfg = Release|Any CPU - {04219F58-4D3A-4707-82A8-4DDDC9882969}.Release|x86.Build.0 = Release|Any CPU + {04219F58-4D3A-4707-82A8-4DDDC9882969}.Release|x86.ActiveCfg = Release|x86 + {04219F58-4D3A-4707-82A8-4DDDC9882969}.Release|x86.Build.0 = Release|x86 {F8B727E1-340D-4096-A784-E570AE13FABC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F8B727E1-340D-4096-A784-E570AE13FABC}.Debug|Any CPU.Build.0 = Debug|Any CPU {F8B727E1-340D-4096-A784-E570AE13FABC}.Debug|x64.ActiveCfg = Debug|x64 {F8B727E1-340D-4096-A784-E570AE13FABC}.Debug|x64.Build.0 = Debug|x64 - {F8B727E1-340D-4096-A784-E570AE13FABC}.Debug|x86.ActiveCfg = Debug|Any CPU - {F8B727E1-340D-4096-A784-E570AE13FABC}.Debug|x86.Build.0 = Debug|Any CPU + {F8B727E1-340D-4096-A784-E570AE13FABC}.Debug|x86.ActiveCfg = Debug|x86 + {F8B727E1-340D-4096-A784-E570AE13FABC}.Debug|x86.Build.0 = Debug|x86 {F8B727E1-340D-4096-A784-E570AE13FABC}.Release|Any CPU.ActiveCfg = Release|Any CPU {F8B727E1-340D-4096-A784-E570AE13FABC}.Release|Any CPU.Build.0 = Release|Any CPU {F8B727E1-340D-4096-A784-E570AE13FABC}.Release|x64.ActiveCfg = Release|x64 {F8B727E1-340D-4096-A784-E570AE13FABC}.Release|x64.Build.0 = Release|x64 - {F8B727E1-340D-4096-A784-E570AE13FABC}.Release|x86.ActiveCfg = Release|Any CPU - {F8B727E1-340D-4096-A784-E570AE13FABC}.Release|x86.Build.0 = Release|Any CPU + {F8B727E1-340D-4096-A784-E570AE13FABC}.Release|x86.ActiveCfg = Release|x86 + {F8B727E1-340D-4096-A784-E570AE13FABC}.Release|x86.Build.0 = Release|x86 {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Debug|Any CPU.Build.0 = Debug|Any CPU {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Debug|x64.ActiveCfg = Debug|x64 {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Debug|x64.Build.0 = Debug|x64 - {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Debug|x86.ActiveCfg = Debug|Any CPU - {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Debug|x86.Build.0 = Debug|Any CPU + {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Debug|x86.ActiveCfg = Debug|x86 + {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Debug|x86.Build.0 = Debug|x86 {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Release|Any CPU.ActiveCfg = Release|Any CPU {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Release|Any CPU.Build.0 = Release|Any CPU {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Release|x64.ActiveCfg = Release|x64 {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Release|x64.Build.0 = Release|x64 - {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Release|x86.ActiveCfg = Release|Any CPU - {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Release|x86.Build.0 = Release|Any CPU + {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Release|x86.ActiveCfg = Release|x86 + {9BF859EE-EF90-4B5B-8576-E26770F2F792}.Release|x86.Build.0 = Release|x86 {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|Any CPU.Build.0 = Debug|Any CPU - {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|x64.ActiveCfg = Debug|Any CPU - {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|x64.Build.0 = Debug|Any CPU - {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|x86.ActiveCfg = Debug|Any CPU - {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|x86.Build.0 = Debug|Any CPU + {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|x64.ActiveCfg = Debug|x64 + {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|x64.Build.0 = Debug|x64 + {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|x86.ActiveCfg = Debug|x86 + {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Debug|x86.Build.0 = Debug|x86 {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Release|Any CPU.ActiveCfg = Release|Any CPU {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Release|Any CPU.Build.0 = Release|Any CPU {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Release|x64.ActiveCfg = Release|x64 {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Release|x64.Build.0 = Release|x64 - {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Release|x86.ActiveCfg = Release|Any CPU - {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Release|x86.Build.0 = Release|Any CPU + {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Release|x86.ActiveCfg = Release|x86 + {08CDD42E-E324-40A4-88C3-EDD0493AAF84}.Release|x86.Build.0 = Release|x86 {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|x64.ActiveCfg = Debug|Any CPU - {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|x64.Build.0 = Debug|Any CPU - {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|x86.ActiveCfg = Debug|Any CPU - {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|x86.Build.0 = Debug|Any CPU + {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|x64.ActiveCfg = Debug|x64 + {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|x64.Build.0 = Debug|x64 + {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|x86.ActiveCfg = Debug|x86 + {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Debug|x86.Build.0 = Debug|x86 {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Release|Any CPU.ActiveCfg = Release|Any CPU {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Release|Any CPU.Build.0 = Release|Any CPU {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Release|x64.ActiveCfg = Release|x64 {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Release|x64.Build.0 = Release|x64 - {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Release|x86.ActiveCfg = Release|Any CPU - {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Release|x86.Build.0 = Release|Any CPU + {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Release|x86.ActiveCfg = Release|x86 + {3496A688-0749-48C2-BD60-ABB42A5C17C9}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ZeroLevel/DataStructures/BloomFilter.cs b/ZeroLevel/DataStructures/BloomFilter.cs index 363c9ea..202ae89 100644 --- a/ZeroLevel/DataStructures/BloomFilter.cs +++ b/ZeroLevel/DataStructures/BloomFilter.cs @@ -1,45 +1,61 @@ using System; using System.Collections; +using System.IO; using System.Runtime.CompilerServices; using ZeroLevel.Services.HashFunctions; namespace ZeroLevel.DataStructures { - /// - /// Bloom filter implementation, 128 bit - /// public class BloomFilter { #region Private private struct HIND { - public ulong PrimiryDirect; - public uint SecondDirect; - public ulong PrimiryReverse; - public uint SecondReverse; + public int IndexFirst; + public int IndexSecond; + public int IndexThird; + public int IndexReverse; } - private readonly BitArray _primary; - private readonly BitArray _second; - - private readonly BitArray _r_primary; - private readonly BitArray _r_second; - - private readonly bool _use_reverse = false; + private BitArray _primary; + private BitArray _second; + private BitArray _third; + private BitArray _reverse; #endregion - public BloomFilter(int bit_size, bool use_reverse) + public BloomFilter(int bit_size) { - _use_reverse = use_reverse; - + var diff = bit_size % 8; + if (diff != 0) + { + bit_size += diff; + } _primary = new BitArray(bit_size); _second = new BitArray(bit_size); + _third = new BitArray(bit_size); + _reverse = new BitArray(bit_size); + } - if (_use_reverse) + private HIND Compute(string line) + { + var r = Reverse(line); + var first = HashMM(line) ^ StringHash.DotNetFullHash(line); + var second = HashXX(line) ^ StringHash.DotNetFullHash(r); + var third = HashMM(r) ^ StringHash.CustomHash(line); + var reverse = HashXX(r) ^ StringHash.CustomHash2(r); + + var hind = new HIND { - _r_primary = new BitArray(bit_size); - _r_second = new BitArray(bit_size); - } + IndexFirst = (int)(first % _primary.Length), + IndexSecond = (int)(second % _second.Length), + IndexThird = (int)(third % _third.Length), + IndexReverse = (int)(reverse % _reverse.Length) + }; + return hind; + } + + private BloomFilter() + { } public void Add(string item) @@ -70,22 +86,6 @@ namespace ZeroLevel.DataStructures return true; } - private HIND Compute(string line) - { - var hind = new HIND - { - PrimiryDirect = HashMM(line), - SecondDirect = HashXX(line), - }; - if(_use_reverse) - { - var r = Reverse(line); - hind.PrimiryReverse = HashMM(r); - hind.SecondReverse = HashXX(r); - } - return hind; - } - public static string Reverse(string s) { char[] charArray = s.ToCharArray(); @@ -96,39 +96,20 @@ namespace ZeroLevel.DataStructures [MethodImpl(MethodImplOptions.AggressiveInlining)] private void Add(HIND hind) { - int pi = (int)(hind.PrimiryDirect % (ulong)_primary.Length); - _primary[pi] = true; - - int si = (int)(hind.SecondDirect % (uint)_second.Length); - _second[si] = true; - - if (_use_reverse) - { - int rpi = (int)(hind.PrimiryReverse % (ulong)_primary.Length); - _r_primary[rpi] = true; - - int rsi = (int)(hind.SecondReverse % (uint)_second.Length); - _r_second[rsi] = true; - } + _primary[hind.IndexFirst] = true; + _second[hind.IndexSecond] = true; + _third[hind.IndexThird] = true; + _reverse[hind.IndexReverse] = true; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private bool Contains(HIND hind) { - int pi = (int)(hind.PrimiryDirect % (ulong)_primary.Length); - if (!_primary[pi]) return false; + if (!_primary[hind.IndexFirst]) return false; + if (!_second[hind.IndexSecond]) return false; + if (!_third[hind.IndexThird]) return false; + if (!_reverse[hind.IndexReverse]) return false; - int si = (int)(hind.SecondDirect % (uint)_second.Length); - if (!_second[si]) return false; - - if (_use_reverse) - { - int rpi = (int)(hind.PrimiryReverse % (ulong)_primary.Length); - if (!_r_primary[rpi]) return false; - - int rsi = (int)(hind.SecondReverse % (uint)_second.Length); - if (!_r_second[rsi]) return false; - } return true; } @@ -145,5 +126,72 @@ namespace ZeroLevel.DataStructures { return _hash_mm_32.Hash(line); } + + public bool IsEqual(BloomFilter other) + { + if (Equals(this._primary, other._primary) == false) return false; + if (Equals(this._second, other._second) == false) return false; + if (Equals(this._third, other._third) == false) return false; + if (Equals(this._reverse, other._reverse) == false) return false; + return true; + } + + public bool Equals(BitArray first, BitArray second) + { + if (first.Length != second.Length) + { + return false; + } + for (int i = 0; i < first.Length; i++) + { + if (first[i] != second[i]) + { + return false; + } + } + return true; + } + + public byte[] Dump() + { + var add = new Action((ms, arr) => + { + int tc = arr.Length / 8; + ms.Write(BitConverter.GetBytes(tc), 0, 4); + byte[] t = new byte[tc]; + arr.CopyTo(t, 0); + ms.Write(t, 0, tc); + }); + using (var ms = new MemoryStream()) + { + add(ms, _primary); + add(ms, _second); + add(ms, _third); + add(ms, _reverse); + return ms.ToArray(); + } + } + + public static BloomFilter Load(byte[] data) + { + var bf = new BloomFilter(); + byte[] sizeArr = new byte[4]; + var readArray = new Func(stream => + { + stream.Read(sizeArr, 0, 4); + int count = BitConverter.ToInt32(sizeArr, 0); + byte[] bfData = new byte[count]; + stream.Read(bfData, 0, count); + return new BitArray(bfData); + }); + using (var ms = new MemoryStream(data)) + { + bf._primary = readArray(ms); + bf._second = readArray(ms); + bf._third = readArray(ms); + bf._reverse = readArray(ms); + } + return bf; + } } } diff --git a/ZeroLevel/DataStructures/HyperBloomBloom.cs b/ZeroLevel/DataStructures/HyperBloomBloom.cs index 2e48a31..a50c789 100644 --- a/ZeroLevel/DataStructures/HyperBloomBloom.cs +++ b/ZeroLevel/DataStructures/HyperBloomBloom.cs @@ -1,32 +1,37 @@ -using ZeroLevel.Services.HashFunctions; +using System; +using System.IO; +using ZeroLevel.Services.HashFunctions; namespace ZeroLevel.DataStructures { public class HyperBloomBloom { - private IHash _shardHash = new XXHashUnsafe(); private BloomFilter[] _shardes; - public HyperBloomBloom(int shardes_size, int bit_size, bool use_reverse) + public HyperBloomBloom(int shardes_size, int bit_size) { _shardes = new BloomFilter[shardes_size]; for (int i = 0; i < shardes_size; i++) { - _shardes[i] = new BloomFilter(bit_size, use_reverse); + _shardes[i] = new BloomFilter(bit_size); } } + private HyperBloomBloom() + { + } + public void Add(string item) { if (item == null || item.Length == 0) return; - int index = (int)(_shardHash.Hash(item) % _shardes.Length); + var index = GetIndex(item); _shardes[index].Add(item); } public bool Contains(string item) { if (item == null || item.Length == 0) return true; - int index = (int)(_shardHash.Hash(item) % _shardes.Length); + var index = GetIndex(item); return _shardes[index].Contains(item); } /// @@ -35,8 +40,64 @@ namespace ZeroLevel.DataStructures public bool TryAdd(string item) { if (item == null || item.Length == 0) return false; - int index = (int)(_shardHash.Hash(item) % _shardes.Length); + var index = GetIndex(item); return _shardes[index].TryAdd(item); } + + private uint GetIndex(string line) + { + var hash = StringHash.DotNetFullHash(line); + return (uint)(hash % _shardes.Length); + } + + public byte[] Dump() + { + using (var stream = new MemoryStream()) + { + stream.Write(BitConverter.GetBytes(_shardes.Length), 0, 4); + foreach (var shard in _shardes) + { + var arr = shard.Dump(); + stream.Write(BitConverter.GetBytes(arr.Length), 0, 4); + stream.Write(arr, 0, arr.Length); + } + return stream.ToArray(); + } + } + + public static HyperBloomBloom Load(byte[] data) + { + var hbb = new HyperBloomBloom(); + byte[] sizeArr = new byte[4]; + using (var stream = new MemoryStream(data)) + { + stream.Read(sizeArr, 0, 4); + var count = BitConverter.ToInt32(sizeArr, 0); + hbb._shardes = new BloomFilter[count]; + for (int i = 0; i < count; i++) + { + stream.Read(sizeArr, 0, 4); + var length = BitConverter.ToInt32(sizeArr, 0); + var bloomData = new byte[length]; + stream.Read(bloomData, 0, length); + hbb._shardes[i] = BloomFilter.Load(bloomData); + } + } + return hbb; + } + + public bool IsEqual(HyperBloomBloom other) + { + if (this._shardes.Length == other._shardes.Length) + { + for (int i = 0; i < this._shardes.Length; i++) + { + if (false == this._shardes[i].IsEqual(other._shardes[i])) + return false; + } + return true; + } + return false; + } } } diff --git a/ZeroLevel/Services/HashFunctions/StringHash.cs b/ZeroLevel/Services/HashFunctions/StringHash.cs new file mode 100644 index 0000000..fb75a5c --- /dev/null +++ b/ZeroLevel/Services/HashFunctions/StringHash.cs @@ -0,0 +1,54 @@ +namespace ZeroLevel.Services.HashFunctions +{ + /// + /// In .net core string.GetHashCode not deterministic more + /// https://andrewlock.net/why-is-string-gethashcode-different-each-time-i-run-my-program-in-net-core/#a-deterministic-gethashcode-implementation + /// + public static class StringHash + { + public static uint DotNetFullHash(string str) + { + unchecked + { + int hash1 = (5381 << 16) + 5381; + int hash2 = hash1; + + for (int i = 0; i < str.Length; i += 2) + { + hash1 = ((hash1 << 5) + hash1) ^ str[i]; + if (i == str.Length - 1) + break; + hash2 = ((hash2 << 5) + hash2) ^ str[i + 1]; + } + + return (uint)(hash1 + (hash2 * 1566083941)) & 0x7FFFFFFF; + } + } + + const long seed = 57; + public static long CustomHash(string str) + { + long result = 1; + foreach (var ch in str) + { + result = (seed * result + (int)ch) & 0xFFFFFFFF; + } + return result & 0x7FFFFFFF; + } + + public static int CustomHash2(string s) + { + int hash = 0; + for (int i = 0; i < s.Length; i++) + { + hash += s[i]; + hash += (hash << 10); + hash ^= (hash >> 6); + } + hash += (hash << 3); + hash ^= (hash >> 11); + hash += (hash << 15); + return hash & 0x7FFFFFFF; + } + } +} diff --git a/ZeroLevel/Services/Text/PlainTextTables/TextTableData.cs b/ZeroLevel/Services/Text/PlainTextTables/TextTableData.cs index 17d2695..6821fa4 100644 --- a/ZeroLevel/Services/Text/PlainTextTables/TextTableData.cs +++ b/ZeroLevel/Services/Text/PlainTextTables/TextTableData.cs @@ -83,6 +83,9 @@ namespace ZeroLevel.Services.PlainTextTables internal TextTableColumn[] Columns { get { return _columns; } } internal IEnumerable Rows { get { return _rows; } } + + public int RowsCount => _rows.Count; + public int ColumnsCount => _columns.Length; #endregion Properties @@ -124,6 +127,11 @@ namespace ZeroLevel.Services.PlainTextTables _rows.Add(new TextTableRow(cells.Select((c, i) => new TextTableCell(_columns[i], c)).ToArray())); } + /// + /// Remove all rows data. + /// + public void Clear() => _rows.Clear(); + #endregion API } } \ No newline at end of file diff --git a/ZeroLevel/ZeroLevel.csproj b/ZeroLevel/ZeroLevel.csproj index 98884fd..2b5886f 100644 --- a/ZeroLevel/ZeroLevel.csproj +++ b/ZeroLevel/ZeroLevel.csproj @@ -6,17 +6,17 @@ ogoun ogoun - 3.3.4.8 - Added BigFileParser + 3.3.5.0 + Fix Bloom and HyperBloomBloom filters https://github.com/ogoun/Zero/wiki Copyright Ogoun 2020 https://github.com/ogoun/Zero GitHub - 3.3.4.8 - 3.3.4.8 - AnyCPU;x64 + 3.3.5.0 + 3.3.5.0 + AnyCPU;x64;x86 zero.png @@ -24,6 +24,10 @@ true + + true + + true @@ -33,6 +37,15 @@ prompt none false + x64 + + + + true + prompt + none + false + x86 diff --git a/ZeroNetworkMonitor/App.config b/ZeroNetworkMonitor/App.config index bae5d6d..4bfa005 100644 --- a/ZeroNetworkMonitor/App.config +++ b/ZeroNetworkMonitor/App.config @@ -1,6 +1,6 @@ - + diff --git a/ZeroNetworkMonitor/Properties/Settings.Designer.cs b/ZeroNetworkMonitor/Properties/Settings.Designer.cs index 400373f..b858607 100644 --- a/ZeroNetworkMonitor/Properties/Settings.Designer.cs +++ b/ZeroNetworkMonitor/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace ZeroNetworkMonitor.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.5.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/ZeroNetworkMonitor/ZeroNetworkMonitor.csproj b/ZeroNetworkMonitor/ZeroNetworkMonitor.csproj index ce8326f..b5fe776 100644 --- a/ZeroNetworkMonitor/ZeroNetworkMonitor.csproj +++ b/ZeroNetworkMonitor/ZeroNetworkMonitor.csproj @@ -8,13 +8,15 @@ WinExe ZeroNetworkMonitor ZeroNetworkMonitor - v4.6.1 + v4.8 512 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 4 true true + + AnyCPU @@ -57,6 +59,26 @@ MinimumRecommendedRules.ruleset true + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + 7.3 + prompt + true + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + 7.3 + prompt + true + @@ -74,6 +96,9 @@ + + ..\packages\ZeroLevel.3.3.4.9\lib\netstandard2.0\ZeroLevel.dll + @@ -118,6 +143,7 @@ ResXFileCodeGenerator Resources.Designer.cs + SettingsSingleFileGenerator Settings.Designer.cs @@ -126,11 +152,5 @@ - - - {06c9e60e-d449-41a7-9bf0-a829aaf5d214} - ZeroLevel - - \ No newline at end of file diff --git a/ZeroNetworkMonitor/packages.config b/ZeroNetworkMonitor/packages.config new file mode 100644 index 0000000..ac38130 --- /dev/null +++ b/ZeroNetworkMonitor/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file