1
using System;
2
using System.Collections.Generic;
3
using System.IO;
4
using System.Linq;
5
using System.Runtime.Serialization.Formatters.Binary;
6
using System.Text;
7
using BerkeleyDb;
8
using Component;
9![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
namespace ToolManager
11
{
12
public class BDBRecord
13
{
14
public object Key { get; set; }
15
public string Value { get; set; }
16
} /// <summary>
17
/// BDB数据库操作类库
18
/// </summary>
19
public class BDBHelper
20
{
21![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
private string DBFilePath { get; set; }
23
private DBStoreType DBType { get; set; }
24
public enum DBStoreType : byte
25
{
26
Auto=1,
27
Queue,
28
Hash
29
}
30
[Obsolete("该构造函数已废弃 ,请使用BDBHelper(string dbfilePath)")]
31
public BDBHelper()
32
{
33
}
34![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
public BDBHelper(string dbfilePath)
36
{
37
this.DBFilePath = dbfilePath;
38
}
39
[Obsolete("该构造函数已废弃 ,请使用BDBHelper(string dbfilePath)")]
40
public BDBHelper(string dbfilePath, DBStoreType type)
41
{
42
this.DBFilePath = dbfilePath;
43
this.DBType = type;
44
}
45
public BDBRecord FindOne()
46
{
47
return this.FindOne(null);
48
}
49
public BDBRecord FindOne(Func<object, string, bool> predicate)
50
{
51
//Dictionary<string, object> dict = new Dictionary<string, object>();
52
try
53
{
54
Queue格式
85
}
86
catch (Exception ex)
87
{
88
Hash格式
121
//}
122
}
123
//return dict;
124
return null;
125
}
126
public Dictionary<object, string> FindAll(Func<object, string, bool> predicate)
127
{
128![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
129
Dictionary<object, string> dict = new Dictionary<object, string>();
130
try
131
{
132
Queue格式
150
}
151
catch (Exception ex)
152
{
153
Hash格式
173
//}
174
}
175
return dict;
176
}
177
public Dictionary<object, string> FindAll()
178
{
179
//either below works fine
180
//return this.FindAll((s, o) => true);
181
return this.FindAll(null);
182
}
183
private static void _Do(KeyDataPair kvp, Func<object, string, bool> predicate, Dictionary<object, string> result)
184
{
185
BinaryFormatter bf = new BinaryFormatter();
186
MemoryStream stream = new MemoryStream();
187
stream.Write(kvp.Data.Buffer, 0, kvp.Data.Size);
188
stream.Seek(0, SeekOrigin.Begin);
189
string k = Encoding.UTF8.GetString(kvp.Key.Buffer, 0, kvp.Key.Size);
190
object v = bf.Deserialize(stream);
191
if (predicate == null)
192
{
193
result.Add(v, k);
194
}
195
else if (predicate(v, k))
196
{
197
result.Add(v, k);
198
}
199
}
200
private static void _Do2(KeyDataPair kvp, Func<object, string, bool> predicate, Dictionary<object, string> result)
201
{
202
BinaryFormatter bf = new BinaryFormatter();
203
MemoryStream stream = new MemoryStream();
204
stream.Write(kvp.Data.Buffer, 0, kvp.Data.Size);
205
stream.Seek(0, SeekOrigin.Begin);
206
string k = BitConverter.ToInt32(kvp.Key.Buffer, 0).ToString();
207
object v = bf.Deserialize(stream);
208
if (predicate == null)
209
{
210
result.Add(v, k);
211
}
212
else if (predicate(v, k))
213
{
214
result.Add(v, k);
215
}
216
}
217
/// <summary>
218
/// 更新数据库中的数据
219
/// </summary>
220
/// <param name="predicate">execute condition</param>
221
/// <param name="isMatchOnlyOnce">is match only once</param>
222
/// <returns>effect records</returns>
223
public int UpdateInQueueMode(Func<int, object, bool> predicate, object value,bool isMatchOnlyOnce)
224
{
225
int count = 0;
226
if (predicate == null)
227
return 0;
228
//遍历数据
229
using (Db db = new Db(DbCreateFlags.None))
230
{
231
db.RecLen = 5000;
232
db.RecPad = '.';
233
//这里如果应用Db.OpenFlags.Create则在启动后会覆盖同名文件,并新建同名文件
234
//Db.OpenFlags.Truncate会清空数据库
235
DbQueue dbf = (DbQueue)db.Open(null, this.DBFilePath, null, DbType.Queue,
236
Db.OpenFlags.ThreadSafe|Db.OpenFlags.Create, 0);
237![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
238
using (DbQueueCursor cursor = dbf.OpenCursor(null, DbFileCursor.CreateFlags.None))
239
{
240
BinaryFormatter bf = new BinaryFormatter();
241
MemoryStream stream = new MemoryStream();
242
foreach (KeyDataPair kdp in cursor)
243
{
244
int k = BitConverter.ToInt32(kdp.Key.Buffer, 0);
245
Console.WriteLine("k={0}", k.ToString());
246
stream.SetLength(0);
247
stream.Position = 0;
248
stream.Write(kdp.Data.Buffer, 0, kdp.Data.Size);
249
stream.Seek(0, SeekOrigin.Begin);
250
object v = bf.Deserialize(stream);
251
if(predicate(k,v))
252
{
253
count++;
254
//string d = Encoding.UTF8.GetString(kdp.Data.Buffer, 0, kdp.Data.Size);
255
//如何读取Queue类型的主键值
256![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
257![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
258
//Console.WriteLine("{0},{1}", p2.State, p2.Os);
259
//p2.Os = "changed";
260
//stream = new MemoryStream();
261
stream.Position = 0;
262
stream.SetLength(0);
263
bf.Serialize(stream, value);
264
DbEntry data = DbEntry.InOut(stream.ToArray());
265
cursor.Put(ref data);
266
if (isMatchOnlyOnce)
267
{
268
stream.Close();
269
return count;
270
}
271
}
272
}
273
stream.Close();
274
}
275
}
276
return count;
277
}
278![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
279
public void CreateInQueueMode(object value)
280
{
281
Db PC = new Db(DbCreateFlags.None);
282
PC.RecLen = 5000;
283
PC.RecPad = '.';
284
DbQueue file = (DbQueue)PC.Open(null, this.DBFilePath, null, DbType.Queue, Db.OpenFlags.Create|Db.OpenFlags.ThreadSafe, 0);
285
//CreateSecondaryDB(file,"Id.PCs.s",new DbFile.KeyGeneratorFcn(Common.Id));
286
//CreateSecondaryDB(file, "Id.PCs.s", new DbFile.KeyGeneratorFcn(Common.Id));
287
//由于数据量不是很大,不考虑使用二级数据库,直接使用游标操作,降低复杂度
288
//首先遍历数据库看有没有已经存在,如果没有,则添加一个,如果有,改变其状态
289
BinaryFormatter bf = new BinaryFormatter();
290
MemoryStream stream= new MemoryStream();
291
bf.Serialize(stream, value);
292
DbEntry k = DbEntry.Out(new byte[1024]);
293
DbEntry data = DbEntry.InOut(stream.ToArray());
294
file.Append(null, ref k, ref data);
295
stream.Close();
296
file.Sync();
297
PC.Close();
298
}
299
public int DeleteInQueueMode(Func<int, object, bool> predicate,bool isMatchOnlyOnce)
300
{
301
int count = 0;
302
if (predicate == null)
303
return 0;
304
//遍历数据
305
using (Db db = new Db(DbCreateFlags.None))
306
{
307
db.RecLen = 5000;
308
db.RecPad = '.';
309
//这里如果应用Db.OpenFlags.Create则在启动后会覆盖同名文件,并新建同名文件
310
//Db.OpenFlags.Truncate会清空数据库
311
DbQueue dbf = (DbQueue)db.Open(null, this.DBFilePath, null, DbType.Queue,
312
Db.OpenFlags.ThreadSafe|Db.OpenFlags.Create, 0);
313![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
314
using (DbQueueCursor cursor = dbf.OpenCursor(null, DbFileCursor.CreateFlags.None))
315
{
316
BinaryFormatter bf = new BinaryFormatter();
317
MemoryStream stream = new MemoryStream();
318
foreach (KeyDataPair kdp in cursor)
319
{
320
int k = BitConverter.ToInt32(kdp.Key.Buffer, 0);
321
Console.WriteLine("k={0}", k.ToString());
322
stream.SetLength(0);
323
stream.Position = 0;
324
stream.Write(kdp.Data.Buffer, 0, kdp.Data.Size);
325
stream.Seek(0, SeekOrigin.Begin);
326
object v = bf.Deserialize(stream);
327
if (predicate(k, v))
328
{
329
count++;
330
//string d = Encoding.UTF8.GetString(kdp.Data.Buffer, 0, kdp.Data.Size);
331
//如何读取Queue类型的主键值
332![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
333![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
334
//Console.WriteLine("{0},{1}", p2.State, p2.Os);
335
//p2.Os = "changed";
336
//stream = new MemoryStream();
337
//stream.Position = 0;
338
//stream.SetLength(0);
339
//bf.Serialize(stream, v);
340
//DbEntry data = DbEntry.InOut(stream.ToArray());
341
//cursor.Put(ref data);
342
cursor.Delete();
343
if (isMatchOnlyOnce)
344
{
345
stream.Close();
346
return count;
347
}
348
}
349
}stream.Close();
350
}
351
}
352
return count;
353
}
354![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
355
/// <summary>
356
/// 用于向支持重复键值的数据库文件添加数据
357
/// </summary>
358
/// <param name="key"></param>
359
/// <param name="value"></param>
360
public void CreateInHashModeWithDup(string key,object value)
361
{
362
//这里只是更新了一条记录,更新多条同key的情况没有考虑
363
Db db = new Db(DbCreateFlags.None);
364
db.SetFlags(DbFlags.Dup);
365
DbFile dbf = db.Open(null, this.DBFilePath, null, DbType.Hash, Db.OpenFlags.Create|Db.OpenFlags.ThreadSafe, 0);
366
MemoryStream stream = new MemoryStream();
367
BinaryFormatter formatter = new BinaryFormatter();
368
formatter.Serialize(stream, value);
369
DbEntry _key = DbEntry.InOut(Encoding.UTF8.GetBytes(key));
370
DbEntry _data = DbEntry.InOut(stream.ToArray());
371
if (dbf.Put(null, ref _key, ref _data) != 0)
372
Console.Write("{0}:输入错误", key);
373
stream.Close();
374
dbf.Sync();//数据更新
375
db.Close();
376
}
377
/// <summary>
378
/// 默认方式,如果已有键则进行更新操作
379
/// </summary>
380
/// <param name="key"></param>
381
/// <param name="value"></param>
382
public void CreateOrUpdateInHashModeWithoutDup(string key,object value)
383
{
384
//这里只是更新了一条记录,更新多条同key的情况没有考虑
385
Db db = new Db(DbCreateFlags.None);
386
//db.SetFlags(DbFlags.Dup);
387
DbFile dbf = db.Open(null, this.DBFilePath, null, DbType.Hash, Db.OpenFlags.Create|Db.OpenFlags.ThreadSafe, 0);
388
MemoryStream stream = new MemoryStream();
389
BinaryFormatter formatter = new BinaryFormatter();
390
formatter.Serialize(stream, value);
391
DbEntry _key = DbEntry.InOut(Encoding.UTF8.GetBytes(key));
392
DbEntry _data = DbEntry.InOut(stream.ToArray());
393
if (dbf.Put(null, ref _key, ref _data) != 0)
394
Console.Write("{0}:输入错误", key);
395
stream.Close();
396
dbf.Sync();//数据更新
397
db.Close();
398
}
399
public int UpdateInHashMode(Func<string,object,bool> predicate,object value,bool isMatchOnlyOnce)
400
{
401
int count = 0;
402
if (predicate == null)
403
return count;
404
//遍历数据
405
using (Db db = new Db(DbCreateFlags.None))
406
{
407
//这里如果应用Db.OpenFlags.Create则在启动后会覆盖同名文件,并新建同名文件
408
//Db.OpenFlags.Truncate会清空数据库
409
DbHash dbf = (DbHash)db.Open(null, this.DBFilePath, null, DbType.Hash,
410
Db.OpenFlags.ThreadSafe|Db.OpenFlags.Create, 0);
411![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
412
using (DbHashCursor cursor = dbf.OpenCursor(null, DbFileCursor.CreateFlags.None))
413
{
414
BinaryFormatter bf = new BinaryFormatter();
415
MemoryStream stream = new MemoryStream();
416
foreach (KeyDataPair kvp in cursor)
417
{
418
stream.SetLength(0);
419
stream.Position = 0;
420
stream.Write(kvp.Data.Buffer, 0, kvp.Data.Size);
421
stream.Seek(0, SeekOrigin.Begin);
422
string k = Encoding.UTF8.GetString(kvp.Key.Buffer, 0, kvp.Key.Size);
423
object v = bf.Deserialize(stream);
424
if (predicate(k, v))
425
{
426
count++;
427
stream.SetLength(0);
428
stream.Position = 0;
429
bf.Serialize(stream, value);
430
DbEntry data = DbEntry.InOut(stream.ToArray());
431
cursor.Put(ref data, DbKeyCursor<DbHashCursor, DbHash>.PutMode.Current);
432
if (isMatchOnlyOnce)
433
{
434
stream.Close();
435
return count;
436
}
437
}
438
}
439
stream.Close();
440
}
441
}
442
return count;
443
}
444
public int DeleteInHashMode(Func<string,object,bool> predicate,bool isMatchOnlyOnce)
445
{
446
int count = 0;
447
if (predicate == null)
448
return count;
449
//遍历数据
450
using (Db db = new Db(DbCreateFlags.None))
451
{
452
//这里如果应用Db.OpenFlags.Create则在启动后会覆盖同名文件,并新建同名文件
453
//Db.OpenFlags.Truncate会清空数据库
454
DbHash dbf = (DbHash)db.Open(null, this.DBFilePath, null, DbType.Hash,
455
Db.OpenFlags.ThreadSafe|Db.OpenFlags.Create, 0);
456![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
457
using (DbHashCursor cursor = dbf.OpenCursor(null, DbFileCursor.CreateFlags.None))
458
{
459
BinaryFormatter bf = new BinaryFormatter();
460
MemoryStream stream = new MemoryStream();
461
foreach (KeyDataPair kvp in cursor)
462
{
463
stream.SetLength(0);
464
stream.Position = 0;
465
stream.Write(kvp.Data.Buffer, 0, kvp.Data.Size);
466
stream.Seek(0, SeekOrigin.Begin);
467
string k = Encoding.UTF8.GetString(kvp.Key.Buffer, 0, kvp.Key.Size);
468
object v = bf.Deserialize(stream);
469
if (predicate(k, v))
470
{
471
count++;
472
cursor.Delete();
473
if (isMatchOnlyOnce)
474
{
475
stream.Close();
476
return count;
477
}
478
}
479
}
480
stream.Close();
481
}
482
}
483
return count;
484
}
485
}
486
}
487![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
85
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
86
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
87
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
88
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
121
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
122
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
123
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
124
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
125
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
126
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
127
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
128
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
129
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
130
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
131
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
132
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
150
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
151
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
152
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
153
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
173
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
174
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
175
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
176
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
177
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
178
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
179
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
180
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
181
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
182
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
183
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
184
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
185
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
186
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
187
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
188
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
189
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
190
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
191
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
192
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
193
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
194
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
195
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
196
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
197
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
198
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
199
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
200
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
201
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
202
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
203
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
204
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
205
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
206
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
207
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
208
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
209
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
210
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
211
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
212
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
213
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
214
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
215
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
216
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
217
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
218
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
219
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
220
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
221
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
222
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
223
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
224
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
225
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
226
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
227
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
228
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
229
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
230
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
231
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
232
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
233
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
234
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
235
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
236
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
237
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
238
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
239
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
240
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
241
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
242
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
243
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
244
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
245
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
246
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
247
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
248
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
249
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
250
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
251
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
252
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
253
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
254
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
255
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
256
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
257
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
258
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
259
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
260
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
261
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
262
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
263
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
264
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
265
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
266
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
267
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
268
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
269
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
270
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
271
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
272
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
273
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
274
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
275
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
276
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
277
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
278
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
279
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
280
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
281
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
282
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
283
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
284
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
285
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
286
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
287
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
288
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
289
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
290
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
291
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
292
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
293
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
294
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
295
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
296
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
297
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
298
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
299
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
300
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
301
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
302
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
303
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
304
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
305
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
306
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
307
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
308
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
309
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
310
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
311
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
312
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
313
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
314
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
315
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
316
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
317
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
318
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
319
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
320
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
321
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
322
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
323
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
324
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
325
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
326
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
327
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
328
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
329
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
330
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
331
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
332
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
333
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
334
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
335
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
336
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
337
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
338
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
339
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
340
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
341
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
342
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
343
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
344
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
345
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
346
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
347
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
348
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
349
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
350
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
351
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
352
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
353
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
354
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
355
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
356
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
357
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
358
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
359
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
360
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
361
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
362
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
363
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
364
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
365
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
366
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
367
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
368
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
369
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
370
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
371
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
372
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
373
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
374
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
375
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
376
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
377
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
378
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
379
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
380
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
381
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
382
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
383
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
384
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
385
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
386
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
387
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
388
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
389
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
390
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
391
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
392
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
393
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
394
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
395
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
396
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
397
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
398
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
399
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
400
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
401
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
402
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
403
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
404
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
405
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
406
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
407
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
408
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
409
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
410
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
411
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
412
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
413
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
414
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
415
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
416
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
417
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
418
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
419
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
420
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
421
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
422
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
423
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
424
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
425
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
426
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
427
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
428
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
429
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
430
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
431
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
432
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
433
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
434
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
435
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
436
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
437
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
438
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
439
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
440
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
441
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
442
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
443
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
444
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
445
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
446
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
447
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
448
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
449
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
450
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
451
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
452
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
453
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
454
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
455
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
456
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
457
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
458
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
459
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
460
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
461
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
462
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
463
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
464
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
465
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
466
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
467
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
468
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
469
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
470
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
471
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
472
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
473
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
474
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
475
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
476
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
477
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
478
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
479
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
480
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
481
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
482
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
483
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
484
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
485
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
486
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
487
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
unit test code
1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
using Component;
6
using MbUnit.Framework;
7![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
namespace ToolManager.Test
9
{
10
[TestFixture]
11
class BDBHelperTest2
12
{
13
hash mode unit test
69![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
70
queue mode unit test
103![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
104
}
105
}
106![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
69
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
70
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
103
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
104
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
105
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
106
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)