刷新
hot100之栈

博主头像 有效的括号(020) 跳过 最小栈(155) class MinStack { private final Deque<int[]> stack = new ArrayDeque<>(); public MinStack() { stack.addLast(new int[]{0, Integer. ...

Countdownlatch和Cylibarrir

博主头像 -CoderOilStation Countdownlatch和Cylibarrir 分布式集群和多线程高并发会生成共享数据高性能的操作风险。使用安全的数据结构基于组件去模块开发。线程是一种程序调用单元。线程使用指针连接程序。程序运行资源调度提供应用逻辑单元服务。数据传输使用特殊数据结构transf ...

用好 JUnit 5 的高级特性:提升单测效率和质量

博主头像 写在前面 在当今的软件开发实践中,单元测试已成为保障代码质量的必备环节。许多团队已经积累了一定的单元测试经验,能够编写基本的测试用例来验证功能逻辑。然而,当我们面对复杂的业务场景时,仅靠基础的JUnit功能往往会导致测试代码冗长、结构混乱,甚至出现大量重复代码。 作为最新版本的Java测试框架,JU ...

几分钟了解下java虚拟机--04

博主头像 方法内联 它的基本思想是在调用某个方法时,不通过跳转指令去执行该方法的代码,而是直接将该方法的代码复制到调用点处。这样可以减少方法调用的开销,包括减少函数调用和返回的指令执行时间,以及减少堆栈操作 方法内联能够触发更多的优化。通常而言,内联越多,生成代码的执行效率越高。然而,对于即时编译器来说 ...

hot100之二分查找

博主头像 搜索插入位置(035) class Solution { public int searchInsert(int[] nums, int target) { int n = nums.length; int lef = -1; int rig = n; while(lef+1 < rig){ int ...

Spring Boot 启动优化实践

博主头像 本文系统性分析并优化了一个Spring Boot项目启动耗时高达 280 秒的问题。通过识别瓶颈、优化分库分表加载逻辑、异步初始化耗时任务等手段,最终将启动耗时缩短至 159 秒,提升近 50%。文章涵盖启动流程分析、性能热点识别、异步初始化设计等关键技术细节,适用于大型Spring Boot项目的... ...

JVM内存结构33连问

博主头像 JVM内存结构分为5大区域,程序计数器、虚拟机栈、本地方法栈、堆、方法区。 程序计数器是什么? 特点: 线程私有 CPU会为每个线程分配时间片,当当前线程的时间片使用完以后,CPU就会去执行另一个线程中的代码 程序计数器是每个线程所私有的,当另一个线程的时间片用完,又返回来执行当前线程的代码时,通过 ...

好多分钟了解下java虚拟机--03

博主头像 垃圾回收 引用计数法和可达性分析 引用计数法 即记录对象的 reference count 若≠0则保留 a, b对象相互引用, 不可回收, 造成内存泄露 可达性分析(JVM主流使用) 从GC Root出发的树状结构 若对象不可达则回收 GC Roots 包括(但不限于)如下几种: Java ...

SpringBoot读取Resources下的文件

博主头像 SpringBoot读取Resources下的文件 背景 在开发时候遇到需要通过 Resources 目录下某个 excel 文件作为模板生成文件。但遇到 POI 读取文件的时候发生了 No valid entries or contents found, this is not a valid 0 ...

hot100之回溯下

博主头像 单词搜索(079) class Solution { int m, n; public boolean exist(char[][] board, String word) { m = board.length; n = board[0].length; char[] words = word.to ...

几分钟了解下java虚拟机--02

博主头像 几分钟应该看不完,私密马赛, 俺是标题党 既然来了, 看看吧, 球球你了 Java类加载器 类的生命周期和加载过程 加载 加载所有的.class文件/jar文件/网络流 →字节流 (JVM 与java.lang.classLoader协作) 存储于Metaspace/Method Area 校验 确 ...

BigDecimal类型转换成Integer类型

博主头像 在 Java 里,若要把BigDecimal类型转换为Integer类型,可借助intValue()或者intValueExact()方法。下面为你介绍这两种方法的具体使用以及它们之间的差异。 1. 采用intValue()方法(不进行溢出检查) 这种方法会把BigDecimal转换为int基本类型 ...

几分钟了解下java虚拟机--01

博主头像 JDK, JRE, JVM的关系 ⚙ 解释器: 逐行转换字节码为机器码 即时编译器(JIT):将热点代码(经常执行的代码段)编译成高效的本地机器码,并缓存起来以供后续直接执行 Just-In-Time Compiler 就范围来说,JDK > JRE > JVM: JDK = JRE + 开发 ...

hot100之回溯上

博主头像 全排列(046) class Solution { List<List<Integer>> res = new ArrayList<>(); public List<List<Integer>> permute(int[] nums) { int n = nums.length; List<Inte ...

你了解CAS吗?有什么问题吗?如何解决?

博主头像 什么是CAS? CAS全称Compare And Swap,比较与交换,是乐观锁的主要实现方式。CAS在不使用锁的情况下实现多线程之间的变量同步。ReentrantLock内部的AQS和原子类内部都使用了CAS。 CAS算法涉及到三个操作数: 需要读写的内存值V。 进行比较的值A。 要写入的新值B。 ...

Spring Cloud Gateway实现分布式限流和熔断降级

博主头像 小伙伴们,你们好呀!我是老寇!一起学习学习gateway限流和熔断降级 一、限流 思考:为啥需要限流? 在一个流量特别大的业务场景中,如果不进行限流,会造成系统宕机,当大批量的请求到达后端服务时,会造成资源耗尽【CPU、内存、线程、网络带宽、数据库连接等是有限的】,进而拖垮系统。 1.常见限流算法 ...

hot100之图论

博主头像 岛屿数量(200) class Solution { public int numIslands(char[][] grid) { int res = 0; int m = grid.length; int n = grid[0].length; for (int i = 0; i < m ; i+ ...

如何免费给PDF加页码?一款强大的工具推荐!

博主头像 前言 大家好,我是小徐啊。我们在开发Java应用的时候,经常是需要和PDF一起来来使用的。 有的时候,我们的PDF是没有页码的,我们想要给PDF加上页码,该怎么做呢?今天,小徐就来介绍下如何给PDF加上页码,完全免费,一款强大的工具推荐! 如何免费给PDF加页码?一款强大的工具推荐! 首先,我们打开 ...

<1···222324···50>