09 2021 档案
摘要:如何用好锁,是程序员的基本素养之一。 高并发的场景下,如果选对了合适的锁,则会大大提高系统的性能,否则性能会降低。 所以,知道各种锁的开销,以及应用场景是很有必要的。 接下来,就谈一谈常见的这几种锁: 正文 多线程访问共享资源的时候,避免不了资源竞争而导致数据错乱的问题,所以我们通常为了解决这一问题
阅读全文
摘要:一.分库分表原因 前文介绍MySQL主从模式,将读写分离以提高性能。 主从模式对于写少读多的场景确实非常大的优势,但是总会写操作达到瓶颈的时候,导致性能提不上去。 总的来说就是数据库出现性能瓶颈,对外表现有几个方面: 大量请求阻塞: 在高并发场景下,大量请求都需要操作数据库,导致连接数不够了,请求处
阅读全文
摘要:这篇文章我想和你聊一聊,关于 Redis 分布式锁的「安全性」问题。 例如下面这些问题,你能清晰地回答上来吗? 基于 Redis 如何实现一个分布式锁? Redis 分布式锁真的安全吗? Redis 的 Redlock 有什么问题?一定安全吗? 业界争论 Redlock,到底在争论什么?哪种观点是对
阅读全文
摘要:我们天天都在使用 Redis 内置的命令行工具 redis-cli,久而久之以为它就是一个简单的交互式 Redis 数据结构手工操作程序,但是它背后强大的功能绝大多数同学可能闻所未闻。本节我们一起来挖掘这些鲜为人知的有趣用法。 目录: 执行单条命令批量执行命令set 多行字符串重复执行指令导出 cs
阅读全文
摘要:一、分布式锁 分布式锁,是一种思想,它的实现方式有很多。比如,我们将沙滩当做分布式锁的组件,那么它看起来应该是这样的: 加锁 在沙滩上踩一脚,留下自己的脚印,就对应了加锁操作。其他进程或者线程,看到沙滩上已经有脚印,证明锁已被别人持有,则等待。 解锁 把脚印从沙滩上抹去,就是解锁的过程。 锁超时 为
阅读全文
摘要:在多线程环境下,由于上下文的切换,数据可能出现不一致的情况或者数据被污染,我们需要保证数据安全,所以想到了加锁。 所谓的加锁机制呢,就是当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问,直到该线程读取完,其他线程才可使用。 还记得我之前说过Redis在分布式的情况下,需要对存在并发竞争
阅读全文
摘要:String在Redis底层是怎么存储的?这些数据类型在Redis中是怎么存放的?Redis快的原因就只有单线程和基于内存么? Redis是C语言开发的,C语言自己就有字符类型,但是Redis却没直接采用C语言的字符串类型,而是自己构建了动态字符串(SDS)的抽象类型。 就好比这样的一个命令,其实我
阅读全文
摘要:Redis雪崩了解么? 目前电商首页以及热点数据都会去做缓存 ,一般缓存都是定时任务去刷新,或者是查不到之后去更新的,定时任务刷新就有一个问题。 举个简单的例子:如果所有首页的Key失效时间都是12小时,中午12点刷新的,我零点有个秒杀活动大量用户涌入,假设当时每秒 6000 个请求,本来缓存在可以
阅读全文
摘要:为啥Redis那么快? 首先看下关系数据库和Redis本质上的区别。 从图中可以看出,关系数据库涉及到硬盘操作,而Redis直接是内存操作。 Redis采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,由C语言编写,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。 完全基
阅读全文
摘要:为啥用Redis 因为传统的关系型数据库如Mysql已经不能适用所有的场景了,比如秒杀的库存扣减,APP首页的访问流量高峰等等, 都很容易把数据库打崩,所以引入了缓存中间件,目 前市面上比较常用的缓存中间件有Redis和Memcached不过中和考虑了他们的优缺点,最后选择了Redis。 Redis
阅读全文
摘要:它实际上是一个很长的二进制向量和一系列随机映射函数。 布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。 面试关联:一般都会在回答缓存穿透,或者海量数据去重这个时候引出来,加分项哟 Bloom Filter 原理 布隆
阅读全文
摘要:数据库基础知识 为什么要使用数据库 什么是SQL? 什么是MySQL? 数据库三大范式是什么 mysql有关权限的表都有哪几个 MySQL的binlog有有几种录入格式?分别有什么区别? 数据类型 mysql有哪些数据类型 引擎 MySQL存储引擎MyISAM与InnoDB区别 MyISAM索引与I
阅读全文
摘要:关于Mybatis插件,大部分人都知道,也都使用过,但很多时候,我们仅仅是停留在表面上,知道Mybatis插件可以在DAO层进行拦截,如打印执行的SQL语句日志,做一些权限控制,分页等功能; 但对其内部实现机制,涉及的软件设计模式,编程思想往往没有深入的理解。 本篇案例将帮助读者对Mybatis插件
阅读全文
摘要:MyBatis简介 MyBatis是什么? ORM是什么 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里? 传统JDBC开发存在的问题 JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的? Mybatis优缺点 MyBatis框架适用场景 Hibernate 和 M
阅读全文
摘要:1. @SpringBootApplication 2. Spring Bean 相关 2.1. @Autowired 2.2. @Component,@Repository,@Service, @Controller 2.3. @RestController 2.4. @Scope 2.5. @C
阅读全文