首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏猿天地

    Mysql8中降序索引的底层实现

    Mysql8中你将得到结果: ? 而在Mysql8中则真正从底层支持了降序索引。 到此为止,大家应该对升序索引和降序索引有了一个大概的了解,但并没有真正理解,因为大家并不知道升序索引与降序索引底层到底是如何实现的。 升序索引底层实现 我们知道,索引是用来提高查询速度的,但是为什么索引能提高查询速度呢? ; insert into t1 values(8,8,8,8,'h'); insert into t1 values(2,2,2,2,'b'); insert into t1 values(5,2,3,5 降序索引底层实现 我们花了较大篇幅介绍了升序索引的实现原理,总结来说就是对表中的数据按照指定的字段比较大小进行升序排序。 升序是什么?

    1.7K30发布于 2019-07-10
  • 来自专栏Java开发小站

    HashMap底层实现原理解析-JDK8

    HashMap在JDK8 中做了一下优化,和JDK7不一样的地方主要包含以下几个地方: 数据结构不同: 在JDK7 中数据存储结构由 数组 + 链表 形式组成。 然后将元素放入数组对应下标处,当发生Hash碰撞(通过hash计算得到数组下标处已有元素,则通过单向链表的形式将该Entry通过链表的新式接入),其数据结构如下图所示: [hashmap7.png] 在JDK8中数据存储结构在 以下是HashMap在JDK8下的结构图: [hashmap8.png] 2. 新的Node节点插入到链表的位置不同 在JDK 7 中链表上插入节点是头部插入 在JDK 8 中链表上插入节点是尾部插入 3. hash算法的简化 JDK8 中的Hash实现更加简洁 3: MAXIMUM_CAPACITY HashMap的最大容量 1<< 30 4:TREEIFY_THRESHOLD 链表转红黑树的阈值 默认值8 5:UNTREEIFY_THRESHOLD 红黑树转链表的阈值

    65780发布于 2020-06-09
  • 来自专栏个人技术博客

    【Java基础】Java8集合(源码分析+底层原理)

    CSDN话题挑战赛第2期 参赛话题:学习笔记 Java8集合:ArrayList 一、前言 二、集合ArrayList方法 1.构造方法 ①空参构造器 ②带参构造器 2.grow方法 3.size 方法 4.isEmpty方法 5.add方法 6.get方法 7.set方法 8.indexOf方法 9.lastIndexOf方法 10.remove方法 ---- 一、前言 集合主要分为Collection 接口两类,而ArrayList就是Collection接口中List子接口的实现类… 在上一篇文章中,我们通过ArrayList实现类的源码,了解到了其中的属性,比较印象深刻的应该是ArrayList集合底层由一个 is a win: elementData = Arrays.copyOf(elementData, newCapacity); } 集合的扩容机制: ArrayList集合的底层数组 list.remove(index); ---- 到这里,集合ArrayList中较为常用的方法也就讲解完了,同时借助源码,我们还讲解了一些集合的底层实现原理,增加了对集合的认识,很棒,对吗~

    46720编辑于 2022-11-15
  • 来自专栏码农架构

    HashMap 底层实现原理是什么?JDK8 做了哪些优化?

    在 JDK 1.7 中 HashMap 是以数组加链表的形式组成的,JDK 1.8 之后新增了红黑树的组成结构,当链表大于 8 并且容量大于 64 时,链表结构会转换成红黑树结构,它的组成结构如下图所示 final float DEFAULT_LOAD_FACTOR = 0.75f; // 当链表长度大于此值且容量大于 64 时 static final int TREEIFY_THRESHOLD = 8; 加载因子也叫扩容因子或负载因子,用来判断什么时候进行扩容的,假如加载因子是 0.5,HashMap 的初始化容量是 16,那么当 HashMap 中有 16*0.5=8 个元素时,HashMap 就会进行扩容

    58270发布于 2021-01-21
  • 来自专栏个人技术博客

    【Java基础】Java8集合(底层原理+源码分析)

    CSDN话题挑战赛第2期 参赛话题:学习笔记 Java8集合:ArrayList 前言 一、ArrayList概述 二、ArrayList属性 1.序列号 serialVersionUID 2.默认容量 (这个类大致相当于Vector,不同的是ArrayList线程不同步,而Vector是线程同步的) 源码已经告诉我们,ArrayList集合的底层,就是动态的数组,可以存储包括null在内的所有元素… DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; ---- ---- 5.存储数组 elementData 通过对下列源码的理解,我们可以知道的是:ArrayList集合的底层实现 array size exceeds VM limit */ private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;

    46930编辑于 2022-11-15
  • 来自专栏vivo互联网技术

    探究JS V8引擎下的“数组”底层实现

    V8中对数组做了一层封装,使其有两种实现方式:快数组和慢数组,快数组底层是连续内存,通过索引直接定位,慢数组底层是哈希表,通过计算哈希值来定位。两种实现方式各有特点,有各自的使用情况,也会相互转换。 使用jsvu调用v8-debug版本的底层实现来验证一下: 一目了然,HOLEY_SMI_ELEMENTS 就是Fast Holey Elements 模式 。 喘口气,我们来回顾一下,这篇文章我们主要讨论了这几件事: 传统意义上的数组是怎么样的 JavaScript 中的数组有哪些特别之处 从V8源码下研究 JS 数组的底层实现 JS 数组的两种模式是如何转换的 ArrayBuffer 总的来说,JS 的数组看似与传统数组不一样,其实只是 V8底层实现上做了一层封装,使用两种数据结构实现数组,通过时间和空间纬度的取舍,优化数组的性能。 了解数组的底层实现,可以帮助我们写出执行效率更高的代码。

    2.1K31发布于 2019-12-17
  • 来自专栏全栈程序员必看

    threadlocal底层实现_什么是底层

    DirectByteBuffer内存区域指向系统内存,当DirectByteBuffer回收后,会通知队列,这时候JVM垃圾回收器就知道去系统内存请理相应的系统内存空间 ---- ThreadLocal底层

    71940编辑于 2022-09-22
  • 来自专栏developerHaoz 的安卓之旅

    写给Android App开发人员看的Android底层知识(8

    其实并不是这样的,这部分逻辑需要到底层C++的代码去寻找,我没有具体看过,只是道听途说问过Lody,他是这么给我解释的:  每次从apk中读取资源,并不是先解压再找图片资源,而是解析Apk中的Resource.arsc

    45610编辑于 2022-05-13
  • 来自专栏Java患者

    MySQL索引底层(一)索引底层原理

    MySQL索引底层原理 局部性与页 在操作系统中,我们执行一个指令去磁盘取数据,那么他会从磁盘取出4KB数据,这个4KB就是一个局部单位,而这4KB数据就是你的指令中取出的数据周围的数据,因为操作系统认为你下一次的数据会从这条数据的周围中取

    92631发布于 2020-05-29
  • 来自专栏Java患者

    MySQL索引底层(二)--索引底层原理

    上次我们讲到了主键的索引,我们可以执行一下sql语句 explain select * from t_user where a = 1 我们可以看到这条sql走的是主键的索引,而在mysql的InnoDB中,主键索引则是聚集索引,数据的物理顺序与键值的逻辑(索引)顺序相同,其实就是说主键索引跟其他列的数据是存在一起的。

    75321发布于 2020-05-29
  • 来自专栏网络收集

    底层实现

    底层实现volatile 关键字修饰成员变量,每次被线程访问时,强迫从主存中读写该成员变量的值。volatile 关键字只能保证可见性,不能保证原子性。

    57720编辑于 2022-08-06
  • 来自专栏全栈程序员必看

    threadlocal底层实现_ioc的底层实现原理

    DirectByteBuffer内存区域指向系统内存,当DirectByteBuffer回收后,会通知队列,这时候JVM垃圾回收器就知道去系统内存请理相应的系统内存空间 ---- ThreadLocal底层

    85220编辑于 2022-09-21
  • 来自专栏微信公众号【Java技术江湖】

    探索Redis设计与实现8:连接底层与表面的数据结构robj

    as intset */ #define OBJ_ENCODING_SKIPLIST 7 /* Encoded as skiplist */ #define OBJ_ENCODING_EMBSTR 8 refcount = 1; o->lru = LRU_CLOCK(); sh->len = len; sh->alloc = len; sh->flags = SDS_TYPE_8; 3个字节的sdshdr8头。 最多44个字节的sds字符数组。 1个NULL结束符。 加起来一共不超过64字节(16+3+44+1),因此这样的一个短字符串可以完全分配在一个64字节长度的内存块中。 ---- 经过了本文的讨论,我们很容易看出,robj所表示的就是Redis对外暴露的第一层面的数据结构:string, list, hash, set, sorted set,而每一种数据结构的底层实现所对应的是哪个 本文详细介绍了OBJ_STRING类型的字符串对象的底层实现,其编码和解码过程在Redis里非常重要,应用广泛,我们在后面的讨论中可能还会遇到。

    82520发布于 2019-12-02
  • 来自专栏小黑娃Henry

    OC底层探索01-找到底层探索的钥匙OC底层探索01-找到底层探索的钥匙

    作为一位iOS开发者,如何才能开启自己的底层探索之路呢?每当点击系统API无法跟进实现只能浅尝辄止的时候,有没有想过怎样才能看到底层源码的真容,而不是在还没开始就结束了呢? 本文中会提供三种方式来一探底层的魅力。 Apple的小心思 这句代码应该非常熟悉了吧?可是想知道alloc具体是如何实现对象的创建呢? 没有注释,也再无法跟进,显然Apple不想让你看到底层是如何实现的?可是这样就放弃了吗?

    56220发布于 2021-08-09
  • 来自专栏全栈程序员必看

    HashMap底层实现原理_计算机底层原理

    随着JDK版本的跟新,JDK1.8对HashMap底层的实现进行了优化,列入引入红黑树的数据结构和扩容的优化等。 本篇文章主要讲解HashMap以及底层实现原理。 ---- 二、JDK7与JDK8的HashMap区别 既然讲HashMap,那就不得不说一下JDK7与JDK8(及jdk8以后)的HashMap有什么区别: jdk8中添加了红黑树,当链表长度大于等于8 那为什么不是8,4呢? 因为是8或者4的话很容易导致map扩容影响性能,如果分配的太大的话又会浪费资源,所以就使用16作为初始大小。 ---- 六、jdk8中HashMap为什么要引入红黑树?

    83030编辑于 2022-09-30
  • 来自专栏C++

    list底层详解

    2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。

    36300编辑于 2024-11-19
  • 来自专栏翎野君

    HashMap底层原理

    每当new一个HashMap出来的时候它的内部结构是下面的样子 从上图中可以看出,HashMap底层就是一个数组结构,数组中的每一项又是一个链表。 两组的hashcode均为8和9,但是很明显,当它们和1110“与”的时候,产生了相同的结果,也就是说它们会定位到数组中的同一个位置上去,这就产生了碰撞,8和9会被放到同一个链表上,那么查询的时候就需要遍历这个链表 ,得到8或者9,这样就降低了查询的效率。 归纳起来简单地说,HashMap 在底层将 key-value 当成一个整体进行处理,这个整体就是一个 Entry 对象。 HashMap 底层采用一个 Entry[] 数组来保存所有的 key-value 对,当需要存储一个 Entry 对象时,会根据hash算法来决定其在数组中的存储位置,在根据equals方法决定其在该数组位置上的链表中的存储位置

    47620编辑于 2023-05-12
  • 来自专栏国产程序员

    LinkedList 底层分析

    如图所示 LinkedList 底层是基于双向链表实现的,也是实现了 List 接口,所以也拥有 List 的一些特点(JDK1.7/8 之后取消了循环,修改为双向链表)。

    47350发布于 2019-07-02
  • Synchronized底层原理

    JDK6以前 Synchronized加锁是通过对象内部的监视器锁来实现的,监视器锁本质又是依赖于底层的操作系统的Mutex Lock来实现的,操作系统实现线程之间的切换这就需要从用户态转换到核心态,这个成本非常高

    25710编辑于 2024-08-03
  • Zookeeper底层原理

    下面将详细介绍 ZooKeeper 的底层原理,包括其架构、数据模型、核心机制和一致性协议等方面。1. 理解 ZooKeeper 的底层原理和实现,有助于更好地应用它来解决分布式系统中的一致性问题。我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

    77121编辑于 2024-07-04
领券