首页 > 作文

手机号段

更新时间:2023-02-28 20:35:28 阅读: 评论:0

电脑usb接口没反应-婴儿睡觉

手机号段
2023年2月28日发(作者:礼仪规范)

最新⼿机号段归属地数据库(2022年3⽉版)483085⾏

最新⼿机号段归属地数据库

简单介绍

最新⼿机号段归属地数据库(2022年3⽉发⾏版)483085⾏

基于:

名称:⼿机号码归属地查询dat⾼效率查询

压缩:原版txt为25M,⽣成这种dat结构为1.8M

性能:每秒解析1000w+,简洁⾼效

创建:qqzeng-ip

号段分配

公众移动通信⽹⽹号分配情况

号段划分

开发参考

⼿机归属地查询c#javaphp解析dat内存优化版

快速内存数据库Redis版以及导⼊数据库mysqlmssql脚本

查询演⽰

微信⼩程序

最新⼿机号段数据库号码归属地数据库移动号段联通号段电信号段虚拟运营商

权威全⾯准确规范

字段包括省份城市运营商邮编区号等信息,对于数据分析、号码归属地查询等⾮常有帮助

更新历史

2022-03-01483085条记录xlsx+txt+csv+mysql+mssql

2022-02-01481615条记录

2022-01-01481399条记录

2021-12-01479711条记录

2021-11-01478420条记录

2021-10-01476737条记录

2021-09-01475442条记录

2021-08-01474888条记录

2021-07-01474468条记录

2021-06-01473721条记录

2021-05-01473691条记录

2021-04-01473267条记录

2021-03-01472529条记录

2021-02-01472019条记录

2021-01-01471402条记录

2020-12-01465883条记录

2020-11-01464737条记录

2020-10-01463471条记录

2020-09-01459519条记录

2020-08-15458461条记录

2020-08-01458084条记录

2020-07-15458020条记录

2020-07-01457441条记录

2020-06-15455731条记录

2020-06-01454802条记录

2020-05-01450433条记录

2020-04-01450175条记录

2020-03-01447897条记录

2020-01-01442612条记录

2019-12-01441831条记录

2019-11-01439265条记录

2019-10-01439025条记录

2019-09-01438615条记录

2019-08-01437124条记录

2019-07-01436804条记录

2019-06-01430826条记录

2019-05-01429052条记录

2019-04-01424014条记录

2019-03-01423850条记录

2019-02-01423766条记录

2019-01-01421973条记录

2018-12-01415967条记录

2018-11-01415806条记录

2018-10-01415311条记录

2018-09-01413015条记录

2018-08-01411856条记录

2018-07-01410765条记录

2018-06-01405385条记录

2018-05-01398209条记录

2018-04-01387892条记录

2018-03-01382140条记录

…………

2017-07-01363952条记录

2017-06-01362386条记录

2017-05-01359938条记录

…………

2013-04-01279680条记录

2013-03-01276893条记录

2013-02-01275967条记录

2013-01-01274995条记录

2012-12-01274832条记录

…………

号段划分

移动号段:

7887188195198

联通号段:

66185186196

电信号段:

33199

虚拟运营商:

0171

字段样例

号段归属地格式详解

超⾼性能

编码:UTF8字节序:Little-Endian

返回多个字段信息(如:⼴东|深圳|518000|0755|440300|移动)

------------------------⽂件结构---------------------------

//⽂件头20字节4-4-4-4-4

[前缀数量][号段数量][内容区长度][运营商区长度][版本:20211201]

//内容区长度⽆限制

[地区信息][地区信息]……唯⼀不重复

//运营商区长度⽆限制

[运营商][运营商]……唯⼀不重复

//前缀区7字节(1-4-2)

[号段前三位][索引区start索引][索引区个数]

//索引区4字节(2-2)

[号段后四位][地区索引+运营商索引(不⾜补0)]

------------------------⽂件结构---------------------------

优势:压缩形式将数据存储在内存中,通过减少将相同数据读取到内存的次数来减少I/O.

较⾼的压缩率通过使⽤更⼩的内存中空间提⾼查询性能。

解析出来⼀次性加载到⼆维数组中,查询性能提⾼1倍!

压缩:原版txt为23M,⽣成dat结构为1.8M,上⼀版为3.2M

性能:每秒解析1000w+

对⽐:相⽐其他dat更简洁更⾼效

创建:qqzeng-phone于2021-12-12

3.0和2.0性能⽐较

新版3.0内存版:

查询1500万->1.531秒每秒979.75万次

查询914万->0.821秒每秒1113.2764920828258万次

查询1424万->1.375秒每秒1035.6363636363637万次

查询584万->0.516秒每秒1131.7829457364342万次

查询1468万->1.29秒每秒1137.984496124031万次

