C# | 【完全开源】手机号码归属地查询,一秒内百万次查询

简介: 这个开源项目是一个.NET库,可以通过手机号码获取号码归属地信息,包括运营商、国家、省份、城市、邮政编码、区号等信息。该库加载了一个包含46万条数据的“中国手机号归属地信息”数据集,并实现了高速查询。在我的7年老笔记本上执行一百万次查询耗时不足一秒。

image.png

C# | 【完全开源】手机号码归属地查询,一秒内百万次查询

@[toc]

简介

这个开源项目是一个.NET库,可以通过手机号码获取号码归属地信息,包括运营商、国家、省份、城市、邮政编码、区号等信息。
该库加载了一个包含46万条数据的“中国手机号归属地信息”数据集,并实现了高速查询。在我的7年老笔记本上执行一百万次查询耗时不足一秒。

快速上手

以查询中国大陆的手机号码归属地信息为例:

在NuGet页面中勾选预发行版本并搜索 ApeFree.Phone2Location.CN ,点击安装。

查询手机号码归属地的源码如下:

  // 创建数据库
  var db = PhoneDatabase.Factory.CreateChinaPhoneDatabase();

  // 通过手机号码获取归属地信息
  var result = db.GetLocationByPhone("13500008888");

  if (result == null)
  {
   
   
    Console.WriteLine("未查询到结果");
  }
  else
  {
   
   
    // 打印显示
    Console.WriteLine($"国家:{result.Country}\r\n省份:{result.Province}\r\n城市:{result.City}\r\n运营商:{result.TelecomOperator}\r\n区号:{result.AreaCode}\r\n邮编:{result.PostalCode}");
  }

运行上述代码将输出如下结果:

国家:中国
省份:广东
城市:广州
运营商:移动
区号:020
邮编:510000

原理

在实例化的时候就加载“中国手机号归属地信息”数据集,并计算出索引的数量和偏移地址。
在查询时,使用二分法查询号码信息所处的偏移地址,再从偏移地址使用流读取详细信息,并构造查询结果。
之所以能够一秒内百万次查询,是因为其使用了二分法进行查询,并且使用了流进行数据读取和处理。

结束语

代码开源在:https://github.com/landriesnidis/ApeFree.Phone2Location,希望能够帮助到需要查询手机号码归属地信息的人。如果您对该项目有任何建议或意见,欢迎在GitHub上提issue或pull request。如果您觉得该项目对您有帮助,也欢迎在GitHub上为该项目点个赞。

相关文章
|
6月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
158 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
6月前
|
自然语言处理 C# Windows
C#开源免费的Windows右键菜单管理工具
C#开源免费的Windows右键菜单管理工具
|
6月前
|
Linux C# 开发工具
C#开源的一款友好的.NET SDK管理器
C#开源的一款友好的.NET SDK管理器
|
7天前
|
开发框架 C# iOS开发
基于C#开源、功能强大、灵活的跨平台开发框架 - Uno Platform
基于C#开源、功能强大、灵活的跨平台开发框架 - Uno Platform
|
7天前
|
网络协议 Unix Linux
精选2款C#/.NET开源且功能强大的网络通信框架
精选2款C#/.NET开源且功能强大的网络通信框架
|
1月前
|
SQL 缓存 分布式计算
C#如何处理上亿级数据的查询效率
C#如何处理上亿级数据的查询效率
22 1
|
6月前
|
IDE C# 开发工具
一个开源轻量级的C#代码格式化工具(支持VS和VS Code)
一个开源轻量级的C#代码格式化工具(支持VS和VS Code)
196 6
|
1月前
|
开发框架 缓存 算法
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
|
2月前
|
开发框架 自然语言处理 .NET
C#一分钟浅谈:LINQ 查询表达式的使用技巧
【9月更文挑战第6天】LINQ(Language Integrated Query)是C#开发中的强大工具,使查询数据集合变得简单且接近自然语言。本文从基础入手,通过具体示例讲解LINQ查询表达式的使用技巧,包括过滤、排序和分组等操作。同时,文章还探讨了常见问题及解决方法,如性能优化、过早枚举和类型转换等,帮助开发者写出更高效、易维护的代码。
94 15
|
4月前
|
Shell 网络安全 UED