資源簡介
一個C#版的B+樹實現,大家可以不太去關注算法本身(算法本省我也不是本人所寫),可以把它認為是一個高效的持久hashtable。這個Prototype是我在遇到一個key-value問題時候,壓力測試的雛形。

代碼片段和文件信息
using?System;
using?System.IO;
using?System.Web.Security;
using?RINP.Services.Common.BPlusTree;
namespace?BPlusTreeTest
{
????class?Program
????{
????????private?const?string?TreeDataDir?=?@“D:\tmp“;
????????private?const?int?DefaultNodeSize?=?32;
????????private?const?int?DefaultKeyLength?=?32;
????????private?static?BplusTreeLong?_treeProperty;
????????private?const?string?SmsContent?=?“數字簽名可以保證信息的原始性、完整性。因此,數字簽名可以解決否認、偽造、篡改及冒充等問題。具體要求:發送:昔事后不能否認發送的報文簽名、接收者能夠核實發送者發送的報文簽名、接收者不能偽造發送者的報文簽名、接收者不能對發送者的報文進行部分篡改、網絡中的某一用戶不能冒充另一用戶作為發送者或接收者。數字簽名的應用范圍十分廣泛,在保障電子數據交換(EDI)的安全性上是一個突破性的進展,凡是需要對用戶的身份進行判斷的情況都可以使用數字簽名,比如加密信件、商務信函、定貨購買系統、遠程金融交易、電子政務、自動模式處理等等。?“;
????????private?const?int?StatCount?=?10000;
????????private?static?readonly?int?LcId?=?System.Globalization.CultureInfo.InvariantCulture.LCID;
????????static?void?Main(string[]?args)
????????{
????????????if?(!Directory.Exists(TreeDataDir))
????????????{
????????????????Directory.CreateDirectory(TreeDataDir);
????????????}
????????????Process();
????????}
????????private?static?void?Process()
????????{
????????????var?stopwatch?=?new?System.Diagnostics.Stopwatch();
????????????var?index?=?1;
????????????var?batchIndex?=?1;
????????????for?(int?i?=?0;?i?1000000;?i++)
????????????{
????????????????if?(index?==?1)
????????????????{
????????????????????stopwatch.Start();
????????????????}
????????????????var?key?=?FormsAuthentication.HashPasswordForStoringInConfigFile(SmsContent?+?i?“MD5“);
????????????????if?(!TreeProperty.ContainsKey(key))
????????????????{
????????????????????try
????????????????????{
????????????????????????TreeProperty[key]?=?i;
????????????????????????TreeProperty.Commit();
????????????????????}
????????????????????catch?(Exception?ex)
????????????????????{
????????????????????????TreeProperty.Shutdown();
????????????????????????_treeProperty?=?null;
????????????????????????var?keyFile?=?Path.Combine(TreeDataDir?TreeFileName);
????????????????????????if(File.Exists(keyFile))
????????????????????????{
????????????????????????????File.Delete(keyFile);
????????????????????????????Console.WriteLine(“Delete?The?Bad?Key?File?Done!“);
????????????????????????}
????????????????????????TreeProperty[key]?=?i;
????????????????????????TreeProperty.Commit();
????????????????????}
????????????????}
????????????????else
????????????????{
????????????????????Console.WriteLine(“ContainsKey:“?+?key);
????????????????}
????????????????index++;
????????????????if?(index?==?StatCount)
????????????????{
????????????????????stopwatch.Stop();
????????????????????var?spendSeconds?=?stopwatch.Elapsed.TotalSeconds;
????????????????????var?speed?=?StatCount?/?spendSeconds;
????????????????????Console.WriteLine(batchIndex?+?“.Speed:“?+?speed.ToString(“0.00“)?+?“/s“);
????????????????????stopwatch.Reset();
????????????????????index?=?1;
????????????????????batchIndex++;
????????????????}
????????????}
????????????TreeProp
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????59392??2011-08-05?09:26??RINP.Services.Common.BPlusTree\bin\Debug\RINP.Services.Common.BPlusTree.dll
?????文件?????185856??2011-08-05?09:26??RINP.Services.Common.BPlusTree\bin\Debug\RINP.Services.Common.BPlusTree.pdb
????......R??????7052??2011-07-19?11:53??RINP.Services.Common.BPlusTree\BplusTree.cs
????......R?????11595??2011-07-19?11:53??RINP.Services.Common.BPlusTree\BplusTreeBytes.cs
????......R?????95005??2011-07-19?11:53??RINP.Services.Common.BPlusTree\BplusTreeLong.cs
????......R?????10330??2011-07-19?11:53??RINP.Services.Common.BPlusTree\BufferFile.cs
????......R??????3372??2011-07-19?11:53??RINP.Services.Common.BPlusTree\HBplusTree.cs
????......R??????7190??2011-07-19?11:53??RINP.Services.Common.BPlusTree\HBplusTreeBytes.cs
????......R??????4475??2011-07-19?11:53??RINP.Services.Common.BPlusTree\ITreeIndex.cs
????......R?????19143??2011-07-19?11:53??RINP.Services.Common.BPlusTree\li
?????文件????????556??2011-06-28?10:13??RINP.Services.Common.BPlusTree\obj\Debug\RINP.Services.Common.BPlusTree.csproj.FileListAbsolute.txt
?????文件??????59392??2011-08-05?09:26??RINP.Services.Common.BPlusTree\obj\Debug\RINP.Services.Common.BPlusTree.dll
?????文件?????185856??2011-08-05?09:26??RINP.Services.Common.BPlusTree\obj\Debug\RINP.Services.Common.BPlusTree.pdb
????......R??????1472??2011-07-19?11:53??RINP.Services.Common.BPlusTree\Properties\AssemblyInfo.cs
????......R??????3120??2011-07-19?11:53??RINP.Services.Common.BPlusTree\RINP.Services.Common.BPlusTree.csproj
?????文件????????168??2011-06-22?09:22??RINP.Services.Common.BPlusTree\RINP.Services.Common.BPlusTree.csproj.user
????......R???????257??2011-07-19?11:53??RINP.Services.Common.BPlusTree\RINP.Services.Common.BPlusTree.csproj.vspscc
????......R??????2698??2011-07-19?11:53??RINP.Services.Common.BPlusTree\SerializedTree.cs
????......R??????3250??2011-07-19?11:53??RINP.Services.Common.BPlusTree\XBplusTree.cs
????......R?????16814??2011-07-19?11:53??RINP.Services.Common.BPlusTree\XBplusTreeBytes.cs
?????文件???????9716??2011-09-06?17:13??BPlusTree.5.0.ReSharper.user
????......R??????2049??2011-07-19?11:53??BPlusTree.sln
????..A..H.?????30208??2011-09-06?17:13??BPlusTree.suo
????......R???????256??2011-07-19?11:53??BPlusTree.vssscc
?????文件??????????4??2013-02-17?10:31??_ReSharper.BPlusTree\Buildsc
?????文件??????????4??2013-02-17?10:31??_ReSharper.BPlusTree\Buildsc
?????文件????????185??2013-02-17?10:31??_ReSharper.BPlusTree\Buildsc
?????文件?????????58??2011-06-27?14:44??_ReSharper.BPlusTree\DecompilerCache\me
?????文件???????4295??2011-06-27?14:44??_ReSharper.BPlusTree\DecompilerCache\me
?????文件????????936??2011-06-27?14:44??_ReSharper.BPlusTree\DecompilerCache\me
............此處省略72個文件信息
- 上一篇:用C# 模仿 WINDOWS計算器 編寫的 計算器
- 下一篇:WPF C# 輪播圖
評論
共有 條評論