- 博客(12)
- 资源 (2)
- 收藏
- 关注
原创 Redis的核心数据结构以及高性能底层原理
文章目录一、Redis的单线程和高性能二、Redis的核心数据结构总结 一、Redis的单线程和高性能 Redis是单线程吗? Redis实际意义上来说不是单线程的。Redis的单线程是指网络IO键值对的读写以及执行命令是由一个线程完成的,但是异步删除、AOF文件重写、持久化以及集群的数据同步都是由其他线程来完成的。 Redis 单线程为什么还能这么快? Redis的所有操作都是基于内存中实现的,执行的速度较快。而且使用一个线程来处理读写逻辑过程中,避免了上下文切换。所以Redis单线程还能很快的原因。 要
2021-09-07 08:57:17
354
原创 操作系统底层工作的整体认识
文章目录一、冯诺依曼计算机模型详解二、使用步骤1.引入库2.读入数据总结 一、冯诺依曼计算机模型详解 现代计算机模型是基于-冯诺依曼计算机模型 计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下来,再取出第二条指令,在控制器的指挥下完成规定操作。依此进行下去。直至遇到停止指令。 程序与数据一样存贮,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的操作是计算机最基本的工作模型。这一原理最初是
2021-08-10 08:13:43
491
原创 深入理解MVCC与Buffer Pool缓存机制
文章目录一、MVCC多版本并发控制机制二、MVCC机制底层是怎么实现的--怎么保证可重复读的呢?MVCC锁相关MVCC机制的作用?Buffer Pool缓存池 一、MVCC多版本并发控制机制 首先来重新认识一下可重复读和串行化: 可重复读:mysql的默认隔离级别是可重复读,也就是在一个事务中,多次查询结果都相同。就算有其他事务修改了数据,也不会影响当前事务的查询结果。读操作不加锁,使用mvcc机制 串行化:读和写操作也加行锁,其他事务的所有读写操作都会被阻塞。 可重复读和串行化其实都是为了保证多次读到的数
2021-08-09 08:40:27
379
原创 Explain详解、Mysql调优的标准、陌陌社交APP建立索引实战
文章目录一、Explain工具介绍二、Explain的列二、使用步骤1.引入库2.读入数据总结 一、Explain工具介绍 使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是 执行这条SQL 注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中 Explain分析示例 参考官方文档:https://dev.mysql.co
2021-08-08 09:08:46
384
原创 深入理解Mysql索引底层数据结构与算法
文章目录一、什么是索引?二、索引的数据结构 一、什么是索引? 索引是帮助Mysql高效的排列数据的一种数据结构 二、索引的数据结构 很多数据结构都可以实现索引:二叉树、红黑树、hash表、B-Tree、B+Tree等等。Mysql使用的是B+Tree数据结构。 为了降低树的高度,引入了B-Tree;为了提高索引的效率又引入了B+Tree。 为什么Mysql使用B+Tree当作索引呢?那么我们必须要了解B+Tree和B-Tree的数据结构的特点: B-Tree: 1、叶子节点的深度都一样 2、数据和索引是存储
2021-08-06 10:40:30
211
原创 JVM调优实战和常量池深度解剖
文章目录前言一、JVM调优的思路二、实例总结 前言 这次用一个实际的案例来详细说明如何进行jvm调优。深度分析生产环境中出现的问题的排查以及解决思路。希望大家认真看完,对jvm调优一定会提升很多。 一、JVM调优的思路 JVM运行情况预估 用 jstat gc -pid 命令可以计算出如下一些关键数据,有了这些数据就可以采用之前介绍过的优化思路,先给自己的系统设置一些初始性的JVM参数,比如堆内存大小,年轻代大小,Eden和Survivor的比例,老年代的大小,大对象的阈值,大龄对象进入老年代的阈值等。 年
2021-08-06 09:24:43
458
原创 垃圾收集器G1&ZGC详解
文章目录前言一、G1垃圾收集器二、ZGC收集器(-XX:+UseZGC)总结 前言 这篇文件将为大家分析JVM中两种重要的垃圾收集器:G1和ZGC。目前看来,这两种垃圾收集器将会被广泛的使用,因此学习好它们的底层原理可以帮助我们更好的掌握如何进行JVM调优。现在很多公司开始从JDK1.8向JDK11进行迁移,很大一部分原因就是JDK11的默认垃圾收集器是G1.完全取代了CMS。后面我相信ZGC也会取代G1。 一、G1垃圾收集器 G1(Garbage-First)是一款面向服务器的垃圾收集器,***主要针对大
2021-08-04 09:26:25
989
原创 垃圾收集器ParNew&CMS与底层三色标记算法详解
系列文章目录 文章目录系列文章目录垃圾回收算法垃圾回收器垃圾收集底层算法实现总结 垃圾回收算法 分代收集理论 Jvm内存是分区的,分为年轻代和老年代.那么对于这两个区域都有各自的垃圾回收算法,这就是分代收集理论. 比如年轻代一次垃圾回收可能回收90%的对象.该区域的对象存活时间较短,比较适合复制算法. 再比如老年代,老年代中的对象存活时间很长,有可能是一直存活的,所以比较适合“标记-清除”算法和“标记-整理”算法. 注意:复制算法要比标记-清除/标记-整理算法快10倍以上 复制算法 为了提高回收效率,复制算
2021-08-03 10:06:56
552
原创 JVM对象创建与内存分配机制深度剖析
对象的创建 对象创建的几个流程 类加载检查:检查该类是否已经被类加载器加载过。如果已经加载过了直接进行分配内存操作; 如果还没有被加载过则进行类加载机制。 分配内存:对象的大小在类加载的时候就已经确定的了,所以第二步给对象分配相应的内存。 分配内存的方式: 1.指针碰撞:如果jvm内存是均匀的,所有用过的内存在一边,没有使用的内存在另一边。 使用一个指针来维护内存。在为对象分配内存时可以通过把这个指针向后移动对象大小的 位置,然后将对象存入到对应位置即可。 2.空闲列表:如果jvm内存是不均匀
2021-08-02 10:18:43
248
原创 JVM内存模型深度剖析与优化
JVM内存模型 STW【Stop The World】 这里补充一下什么是STW:在垃圾回收的过程中,尤其是Full GC。JVM会启动STW机制停止一切的用户进程。当然不同的垃圾收集器,STW的时间也不一样。 STW的作用:简单来说,在垃圾回收过程中,如果垃圾回收线程和用户线程一起工作。那么会造成一些对象的状态难以确定,标记起来也比较复杂,所以索性就使用STW机制停止一切用户线程。当垃圾回收结束之后再恢复用户线程。用户可能在这一段时间内出现卡顿的现象,这就是STW。 当然了,我们是不想在垃圾回收过程中出
2021-08-01 21:14:09
464
原创 从JDK源码剖析JVM类加载机制
一、类加载的过程 通过Java命令执行代码的大体流程如下: 其中loadClass的类加载过程分为几个步骤: 加载:把编译好的字节码文件加载到JVM内存中 验证:验证加载进来的字节码文件的格式是否正确 准备:给类的静态变量分配内存并赋予初值 解析:将符号引用替换为直接引用,该阶段会把一些静态方法(比如main方法)替换为指向数据所存内存的指针或者句柄【指向指针的指针】。这就是静态链接【类加载期间完成的】的过程。后面的动态链接是在对象的创建过程中完成的。 初始化:给类的静态变量进行赋予指定的值的操作 使用:
2021-07-30 19:51:40
197
原创 深入理解Mysql事务隔离级别与锁机制
文章目录前言一、事务及其ACID属性并发事务处理带来的问题二、使用步骤1.引入库2.读入数据总结新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 前言 我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数
2021-07-30 09:49:11
322
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