文章列表 | 月光中的污点

文章列表

分类: 后端

当前位置: 首页 / 分类 / 后端

Spring Boot3学习之Web篇

要搭建传统 Spring MVC 项目,我们除了需要配置相应的配置文件,还需要在文件中声明包扫描路径,注解驱动,处理器映射器、适配器和视图解析器等相关配置,搭建步骤非常繁琐。 而 Spring Boot 则是通过 JavaConfig 的方式将以前繁琐的配置封装起来,我们只需要引入依赖即可完成相应组件的整合。 使用 Spring Boot 搭建 web 项目,只需要引入如下依赖:

Spring Boot3学习之基础篇

在N年前整理过 Spring Boot 的入门教程,当时还是 1.x 的内容。如今 Spring Boot 已经升级到 3.x 版本,不过版本之间的使用差距不大,此次发布文章仅当作常规知识以及新版本功能的补充。 如果你已经掌握 Spring 和 SpringMVC 知识,但还不熟 Spring Boot 内容的读者,您可以尝试阅读本篇文章,如有不清楚的地方,可以留言评论,笔者看到自会补充说明。 开发环境: jdk >= 17, maven >= 3.6.3

简易的多线程下载器

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

CountDownLatch 源码详解

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

Semaphore 源码详解

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

AQS 源码详解

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

LockSupport 工具介绍

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

CAS 原理新讲

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

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

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

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,其不