查询1216万->1.061秒每秒1146.4万次

查询754万->0.673秒每秒1120.3566121842496万次

查询988万->0.871秒每秒1134.3283582089553万次

查询1534万->1.33秒每秒1153.3834586466164万次

查询832万->0.797秒每秒1043.9万次

查询1340万->1.185秒每秒1130.8万次

查询924万->0.807秒每秒1144.981412639405万次

查询848万->0.741秒每秒1144.399460188934万次

查询1526万->1.331秒每秒1146.5万次

查询808万->0.698秒每秒1157.593123209169万次

查询594万->0.522秒每秒1137.931万次

旧版2.0内存版:

查询1398万->2.932秒每秒476.84万次

查询1558万->3.037秒每秒513.8万次

查询822万->1.586秒每秒518.2849936948297万次

查询576万->1.112秒每秒517.9856115107913万次

查询452万->0.926秒每秒488.12万次

查询1204万->2.499秒每秒481.7927170868347万次

查询340万->0.713秒每秒476.8583450210379万次

查询352万->0.716秒每秒491.62万次

查询948万->1.822秒每秒520.3万次

查询514万->0.987秒每秒520.77万次

查询928万->1.783秒每秒520.47万次

查询1598万->3.108秒每秒514.157万次

查询446万->0.862秒每秒517.4万次

查询466万->0.896秒每秒520.7万次

查询1024万->1.964秒每秒521.3849287169043万次

查询1550万->2.974秒每秒521.65万次

开发代码

internalclassPhoneSearchBest

