摘要: 一、序言 当我们在编写Java应用的时候,很少会注意Java程序是如何被运行的,如何被操作系统管理和调度的。带着好奇心,探索一下Java虚拟机启动过程。 1、素材准备 从Java源代码、Java字节码、Java虚拟机、操作系统四个角度分解启动过程。 public class HelloWorld { 阅读全文
posted @ 2022-05-27 11:10 赛泰先生 阅读(621) 评论(0) 推荐(1) 编辑
摘要: 一、序言 指令重排在单线程环境下有利于提高程序的执行效率,不会对程序产生负面影响;在多线程环境下,指令重排会给程序带来意想不到的错误。 本文对多线程指令重排问题进行复原,并针对指令重排给出相应的解决方案。 二、问题复原 (一)关联变量 下面给出一个能够百分之百复原指令重排的例子。 public cl 阅读全文
posted @ 2022-04-23 11:34 赛泰先生 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 一、序言 在并发编程中,synchronized锁因其使用简单,在线程间同步被广泛应用。下面对其原理及锁升级过程进行探究。 二、如何使用 1、修饰实例方法 当实例方法被synchronized修饰时,通过当前实例调用此方法的所有线程共用一把锁,不同对象调用此方法线程间互不影响。 public cla 阅读全文
posted @ 2022-04-22 10:33 赛泰先生 阅读(548) 评论(1) 推荐(1) 编辑
摘要: 一、序言 本文讲述仅针对 JVM 层次的内置锁,不涉及分布式锁。 锁有多种分类形式,比如公平锁与非公平锁、可重入锁与非重入锁、独享锁与共享锁、乐观锁与悲观锁、互斥锁与读写锁、自旋锁、分段锁和偏向锁/轻量级锁/重量级锁。 下面将配合示例讲解各种锁的概念,期望能够达到如下目标:一是在生产环境中不错误的使 阅读全文
posted @ 2022-04-20 11:31 赛泰先生 阅读(386) 评论(3) 推荐(0) 编辑
摘要: 一、序言 在Web开发中,总有一些接口需要暴露在用户认证前访问,短信发送接口特别是短信验证码注册接口便是其中典型的一类,这类接口具有如下特点: 流量在用户认证之前 流量在用户认证之前,意味着无法获取用户ID等唯一标识符信息对流量限流 手机号未知 手机号未知意味着无法对待发送短信的手机号做精准检测,判 阅读全文
posted @ 2022-04-12 11:42 赛泰先生 阅读(2647) 评论(18) 推荐(5) 编辑
摘要: 一、序言 Java多线程编程线程池被广泛使用,甚至成为了标配。 线程池本质是池化技术的应用,和连接池类似,创建连接与关闭连接属于耗时操作,创建线程与销毁线程也属于重操作,为了提高效率,先提前创建好一批线程,当有需要使用线程时从线程池取出,用完后放回线程池,这样避免了频繁创建与销毁线程。 // 任务 阅读全文
posted @ 2022-04-06 11:48 赛泰先生 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 定时任务使用指南 如果你想做定时任务,有高可用方面的需求,或者仅仅想入门快,上手简单,那么选用它准没错。 定时任务模块是对Quartz框架进一步封装,使用更加简洁。 1、引入依赖 <dependency> <groupId>xin.altitude.cms</groupId> <artifactId 阅读全文
posted @ 2022-04-01 21:16 赛泰先生 阅读(756) 评论(5) 推荐(2) 编辑
摘要: 一、序言 Spring Cache是Spring体系下标准化缓存框架。Spring Cache有如下优势: 缓存品种多 支持缓存品种多,常见缓存Redis、EhCache、Caffeine均支持。它们之间既能独立使用,也能组合使用。 平滑迁移 Spring内部支持的缓存,可实现无缝平滑迁移,无需修改 阅读全文
posted @ 2022-03-29 15:32 赛泰先生 阅读(749) 评论(2) 推荐(1) 编辑
摘要: 一、序言 目前企业级主流使用的Java版本是8,垃圾回收器支持手动修改为G1,G1垃圾回收器是Java 11的默认设置,因此G1垃圾回收器可以用很长时间,现阶段垃圾回收器优化意味着针对G1垃圾回收器优化。 为了简化讨论,下面假设针对4C/16G物理机器进行优化。 二、G1概览 (一)了解G1 1、最 阅读全文
posted @ 2022-03-18 11:00 赛泰先生 阅读(1054) 评论(2) 推荐(0) 编辑
摘要: 一、序言 在并发场景中,当热点缓存Key失效时,流量瞬间打到数据库中,此所谓缓存击穿现象;当大范围的缓存Key失效时,流量也会打到数据库中,此所谓缓存雪崩现象。 当使用分布式行锁时,能够有效解决缓存击穿问题;当使用分布式表锁时,能够解决缓存雪崩问题。实际操作中,分布式表锁不在考虑范围,理由是降低并发 阅读全文
posted @ 2022-03-16 09:43 赛泰先生 阅读(442) 评论(0) 推荐(0) 编辑