有趣的面试题

4G内存的电脑,如何读取8G的日志文件进行分析,汇总数据成报表。

先说思想解决,不说实际代码实现;

1. 内存1G,所以大文件首先要分割;如分割为20个文件,那么每个可以做到接近250M左右

2. 拿前面的3个文件做案例:

A B C  3个文件,每个250M;首先做到加载没有问题

1.A 文件读取到SetA中,此时集合中A的URL不重复

2.B文件读取到SetB中;

3.SetA 和SetB比较,将集合A和B中相同项都剔除;

4.清空SetB;

5.加载C文件;SetA 和SetC比较,将集合A和C中相同项都剔除;

6.前三个文件A比较完成,生成和B,C文件完全不重复的A1文件

依次类推:

总拿前面的一个文件内容和后面文件对比,对比一轮完成的那个文件;

就绝对是完全不重复的内容了

数据库索引的坏处:

索引是完全独立于基础数据之外的一部分数据。假 设在Table ta 中的Column ca 创建了索引 idx_ta_ca,那么任何更新 Column ca 的操作,MySQL在更新表中 Column ca的同时,都须要更新Column ca 的索引数据,调整因为更新带来键值变化的索引信息。而如果没有对 Column ca 进行索引,MySQL要做的仅仅是更新表中 Column ca 的信息。这样,最明显的资源消耗就是增加了更新所带来的 IO 量和调整索引所致的计算量。此外,Column ca 的索引idx_ta_ca须要占用存储空间,而且随着 Table ta 数据量的增加,idx_ta_ca 所占用的空间也会不断增加,所以索引还会带来存储空间资源消耗的增加。

较频繁的作为查询条件的字段应该创建索引

唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件

唯一性太差的字段主要是指哪些呢?如状态字段、类型字段等这些字段中存放的数据可能总共就是那么几个或几十个值重复使用,每个值都会存在于成千上万 或更多的记录中。对于这类字段,完全没有必要创建单独的索引。因为即使创建了索引,MySQL Query Optimizer 大多数时候也不会去选择使用,如果什么时候 MySQL Query Optimizer选择了这种索引,那么非常遗憾地告诉你,这可能会带来极大的性能问题。由于索引字段中每个值都含有大量的记录,那么存储引擎在根据索引 访问数据的时候会带来大量的随机IO,甚至有些时候还会出现大量的重复IO。

原文地址:https://www.cnblogs.com/jimsu/p/11185090.html

时间: 2024-10-14 06:27:07

有趣的面试题的相关文章

一些JAVA中有趣的面试题

