自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis缓存一致性问题(缓存读写策略)

**Redis缓存一致性问题(缓存读写策略)**看到很多小伙伴简历上写了“熟练使用缓存”,但是被我问到“缓存常用的3种读写策略”的时候却一脸懵逼。在我看来,造成这个问题的原因是我们在学习 Redis 的时候,可能只是简单了写一些 Demo,并没有去关注缓存的读写策略,或者说压根不知道这回事。但是,搞懂3种常见的缓存读写策略对于实际工作中使用缓存以及面试中被问到缓存都是非常有帮助的!下面我会简单介绍一下自己对于这 3 种缓存读写策略的理解。另外,这3 种缓存读写策略各有优劣,不存在最佳,需要我们

2021-11-10 10:09:28 811 1

原创 Redis持久化

**Redis持久化**很多时候我们需要持久化数据也就是将内存中的数据写入到硬盘里面,大部分原因是为了之后重用数据(比如重启机器、机器故障之后回复数据),或者是为了防止系统故障而将数据备份到一个远程位置。Redis不同于Memcached的很重要一点就是,Redis支持持久化,而且支持两种不同的持久化操作。Redis的一种持久化方式叫快照(snapshotting,RDB),另一种方式是只追加文件(append-only file,AOF)。这两种方法各有千秋,下面我会详细这两种持久化方法是什么,怎

2021-11-10 10:06:31 143

原创 Redis分布式锁(Redlock)

**Redis分布式锁(Redlock)**什么是RedLock?Redis 官方站这篇文章提出了一种权威的基于 Redis 实现分布式锁的方式名叫 Redlock,此种方式比原先的单节点的方法更安全。它可以保证以下特性:安全特性:互斥访问,即永远只有一个 client 能拿到锁避免死锁:最终 client 都可能拿到锁,不会出现死锁的情况,即使原本锁住某资源的 client crash 了或者出现了网络分区容错性:只要大部分 Redis 节点存活就可以正常提供服务怎么在单节点上实现分布

2021-11-10 10:02:28 1440

原创 MySQL索引(深度剖析)

**MySQL索引(深度剖析)**何为索引?有什么作用?索引是一种用于快速查询和检索数据的数据结构。常见的索引结构有: B 树, B+树和 Hash。索引的作用就相当于目录的作用。打个比方: 我们在查字典的时候,如果没有目录,那我们就只能一页一页的去找我们需要查的那个字,速度很慢。如果有目录了,我们只需要先去目录里查找字的位置,然后直接翻到那一页就行了。索引的优缺点优点 :使用索引可以大大加快 数据的检索速度(大大减少检索的数据量), 这也是创建索引的最主要的原因。通过创建唯一性索引,

2021-11-10 09:57:24 136

原创 MySQL调优

MySQL调优数据库命令规范数据库基本设计规范1. 所有表必须使用 Innodb 存储引擎2. 数据库和表的字符集统一使用 UTF83. 所有表和字段都需要添加注释4. 尽量控制单表数据量的大小,建议控制在 500 万以内。5. 谨慎使用 MySQL 分区表6.尽量做到冷热数据分离,减小表的宽度7. 禁止在表中建立预留字段8. 禁止在数据库中存储图片,文件等大的二进制数据9. 禁止在线上做数据库压力测试10. 禁止从开发环境,测试环境直接连接生成环境数据库数据库字段设计规

2021-11-10 09:49:03 59

原创 一条sql语句的执行过程

一 MySQL 基础架构分析1.1 MySQL 基本架构概览1.2 Server 层基本组件介绍1) 连接器2) 查询缓存(MySQL 8.0 版本后移除)3) 分析器4) 优化器5) 执行器二 语句分析2.1 查询语句2.2 更新语句三 总结四 参考本篇文章会分析下一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的。在分析之前我会先带着你看看 MySQL 的基础架构,知道了..

2021-11-10 09:35:50 260

原创 缓存一致性问题

一、为什么会产生缓存不一致问题1、CPU缓存目的:CPU缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾​ 因为CPU运算速度要比内存读写速度快得多,这种访问速度的显著差异,导致CPU可能会花费很长时间等待数据到来或把数据写入内存。基于此,现在CPU大多数情况下读写都不会直接访问内存(CPU都没有连接到内存的管脚),取而代之的是CPU缓存,CPU缓存是位于CPU与内存之间的临时存储器,它的容量比内存小得多但是交换速度却比内存快得多。而缓存中的数据是内存中的一小部分数据,但这一小部分

2021-09-06 16:04:17 1073

