自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 聊聊MySQL8.0新特性

MySQL8.0新特性概述字典数据与资源管理数据字典以前MySQL都是采用元数据文件、非事务性表结构或者是存储引擎特有的方式来存储字典数据,这些字典数据通常都是以数据对象为主,比如说最常见的表结构信息等。在MySQL8.0中,这些字典数据都被移动到拥有InnoDB存储引擎的事务性表中进行存储了,这样做可以带来下列这些好处:(1) 字典数据集中化管理更加方便;(2) 移除掉了基于文件的元数据存储;(3) 支持事务,字典数据也同样可以crash-safe;(4) 使用INFORMATION_SC

2020-08-08 11:22:43 945

原创 InnoDB存储引擎的逻辑架构

InnoDB存储引擎的逻辑架构逻辑架构概述InnoDB的逻辑架构图如下:根据上图可知,InnoDB的逻辑架构主要分为三个大的组成部分:1、在内存中的架构(In-Memory Structures);2、在硬盘上的架构(On-Disk Structures);3、操作系统缓存(Operating System Cache)。下面将简要介绍每一个InnoDB的逻辑架构中的每一个组成部分。内存上的架构InnoDB的内存架构分为4个部分:1、缓冲池(Buffer Pool);2、写缓冲(Ch

2020-07-26 18:41:22 280

原创 理解mysql逻辑架构

MySQL核心架构本篇文章中,我们将介绍一下mysql的核心架构架构图mysql的基本架构如下图所示:从上图可以看出,mysql的逻辑架构包含的最核心组件有:连接器、缓存模块、分析器、优化器及存储引擎,下面我们将对各个组件的核心功能做个简要的介绍。连接器它的主要职责是提供连接管理、授权认证及安全防护等,其实这个组件并非mysql所独有,很多其它的网络服务都有这样的组件。缓存模块缓存模块主要是为了降低mysql访问磁盘的次数,降低磁盘IO性能开销,比如InnoDB存储引擎,缓存模块就有读缓存

2020-07-25 13:45:05 164

原创 为什么重写equals方法的同时也要重写hashcode方法

为什么重写equals方法的同时也要重写hashcode方法注:JDK版本:1.8.0_251首先,我们来看一下在Object类中,这两个方法是是干嘛的,现贴出代码:在Object类中, equals方法进行相等比较,是用 == 号对两个对象进行比较。我们知道,在Java中,==比较,其实比较的是两个对象的hashcode,我们再看看Object类的hashCode()方法:这个方法呢,它是一个native方法,这个方法会返回当前对象的哈希散列码。OK,现在打完了Object类的铺垫,我们再

2020-07-24 11:36:41 563 2

原创 Redis6.0配置文件详解

Redis6.0配置文件详解注:redis版本为:6.0.5配置文件原文地址:https://raw.githubusercontent.com/redis/redis/6.0/redis.conf如果要配置跟内存大小相关的参数是可以这样配置:1k => 1000 bytes1kb => 1024 bytes1m => 1000000 bytes1mb => 10241024 bytes1g => 1000000000 bytes1gb => 1024

2020-07-24 10:15:46 4606

原创 缓存穿透与缓存雪崩的解决方案

缓存穿透与缓存雪崩的解决方案1、缓存穿透缓存穿透是指用户查询个别key时,该key不存在,导致用户请求转向数据库查询,而数据库中也不存在,那么该key对应的value就一直不会被缓存,从而导致所有针对该key的请求全部转向数据库查询,使整个缓存系统对该key失去作用,我们称这种现象为缓存穿透。那么缓存穿透一般该如何解决呢?通常来说,目前业内比较常见的方法有两种:a、缓存空的对象;缓存空的对象,这就意味着,当用户请求了不存在的key时,我们在缓存中存在一个空值对象。这么做其实有如下问题:(1)、

2020-07-24 10:06:09 126

原创 深入理解Java中的各种锁

Java中的各种锁注:JDK版本:1.8.0_2511 乐观锁与悲观锁1.1 乐观锁乐观锁就是当一个线程A去修改共享数据B时,线程A假设其它线程都不会去修改B,因此线程A在对共享数据B修改时,不会对共享数据B进行加锁,而是线程A在修改时只需要对共享数据B的旧值或数据版本进行校验,如果校验成功,则修改之,如果校验不成功,则修改失败。具体在我们Java编程中比较常见的有利用数据库的version(版本号)字段的自增操作来实现乐观锁,具体的细节我们这里不作介绍。这里我们还介绍另外一个在Java中的具体

2020-07-23 15:32:29 130

原创 如何实现LRU算法分析

LRU算法分析与实现这篇文章我们讨论一下最常见的LRU算法,这个算法对于开发人员来说,是十分重要的,通常被应作操作系统的页面置换算法,缓存系统用该算法作用key的淘汰策略等。LRU算法的概念及作用LRU的英文全称叫:Least Recently Used,也就是最近最少使用。那么什么叫最近最少使用呢?以缓存为例:比如说我们有一个缓存Cache,只能缓存三个用户(User)对象。现在我们的Cache中已经被放入了三个用户:User(张三, 3分钟前被使用过),User(李四, 5分钟前被使用过

2020-07-23 15:12:20 261

原创 Java中的自动拆箱与自动装箱

Java包装类的自动拆装箱基本类型与包装的比较我们先来看一段代码:@Testpublic void test() {  int a = 1;  Integer b = new Integer(1);  Integer c = new Integer(1);  System.out.println(a == b);  System.out.println(b == c);  System.out.println(b == c.intValue());}这段代码的运行结果是(运行环境:O

2020-07-22 19:55:55 83

原创 Java中的hashcode究竟是不是对象的内存地址

Java中的hashcode究竟是不是对象的内存地址实验要回答标题中的问题,我们最好的办法就是来做一个实验,那么我们如何来做这个,并且确保实验结果的正确性呢?我们需要证明:多个对象内存地址不一样在上述不同内存地址的对象中找出相同hashcode的情况实验环境:windows 10 64bitOracle jdk1.8.0_251实验代码如下:@Testpublic void test() {  int total = 1000000;  Set set = new Hash

2020-07-22 17:39:20 2116

原创 深入理解Object类

深入理解Object类背景在Java语言中,我们所编写的所有类都会自动继承自Object类,因此,了解其各个方法的作用是十分有必要的。源码剖析package java.lang;/**@author unascribed@see java.lang.Class@since JDK1.0*/public class Object {registerNatives这个方法是为了注册native方法。native方法就是本地方法,这些本地方法的实现其实并

2020-07-22 14:41:35 340

原创 Redis6.0线程模型

Redis线程模型Reids 6.0之前版本的线程模型在讨论最新版本的Redis的线程模型之前呢,我们先来聊聊原来的Redis的线程模型:有人说,在6.0之前呢,Redis是单线程的,这么说其实也不太准确,为什么呢?因为Redis在4.0之后,就引入了多线程,比如说除了处理用户命令的主线程之外,还会起异步的线程去做一些资源释放,清理脏数据,删除大key等工作。这里我们说之前的Redis是单线程,主要是指原来处理用户命令的线程,是单线程的。那么我们先看看6.0之前的Redis的线程模型图:这就是

2020-07-22 09:22:25 1031

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除