随笔分类 - Interview
摘要:RabbitMQ 问题收集 RabbitMQ可靠性 发送方确认模式 将信道设置成 confirm 模式(发送方确认模式),则所有在信道上发布的消息都会被指派一个唯一的 ID。 一旦消息被投递到目的队列后,或者消息被写入磁盘后(可持久化的消息),信道会发送一个确认给生产者(包含消息唯一 ID)。 如果
阅读全文
摘要:MQ问题收集 MQ的优缺点 优点: 异步处理:例如短信通知、终端状态推送、App推送、用户注册等 数据同步:业务数据推送同步 重试补偿:记账失败重试 系统解耦:通讯上下行、终端异常监控、分布式事件中心 流量消峰:秒杀场景下的下单处理 发布订阅:HSF的服务状态变化通知、分布式事件中心 高并发缓冲:日
阅读全文
摘要:JAVA 双亲委派与类加载器 双亲委派 虚拟机在加载类的过程中需要使用类加载器进行加载,而在Java中,类加载器有很多,那么当JVM想要加载一个.class文件的时候,到底应该由哪个类加载器加载呢? 这就不得不提到”双亲委派机制”。 首先,我们需要知道的是,Java语言系统中支持以下4种类加载器:
阅读全文
摘要:【转载】 基于Zookeeper的分布式锁与领导选举 原创文章,转载请务必将下面这段话置于文章开头处。 本文转发自技术世界,原文链接 http://www.jasongj.com/zookeeper/distributedlock/ Zookeeper特点 Zookeeper节点类型 如上文《Zoo
阅读全文
摘要:【转载】Zookeeper架构及FastLeaderElection机制 本文介绍了Zookeeper的架构,并组合实例分析了原子广播(ZAB)协议的原理,包括但不限于Zookeeper的读写流程,FastLeaderElection算法的原理,ZAB如何保证Leader Failover过程中的数
阅读全文
摘要:秒杀商品设计 前端限制 前端控制,不能重复点击 精简sql 典型的一个场景是在进行扣减库存的时候,传统的做法是先查询库存,再去update。 这样的话需要两个sql,而实际上一个sql我们就可以完成的。 可以用这样的做法: update miaosha_goods set stock =stock-
阅读全文
摘要:Elasticsearch 问题收集 Mac端安装 安装elasticsearch 安装elasticsearch ❯ brew install elasticsearch Running `brew update --auto-update`... ==> Auto-updated Homebre
阅读全文
摘要:JAVA并发-Thread.sleep(0)深入理解 Thread.Sleep(0)的作用,就是“触发操作系统立刻重新进行一次CPU竞争”。 通过调用 Thread.sleep(0) 的目的是为了让 GC 线程有机会被操作系统选中,从而进行垃圾清理的工作。它的副作用是,可能会更频繁地运行 GC,毕竟
阅读全文
摘要:free 命令常用参数 free 命令用来查看内存使用状况,常用参数如下: -h human-readable 格式打印 -w 把 cache & buffer 分开打印 -t show total for RAM + swap free 结果指标剖析 centos6中,cache,buffers是
阅读全文
摘要:零拷贝是网络编程的关键, 很多性能优化都离不开 数据角度分析 : 在零拷贝机制中 , 整个数据在内存中只有一份数据 , 非零拷贝机制中 , 内核缓冲区 , 用户缓冲区 , Socket 缓冲区 , 各有一份数据 ; 零拷贝指的是没有 CPU 拷贝 , 都是 DMA ( 直接内存访问 ) 拷贝 ; 零
阅读全文
摘要:Kafka 问题收集 Kafka关键字名词 ISR 所有与leader副本保持一定程度同步的副本(包括leader副本在内)组成 ISR (In Sync Replicas)。 ISR 集合是 AR 集合的一个子集。 AR 分区中的所有副本统称为 AR (Assigned Replicas) OSR
阅读全文
摘要:Nacos,Ribbon,Feign 相关问题收集 Nacos原理图 Nacos注册中心 Nacos的服务注册表结构是怎样的? Nacos采用了数据的分级存储模型,最外层是Namespace,用来隔离环境。然后是Group,用来对服务分组。接下来就是服务(Service)了,一个服务包含多个实例,但
阅读全文
摘要:简介 Java 程序运行时,JVM 会将 .class 字节码转换成机器能够识别的指令,指令转换过程会产生耗时,延缓程序的运行速度,为了解决这种问题出现了「JIT(即时编译)」技术。JIT 主要有两个功能: 缓存「Hot Spot Code(热点代码:频繁运行的方法或代码块)」对应的机器指令,方便下
阅读全文
摘要:Zookeeper 问题收集 ZK 明明有了有序的指令队列,为什么还要用 zxid来辅助排序? 没理解这题目 ZAB 协议要求保证事务的顺序,因此必须将每一个事务按照 ZXID 进行先后排序然后处理 ZNode文件系统 不同于Linux,分为文件夹和文件,znode文件系统中只有znode节点(既可
阅读全文
摘要:JVM 三色标记 增量更新 原始快照 三色标记法 2.1 基本算法 要找出存活对象,根据可达性分析,从GC Roots开始进行遍历访问,可达的则为存活对象: 最终结果:A/D/E/F/G 可达 我们把遍历对象图过程中遇到的对象,按“是否访问过”这个条件标记成以下三种颜色: 白色:尚未访问过。 黑色:
阅读全文
摘要:基本概念 指针碰撞 一般情况下,JVM的对象都放在堆内存中(发生逃逸分析除外)。当类加载检查通过后,Java虚拟机开始为新生对象分配内存。如果Java堆中内存是绝对规整的,所有被使用过的的内存都被放到一边,空闲的内存放到另外一边,中间放着一个指针作为分界点的指示器,所分配内存仅仅是把那个指针向空闲空
阅读全文
摘要:Mysql问题收集 主从同步流程 异步模式 主节点 1、当主节点上进行 insert、update、delete 操作时,会按照时间先后顺序写入到 binlog 中; 2、当从节点连接到主节点时,主节点会创建一个叫做 binlog dump 的线程; 3、一个主节点有多少个从节点,就会创建多少个 b
阅读全文
摘要:Redis 问题收集 原子性操作命令 set命令 EX second :设置键的过期时间为 second 秒。 SET key value EX second 效果等同于 SETEX key second value 。 PX millisecond :设置键的过期时间为 millisecond 毫
阅读全文
摘要:1.Future 线程的保护性暂停 一个线程等待另一个线程的执行结果 多线程设计模式 多线程设计模式之保护性暂停模式 2.volatile在DCL(单例模式)中应用,代码重排序,双重锁定 public class Singleton { private static volatile Singlet
阅读全文
摘要:JAVA 对象头分析及Synchronized锁 对象内存布局 HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。 从上面的这张图里面可以看出,对象在内存中的结构主要包含以下几个部分: Mark
阅读全文