{

privatestaticreadonlyLazylazy=newLazy(()=>newPhoneSearchBest());

publicstaticPhoneSearchBestInstance{get{;}}

privatePhoneSearchBest()

{

LoadDat();

}

privatebyte[]data;

privatelong[,]phone2D;

privatestring[]addrArr;

privatestring[]ispArr;

///

///初始化⼆进制dat数据

///

///

///

privatevoidLoadDat()

{

vardatPath=e(rectory,@"");

data=lBytes(datPath);

varPrefSize=32(data,0);

vardescLength=32(data,8);

varispLength=32(data,12);

varPhoneSize=32(data,4);

varverNum=32(data,16);

varheadLength=20;

intstartIndex=(int)(headLength+descLength+ispLength);

//内容数组

stringdescString=ing(data,headLength,(int)descLength);

addrArr=('&');

//运营商数组

stringispString=ing(data,headLength+(int)descLength,(int)ispLength);

ispArr=('&');

phone2D=newlong[200,10000];

for(varm=0;m

{

inti=m*7+startIndex;

intpref=data[i];

intindex=(int)32(data,i+1);

intlength=16(data,i+5);

for(intn=0;n

{

intp=(int)(startIndex+PrefSize*7+(n+index)*4);

varsuff=16(data,p);

varaddrispIndex=16(data,p+2);

phone2D[pref,suff]=addrispIndex;

}

}

}

publicstringQuery(stringphone)

{

varprefix=32(ing(0,3));//前缀

varsuffix=32(ing(3,4));//后缀

varaddrispIndex=phone2D[prefix,suffix];

if(addrispIndex==0)

{

return"";

}

returnaddrArr[addrispIndex/100]+"|"+ispArr[addrispIndex%100];

}

}

/*

(调⽤例⼦):

stringresult=("号段|号码");

-->result="省份|城市|区号|邮编|⾏政区划代码|运营商"

*/

1//名称:⼿机号码归属地查询dat⾼效率查询内存优化版

2//压缩:原版txt为22M,⽣成这种dat结构为2.66M

3//性能:每秒解析300万+号段或者号码,简洁⾼效

4//环境:CPUi7-7700K+内存16GB

5//创建:qqzeng-ip

6

7

8usingSystem;

c;

;

;

ing;

13

14namespaceqqzeng_phone_dat

15{

16

17publicclassPhoneSearchFast

18{

19privatestaticreadonlyLazylazy=newLazy(()=>newPhoneSearchFast());

20publicstaticPhoneSearchFastInstance{get{;}}

21privatePhoneSearchFast()

22{

23LoadDat();

24Watch();

25}

26

27privatestringdatPath=e(rectory,@"");

28privateDateTimelastRead=ue;

29privatelong[,]prefmap=newlong[200,2];//000-199

30

31

32privatelong[,]phonemap;

33

34privatebyte[]data;

35

36privatelong[]phoneArr;

37privatestring[]addrArr;

38privatestring[]ispArr;

39

40///

41///初始化⼆进制dat数据

42///

43///

44///

45

46

47privatevoidLoadDat()

48{

49data=lBytes(datPath);

50

51longPrefSize=BytesToLong(data[0],data[1],data[2],data[3]);

52longRecordSize=BytesToLong(data[4],data[5],data[6],data[7]);

53

54longdescLength=BytesToLong(data[8],data[9],data[10],data[11]);

55longispLength=BytesToLong(data[12],data[13],data[14],data[15]);

56

57//内容数组

58intdescOfft=(int)(16+PrefSize*9+RecordSize*7);

59stringdescString=ing(data,descOfft,(int)descLength);

60addrArr=('&');

61

62//运营商数组

63intispOfft=(int)(16+PrefSize*9+RecordSize*7+descLength);

64stringispString=ing(data,ispOfft,(int)ispLength);

65ispArr=('&');

66

67

68

69//前缀区

70intm=0;

71for(vark=0;k

72{

73inti=k*9+16;

74intn=data[i];

75prefmap[n,0]=BytesToLong(data[i+1],data[i+2],data[i+3],data[i+4]);

76prefmap[n,1]=BytesToLong(data[i+5],data[i+6],data[i+7],data[i+8]);

77if(m

78{

79for(;m

80{

81prefmap[m,0]=0;prefmap[m,1]=0;

82}

83m++;

84}

85el

86{

87m++;

88}

89}

90

91//索引区

92phoneArr=newlong[RecordSize];

93phonemap=newlong[RecordSize,2];

94for(inti=0;i

95{

96longp=16+PrefSize*9+(i*7);

97phoneArr[i]=BytesToLong(data[p],data[1+p],data[2+p],data[3+p]);

98phonemap[i,0]=data[4+p]+((data[5+p])<<8);

99phonemap[i,1]=data[6+p];

100}

101

102

103

104}

105privatevoidWatch()

106{

107FileInfofi=newFileInfo(datPath);

108FileSystemWatcherwatcher=newFileSystemWatcher(oryName)

109{

110IncludeSubdirectories=fal,

111NotifyFilter=ite,

112Filter="",

113};

114

d+=(s,e)=>

116{

117

118varlastWriteTime=tWriteTime(datPath);

119

120if(lastWriteTime>lastRead)

121{

122//延时解决正由另⼀进程使⽤,因此该进程⽆法访问此⽂件

(1000);

124

125LoadDat();

126lastRead=lastWriteTime;

127}

128};

RaisingEvents=true;

130}

131

132

133

134

135///

136///号段查询

137///

138///7位或者11位

139///

140publicstringQuery(stringphone)

141{

142longpref;

143longval=PhoneToInt(phone,outpref);

144longlow=prefmap[pref,0],high=prefmap[pref,1];

145if(high==0)

146{

147return"";

148}

149longcur=low==high?low:BinarySearch(low,high,val);

150if(cur!=-1)

151{

152

153returnaddrArr[phonemap[cur,0]]+"|"+ispArr[phonemap[cur,1]];

154}

155el

156{

157return"";

158}

159

160

161

162

163

164

165}

166///

167///⼆分算法

168///

169privateintBinarySearch(longlow,longhigh,longkey)

170{

171if(low>high)

172return-1;

173el

174{

175longmid=(low+high)/2;

176longphoneNum=phoneArr[mid];

177if(phoneNum==key)

178return(int)mid;

179elif(phoneNum>key)

180returnBinarySearch(low,mid-1,key);

181el

182returnBinarySearch(mid+1,high,key);

183}

184}

185

186

187

188privatelongPhoneToInt(stringphone,outlongprefix)

189{

190//最⾼性能

191charch;

192longcurrentValue=0;

193longprefval=0;

194unsafe

195{

196fixed(char*name=phone)

197{

198for(intcurrent=0;current<7;current++)

199{

200ch=name[current];

201intdigitValue=ch-'0';

202currentValue=(currentValue*10)+digitValue;

203if(current==2)

204{

205prefval=currentValue;

206}

207}

208}

209prefix=prefval;

210returncurrentValue;

211}

212

213

214//prefix=32(ing(0,3));

215//32(ing(0,7));;

216}

217

218

219

220///

221///字节转整形⼩节序

222///

223privateuintBytesToLong(bytea,byteb,bytec,byted)

224{

225return(uint)(a|(b<<8)|(c<<16)|(d<<24));

226}

227

228

229

230}

231

232/*

233(调⽤例⼦):

234stringresult=("号段|号码");

235-->result="省份|城市|区号|邮编|⾏政区划代码|运营商"

236*/

237}

2.0内存版每秒500w+

usingSystem;

c;

;

;

namespaceqqzeng_phone_dat

{

publicclassPhoneSearch

{

privateDictionaryprefixDict;

privatebyte[]indexBuffer;

privatebyte[]data;

longfirstPhoneOfft;//索引区第⼀条流位置

longlastPhoneOfft;//索引区最后⼀条流位置

longprefixStartOfft;//前缀区第⼀条的流位置

longprefixEndOfft;//前缀区最后⼀条的流位置

longphoneCount;//号段段数量

longprefixCount;//前缀数量

///

///初始化⼆进制dat数据

///

///

publicPhoneSearch(stringdataPath)

{

using(FileStreamfs=newFileStream(dataPath,,,))

{

data=newbyte[];

(data,0,);

}

firstPhoneOfft=BytesToLong(data[0],data[1],data[2],data[3]);

lastPhoneOfft=BytesToLong(data[4],data[5],data[6],data[7]);

prefixStartOfft=BytesToLong(data[8],data[9],data[10],data[11]);

prefixEndOfft=BytesToLong(data[12],data[13],data[14],data[15]);

phoneCount=(lastPhoneOfft-firstPhoneOfft)/8+1;//索引区块每组8字节

prefixCount=(prefixEndOfft-prefixStartOfft)/9+1;//前缀区块每组9字节

//初始化前缀对应索引区区间

indexBuffer=newbyte[prefixCount*9];

(data,prefixStartOfft,indexBuffer,0,prefixCount*9);

prefixDict=newDictionary();

for(vark=0;k

{

inti=k*9;

uintprefix=(uint)indexBuffer[i];

longstart_index=BytesToLong(indexBuffer[i+1],indexBuffer[i+2],indexBuffer[i+3],indexBuffer[i+4]);

longend_index=BytesToLong(indexBuffer[i+5],indexBuffer[i+6],indexBuffer[i+7],indexBuffer[i+8]);

(prefix,newPrefixIndex(){prefix=prefix,start_index=start_index,end_index=end_index});

}

}

publicstaticuintPhoneToInt(stringphone,outuintprefix)

{

prefix=32(ing(0,3));

32(ing(0,7));;

}

///

///号段查询

///

///7位或者11位

///

publicstringQuery(stringphone)

{

uintphone_prefix_value;

uintintPhone=PhoneToInt(phone,outphone_prefix_value);

uinthigh=0;

uintlow=0;

uintlocal_offt=0;

uintlocal_length=0;

if(nsKey(phone_prefix_value))

{

low=(uint)prefixDict[phone_prefix_value].start_index;

high=(uint)prefixDict[phone_prefix_value].end_index;

}

el

{

return"";

}

uintmy_index=low==high?low:BinarySearch(low,high,intPhone);

GetIndex(my_index,outlocal_offt,outlocal_length);

returnGetLocal(local_offt,local_length);

}

///

///⼆分算法

///

publicuintBinarySearch(uintlow,uinthigh,uintk)

{

uintM=0;

while(low<=high)

{

uintmid=(low+high)/2;

uintphoneNum=GetIntPhone(mid);

if(phoneNum>=k)

{

M=mid;

if(mid==0)

{

break;//防⽌溢出

}

high=mid-1;

}

el

low=mid+1;

}

returnM;

}

///

///在索引区解析

///

///ip第left个索引

///返回开始ip的数值

///返回结束ip的数值

///返回地址信息的流位置

///返回地址信息的流长度

privatevoidGetIndex(uintleft,outuintlocal_offt,outuintlocal_length)

{

longleft_offt=firstPhoneOfft+(left*8);

local_offt=(uint)data[4+left_offt]+(((uint)data[5+left_offt])<<8)+(((uint)data[6+left_offt])<<16);

local_length=(uint)data[7+left_offt];

}

///

///返回归属地信息

///

///地址信息的流位置

///地址信息的流长度

///

privatestringGetLocal(uintlocal_offt,uintlocal_length)

{

byte[]buf=newbyte[local_length];

(data,local_offt,buf,0,local_length);

ing(buf,0,(int)local_length);

//oding("GB2312").GetString(buf,0,(int)local_length);

}

privateuintGetIntPhone(uintleft)

{

longleft_offt=firstPhoneOfft+(left*8);

returnBytesToLong(data[0+left_offt],data[1+left_offt],data[2+left_offt],data[3+left_offt]);

}

///

///字节转整形⼩节序

///

privateuintBytesToLong(bytea,byteb,bytec,byted)

{

return((uint)a<<0)|((uint)b<<8)|((uint)c<<16)|((uint)d<<24);

}

}

/*

(调⽤例⼦):

PhoneSearchfinder=newPhoneSearch("");

stringresult=("号段或者号码");

-->result="省份|城市|运营商|区号|邮编|⾏政区划代码"

*/

}

普通版每秒200w+

本文发布于:2023-02-28 20:35:28,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/167758772885348.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:手机号段.doc

本文 PDF 下载地址:手机号段.pdf

标签:手机号段
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26 专利检索|