数据结构
zl1zl2zl3
这个作者很懒,什么都没留下…
展开
-
面试:如何从 100 亿 URL 中找出相同的 URL?
题目描述给定 a、b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,内存限制是 4G。请找出 a、b 两个文件共同的 URL。“推荐一个艿艿写的 6000+ Star 的 SpringBoot + SpringCloud + Dubbo 教程的仓库:https://github.com/YunaiV/SpringBoot-Labs解答思路每个 URL 占 64B,那么 50 亿个 URL占用的空间大小约为 320GB。“5, 000, 000, 000 * 64转载 2020-08-18 15:42:03 · 745 阅读 · 0 评论 -
牛逼!Redis 的字符串是这样实现的…
来源:小小木的博客www.cnblogs.com/wyc1994666/p/10669212.html之前本人在找工作面试时在Redis相关问题上可栽了跟头。在面试前按常规套路准备了一下,比如 Redis 的常用5种数据结构,Redis持久化策略,Redis实现分布式锁,简单发布订阅等等都准备了,当时不知天高地厚以为十拿九稳了,可是万万没想到我终究还是在Redis的被问的第一个问题上翻船了~~面试官 :看你简历上写了熟悉常用数据结构,都有哪些说说本人 :常用有5种,string,li...转载 2020-07-24 13:36:39 · 221 阅读 · 0 评论 -
为什么 MySQL 使用 B+ 树,而不是 B 树或者 Hash?
为什么 MySQL 使用 B+ 树是面试中经常会出现的问题,很多人对于这个问题可能都有一些自己的理解,但是多数的回答都不够完整和准确。大多数人都只会简单说一下 B+ 树和 B 树的区别,但是都没有真正回答 MySQL 为什么选择使用 B+ 树这个问题,我们在这篇文章中就会深入分析 MySQL 选择 B+ 树背后的一些原因。概述首先需要澄清的一点是,MySQL 跟 B+ 树没有直接的关系,真正与 B+ 树有关系的是 MySQL 的默认存储引擎 InnoDB,MySQL 中存储引擎的主要作用是负.转载 2020-07-01 15:14:42 · 560 阅读 · 1 评论 -
经典面试题:为什么 ConcurrentHashMap 的读操作不需要加锁?
我们知道,ConcurrentHashmap(1.8)这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,这也是这篇博文讨论的问题——为什么它不需要加锁呢?ConcurrentHashMap的简介“我想有基础的同学知道在jdk1.7中是采用Segment + HashEntry + ReentrantLock的方式进行实现的,而1.8中放弃了Segment臃肿的设计,取而代之的是采用Node + CAS + Synchronized来保证并发安全进行实现转载 2020-06-29 14:06:31 · 440 阅读 · 0 评论 -
厉害!Java集合框架综述,这篇让你吃透!
作者:平凡希来源:cnblogs.com/xiaoxi/p/6089984.html一、集合框架图 简化图:说明:对于以上的框架图有如下几点说明1、所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。2、集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。3、抽象类:5个抽象类(长虚线表示),对集合接..转载 2020-05-21 15:52:09 · 577 阅读 · 0 评论 -
通过一个实际案例,彻底搞懂 HashMap!
我知道大家都很熟悉hashmap,并且有事没事都会new一个,但是hashmap的一些特性大家都是看了忘,忘了再记,今天这个例子可以帮助大家很好的记住。场景用户提交一张试卷答案到服务端,post报文可精简为[{"question\_id":"100001","answer":"A"},{"question\_id":"100002","answer":"A"},{"question\_id":"100003","answer":"A"},{"question\_id":"100004",转载 2020-05-08 18:16:35 · 401 阅读 · 0 评论 -
红黑树的理解与 Java 实现
前言前段时间在研究 JDK1.8 的 hashmap 源码,看到 put 方法的插入环节,遇到了红黑树,不得不停止阅读源码的过程,因为还没掌握红黑树是无法完全读透 hashmap 源码的。红黑树作为一种数据结构,它被应用得非常多,可能很多人不认识它,但其实它已经在默默为我们的代码在发光发热。例如,你只要在 Java 中用到 map,基本上就是在用红黑树(当元素个数到达八个时链表转红黑树)。...转载 2020-04-20 13:56:53 · 780 阅读 · 0 评论 -
面试再被问到 ConcurrentHashMap,把这篇文章甩给他!
一、背景:线程不安全的HashMap因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。效率低下的HashTable容器HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法时,其他...转载 2020-04-09 12:02:22 · 189 阅读 · 0 评论 -
HashSet 和 LinkedHashSet 源码分析,竟如此简单!
HashSet是一个可存储不重复元素的容器,底层实现依赖HashMap,所以在添加,删除,查找元素时的时间复杂度均为 O(1).构造方法,初始化内部的HashMap:publicHashSet(){map=newHashMap<>();}publicHashSet(Collection<? extends E> c){map=...转载 2020-03-02 14:08:44 · 249 阅读 · 0 评论 -
由 HashMap 引发的一个面试10连炮争吵!
作者:卓庆森来源:cnblogs.com/zhuoqingsen/p/HashMap.html现在是晚上11点了,学校屠猪馆的自习室因为太晚要关闭了,勤奋且疲惫的小鲁班也从屠猪馆出来了,正准备回宿舍洗洗睡。由于自习室位置比较偏僻所以是接收不到手机网络信号的,因此小鲁班从兜里掏出手机的时候,信息可真是炸了呀。小鲁班心想,微信群平时都没什么人聊天,今晚肯定是发生了什么大事仔细一...转载 2019-12-28 09:49:38 · 310 阅读 · 1 评论 -
redis探秘:选择合适的数据结构,减少80%的内存占用,这些点你get到了吗?
以下文章来源于京东零售技术,作者平台研发武伟峰redis作为目前最流行的nosql缓存数据库,凭借其优异的性能、丰富的数据结构已成为大部分场景下首选的缓存工具。由于redis是一个纯内存的数据库,在存放大量数据时,内存的占用将会非常可观。那么在一些场景下,通过选用合适的数据结构来存储,可以大幅减少内存的占用,甚至于可以减少80%-99%的内存占用。利用zipList来替代大...转载 2019-12-17 20:45:30 · 296 阅读 · 0 评论 -
InnoDB一棵B+树可以存放多少行数据?
一个问题?InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛。在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/...转载 2019-12-12 15:26:00 · 135 阅读 · 1 评论 -
动图 + 源码,演示 Java 中常用数据结构执行过程及原理
最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程.主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList LinkedHashMap中的双向列表不再是回环的.HashMap中的单链表是尾插, 而不是头插入等等, 后文不再赘叙这些差异, 本文目录结构如下:LinkedList经典的双链表结构, 适用...转载 2019-11-30 16:16:43 · 219 阅读 · 0 评论 -
终于有篇看的懂的 B 树文章了!
本文来源:Hollis“索引,相信大多数人已经相当熟悉了,很多人都知道 MySQL 的索引主要以 B+ 树为主,但是要问到为什么用 B+ 树,恐怕很少有人能把前因后果讲述完整。本文就来从头到尾介绍下数据库的索引。索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在[1,2,...转载 2019-11-23 10:25:37 · 195 阅读 · 0 评论 -
面试问红黑树,我脸都绿了。。
红黑树是一个平衡的二叉树,但不是一个完美的平衡二叉树。虽然我们希望一个所有查找都能在~lgN次比较内结束,但是这样在动态插入中保持树的完美平衡代价太高,所以,我们稍微放松逛一下限制,希望找到一个能在对数时间内完成查找的数据结构。这个时候,红黑树站了出来。阅读以下需要了解普通二叉树的插入以及删除操作。红黑树是在普通二叉树上,对没个节点添加一个颜色属性形成的,同时整个红黑二叉树需要同时满足一下...转载 2019-11-09 14:00:00 · 299 阅读 · 0 评论 -
一文读懂JDK7,8,JD9的HashMap,HashTable,ConcurrentHashMap及他们的区别
内容和标题一样长哦,人家写了好久的。如无特别指明,内容对应的源码是jdk1.7(后面会和1.8对比) 1:hashmap简介(如下,数组-链表形式)HashMap的存储结构 图中,紫色部分即代表哈希表,也称为哈希数组(默认数组大小是16,每对key-value键值对其实是存在map的内部类entry里的),数组的每个元素都是一个单链表的头节点,跟着的绿色链表是用来解决...转载 2018-11-19 09:34:40 · 300 阅读 · 0 评论 -
树型结构
树型结构的基本概念对大量的输入数据,链表的线性访问时间太慢,不宜使用。本文探讨另外一种重要的数据结构----树,其大部分时间可以保证操作的运行平均时间复杂度为O(logN),第一部分先来看一下树的一些预备知识。首先看一下树形结构的样子,下图代表的是树型结构的一般形态:由上图看得出树是一些节点的集合,总结一下树的一些基本概念:1、结点:树中的数据元素都称之为结点2、根:最上面...转载 2018-11-10 13:37:05 · 475 阅读 · 0 评论 -
几张动态图捋清Java常用数据结构及其设计原理
最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程.主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList LinkedHashMap中的双向链表不再是回环的.HashMap中的单链表是尾插, 而不是头插入等等, 后文不再赘叙这些差异, 本文目录结构如下:LinkedList经典的双链表结构, ...转载 2018-11-25 00:17:41 · 1342 阅读 · 1 评论 -
买什么数据结构与算法,这里有:动态图解十大经典排序算法(含JAVA代码实现)
上篇的动图数据结构反响不错,这次来个动图排序算法大全。数据结构与算法,齐了。几张动态图捋清Java常用数据结构及其设计原理本文将采取动态图+文字描述+正确的java代码实现来讲解以下十大排序算法:冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 计数排序 桶排序 基数排序 0、排序算法说明0.1 排序的定义对一序列对象根据某个关...转载 2018-11-25 10:51:07 · 484 阅读 · 0 评论 -
如何实现可以获取最小值的栈?
小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT。今天他又去BAT中的一家面试了。简单的自我介绍后,面试官给了小史一个问题。 面试现场题目:我现在需要实现一个栈,这个栈除了可以进行普通的push、pop操作以外,还可以进行getMin的操作,getMin方法被调用后,会返回当前栈的最小值,你会怎么做呢?你可以假设栈里面存...转载 2018-11-29 11:05:42 · 396 阅读 · 0 评论 -
面试还在被红-黑树虐?看完这篇动图文章轻松反虐面试官
网上有很多红-黑树的段子,很多人都说,红-黑树只会存在于段子里,不会在面试中或者实际项目中让你实现。来看看网友都是怎么说的:通常,如果有面试官问我红黑数这种问题。我一般扭头就走。不是因为,这个职位用不到还问这个。而是因为。我 tmd 真的不会啊 - -|||很多人看着这个网友说的,感觉很扎心。别急,还有更扎心的:这有什么难的!Map map = new Tre...转载 2018-11-13 10:23:15 · 602 阅读 · 0 评论