原创 深度解剖HashMap。HashMap的扩容机制,put一个节点的过程,hash扰动算法,底层数据结构:数组+链表+红黑树。什么时候用链表,什么时候用红黑树,为什么HashMap的容量必须要2的幂次方

一、HashMap 简介HashMap 主要用来存放键值对,它基于哈希表的 Map 接口实现,是常用的 Java 集合之一,是非线程安全的。HashMap 的key和value都可以为null,但 null 作为键只能有一个,null 作为值可以有多个JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”(“链地址法”)解决冲突)。 JDK1.8 以后的 HashMap 在解决哈希冲突时有了较大的变化,当链表长度大于

2021-07-18 23:06:13 204

原创 Java的锁机制。乐观锁/悲观锁、公平锁/非公平锁、可重入锁、独占锁/共享锁、互斥锁/读写锁、分段锁、锁的状态(偏向锁、轻量级锁、重量级锁)、自旋锁。Java中8种锁机制,一步到位!

Java锁的机制一、公平锁/非公平锁​ 在ReentrantLock中包含了公平锁和非公平锁两种锁。 如果你用默认的构造函数来创建ReentrantLock对象,默认的锁策略就是非公平的。1、公平锁公平锁定义:​ 多个线程按照申请锁的顺序去获得锁,线程会直接进入队列去排队,永远都是队列的第一位才能得到锁。公平锁优缺点:优点:所有的线程都能得到资源,不会饿死在队列中。缺点:吞吐量会下降很多,队列里面除了第一个线程,其他的线程都会阻塞,cpu唤醒阻塞线程的开销会很大。公平锁图示:图

2021-07-18 18:27:38 692 1

原创 CAS机制专篇,超详细讲解!(比较与交换,compareAndSwap,CAS原理,Unsafe是什么?valueOffset是什么?CAS的缺点,CAS的应用场景,ABA问题,ABA问题的解决办法)

CAS专篇前言​ 日常编码过程中,基本不会直接用到 CAS 操作,都是通过一些JDK 封装好的并发工具类来使用的,在 java.util.concurrent 包下。但是面试时 CAS 还是个高频考点,所以呀,你还不得不硬着头皮去死磕一下这块的技能点,总比一问三不知强吧?一、为什么要用无锁?​ 我们一想到在多线程下保证安全的方式头一个要拎出来的肯定是锁,不管从硬件、操作系统层面都或多或少在使用锁。锁有什么缺点吗?当然有了,不然 JDK 里为什么出现那么多各式各样的锁,就是因为每一种锁都有其优劣势

2021-07-18 18:11:21 1689 1

原创 JVM垃圾回收,JVM垃圾回收算法,垃圾回收机制,堆区分代结构,如果判断一个对象被回收?Full GC,Minor GC

JVM垃圾回收一、Java对象分代管理分为两代:新生代与老生代。新生代与老年代的内存大小比例为1:2。1.新生代新生代分为两大区:伊甸区和幸存区。幸存区又分为From区和To区。伊甸区、From区和To区的比例为:8:1:1。新生代存放着所有新生成的对象。在新生代中,每次垃圾收集时都发现有大批对象死去,只有少量存活,那就选用复制算法,只需要付出少量存活对象的复制成本就可以完成收集。新生代回收的频率很高,每次回收的时间都很短。2.老年代老年代没有分具体分区,整个区就是老年代本身。在新生代

2021-05-01 20:39:40 154

原创 Linux常用的终端操作命令

Linux终端常用操作命令关机重启shutdown -h now:表示立即关机shutdown -h 1:表示1分钟后关机shutdown -r now:立即重启halt:就是直接使用,效果等价于关机reboot:就是重启系统数据同步sync:把内存的数据同步到磁盘。当我们关机或者重启时,都应该先执行以下sync指令,把内存的数据写入磁盘,防止数据丢失。文本编辑器vi abc.txt:启动编辑器打开abc.txt文件并编辑。vim abc.txt:启动编辑器打开abc.txt文件并编辑

2021-04-30 17:04:31 1266 2

原创 RabbitMQ 安装教程

RabbitMQ Server安装教程,Window10,详细版一、下载并安装Erlang1.下载Rrlang下载地址:http://erlang.org/download/otp_win64_21.3.exe2.安装Rrlang安装流程如下:1.双击otp_win64_21.3.exe文件2.按照图中选项勾选,点击Next按钮。3.选择一个安装目录,然后点击Next按钮。4.这里不用动,默认就是Erlang OTP 21(x64),直接点击Install按钮。5.安装完成。二、

2021-04-21 13:28:03 611

空空如也

空空如也

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

TA关注的人

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