最新手机号段归属地数据库 高性能dat解析
最新 手机号段数据库 2020-08-15 458461条记录 号码归属地数据库 全面 准确 规范
字段包括 省份 城市 运营商 邮编 区号 等信息,对于数据分析、号码归属地查询等非常有帮助
名称:手机号码归属地查询 dat高效率查询 内存优化版
压缩:原版txt为22M,生成这种dat结构为2.66M
性能:每秒解析300万+号段或者号码,简洁高效
环境:CPU i7-7700K +内存16GB
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading;namespace qqzeng_phone_dat
{public class PhoneSearchFast{private static readonly Lazy<PhoneSearchFast> lazy = new Lazy<PhoneSearchFast>(() => new PhoneSearchFast());public static PhoneSearchFast Instance { get { return lazy.Value; } }private PhoneSearchFast(){LoadDat();Watch();}private string datPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"qqzeng-phone.dat");private DateTime lastRead = DateTime.MinValue;private long[,] prefmap = new long[200, 2];// 000-199private long[,] phonemap;private byte[] data;private long[] phoneArr;private string[] addrArr;private string[] ispArr;/// <summary>/// 初始化二进制dat数据/// </summary>/// <param name="dataPath"></param>/// private void LoadDat(){data = File.ReadAllBytes(datPath);long PrefSize = BytesToLong(data[0], data[1], data[2], data[3]);long RecordSize = BytesToLong(data[4], data[5], data[6], data[7]);long descLength = BytesToLong(data[8], data[9], data[10], data[11]);long ispLength = BytesToLong(data[12], data[13], data[14], data[15]);//内容数组int descOffset = (int)(16 + PrefSize * 9 + RecordSize * 7);string descString = Encoding.UTF8.GetString(data, descOffset, (int)descLength);