自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 搞懂mysql索引分类及使用B+树的原因

什么是索引1)索引就好比一本书的目录,它能让你更快的找到自己想要的内容。2)让获取的数据更有目的性,从而提高数据库检索数据的性能。索引的目的和优缺点目的:在进行一些查询的时候提高查询效率。优点:可以提高数据检索的效率,降低数据库的IO成本,可以加速表和表之间的连接,在使用分组和排序子句进行数据检索时,降低数据排序的成本,降低了CPU的消耗缺点: 索引会占据磁盘空间,会降低表的增删改的效率,因为每次增删改索引需要进行动态维护索引的分类1.主键索引设定为主键后数据库会自动建立索引,innod

2021-12-20 13:46:05 438

原创 SQL查看执行计划EXPLAIN字段详解

查看sql执行计划具体的字段id:选择标识符select_type:查询的类型table:输出结果集的表partitions:匹配的分区

2021-12-19 21:40:53 457

原创 JVM的回收算法和主流的垃圾回收器

概述在JVM中,我们的堆和元空间都是线程共享的,所以我们可能存在当堆空间的容量不支持存放新的对象的时候,就会触发垃圾回收机制,那么,回收的时候是根据什么情况回收的呢。怎么判断该对象是灭亡状态引用计数法:概述:对象中添加一个引用计数器,如果引用计数器为0则表示没有其它地方在引用它。如果有一个地方引用就+1,引用失效时就-1。缺点:实际上在大部分Java虚拟机中并没有采用这种算法,因为它会带来一个致命的问题—对象循环依赖。对象A指向B,对象B反过来指向A,此时它们的引用计数器都不为0,但它们俩实际上已

2021-12-05 23:44:38 421

原创 类加载器和JVM的内存模型分析

概述JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。**类加载器应用加载器AppClassLoader:主要读取当前项目中cl

2021-12-05 01:05:11 993

原创 ThreadLocal原理分析

什么是ThreadLocalThreadLocal提供线程局部变量。这些变量与普通的变量不同之处在于,每个访问这种变量的线程(通过它的get或set方法)都有自己的、独立初始化的变量副本。ThreadLocal的基本使用方法 ThreadLocal<Object> thread = new ThreadLocal<>(); thread.set("1111"); System.out.println(thread.get());

2021-11-28 23:04:35 2142

原创 深度解析ReentrantLock让你不再为面试发愁

摘要java5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁的功能,它提供了与synchronized关键字类似的同步功能,那为什么还要使用lock锁呢,首先呢lock锁更加灵活,我们可以手动的控制锁,synchronized我们无法控制,只能等结束完成自动释放锁。分类Lock有读写锁,读锁是可以共享的,允许多个线程同时读取,也可以叫做共享锁,写锁是独立的,只允许一个线程去写,也叫排它锁,独占锁。ReentrantReadWriteLock readWriteLock = new Re

2021-11-27 22:35:32 371

原创 从零学习synchronized关键字

摘要synchronized是java的关键字,也可以叫同步锁,能够保证在同一时刻最多只有一个线程执行同步代码代码块,以达到保证并发安全的效果。性质可重入性:当一个线程获取锁后,没有释放当前锁,再次获取当前锁时,可以直接进去,不需要再次获取锁,synchronized可以是一个悲观锁,独占锁。原子性:确保同一时间只有一个线程能拿到锁,能够进入代码块。不可中断性:一个线程获取锁之后,另外一个线程处于阻塞或者等待状态,前一个不释放,后一个也一直会阻塞或者等待,不可以被中断。synchronized的

2021-11-27 16:21:36 136

原创 volatile关键字详解

摘要在了解volatile关键字之前,我们要首先了解下IMM内存模型,这个和JVM内存模型是不一样的哦,这个是硬件方面的内存架构。图片来源于网络:在我们现在的日常开发中,一般来说电脑都是多核多线程,有自己的缓存的存在的。主内存:是所有CPU的共享内存。所有CPU都可以访问。工作内存:是每个工作内存独有的,每个工作内存不影响。CPU寄存器:每个工作内存都包含一系列的寄存器,它们是CPU内内存的基础。高速缓存:由于计算机的存储设备与处理器的运算速度之间有着几个数量级的差距,所以现代计算机系统都不

