G1和CMS垃圾回收器的区别
一、核心设计目标
CMS:尽可能减少STW(Stop-The-World)时间,实现与用户线程的高并发。
G1:兼顾低延迟和高吞吐量,在大内存场景下提供可预测的停顿时间。
二、内存管理模型
CMS
分代设计:严格区分新生代(Eden、Survivor)和老年代,各自独立回收。
内存碎片:采用 “标记 - 清除” 算法,可能产生大量内存碎片,导致 ...
如何将文档扫描成PDF文档?如何图片转PDF文档?
前言
大家好,我是小徐啊。我们在开发Java应用的时候,经常是需要和PDF一起来使用的。
有的时候,我们想要把文档扫描成PDF,但是没有扫描仪,其实我们也可以通过手机来实现。
今天,小徐就来介绍下如何用一款小工具来扫描PDF文档。
如何将文档扫描成PDF文档?如何图片转PDF文档?
首先,我们打开微信,在搜索框里面,输入pd ...
tomcat为什么假死了.md
现象
我们生产最近有个服务偶尔会挂掉,接口报错"connection reset by peer",上服务器curl也是同样报错,意思连接被server拒绝了。
通过dump以及日志分析,我们已经知道了问题代码所在,就是使用easyexcel上传、解析文件,开发同学没有做分页,导致内存溢出。这点在easyexcel文档也有提到:参见。
内存溢出后,触发频繁的 ...
效率提升 300%+!开发者必备工具箱!
大家好,我是 Java陈序员。
之前给大家推荐过一款适用于开发者的工具集合。
开发者的瑞士军刀!一款适用于开发者的工具集合!
今天,再给大家介绍一款开源、面向开发者的桌面小工具箱!
关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。
项目介绍
MooTool —— 一款开源、 ...
wso2~api订阅策略与订阅冻结
相关参考:
https://jaadds.medium.com/monetizing-apis-with-wso2-api-manager-7af0438230d
https://apim.docs.wso2.com/en/4.4.0/design/api-monetization/monetizing-an-api/#a-configure-the-billing-engine
https://apim.docs.wso2.com/en/4.4.0/design/api-monetization/monetizing-an-api/#step-1-create-a-subscri ...
线程池中execute和submit的区别?
简要回答
execute只能提交Runnable类型的任务,无返回值。submit既可以提交Runnable类型的任务,也可以提交Callable类型的任务,会有一个类型为Future的返回值,但当任务类型为Runnable时,返回值为null。
execute在执行任务时,如果遇到异常会直接抛出,而submit不会直接抛出,只有在使用Future的get方法获取返回值时,才 ...
纯真社区版 IP 库:IP归属地获取方式
📦 关于纯真社区版 IP 地址库
纯真(CZ88.NET)作为国内领先的网络数据服务提供商,自 2005 年起便面向开发者社区推出社区版 IP 地址库。该库基于自主研发的网络空间数据采集与分析体系,在网络数据服务领域占据重要地位,其核心优势如下:
永久免费授权机制:遵循开源社区的共享精神,开发者仅需通过官方网站提交社区授 ...
hot100之链表下
K个一组翻转链表(025)
先看代码
class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
ListNode dummy = new ListNode(-1, head);
ListNode prev = dummy;
while(prev.next != null){
ListNode curr = reverse(prev, k);
if (curr == null){
...
PDF如何免费加水印?推荐一款强大的工具!
前言
大家好,我是小徐啊。我们在开发Java应用的时候,经常是需要和PDF打交道的。有的时候,我们想要给PDF加一个水印,防止别人用,那么该怎么办呢?今天小徐就来介绍下一款强大的工具。
PDF如何免费加水印?推荐一款强大的工具!
首先,我们打开微信,在搜索框里面,输入pdf编辑器小帮手,进行搜索,找到如图所示的小程序 ...
@Transactional 什么情况下会失效
@Transactional 注解在 Spring 中用于声明式事务管理,但在某些场景下会失效。
1、方法非 public 修饰
原因:Spring AOP 代理(CGLIB/JDK 动态代理)无法拦截 private/protected 的方法。
解决:确保事务方法为 public。
// ✅ 正确
@Transactional
public void createUser() { ... }
// ❌ 失效
@Transactional
priva ...
今年后端这薪资是疯了吗??
大家好,我是R哥。
今天分享一个「超励志」的面试辅导案例,说实话,这兄弟我太激动了,他是迄今为止我们面试辅导涨幅最大的一位兄弟,二线城市,薪资翻倍!!
太难以置信了,大家都知道,现在这行情,别说涨薪,通过面试都很难,被迫降薪的也不在少数。
一般情况下,涨薪 30% 以内是合理值,我们辅导的大多数也是这样,好 ...
wso2~自定义id_token
https://medium.com/@vinula9/scope-allowlisting-whitelisting-in-wso2-api-manager-for-generating-access-tokens-per-device-or-9d16746c048b
https://nipunaupeksha.medium.com/scopes-and-claim-management-in-wso2-is-dc845c119b84
id_token
它是一个jwt token,用来存储用户基本信息,默认走的是openid的scope,里 ...
hot100之链表上
相交链表(160)
先看代码
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode p = headA;
ListNode q = headB;
while (p != q){
p = p != null ? p.next : headB;
q = q != null ? q.next : headA;
}
...
Java中Deflater和GZIP的压缩/解压实现
以下是Java中Deflater和GZIP的压缩/解压实现及优缺点对比:
一、Deflater实现(原始DEFLATE格式)
1. 压缩方法
public static String compress(String rawData) {
Deflater deflater = new Deflater(Deflater.BEST_COMPRESSION, true); // nowrap=true
try {
deflater.setInput(rawData.g ...
封装CompletionService的并发任务分发器(优化版)
这个框架代码用了很长时间,使用场景也挺多,初衷是简化CompletionService的编程接口,尽量减少业务代码处的感知。
今天找deepseek做了一版优化,优化点:
整体的超时控制
超时、异常处理和封装
取消未完成的任务
核心代码
public class TaskDispatcher<T> {
private final CompletionService<T> completionService; ...
再见 Navicat!一款开源的 Web 数据库管理工具!
大家好,我是 Java陈序员。
在日常的开发工作中,常常需要与各种数据库打交道。而为了提高工作效率,常常会使用一些可视化工具进行操作数据库。
今天,给大家介绍一款开源的数据库管理工具,无需下载安装软件,基于 Web 端进行操作。
关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电 ...
你了解Java线程池原理吗?
简要回答
线程池是一种池化技术,用于预先创建并管理一组线程,避免频繁创建和销毁线程的开销,提高性能和响应速度
它几个关键的配置包括:核心线程数、最大线程数、空闲存活时间、工作队列、拒绝策略
主要工作原理如下:
当线程池里存活的线程数小于核心线程数corePoolSize时,这时对于一个新提交的任务,线程池会创建一 ...
Java集合源码--ArrayList的可视化操作过程
关于ArrayList的元素插入、检索、修改、删除、扩容等可视化操作过程
还有关于ArrayList的迭代器、线程安全和时间复杂度
📝1. 底层数据结构
基于动态数组实现,内部维护一个Object[]数组。本质是数组数据结构,底层通过拷贝扩容使得数组具备了动态增大的特性。
数组所具备的一些特性,ArrayList也同样具备,比如、插入元素 ...
Linux环境安装OpenJDK
概述
JDK(Java Development Kit) 是 Java 开发工具包,是 Java 编程语言的核心工具集,也是开发和运行 Java 程序的基础环境。它包含了一系列工具、库和资源,用于支持 Java 应用的开发、编译、调试和运行。
核心组成部分
JRE(Java Runtime Environment,Java 运行环境)
包含 JVM(Java 虚拟机) 和运行 Java 程序所需 ...
hot100之数组
最大子数组和(053)
先看代码
class Solution {
public int maxSubArray(int[] nums) {
int n = nums.length;
int subSum = 0;
int res = nums[0];
for (int i = 0; i < n; i++){
subSum = Math.max(nums, subSum+nums);
res = Math.max(res, subSum);
...