Scala 大数据 常用算法收集
2024-08-31 07:57:31
一:IP转数字,用于比大小,用在求IP段范围中
def ip2Long(ip: String): Long = {
val fragments = ip.split("[.]")
var ipNum = 0L
for (i <- 0 until fragments.length){
ipNum = fragments(i).toLong | ipNum << 8L
}
ipNum
}
二:二分法 查找某一IP段所属范围
def binarySearch(lines: Array[(Long, Long, String)], ip: Long) : Int = {
var low = 0
var high = lines.length - 1
while (low <= high) {
val middle = (low + high) / 2
if ((ip >= lines(middle)._1) && (ip <= lines(middle)._2))
return middle
if (ip < lines(middle)._1)
high = middle - 1
else {
low = middle + 1
}
}
-1
}
最新文章
- jdbc java数据库连接 6)类路径读取——JdbcUtil的配置文件
- Laravel项目目录结构说明
- 指针,&;的用法
- 直观友好的单个memcache监控工具:phpmemcache.php
- 2016.6.11 ASP提交数据到SQL server数据乱码解决方法
- [转] C中的位域
- JAVA编程思想第一题出现错误
- ORACLE DUAL表详解 .
- BZOJ 1216: [HNOI2003]操作系统( 优先队列 )
- Libgdx实现异步加载网络图片并保存到SD卡或者data/data目录下边
- Windows 8 动手实验系列教程 实验8:Windows应用商店API
- Wamp 访问本地站点慢 的解决办法
- SD卡兼容性问题(转)
- 修改oracle服务器端字符集
- H5的学习之旅-H5的实体(14)
- python的高级数组之稀疏矩阵
- memcached-redis
- python直接赋值、浅拷贝和深拷贝
- http://www.cnblogs.com/xalion/p/5111279.html
- bzoj 3834 [Poi2014]Solar Panels 数论分块