这几天的JAVA培训课上,不断的唤醒自己对JAVA的理解(时间太长,大学学的快忘干净了),其中有一些很有趣的面试题,都是在抠JAVA细节(唉,我是那种见坑就往下跳的人,一做就错),下面就来分享一下: 1)用JAVA程序写出当你在超市购物花费1.1元时,你给收银员2元钱,收银员找你0.9元的过程: 当时一看题目,好简单啊!迅速写出: public class Sell{ public static void main(String[] args){ double total = 2.0; doub

一道有趣的面试题

一道面试题.接受参数n=5,不用for循环输出数组[1,2,3,4,5] 这用递归的思路,配合arguments.callee,代码如下 1 function show(n) { 2 var arr = []; 3 return (function () { 4 arr.unshift(n); 5 n--; 6 if (n != 0) { 7 arguments.callee(); 8 } 9 return arr; 10 })() 11 } 12 show(5)//[1,2,3,4,5] 现在

java抽象-老师的生日-逻辑思维-有趣的面试题-遁地龙卷风

(-1)写在前面 都快去北京了,硬生生的安排一场java考试,对于那些特别细节的东西我忘了吧也不觉得有什么不好,以前都记得,也都见过,只不过平时不常用连接断了,但是你死记硬背是没用的,一段时间后还是会忘,唯一的途径就是多做东西,理论联系实际,相反这道题我感觉很有意思,也在网上看到了很多解释,觉得都有所不足,下面是我给出的答案. (0)详细解释 设一个老师的生日为M月N日.把M告诉学生甲(即学生甲知道老师出生的月份),把N告诉学生乙(即学生乙知道老师出生的日).现有如下日期是公开的:3月4日,3月

有趣的笔试题

1.假如你有一块金条,要一个人为你工作七天,你可以将金条割两次,并且每天付一次工钱,这时你该怎么割这金条才能每天都发工资给这个工人?1/7 2/7 4/7各为一块就可以了第一天给1/7第二天给2/7,拿回 1/7第三天给1/7第四天给4/7,拿回1/7和2/7第五天给1/7第六天给2/7,拿回 1/7第七天全给了 2. 镜子里的时间什么时候与真实的时间一样?(分两种1.电子时钟2.钟表) 时间是在什么上面显示如果在钟里,就是12点和6点如果是电子显示,那就00:00:00,11:11:11 3.

一道容易栽坑的有趣的面试题(关于js,定时器,闭包等)

1.首先下面代码输出什么? 1 for (var i = 0; i < 5; i++) { 2 console.log(i); 3 } 输出:0 1 2 3 4 2.上面只是普通的输出,没有陷阱再看下面这个题(套路开始了) 1 for (var i = 0; i < 5; i++) { 2 setTimeout(function() { 3 console.log(i); 4 }, 1000 * i); 5 } 输出:5 5 5 5 5 setTimeout 会延迟执行,那么执行到 conso

一道面试题

背景介绍 这里给大家分享一道很有趣的面试题. 面试过程 面试官:redis我看你有使用过,说一下redis的基本类型吧? A:String,Hash,Set,List,Zset. 面试官:redis中string类型的实现有没有了解过? A:(喵喵喵?) 面试官:回家等通知吧. 面试反思 作为一个爱学习的好孩子,遇到不会的当然要努力学习了,于是查阅了良多资料,算是把这个问题给搞明白了,下面且听我慢慢道来~ Redis的底层数据结构 经过查阅资料,发现Redis的底层数据结构分为八种 Long类型

Java中的String类

在Java中,字符串是对象,是描述字符的基本数据结构,也是程序设计中很重要的一类数据结构 Java专门为存储和处理字符串提供了两个类: String & StringBuffer String类型对象的创建常见的有三种方法 : 1. 通过初始化 String str = "hellow"; 2. 使用new关键字进行创建 String str = new String(); 3. 通过类型转换来创建 String str = Double.toString(123.45); S

知道创宇研发技能表v3.0

2015/8/21 发布 by @知道创宇(www.knownsec.com) @余弦 & 404团队 后续动态请关注微信公众号:Lazy-Thought 说明 关于知道创宇 知行合一 | 守正出奇 知道创宇是一家黑客文化浓厚的安全公司,愿景是让互联网更好更安全 本技能表为知道创宇研发工程师的技能树集合,是的,很庞大 聪明的人,会根据每个tip自驱动扩展 不聪明的人,坐等别人手把手,不仅不适合知道创宇,也不适合任何有极客精神的公司 附件标志是我们推荐的附加资源,感谢资源提供者 知道创宇研发技能表

知道创宇技能表

知道创宇研发技能表v3.1 Expand - Collapse 知道创宇研发技能表v3.1 2016/5/18 发布 by @知道创宇(www.knownsec.com) @余弦 & 404团队 后续动态请关注微信公众号:Lazy-Thought 说明 关于知道创宇 知行合一 | 守正出奇 知道创宇是一家黑客文化浓厚的安全公司,愿景是让互联网更好更安全 本技能表为知道创宇研发工程师的技能树集合,是的,很庞大 聪明的人,会根据每个tip自驱动扩展 不聪明的人,坐等别人手把手,不仅不适合知道创宇,也