微软面试题:根据用户的ip地址,得到用户所在的位置(城市)。
经典题目。
需要一个ip数据库:(ip段,城市) 对应表。实现上,为了简单,可以将ip地址转为整数。讲数据按ip段起始地址排序。对于给定的查询ip地址,二分查找就可以了。
也可以将数据放到mysql等数据库里,对ip起始地址做索引,查询语句:
SELECT city from ip2city where query_ip between ip_start and ip_end limit 1;
也有免费ip库和查询实现:MaxMind GeoLite2