解决IP匹配查询的方案
来源:互联网 发布:手机自动关闭数据连接 编辑:程序博客网 时间:2024/06/11 10:24
需求
一个列表对IP段进行匹配查询
1. 匹配格式正确而且数据库有相应的数据则返回相应的数据
2. 匹配格式非法或者数据库没有相应的数据则返回空列表
方案
IP正则表达式
//iPv4的ip地址都是(1~255).(0~255).(0~255).(0~255)的格式String regexStr = "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\."+"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."+"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."+"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$";
工具类IP2LongUtils
public class IP2LongUtils { public static Long ipToNumber(String ip) { Long ips = 0L; String[] numbers = ip.split("\\."); for (int i = 0; i < 4; ++i) { ips = ips << 8 | Integer.parseInt(numbers[i]); } return ips; } public static String numberToIp(Long number) { String ip = ""; for (int i = 3; i >= 0; i--) { ip += String.valueOf((number & 0xff)); if(i != 0){ ip += "."; } number = number >> 8; } return ip; } }
postgresql ip2int函数
SELECT split_part($1,'.',1)::bigint*16777216 + split_part($1,'.',2)::bigint*65536 + split_part($1,'.',3)::bigint*256 + split_part($1,'.',4)::bigint;
总结
由于不同公司有不同的代码风格,这里我并没有把完整的代码贴出来,只根据这几个核心的代码他人有同样的需求的话应该也可以做出来的。技术不难,难的是有没有心做得最好而已!这功能是我接替别人的,他的代码实在是惨不忍睹,所以就重新做了这个功能!希望能给大家一个参考的意见吧!
阅读全文
0 0
- 解决IP匹配查询的方案
- MySQL中文查询时的字符集匹配问题的解决
- Java-针对查询大量数据时,解决效率的方案
- 解决mysql 查询字符集不匹配的问题
- HDU2206-IP的匹配
- 基于JNI技术,实现数据库查询,在C++中MD5匹配后回调至Java层的方案
- 解决文件上传出现的参数类型不匹配的方案
- ip的查询
- 解决solr搜索多词匹配度和排序方案
- sql 查询时间的匹配
- 解决音频,视频的方案
- 电信ip不足的扩展参考方案
- 获取android设备公网IP的方案
- 一种自动生成网络IP的方案
- 匹配IP字串、域名的正则表达式
- 匹配IP字串、域名的正则表达式
- 匹配IP字串、域名的正则表达式
- 一个匹配IP地址的正则表达式
- C# 获取CPU ID(本机)
- [Leetcode] 293. Flip Game 解题报告
- 文章标题
- 深度学习在目标跟踪中的应用
- tensorflow 变量生成 变量管理 tf.Variable & tf.get_variable & tf.variable_scope
- 解决IP匹配查询的方案
- Java List<Object>去掉重复对象
- 如何直接运行py文件
- 【排序算法】快速排序
- centOS windows 双系统时间设置
- c# bitmap和base64编码相互转换
- mahout实现的算法集
- PHP面向对象的构造、析构函数
- HDFS文件系统的基本操作 Hadoop权威指南