面试题之十亿条记录,怎么获取出现最多的前十个
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了面试题之十亿条记录,怎么获取出现最多的前十个,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2334字,纯文字阅读大概需要4分钟。
内容图文
宅在家中无事,刷面试题,发现了一个很有意思的面试题。
就来琢磨一下这个是如何能够处理成功。(这是一个长更新视频,说不定中间就干其他的去了,慢慢更ing) StratTime : 202002191600
首先我们来造一下数据。虽然不知道淘宝的购物记录,但是我们来算成ip浏览记录吧。那么我们来获取10亿条ip
代码如下
public class createIp { public static String getRandomIp() { // ip范围 int[][] range = { { 607649792, 608174079 }, // 36.56.0.0-36.63.255.255 { 1038614528, 1039007743 }, // 61.232.0.0-61.237.255.255 { 1783627776, 1784676351 }, // 106.80.0.0-106.95.255.255 { 2035023872, 2035154943 }, // 121.76.0.0-121.77.255.255 { 2078801920, 2079064063 }, // 123.232.0.0-123.235.255.255 { -1950089216, -1948778497 }, // 139.196.0.0-139.215.255.255 { -1425539072, -1425014785 }, // 171.8.0.0-171.15.255.255 { -1236271104, -1235419137 }, // 182.80.0.0-182.92.255.255 { -770113536, -768606209 }, // 210.25.0.0-210.47.255.255 { -569376768, -564133889 }, // 222.16.0.0-222.95.255.255 }; Random rdint = new Random(); int index = rdint.nextInt(10); String ip = num2ip(range[index][0] + new Random().nextInt(range[index][1] - range[index][0])); return ip; } /* * 将十进制转换成IP地址 */publicstatic String num2ip(int ip) { int[] b = newint[4]; String x = ""; b[0] = (int) ((ip >> 24) & 0xff); b[1] = (int) ((ip >> 16) & 0xff); b[2] = (int) ((ip >> 8) & 0xff); b[3] = (int) (ip & 0xff); x = Integer.toString(b[0]) + "." + Integer.toString(b[1]) + "." + Integer.toString(b[2]) + "." + Integer.toString(b[3]); return x; }
public class topTenValueMake { public static void main(String[] args) throws IOException{ long startTime = System.currentTimeMillis(); int i ; int j ; String strPath = "D:"+File.separator+"test"+File.separator+"TopTenValue.txt"; File file = new File(strPath); file.createNewFile(); FileWriter fWriter = new FileWriter(file); fWriter.write("开始写数据"); for(j=1;j<=100000;j++){ StringBuffer sBuffer = new StringBuffer(); for(i=1;i<=10000;i++){ sBuffer.append(createIp.getRandomIp()+","); } fWriter.write(sBuffer.toString()); fWriter.flush(); System.out.println(j*i); } fWriter.close(); long endTime = System.currentTimeMillis(); long time = endTime - startTime; long hour = time/(60*60*1000); long minute = (time - hour*60*60*1000)/(60*1000); long second = (time - hour*60*60*1000 - minute*60*1000)/1000; System.out.println(hour+ "时" + minute + "分 " + second+"秒"); } }
总运行时间
文件夹大小:
原文:https://www.cnblogs.com/xiaosisong/p/12331750.html
内容总结
以上是互联网集市为您收集整理的面试题之十亿条记录,怎么获取出现最多的前十个全部内容,希望文章能够帮你解决面试题之十亿条记录,怎么获取出现最多的前十个所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。