01 2022 档案

摘要:1.概述 Kafka的特性之一就是高吞吐率,但是Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,但是Kafka即使是运行在普通的服务器上,Kafka也可以轻松支持每秒百万级的写入请求,超过了大部分的消息中间件,这种特性也使得Kafka在日志处理等海量数据场景广泛应用。 阅读全文
posted @ 2022-01-27 23:18 ZT丶 阅读(166) 评论(0) 推荐(0) 编辑
摘要:1.基础概念 Kafka集群以Topic形式来管理Record,每一个Record属于一个Topic。每个Topic底层都会对应一组分区日志文件,用于持久化Topic中的Record。同时在Kafka集群中,Topic的每一个日志的分区都一定会有1个Borker担当该分区的Leader,其他的Bro 阅读全文
posted @ 2022-01-27 23:17 ZT丶 阅读(95) 评论(0) 推荐(0) 编辑
摘要:1.kafka简介 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以收集并处理用户在网站中的所有动作流数据以及物联网设备的采样信息。 2.什么是消息队列 消息队列是一种在分布式和大数据开发中不可或缺的中 阅读全文
posted @ 2022-01-27 23:15 ZT丶 阅读(42) 评论(0) 推荐(0) 编辑
摘要:1.简介 在JDK1.6中的java.util.concurrent的子包locks中引了LockSupport这个API,LockSupport是一个比较底层的工具类,用来创建锁和其他同步工具类的基本线程阻塞原语。java锁和同步器框架的核心 AQS: AbstractQueuedSynchron 阅读全文
posted @ 2022-01-24 23:43 ZT丶 阅读(79) 评论(0) 推荐(0) 编辑
摘要:1.概念 Exchanger用于线程间进行通信、数据交换。Exchanger提供了一个同步点exchange方法,两个线程调用exchange方法时,无论调用时间先后,两个线程会互相等到线程到达exchange方法调用点,此时两个线程可以交换数据,将本线程产出数据传递给对方。 2.使用 import 阅读全文
posted @ 2022-01-24 23:42 ZT丶 阅读(62) 评论(0) 推荐(0) 编辑
摘要:1.概念 读写锁的概念其实就是共享锁和排他锁,读锁就是共享锁,写锁就是排他锁。 2.使用 import java.util.Random; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReadWr 阅读全文
posted @ 2022-01-24 23:42 ZT丶 阅读(54) 评论(0) 推荐(0) 编辑
摘要:1.概念 Phaser它就像是结合了CountDownLatch和CyclicBarrier,翻译一下叫阶段。Phaser是按照不同的阶段来对线程进行执行,就是它本身是维护着一个阶段这样的一个成员变量,当前我是执行到哪个阶段,是第0个,还是第1个阶段啊等等,每个阶段不同的时候这个线程都可以往前走,有 阅读全文
posted @ 2022-01-24 23:41 ZT丶 阅读(112) 评论(0) 推荐(0) 编辑
摘要:1.概念 Semaphore是计数信号量。Semaphore管理一系列许可。每个acquire方法阻塞,直到有一个许可证可以获得然后拿走一个许可证;每个release方法增加一个许可,这可能会释放一个阻塞的acquire方法。然而,其实并没有实际的许可这个对象,Semaphore只是维持了一个可获得 阅读全文
posted @ 2022-01-24 23:40 ZT丶 阅读(36) 评论(0) 推荐(0) 编辑
摘要:1.概念 循环栅栏,一个可循环利用的屏障,它的作用就是会让所有线程都等待完成后才会继续下一步行动。举个例子,就像生活中我们会约朋友们到某个餐厅一起吃饭,有些朋友可能会早到,有些朋友可能会晚到,但是这个餐厅规定必须等到所有人到齐之后才会让我们进去。这里的朋友们就是各个线程,餐厅就是 CyclicBar 阅读全文
posted @ 2022-01-24 23:39 ZT丶 阅读(37) 评论(0) 推荐(0) 编辑
摘要:1.ReentrantLock简介 JDK中独占锁的实现除了使用关键字synchronized外还可以使用ReentrantLock。虽然在性能上ReentrantLock和synchronized没有什么区别,但ReentrantLock相比synchronized而言功能更加丰富,使用起来更为灵 阅读全文
posted @ 2022-01-24 23:38 ZT丶 阅读(82) 评论(0) 推荐(0) 编辑
摘要:1.概念 CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。 CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。每一个线程完成自己任务后 阅读全文
posted @ 2022-01-24 23:38 ZT丶 阅读(38) 评论(0) 推荐(0) 编辑
摘要:1.LongAdder简介 LongAdder效率高的原因 LongAdder的内部做了一个分段锁,类似于分段锁的概念。在它内部的时候,会把一个值放到一个数组里,比如说数组长度是4,最开始是0,1000个线程,250个线程锁在第一个数租元素里,以此类推,每一个都往上递增算出来结果在加到一起。 阅读全文
posted @ 2022-01-24 23:37 ZT丶 阅读(590) 评论(0) 推荐(0) 编辑
摘要:1.Java中的8大原子操作 lock:主内存,标识变量为线程独占 unlock:主内存,解锁线程独占变量 read:主内存,读取内存到线程缓存(工作内存) load:工作内存,read后的值放入线程本地变量副本 use:工作内存,传值给执行引擎 assign:工作内存,执行引擎结果赋值给线程本地变 阅读全文
posted @ 2022-01-23 22:38 ZT丶 阅读(56) 评论(0) 推荐(0) 编辑
摘要:1. 基本原理 CAS(Compare-And-Swap)指令是并行程序设计最基础的基石。 有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。CAS是一种典型的乐观锁, 假设不会发生并发冲突,只在提交操作时检查是否违反数据完整 阅读全文
posted @ 2022-01-23 22:24 ZT丶 阅读(35) 评论(0) 推荐(0) 编辑
摘要:1.synchronized用法 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象 修改一个静态的方法,其作用的范围是整个静态方法,作用 阅读全文
posted @ 2022-01-23 22:20 ZT丶 阅读(82) 评论(0) 推荐(0) 编辑
摘要:1. 前言 Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。但由于Unsafe类使Java语言拥有了类似C语言指针一样操作内 阅读全文
posted @ 2022-01-23 00:11 ZT丶 阅读(158) 评论(0) 推荐(0) 编辑
摘要:1.JMM内存模型 JMM结构规范 JMM规定了所有的变量都存储在主内存(Main Memory)中。每个线程还有自己的工作内存(Working Memory),线程的工作内存中保存了该线程使用到的变量的主内存的副本拷贝。 线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主 阅读全文
posted @ 2022-01-21 14:54 ZT丶 阅读(209) 评论(0) 推荐(0) 编辑
摘要:1.线程的中断(interrupt) public void interrupt() //t.interrupt() 打断t线程(设置t线程某给标志位f=true,并不是打断线程的运行) public boolean isInterrupted() //t.isInterrupted() 查询打断标 阅读全文
posted @ 2022-01-19 23:01 ZT丶 阅读(48) 评论(0) 推荐(0) 编辑
摘要:1. 线程的6种状态 1.初始(NEW):新创建了一个线程对象,但还没有调用start()方法。 2.运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态 阅读全文
posted @ 2022-01-19 17:12 ZT丶 阅读(63) 评论(0) 推荐(0) 编辑
摘要:1.什么是G1 G1是一种服务端应用使用的垃圾收集器,目标是用在多核、大内存的机器上,它在大多数情况下可以实现指定的GC暂停时间,同时还能保持较高的吞吐量 参考链接:https://www.oracle.com/technical-resources/articles/java/g1gc.html 阅读全文
posted @ 2022-01-17 23:35 ZT丶 阅读(1990) 评论(0) 推荐(0) 编辑
摘要:1.PS GC日志详解 total = eden + 1个survivor eden space 5632K, 94% used [0x00000000ff980000,0x00000000ffeb3e28,0x00000000fff00000) 后面的内存地址指的是,起始地址,使用空间结束地址,整 阅读全文
posted @ 2022-01-17 17:07 ZT丶 阅读(128) 评论(0) 推荐(0) 编辑
摘要:1.了解JVM常用命令行参数 HotSpot参数分类 标准: - 开头,所有的HotSpot都支持 非标准:-X 开头,特定版本HotSpot支持特定命令 不稳定:-XX 开头,下个版本可能取消 java -XX:+PrintFlagsFinal | grep xxx 找到对应的参数 java -X 阅读全文
posted @ 2022-01-17 16:27 ZT丶 阅读(859) 评论(0) 推荐(0) 编辑
摘要:1.什么是三色标记 黑色:自身和成员变量均已标记完成 灰色:自身被标记完成,成员变量未被标记 白色:未被标记的对象(垃圾) 2.漏标 什么是漏标:将原来存活的对象,但是由于没有遍历到当作垃圾回收了 产生漏标的原因:1、黑色对象指向了白色对象;2、灰色对象取消了对白色对象的引用。就会产生白色对象被漏标 阅读全文
posted @ 2022-01-17 15:10 ZT丶 阅读(200) 评论(0) 推荐(0) 编辑
摘要:1.GC常用参数 -Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间 -XX:+UseTLAB 使用TLAB,默认打开 -XX:+PrintTLAB 打印TLAB的使用情况 -XX:TLABSize 设置TLAB大小 -XX:+DisableExplictGC System.gc 阅读全文
posted @ 2022-01-17 13:40 ZT丶 阅读(356) 评论(0) 推荐(0) 编辑
摘要:1.什么是CMS CMS主要设计目标:低停顿时间 CMS全称ConcurrentMarkSweep,作用于老年代,并发标记清除,并发是指垃圾回收和应用程序同时运行,这样的目的是为了降低STW的时间(200ms) CMS垃圾回收器基于标记-清除算法实现,那么使用该算法的最大缺点也显而易见——大量的内存 阅读全文
posted @ 2022-01-16 23:55 ZT丶 阅读(1632) 评论(1) 推荐(0) 编辑
摘要:1.什么是垃圾 没有任何引用指向的一个对象或者多个对象(循环引用) 2.如何定位垃圾 引用计数(ReferenceCount) 就是对每个对象都追踪指向它们的引用数,如果引用数为0,就说明这个对象是内存垃圾了。但是这个方法存在缺陷,如果多个对象之间存在循环引用,但是这些对象没有被外部引用,这些对象实 阅读全文
posted @ 2022-01-12 23:16 ZT丶 阅读(323) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
主题色彩