面试
文章平均质量分 84
面试相关内容
LiZhen798
软件研发工程师
语言:Java,Go
展开
-
分布式事务的几种实现方式
两阶段提交(2PC)两阶段提交协议是协调所有分布式原子事务参与者,并决定提交或取消(回滚)的分布式算法。(1)协议参与者在两阶段提交协议中,系统一般包含两类机器(或节点):一类为协调者(coordinator),通常一个系统中只有一个;另一类为事务参与者(participants,cohorts或workers),一般包含多个,在数据存储系统中可以理解为数据副本的个数。协议中假设每个节点都会记录写前日志(write-ahead log)并持久性存储,即使节点发生故障日志也不会丢失。协议中同时假设原创 2021-03-31 20:15:00 · 1302 阅读 · 0 评论 -
分布式锁代码分析
业务后台的分布式锁核心代码如下:【问题分析】 1.在正常情况下,该段代码逻辑没用问题 2.但在网络发生抖动的情况下,可能导致用户首次上锁成功,再次上锁失败: a.调用tryLock b.运行 Long number =redis.incr(lockKey) 成功 c.网络抖动 d.运行redis.expire() 抛出网络异常,锁永远不会失效;unLock()将无法解锁,tryLock()也将失败。3.该问题发...原创 2021-03-25 17:00:19 · 136 阅读 · 0 评论 -
InnoDB锁问题(2)
目录5. Next-Key锁6 恢复和复制的需要,对InnoDB锁机制的影响7. InnoDB在不同隔离级别下的一致性读及锁的差异8. 什么时候使用表锁9. 关于死锁书接上文:5. Next-Key锁当我们用范围条件而不是相等条件检索数据,并请求共享或排他锁时,InnoDB会给符合条件的已有数据记录的索引项加锁;对于键值在条件范围内但并不存在的记录,叫做“间隙(GAP)”,InnoDB也会对这个“间隙”加锁,这种锁机制就是所谓的间隙锁(Next-Key锁)。举例来说,假如原创 2021-03-24 17:20:32 · 221 阅读 · 0 评论 -
InnoDB锁问题(1)
目录0. 序1. 基础知识1.1 事务(Transaction)及其ACID属性1.2 并发事务处理带来的问题1.3 事务隔离级别2. 获取InnoDB行锁争用情况3. InnoDB的行锁模式及加锁方法4. InnoDB行锁实现方式4.1在不通过索引条件查询时,InnoDB会锁定表中的所有记录4.2查询同一个索引值的不同记录时会出现锁冲突4.3可以通过不同索引锁不同行,但通过多个索引锁定同一行会产生锁冲突4.4需要检查实际执行SQL时是否用到了索引0. 序原创 2021-03-24 17:14:18 · 770 阅读 · 0 评论 -
分布式系统全局唯一ID的几种实现方式
现如今可谓是微服务、分布式、IoT(物联网)横行的时代,作为一名开发者始终还是要保持一定的危机意识,特别是在日常的项目开发中,若是有机会接触到一些关于微服务、分布式下的应用场景,应当硬着头皮、排除万难,主动应承下来上去大干一场;这期间不管结果如何,积累下来的经验将会让自己受益匪浅;而本文要介绍的“分布式全局唯一ID”便是一种典型的分布式应用场景!!!话不多说,咱们直接进入正题~~~说起这个全局唯一ID,你可能会第一时间想到“数据库的自增主键”、“UUID”、“雪花算法”等等,更有甚者,还能说出一...原创 2021-03-23 20:16:41 · 708 阅读 · 0 评论 -
MySQL日志系统:redo log、binlog、undo log 区别与作用
日志系统主要有redo log(重做日志)和binlog(归档日志)。redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志(不是所有)自然有些重复(但两者记录的格式不同)。图来自极客时间的mysql实践,该图是描述的是MySQL的逻辑架构。redo log日志模块redo log是InnoDB存储引擎层的日志,又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。在实例和转载 2021-03-23 19:54:16 · 143 阅读 · 0 评论 -
一致性哈希算法的问题
本文将从如下三个方面探探一致性哈希算法一致性哈希算法经典实用场景 一致性哈希算法通常不适合用于服务类负载均衡 面试应对之策1、一致性哈希算法经典使用场景在数据库存储领域如果单表数据量很大,通常会采用分库分表,同样在缓存领域同样需要分库,下面以一个非常常见的Redis分库架构为例进行阐述。将上述3个Redis节点称之为分片,每一个节点存储部分数据,期间需要使用负载均衡算法,将数据尽量分摊到各个节点,充分发挥分布式的优势,提升系统缓存访问的性能。在分布缓存领域,对数据存在新增与..转载 2021-03-22 18:02:12 · 380 阅读 · 0 评论 -
Mysql的锁相关的知识
一、数据库的锁和事务的隔离级别行锁(Record lock)单条索引记录上加锁,record lock锁住的永远是索引,而非记录本身,即使该表上没有任何索引,那么innodb会在后台创建一个隐藏的聚集主键索引,那么锁住的就是这个隐藏的聚集主键索引。所以说当一条sql没有走任何索引时,那么将会在每一条聚集索引后面加X锁,这个类似于表锁,但原理上和表锁应该是完全不同的。间隙锁(Gap lock)在索引记录之间的间隙中加锁,或者是在某一条索引记录之前或者之后加锁,并不包括该索引记录本身。ga原创 2021-03-18 17:24:15 · 119 阅读 · 0 评论 -
LRU算法四种实现方式介绍
LRU全称是LeastRecently Used,即最近最久未使用的意思。LRU算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。也就是说,当限定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。实现LRU1. 用一个数组来存储数据,给每一个数据项标记一个访问时间戳,每次插入新数据项的时候,先把数组中存在的数据项的时间戳自增,并将新数据项的时间戳置为0并插入到数组中。每次访问数组中的数据项的时候,将被访问的数据项的时间戳置为0。当数组空间已...转载 2021-03-17 20:40:25 · 2717 阅读 · 0 评论 -
为什么@Transactional加在private上无效(源码)
1. 先找到这个注解:2. 会自动加载这个类3. 默认为mode = PROXY, 进入这个类4. ProxyTransactionManagementConfiguration 类5. 看TransactionInterceptor 类6. invokeWithinTransaction 方法7. 发现没有找到注入的类8. 找到父类9. 找到实现方法10. 看到对目标方法是public的校验11. 得出结果,为什么@Transactional加在原创 2021-03-17 20:29:31 · 1567 阅读 · 0 评论 -
Spring @Transactional踩坑记
目录@Transactional踩坑记总述踩坑记1. 多数据源2. 内部调用填坑总结参考链接@Transactional踩坑记总述 Spring在1.2引入@Transactional注解, 该注解的引入使得我们可以简单地通过在方法或者类上添加@Transactional注解,实现事务控制。 然而看起来越是简单的东西,背后的实现可能存在很多默认规则和限制。而对于使用者如果只知道使用该注解,而不去考虑背后的限制,就可能事与愿违,到时候线上出了问题可能根本都找不出啥原因转载 2021-03-17 20:25:09 · 296 阅读 · 0 评论 -
Redis和Zookeeper实现分布式锁
Redis实现分布式锁Redis分布式锁实现的三个核心要素:1.加锁最简单的方法是使用setnx命令。key是锁的唯一标识,按业务来决定命名,value为当前线程的线程ID。比如想要给一种商品的秒杀活动加锁,可以给key命名为 “lock_sale_ID” 。而value设置成什么呢?我们可以姑且设置成1。加锁的伪代码如下: setnx(key,1)当一个线程执行setnx返回1,说明key原本不存在,该线程成功得到了锁,当其他线程执行setnx返回0,说明key已经存在,该线程抢...原创 2021-03-09 17:36:57 · 477 阅读 · 0 评论 -
MySQL字段类型转换引发的索引失效
概述最近发现一个有趣的SQL优化场景,分享一下测试数据表结构CREATE TABLE `dateindex_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `t1` varchar(100) DEFAULT NULL, `t2` text, `t2_sub` text, `t3` varchar(50) DEFAULT NULL, `url` varchar(100) DEFAULT NULL, `t4` varcha转载 2020-05-14 19:38:49 · 1412 阅读 · 0 评论 -
记录一次壮烈牺牲的阿里巴巴面试
作者:raledong来自:https://segmentfault.com/a/1190000013329013前言今天本是一个阳光明媚,鸟语花香的日子。于是我决定在逛街中感受春日的阳光~结果晚上七点的时候,蚂蚁金服后端大佬来了电话,要进行一轮的技术面试。我一脸黑人问号???现在的面试都流行突袭吗?于是我的第一次面试之旅,就此壮烈的展开。自我介绍首先呢,大佬让我...转载 2019-03-27 15:57:55 · 238 阅读 · 0 评论