首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏技术杂货店

    JDBC【4】-- SPI底层原理解析

    前面已经讲过SPI的基本实现原理了,demo也基本实现了,再来说说SPI。

    72600发布于 2020-11-28
  • 来自专栏热爱编程的证据

    学习笔记(4月17日)vector底层原理

    1.vector<vector>底层原理 vector是表示可变大小数组的序列容器,相当于一个动态的数组,比数组优越的在于它具有可动态改变的大小,同时,它写成了类模板,说明可以适用于其他类型,包括vector 本身,它的底层原理是这样实现的: 在vector里创建vector数组,相当于vector里存的是每一个vector数组的头指针,就像二维数组一样, 以顺序表为例,描述顺序表的结构体里有数组的头指针,元素个数

    79510编辑于 2024-04-20
  • 来自专栏前端菜鸟变老鸟

    Webkit底层原理(4)--DOM事件机制和Shadow DOM

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    1.7K40发布于 2019-10-22
  • 来自专栏全栈程序员必看

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

    随着JDK版本的跟新,JDK1.8对HashMap底层的实现进行了优化,列入引入红黑树的数据结构和扩容的优化等。 本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的数据结构实现和功能原理。 本篇文章主要讲解HashMap以及底层实现原理。 那为什么不是8,4呢? 因为是8或者4的话很容易导致map扩容影响性能,如果分配的太大的话又会浪费资源,所以就使用16作为初始大小。 jdk1.8及以 上版本引入了红黑树,当链表的长度大于或等于8的时候则会把链表变成红黑树,以提高查询效率) ---- 五、HashMap存储原理与存储流程 1.HashMap存储原理 获取到传过来的

    97130编辑于 2022-09-30
  • 来自专栏翎野君

    HashMap底层原理

    每当new一个HashMap出来的时候它的内部结构是下面的样子 从上图中可以看出,HashMap底层就是一个数组结构,数组中的每一项又是一个链表。 static int hash(int h) { h ^= (h >>> 20) ^ (h >>> 12); return h ^ (h >>> 7) ^ (h >>> 4); 看下图,左边两组是数组长度为16(2的4次方),右边两组是数组长度为15。 归纳起来简单地说,HashMap 在底层将 key-value 当成一个整体进行处理,这个整体就是一个 Entry 对象。 HashMap 底层采用一个 Entry[] 数组来保存所有的 key-value 对,当需要存储一个 Entry 对象时,会根据hash算法来决定其在数组中的存储位置,在根据equals方法决定其在该数组位置上的链表中的存储位置

    63020编辑于 2023-05-12
  • Synchronized底层原理

    对象加锁实现原理 在Java的设计中,每一个Java对象就带了一把看不见的锁,可以叫做内部锁或者Monitor锁,Synchronized在JVM里的实现是基于进入和退出Monitor对象来实现方法同步和代码块同步的 JDK6以前 Synchronized加锁是通过对象内部的监视器锁来实现的,监视器锁本质又是依赖于底层的操作系统的Mutex Lock来实现的,操作系统实现线程之间的切换这就需要从用户态转换到核心态,这个成本非常高

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

    下面将详细介绍 ZooKeeper 的底层原理,包括其架构、数据模型、核心机制和一致性协议等方面。1. 4. 一致性协议ZooKeeper 使用一种称为 ZAB(Zookeeper Atomic Broadcast)的一致性协议来保证数据的一致性。ZAB 包括两个阶段:选举阶段和广播阶段。4.1. 理解 ZooKeeper 的底层原理和实现,有助于更好地应用它来解决分布式系统中的一致性问题。我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

    88321编辑于 2024-07-04
  • 来自专栏Java面试教程

    Synchronized底层原理

    本文讲述Synchronized关键字的使用和底层原理,我们使用Synchronized主要是为了保护共享资源在多线程修改的时候,会出现相互覆盖的问题,导致数据错乱。 二.原理 接下来讲解一下Synchronized的底层原理,jdk1.6之前,Synchronized锁是用操作系统的Mutex Lock来实现的,每次加锁和解锁操作都需要用户态到内核态的切换,切换代价是十分高的 之前Synchronized称为重量锁;1.6之后使用了各自优化,使得Synchronized锁的性能得到了很大的提升跟reentrantlock是一样的,我们来一起看一下Synchronized的优化原理吧 0;i<100;i++) { a++; } } } 三.总结 我们讲解了synchronized关键字的使用和它的底层实现

    59830编辑于 2023-03-07
  • 来自专栏若尘的技术专栏

    ios底层原理

    ,传入的对象主要是数据类型,这个在编译器的编译阶段(即编译时)就会确定大小,而不是在运行时 sizeof最终得到的结果是该数据类型占用空间的大小 class_getInstanceSize 这个方法在底层 则类的实例对象实际占用的内存大小是8,可以简单的理解为 8 字节对齐 mallocsize:计算对象实际分配内存大小,这个是由系统完成的,可以从上面的打印结果看出,实际分配的和实际占用的内存并不相等,这个可以根据底层 2中的16 字节对齐算法来解释这个问题 结构体内存对齐 接下来我们首先定义两个结构体,分别计算他们的内存大小,来引入今天的主体,内存对齐原理 struct MyStruct1{ char a; int a; //4字节 min(0,4)--- (0,1,2,3) struct Mystruct5{ //从4开始,存储开始位置必须是最大的整数倍(最大成员为 return slot_bytes; } 算法原理: 算法原理:k + 15 >> 4 << 4 ,其中 右移4 + 左移4相当于将后4位抹零,跟 k/16 * 16一样 ,是16字节对齐算法,小于

    1.1K74发布于 2021-11-22
  • 来自专栏@学习笔记

    Redis 底层原理

    Redis 的底层原理 Redis 底层数据结构 动态字符串SDS Redis 没有直接使用C语言中的字符串,因为C语言字符串存在很多问题: 获取字符串长度需要通过运算 非二进制安全(如果在字符数组中中间有个元素为 升级编码为INTSET_ENC_INT32,每个整数占4字节,并按照新的编码方式及元素个数扩容数组 倒序依次将数组中的元素拷贝到扩容后的正确位置(如果正序的话,以前2个字节,现在4个字节,就会把第二个数字覆盖 1、Redis 会确保 IntSet 中的元素唯一、有序 2、具备类型升级机制,可以节省内存空间 3、底层采用二分查找方式来查询 总的来说就是如果数据量不是很大用intset合适,若数据量特别大,则intset 新版的Redis作者引入了一个新的数据结构叫 ListPack(紧凑列表),只是在Stream结构底层使用了,并没有用到常见的数据结构,可能是因为改动太大,并没有修改它。 ZSet Zet也就是 SortedSet,其中每一个元素都需要指定一个score值和member值: 可以根据score值排序 member必须唯一 可以根据member查询 score 故zset底层数据结构必须满足

    1.1K20编辑于 2022-11-18
  • 来自专栏Eliauk的小窝

    MVCC底层原理

    MVCC底层原理 假设现在有一个index表,只有一条数据 此时他是有两个隐藏列的,一个是trxid(事务id),一个是roll pointer(回滚指针) 此时新建三个会话,每个会话创建一个事务,我这里创建了 这三个依次进行一次更新操作,因为只有更新操作的时候才会生成事务id 所以要先去操作别的表一下以便生成事务id 我们在进行第三个事务的时候更新了一条数据在数据库底层会帮我们做这样一件事情 创建一条新数据然后将我们的旧数据放到回滚日志里边

    55110编辑于 2022-11-15
  • 来自专栏宇宙之_一粟

    HashMap底层原理

    JDK1.8 之前 HashMap 底层是 数组和链表 结合在一起使用也就是 链表散列。

    57151发布于 2020-10-26
  • 来自专栏niceyoo

    ConcurrentHashMap底层原理

    3、HashMap与HashTable的区别,引出ConcurrentHashMap… 4、HashMap在多线程环境下存在线程安全问题,那你一般都是怎么处理这种情况的? 这两个问题,具体可参考上篇 >面试必备:HashMap底层数据结构? jdk1.8算法优化,hash冲突,扩容等问题 关于ConcurrentHashMap实现原理的两个参考回答,自己可以重新组织一下: ConcurrentHashMap采用的是分段式锁,与之对应的就是HashTable

    2.7K30发布于 2020-07-07
  • 来自专栏c++与qt学习

    Docker底层原理

    Docker底层原理 底层实现 基本架构 命名空间 pid 命名空间 net 命名空间 ipc 命名空间 mnt 命名空间 uts 命名空间 user 命名空间 控制组 联合文件系统 本人菜鸡一枚,这里对 docker底层原理也只是简单的描述了一下,想要深入研究的小伙伴,建议可以看其他文章 ---- 底层实现 Docker 底层的核心技术包括 Linux 上的命名空间(Namespaces)、控制组(Control

    77811编辑于 2022-05-10
  • 来自专栏『学习与分享之旅』

    HashMap 底层原理

    JDK 1.7采用的是 数组 + 链表JDK 1.8采用的是 数组 + 链表 + 红黑树HashMap 的容量指的是数组的大小如果不指定初始容量,默认大小是 1<<4,也就是 2 的 4 次方,也就是 16 的大小DEFAULT_INITIAL_CAPACITY = 1 << 4;,Hash 表默认的初始容量图片HashTable 数据结构在 JDK1.7 当中 HashTable 数据结构为 数组 初始容量问题图片默认初始容量必须是 2 的指数次幂,如果不是 2 的指数次幂,会强行转化成 2 的指数次幂,采用向上接近的转换方式,假设初始容量为 14,不是 2 的指数次幂,向上比较接近的是 2 的 4

    45320编辑于 2023-09-30
  • 来自专栏前端心念

    react底层原理

    要明白JSX的原理,需要先明白如何用 JavaScript 对象来表现一个 DOM 元素的结构 1

    2

    欢迎进入React的世界

    3

    4 React.js 是一个帮助你构建页面 UI 的库 5

    6
    7 8上面这个 HTML 1//React.createElement` 会构建一个 JavaScript 对象来描述你 HTML 结构的信息 2//包括标签名、属性、还有子元素等 3React.createElement( 4 "}, "Hello React (method 2)"); 示例: 1import React from "react"; 2import ReactDOM from "react-dom"; 3 4class 1import React from "react"; 2import ReactDOM from "react-dom"; 3class App extends React.Component { 4

    1.5K10编辑于 2023-01-11
  • 来自专栏小蔚记录

    JS ----- 底层原理

    JS 的底层运行原理 每调用一个函数就会生成一个执行环境(俗称执行上下文),执行上下文环境数量没有限制 每调用一个函数就会生成一个执行环境(俗称执行上下文),执行上下文环境数量没有限制 单线程 同步执行

    2.6K10发布于 2019-10-23
  • 来自专栏JAVA 框架/源码学习

    hashmap底层原理

    HashMap的构造函数 HashMap共有4个构造函数,如下: // 默认构造函数。 extends V> map) 二、JDK7 中 HashMap 底层原理 HashMap 在 JDK7 或者 JDK8 中采用的基本存储结构都是数组+链表形式。 本节主要是研究 HashMap 在 JDK7 中的底层实现,其基本结构图如下所示: ? 五、总结 本文着重讲解了 JDK7 中 HashMap 的具体实现原理,相信读者仔细品读以后,对 JDK7 中的 HashMap 的实现会有一个清晰地认识,JDK7 中的 HashMap 的实现原理属于经典实现 ,不管 JDK7 是否已经再被使用,但是其基本原理还是值得学习!

    87831发布于 2021-01-14
  • 来自专栏高级开发进阶

    HashMap底层原理

    如果这个位置没有其它元素,将(k1,v1)直接放入一个Node类型的数组中,当元素加到12的时候,底层会进行扩容,扩容为原来的2倍。

    42420编辑于 2022-03-07
  • 来自专栏Java患者

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

    MySQL索引底层原理 局部性与页 在操作系统中,我们执行一个指令去磁盘取数据,那么他会从磁盘取出4KB数据,这个4KB就是一个局部单位,而这4KB数据就是你的指令中取出的数据周围的数据,因为操作系统认为你下一次的数据会从这条数据的周围中取 那么在Mysql的操作当中,也有这么一个原理。 ? 页数据原理 ? 当我们使用insert插入上面的语句的时候,其实可以看到插入的过程中,这4条数据已经按主键的顺序插入到MySQL中,那么在这个插入的过程是怎么样的,我们来研究一下InnoDB存储的过程。 如图,如果当我们要查找a=4的这一条数据,那么就从页目录中找,就可以立即找到该条数据会在第二组,然后在第二组中比对到了a=4之后,取出数据。

    1K31发布于 2020-05-29
领券