Java 线程同步组件 CountDownLatch 与 CyclicBarrier 原理分析

1.简介 在分析完 AbstractQueuedSynchronizer (以下简称 AQS)和 ReentrantLock 的原理后,本文将分析 java.util.concurrent 包下的两个线程同步组件 CountDownLatch 和 CyclicBarrier 。这两个同步组件比较常用,也经常被放在一起对比。通过分析这两个同步组件,可使我们对…

hello hello 发布于 2024-04-22

Java 重入锁 ReentrantLock 原理分析

Java 重入锁 ReentrantLock 原理分析 1.简介 可重入锁 ReentrantLock 自 JDK 1.5 被引入,功能上与 synchronized 关键字类似。所谓的可重入是指,线程可对同一把锁进行重复加锁,而不会被阻塞住,这样可避免死锁的产生。ReentrantLock 的主要功能和 synchronized…

hello hello 发布于 2024-04-22

AbstractQueuedSynchronizer 原理分析 – Condition 实现原理

1. 简介 Condition 是一个接口,AbstractQueuedSynchronizer 中的 ConditionObject 内部类实现了这个接口。 Condition 声明了一组 等待/通知 的方法,这些方法的功能与 Object 中的 wait/notify/notifyAll 等方法相似。这两者相同的地方在于,它们所提供的 等待/通知…

hello hello 发布于 2024-04-22

Flink 流处理程序编程模型

Apache Flink 是一个流处理框架,用于实时数据处理和流式计算。它可以处理大规模数据流,并提供低延迟和高吞吐量。Flink 支持各种数据源和接口,如 Kafka、HDFS、TCP 流等。它还提供了丰富的数据处理功能,如窗口操作、状态管理、事件时间语义等。Flink…

hello hello 发布于 2024-04-15

了解Java中的Netty

作为一个学Java的,如果没有研究过Netty,那么你对Java语言的使用和理解仅仅停留在表面水平,会点SSH,写几个MVC,访问数据库和缓存,这些只是初等Java程序员干的事。如果你要进阶,想了解Java服务器的深层高阶知识,Netty绝对是一个必须要过的门槛。…

hello hello 发布于 2024-04-11

Java Bitmap 简介

简介 Bitmap(位图)是一种简单且高效的数据结构,用于存储大量的布尔值(例如,集合中某个元素是否存在)。Bitmap通过将每个布尔值表示为一个位,从而实现了高效的内存使用和快速的查询性能。本文将详细介绍Bitmap的原理、应用场景和在Java中的使用方法。 Bitmap原理…

hello hello 发布于 2024-04-11

Java Lambda表达式介绍

Lambda 表达式是 Java 8 引入的一种新特性,它可以让我们更加简洁地编写代码,提高代码的可读性和可维护性。在这篇文章中,我们将详细讨论 Lambda 表达式的用处以及如何使用。 一. 什么是 Lambda 表达式 Lambda 表达式是一种匿名函数,它没有名称,但它可以像普通函数一样接收参数和返回值。Lambda…

hello hello 发布于 2024-04-11

布隆过滤器介绍

在程序的世界中,布隆过滤器是程序员的一把利器,利用它可以快速地解决项目中一些比较棘手的问题。如网页 URL 去重、垃圾邮件识别、大集合中重复元素的判断和缓存穿透等问题。 布隆过滤器(Bloom Filter)是 1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。…

hello hello 发布于 2024-04-11

Java 8 内存管理原理解析及内存故障排查实践

介绍Java8虚拟机的内存区域划分、内存垃圾回收工作原理解析、虚拟机内存分配配置,介绍各垃圾收集器优缺点及场景应用、实践内存故障场景排查诊断,方便读者面临内存故障时有一个明确的思路和方向。 一、背景 Java是一种流行的编程语言,可以在不同的操作系统上运行。它具有跨平台、面向对象、自动内存管理等特点,Java程序在运行时需要使用内存来存储数据和程序状态。…

hello hello 发布于 2024-04-11

HyperLogLog算法Java实现

HyperLogLog (HLL) 算法经常在数据库中被用来统计某一字段的基数即Distinct Value(DV), 可以使用固定大小的字节计算任意大小的DV。 基数就是指一个集合中不同值的数目,比如[1,2,3,8]的基数就是4,[1,2,3,8,2]的基数还是4,因为2重复了。实际场景中, HLL常用于统计网站或者APP的UV。 Maven…

hello hello 发布于 2024-04-11
上一页 下一页