摘要:零拷贝原理:在实际应用中,如果我们要把磁盘内容发送到远程服务器上,那么它必须要经过几个拷贝的过程。第一个从磁盘中去读取目标文件的内容拷贝到内核缓冲区第二个CPU控制器把内核缓冲区中的数据拷贝到用户空间的缓冲区。第三个在应用程序中调用write()方法,把用户空间缓冲区中的数据拷贝到内核空间的Sock
阅读全文
摘要:AQS是多线程同步器,它是J.U.C包中多个组件的底层实现,如Lock、CountDownLatch、Semaphore等都用到了AQS. 从本质上来说,AQS提供了两种锁机制,分别是排它锁,和 共享锁。 排它锁,就是存在多线程竞争同一共享资源时,同一时刻只允许一个线程访问该共享资源,也就是多个线程
阅读全文
摘要:https://blog.csdn.net/shenaisi/article/details/81488187 1.显示目录和文件的命令 ls /df /du 2.修改权限归属 Chmod:用于改变指定目录或文件的权限命令。 Chown:用于改变文件拥有属性的命令。 3.创建和删除目录 mkdir
阅读全文
摘要:RocketMQ主要存储文件包括,commitLog、consumeQueue、indexFile,所有主题消息都顺序存储在一个文件中,以确保消息的顺序写;同时,RocketMQ又引入了consumeQueue,每个主题包含多个消费队列,每个消费对了对应一个文件,如下图 RocketMq将所有主题的
阅读全文
摘要:RocketMQ采用了2PC的思想来实现了提交事务消息,同时增加一个补偿逻辑来处理二阶段超时或者失败的消息。
阅读全文
摘要:对于zookeeper的理解可以从分布式系统中三种典型的场景来说第一种是集群管理,在多个节点组成的集群红,为了去保证集群的高可用特性,每个节点都会去冗余一份数据副本,这种情况下需要保证客户端访问集群种,任意一个节点都是最新的数据第二种分布式锁,如何保证跨进程的共享资源的并发安全性,对于分布式系统来说
阅读全文
摘要:生产者:1.同步阻塞的方式发送消息,加上失败重试机制2.异步发送需要重写回调方法,检查发送结果 broker:同步刷盘 ,集群模式下采用同步复制,会等待slave复制完成才返回确认 消费者:offset手动提交
阅读全文
摘要:zookeeper选举机制 第一次启动选举机制 因为各个节点都没有数据,所以依据的选举策略是,serverID进行比较,启动的节点首先给自己投票,然后与其他启动的节点进行通讯,serverid大的获取投票并且超半数才可当选。 非第一次启动选举 1.Epoch大的直接胜出 2.epoch相同,事务id
阅读全文
摘要:spring bean 的生命周期大致可以分为5个阶段,分别是创建前准备、创建实例化、依赖注入、容器缓存、销毁实例第一阶段创建前准备,这个阶段的主要作用,bean在开始加载前要从上下文和一些配置中去解析并查找bean有关的扩展实现,比如像init-method,容器在初始化bean的时候会调用的一个
阅读全文
摘要:MySql性能优化可以分为四个部分第一个是硬件和操作系统层面的优化第二个是架构设计层面优化第三个是MySqL程序配置优化第四个是SQL优化执行优化第一个是硬件和操作系统的优化,从硬件层面来说影响MySQL的的性能因素主要是CPU,可以用内存大小,磁盘读写速度,网络带宽,从操作系统层面来说应用文件句柄
阅读全文
摘要:https://mp.weixin.qq.com/s?__biz=MzIxNTQ3NDMzMw==&mid=2247483670&idx=1&sn=751d84d0ce50d64934d636014abe2023&chksm=979688e4a0e101f2a51d1f06ec75e25c56f89
阅读全文
摘要:CyclicBarrier内部是通过条件队列trip来对线程进行阻塞的,并且其内部维护了两个int型的变量parties和count,parties表示每次拦截的线程数,该值在构造时进行赋值。count是内部计数器,它的初始值和parties相同,以后随着每次await方法的调用而减1,直到减为0就
阅读全文
摘要:CountDownLatch在多线程同步中,通过维护count变量并保证其原子性操作,并通过countDown方法和await()两个方法实现同步功能,首先通过建立CountDownLatch对象,并且传入参数为count的初始值。如果一个线程调用await调用方法,那么线程便进入阻塞,并阻塞队列。
阅读全文
摘要:concurrentHashMap为什么可以提高并发行?ConcurrentHashMap使用索分段技术,将数据存储分成一段一段,然后给每一段配上一把索,当一个线程占用锁访问其中一个段数据的时候,其他段数据还可以被访问。 ConcurrentHashMap 锁机制具体分析(JDK 1.7 VS JD
阅读全文
摘要:1.适用top命令查询进程的cpu,内存状态情况 2.使用jstack查看一个进程中,线程的状态导出 3.使用top 23 -h 查看相应的线程cpu,内存使用情况 4. 死锁的信息都在最下面
阅读全文
摘要:https://www.pudn.com/news/62c28a9c502ed3121a892438.html Spring 控制反转IOC 控制反转IOC: Inversion of Control 是一种解耦设计原则 主要目的是借助第三方,比如Spring IOC容器实现具有依赖关系的对象之间的
阅读全文
摘要:G1垃圾回收器是基于标记整理算法实现,不会产生内存碎片,G1不同于其他的收集器,G1的回收范围是整个Java堆,而其他收集器仅限于新生代和老年代。 与此同时为适应不断扩大的内存和不断增加,降低暂停时间,提高吞吐量。 官方的目标设定在延迟可控的情况下获得尽可能高的吞吐量。 G1是一个并行的回收器,他将
阅读全文
摘要:收集过程: 1.初始标记阶段:所用的用户线程都会短暂停顿,主要任务是标记GC ROOT能够直接关联到对象,一旦标记完成后就会恢复之前的用户线程,由于直接关联的对象比较少,恢复比较快。 2.并发标记阶段:从GC ROOTS直接关联的对象开始遍历整个对象图,标记处全部的垃圾对象,耗时比较长,但是这个过程
阅读全文
摘要:1.serial(复制算法):单线程收集器,它在进行了垃圾收集时,必须停顿所有用户线程。 优点:实现简单高效 缺点:停顿时间长 适用场景:单核的桌面应用。 2.parNew:新生代中多线程版的收集器 回收效率高 3.paralle Scavenge:并行垃圾回收器,指在达到控制的吞吐量的垃圾回收器,
阅读全文
摘要:1.标记清除算法:分为两个阶段标记阶段和清除阶段。首先从根集合进行扫描,标记存活的对象。标记完成后,再扫描整个空间未被标记的对象并进行回收。 不足:1.效率问题,标记和清除效率不高 2.在GC的时候会造成GC停顿,响应延迟 3.由于标记-清除算法,不会对存活的对象进行移动,会导致大量的内存碎片,在需
阅读全文
摘要:检测垃圾的方法? 1.引用计数法:每一个对象都有一个引用计数器,当对象被其他对象所引用的时候,引用计数器就会➕1,不再被引用时则减一 引用计数器的 优点,判断标识效率,回收快, 缺点: 单独的字段存储计数器,额外空间开销。 每次更新计数器伴随加法和减法操作,时间开销大。 存在循环引用问题 2.可达性
阅读全文
摘要:https://www.cnblogs.com/fsmly/p/11020641.html 1.内存泄露问题 ThreadLocal中的ThreadLocalMap的Entry中的key存储的是ThreadLocal的对象的弱引用,当在其他地方不再引用它的是时候会被释放,key会null,但是val
阅读全文