精华内容
下载资源
问答
  • vue-cli是如何工作的

    2020-12-26 05:12:42
    <p>title: vue-cli是如何工作的 date: 2017-06-16 <p>vue-cliVue.js官方脚手架命令行工具,我们可以用它快速搭建Vue.js项目,vue-cli最主要的功能就是初始化项目,既可以使用官方模板,...
  • 很简单嘛, 把所有的数据都添加到数据结构里去, 如listmap等, get判断不就完了嘛. emmm... 面试官可能会问这么简单的问题吗? 数据量小的话, 完全可以的, 那么上亿上百亿呢? 引入一个节省空间的数据结构:位图,他...

    布隆过滤器应用场景有很多, 搜索框: 如用户按特点关键词搜索, 避免缓存穿透等等

     不良用户利用搜索框或者涉及到缓存的应用场景,拿一些乱七八糟的key来查询,这时候redis和数据库这种值都是不存在的,人家每次拿的key也不一样,你就算缓存了也没用,(缓存没有的数据就会去查数据库), 这时候数据库的压力是相当大, 怎么办呢,这时候我们今天的主角布隆过滤器就登场了。。

    布隆过滤器的概念这里就不赘述了

    参考链接

    首先引入一道面试题: 如何在海量元素中(例如 10 亿无序、不定长、不重复)快速判断一个元素是否存在

    很简单嘛, 把所有的数据都添加到数据结构里去, 如list或map等, get判断不就完了嘛. emmm... 面试官可能会问这么简单的问题吗?

    数据量小的话, 完全可以的, 那么上亿上百亿呢?

    引入一个节省空间的数据结构: 位图他是一个有序的数组,只有两个值,0 和 1。0代表不存在,1代表存在。

    如何确定某一元素在哪个位置是0还是1, 怎么解决这个问题呢,那就要用到哈希函数,用哈希函数有两个好处,第一是哈希函数无论输入值的长度是多少,得到的输出值长度是固定的,第二是他的分布是均匀的(map中定义元素的位置也是这种形式),如果全挤的一块去那还怎么区分,比如MD5、SHA-1这些就是常见的哈希算法。

    我们通过哈希函数计算以后就可以到相应的位置去找是否存在了,我们看红色的线,24和147经过哈希函数得到的哈希值是一样的,我们把这种情况叫做哈希冲突或者哈希碰撞。哈希碰撞是不可避免的,我们能做的就是降低哈希碰撞的概率,第一种是可以扩大维数组的长度或者说位图容量,因为我们的函数是分布均匀的,所以位图容量越大,在同一个位置发生哈希碰撞的概率就越小。但是越大的位图容量,意味着越多的内存消耗,所以我们想想能不能通过其他的方式来解决,第二种方式就是经过多几个哈希函数的计算,你想啊,24和147现在经过一次计算就碰撞了,那我经过5次,10次,100次计算还能碰撞的话那真的是缘分了,你们可以在一起了,但也不是越多次哈希函数计算越好,因为这样很快就会填满位图,而且计算也是需要消耗时间,所以我们需要在时间和空间上寻求一个平衡。。

    为什么会使用它

    相比于我们平时常用的的 List、Map 、Set 等数据结构,它占用空间更少并且效率更高,但是缺点是其返回的结果是概率性的,而不是非常准确的.

    Java代码中使用布隆过滤器 google为我们已经提供了相关家暴

    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>25.1-jre</version>
    </dependency>

     简单模拟

        private static int size = 1000000; // 元素的个数
        private static double fpp = 0.05; //默认误判率 不设置默认是0.03
        private static BloomFilter<String> BF = BloomFilter.create(Funnels.stringFunnel(StandardCharsets.UTF_8), size, fpp);
    
        public static void main(String[] args) {
            for (int i = 0; i < size; i++) {
                BF.put("dugt" + i);
            }
    
            if (!BF.mightContain("dugt8866")) {
                System.out.println("没有");
                return; // 没有直接返回
            }
    
            System.out.println("有");
            //todo 业务逻辑
        }
    

    运行结果 

    从元素的角度来说:

    • 如果元素实际存在,布隆过滤器一定判断存在

    • 如果元素实际不存在,布隆过滤器可能判断存在 (这点误判 相比大量的无意垃圾请求 可以容忍的 )

    展开全文
  • 也就是如何判断两行ResultSet同一个联合索引的字段 目前的方法使用HASH对键进行映射的数据存储类 public class SimpleHashList { private Map , List <Object>> dataMap = new HashMap , List ...
  • 用==还是equals()? 它们有何区别? 75 26、HashMap与HashTable的区别 75 27、Java中有多少种数据结构,分别什么? 76 28、Arraylist 和Linkedlist 的区别 76 29、List遍历方式有多少种 76 30、Map怎么遍历 76 31...
  • java面试题

    2018-01-01 15:35:15
    24. List, Set, Map区别 14 25. 集合类都有哪些?主要方法? 14 26. 简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。 14 27. XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式? 14 28. JSP和...
  • java面试题典 java 面试题 经典

    热门讨论 2010-06-18 13:42:36
    31. 如何判断哪个session正在连结以及它们等待的资源? 34 32. 描述什么 redo logs 34 33. 如何进行强制LOG SWITCH? 34 34. 举出两个判断DDL改动的方法? 34 35. Coalescing做了什么? 34 36. TEMPORARY tablespace和...
  • 4.1.5 用过哪些Map类,都有什么区别,HashMap线程安全的吗,并发下使用的Map是什么,他们内部原理分别什么,比如存储方式,hashcode,扩容,默认容量等。 4.1.6 JAVA8的ConcurrentHashMap为什么放弃了分段锁,有...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    2.J2EE一种技术还是一种平台,他提供了那些技术。 3.什么Application Server,它有什么功能和优点。 4.简单介绍连接池的优点和原理。 5.Web.xml的作用 四、其他 1.Web安全性的考虑(表单验证、浏览器Basic...
  • 最新Java面试宝典pdf版

    热门讨论 2011-08-31 11:29:22
    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...
  • Java面试宝典-经典

    2015-03-28 21:44:36
    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...
  • Java面试宝典2010版

    2011-06-27 09:48:27
    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 71、说出一些常用的类,包,接口,请各举5个 72、java中有几种...
  • Java面试宝典2012版

    2012-12-03 21:57:42
    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中...
  • java面试宝典2012

    2012-12-16 20:43:41
    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 52 71、说出一些常用的类,包,接口,请各举5个 54 72、java中有...
  • 70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...
  • Java面试宝典2012新版

    2012-06-26 19:20:00
    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...
  • Java面试笔试资料大全

    热门讨论 2011-07-22 14:33:56
    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...
  • JAVA面试宝典2010

    2011-12-20 16:13:24
    70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...
  • 70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...
  • springmybatis

    2015-09-05 06:54:28
    查询出列表,也就是返回list, 在我们这个例子中也就是 List<User> , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该我们自己配置的 ...
  • 所以本人写了一片如何结合业务直接请求JavaBean、ListMap、Protobuf的博文: http://blog.csdn.net/yanzhenjie1003/article/details/70158030 请求不同数据的几种Request NoHttp请求什么样的数据由Request决定...
  • Windows下C++多线程SOCKET服务代码

    热门讨论 2008-05-08 11:25:20
    程序中用到STL的std::map和std::list,也大量的运行了模板类,如:关于线程的参数 ARGS即为模板类:template <class T> ARGS{}、还有一个就是SOCKET结构体: HOSTSTRUCTSTRCT的定义也用到了模板类。...
  • Widnows环境C++多线程网关程序

    热门讨论 2008-05-05 10:58:13
    程序中用到STL的std::map和std::list,也大量的运行了模板类,如:关于线程的参数 ARGS即为模板类:template <class T> ARGS{}、还有一个就是SOCKET结构体: HOSTSTRUCTSTRCT的定义也用到了模板类。...
  • 上面两块代码唯一不同的 <code>if</code> 判断,所以把 <code>if</code> 转换成函数 <pre><code>js function isFemale(worker) { return worker.gender === 'f' } function ...
  • 其实,不管大数据还是其他知识的学习,我认为最好的方法无非先找个视频快速过一遍,总体上了解这门技术干嘛的,是否适合自己。然后结合官网文档细致地过一遍,学习过程中最好结合前人大牛的博客,都经验之得你...
  • 此处需要注意系统默认提供的线程池是如何配置的 扩展ThreadPoolExector GUI应用程序探讨 活跃度(Liveness)、性能、测试 避免活跃性危险 死锁 锁顺序死锁 资源死锁 动态的锁顺序死锁 ...

空空如也

空空如也

1 2 3
收藏数 49
精华内容 19
关键字:

如何判断是map还是list