首页 | 月光中的污点

月光中的污点

云在青天水在瓶

加载中...

文章列表

原创
2023-03-15

简易的多线程下载器

本篇是对 CountDownLoatch 工具类的实际场景运用的简单补充,通过 CountDownLoatch 实现多线程下载器核心功能。 使用多线程对目标资源进行分块下载(设置 Range 请求头)提升下载效率,当所有分块下载完成后,再将所有分块文件按顺序合并成完整的目标文件。 以下为程序运行效果图:
阅读全文
原创
2023-03-15

CountDownLatch 源码详解

本篇的介绍对象是 CountDownLatch,它同样是基于 AQS 之上扩展的一款多线程场景下的工具类,它可以使一个或多个线程等待其他线程各自执行完毕后再执行。 对于 CountDownLatch 理解,我们可以将单次拆开为 CountDown 和 Latch。CountDown 表示倒计时,Latch 表示门闩,当倒计时结束后门闩解除,门就开了。 要完成一项复杂的任务,任务被划分为子任务1和子任务2,3,4...,为了提高执行任务的效率,采用多线程去完成。
阅读全文
原创
2023-03-10

Semaphore 源码详解

在高并发访问的场景下,为了保证项目不被大流量请求的压力影响性能导致项目运行崩溃,常用的解决方案就是限流和服务降级。 本篇介绍 Semaphore, 直译就是信号量,是基于 AQS 扩展的一种多线程并发控制的工具,也就是我们常说的限流工具之一。 Semaphore 通过 permit 来判断线程是否可通行。
阅读全文
原创
2023-03-02

CSS3 之 flex 布局

flex 是 flexible Box 的缩写,意为弹性布局,用来为盒状模型提供最大的灵活性,任何一个容器都可以指定 flex 布局。 采用 flex 布局的元素成为 flex 容器。其所有子元素会自动成为容器成员,成为 flex 项目。 通过给 flex 容器添加 flex 属性来控制 flex 项目的位置和排列方式。
阅读全文
原创
2023-03-01

AQS 源码详解

AQS 是抽象的队列同步器,是用来构建锁或其他同步组件的重量级基础框架及整个 JUC 体系的基石。 下边的组件都是基于 AQS 框架扩展实现的: 虽然这些组件在多线程场景下有不同的作用,但代码中也有相似之处,如都需要管理锁状态,维护阻塞线程,维护唤醒线程。而 AQS 的作用就是将这些相似的、公共的代码封装在一起。
阅读全文
原创
2023-02-21

LockSupport 工具介绍

LockSupport 是用来创建锁和其他同步类的基本线程阻塞原语,是线程等待唤醒机制的一种实现工具类。 等待唤醒机制 是线程中的一种协作机制。多线程之间不单有竞争锁的情况,还有相互协作的场景。比如线程A执行完某一操作需要挂起一段时间,将运行的机会让给线程B,当线程B执行完任务后就唤醒线程A继续做任务。 Java 提供了 3 种等待唤醒机制:
阅读全文
原创
2023-02-21

Thread 状态速查手册

梳理早期与 Thread 状态相关的笔记。 通过查看 Thread 源码,我们可以看到在其类内部定义了线程的状态枚举: Thread 线程大致分为 6 种,即 NEW,RUNNABLE,BLOCKED, WAITING,TIMED_WAITING,TERMINATED。
阅读全文
原创
2023-02-20

CAS 原理新讲

CAS 全程 Compare-And-Swap,它的功能是判断内存中某个位置的值是否为预期值,如果是则更改为新值,这个过程是原子性的。 CAS 是另一个无锁解决方案,更准确的是采用乐观锁技术,实现线程安全的问题。 在设计思想上,CAS 的执行有三个操作数,V-内存值,A-期望值,B-修改成的目标值。当且仅当 V 的值等于 A 时, CAS 通过原子方式用新值 B 来更新 V 的值,否则不会执行任何操作。
阅读全文
原创
2021-08-17

Spring Cloud Alibaba 系列之 Sleuth(链路追踪)

在大型系统的分布式系统中,系统会被拆分成了许多模块。这些模块负责不同的功能,组合成系统,最终可以提供丰富的功能。 在这种架构中,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心,也就意味着这种架构形式也会存在一些问题: 针对上边的问题,网上大牛已给出解决思路:分布式链路追踪(Distributed Tracing)。
阅读全文
原创
2021-08-13

Spring Cloud Alibaba 系列之 Gateway(网关)

Spring Cloud 原先整合 Zuul 作为网关组件,Zuul 由 Netflix 公司提供的,现在已经不维护了。后面 Netflix 公司又出来了一个 Zuul2.0 网关,但由于一直没有发布稳定版本,所以 Spring Cloud 等不及了就自己推出一个网关,已经不打算整合 zuul2.0 了。 Spring Cloud Gateway 是 Spring 公司基于 Spring 5.0, Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。它的目标是替代 Netflix Zuul,其不
阅读全文