2021-11-20 21:04:26 111

原创 网络编程基础知识详解

什么是网络编程网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机。数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一个设备反馈的数据。 现在的网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据给另外一个,然后接收另一个设备的反馈。OSI七层模型1.应用层 用户的应用程序和网络之间的接口2.表示层 决定访问网络介质的方式3.会话层 使用权数据路由经过大型网络 相当于邮局中的排序工人4.传输层 提供终端到终端的可靠连接

2021-11-18 23:19:51 1729

原创 CurrentHashmap知识详解

为什么要使用CurrentHashmap在多线程中,hashmap的put方法可能会造成死循环的问题,put的时候引发扩容。hashtable虽然是线程安全的,但是在多线程中使用的是synchronized,当一个线程抢到锁之后,别的线程会等待使用锁的线程释放后才会执行,相当于单线程,效率不高,而CurrentHashmap是采用的是分段锁的思想,可以支持16个线程同时执行,效果显然是比较快的。CurrentHashmap详解CurrentHashmap1.7ConcurrentHashMap1.7

2021-11-13 19:19:49 12056

原创 HashMap知识详解

HashMap面试相关知识问:hashmap是怎么计算index的下角标位置的呢答: 首先看一下put时计算hash的方法,先是计算出key的hashcode,然后key的hashcode右移16位,最后在用key的hashcode只与右移后的值进行与运算,添加位运算的公式注意标红的地方,最后&运算,计算得出index的下角标位置问:hashmap存放是有序存放还是无序存放?答:存放是无序存放,使用单向链表,如果想有序使用LinkedHashmap,使用双向链表,在效率方面Link

2021-11-07 17:59:27 86

原创 redis的缓存击穿,穿透,雪崩

提到redis肯定会提到缓存,那么在redis的缓存中会遇到哪些问题呢。下面我们来一一谈谈: 首先我们来聊一个场景,假设你有很多个请求去访问同一个接口,而且你的key是不存在的,首先在redis中缓存是无法命中,当redis中没有查到是,我们又会去DB中去查询,那么N多个请求都去DB中查询,当服务很多是,DB甚至会崩掉。那么这种情况在Redis中我们称之为缓存穿透。那么我们遇到这种情况会怎么解决呢,首先我们可以限流,限制同一个请求在一定时间内的访问次数。或者我们可以用一个空的值的缓存放入re...

2020-06-11 16:26:53 115

原创 redis的主从复制与哨兵机制

hello,我又来了,作为一个菜鸟,这几我有重新学习了下,redis的一些知识点,其中包括持久化机制,主从复制,哨兵机制,淘汰策略,缓存穿透,击穿,雪崩。下来我们来依次介绍下。持久化机制:在学习持久化机制的时候我们必须了解两个概念:AOF和RDBAOF:增量同步,我们可以理解为当我们监听到key发生变化时,数据就会做一次同步操作,RDB:全量同步,我们可以理解为是一个定时任务,每天定时同步数据,区别:他们的区别就是增量同步耗内存,效率高,但是全量同步如果主节点挂掉,容易丢失数据,主动

2020-05-26 17:31:28 188

原创 Springboot整合Redis的两种常见方案

spring整合Redis有两种方法,由浅到深,最基础的就是添加redis的maven依赖和在yml中添加redis的连接信息(一些其他的依赖省略不写)<dependency><groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency> yml中的host根..

2020-05-19 17:46:26 460

原创 浅谈Redis的基础知识

一.搭建redis的基础知识前言:在安装redis的时候,我们要特别注意的一点是redis是没有windows版本的,但是我们在git上可以看到一些关于windows的版本,这些一般都是大牛改的源码,官网上是只有linux版本。接下来讲几个小的注意点:1.redis前台启动和后台启动(1)前台启动:这种启动方式启动之后就不能再在输入框中输入命令,否则就会将服务端停止./redis-server(2)后台启动:这种启动方式需要复制conf文件到redis中bin目录下cp re.

2020-05-19 15:02:58 145

空空如也

空空如也

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

TA关注的人

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