Debian 13 安装 Docker 与最佳配置
前言Debian 13 (Trixie) 自带源里的 Docker 版本通常较老,且默认配置不适合高负载开发。本文记录了在 Debian 13 上安装官方 Docker CE 并进行生产级配置的全过程。 1. 安装官方 Docker CE为了获取最新特性和安全补丁,推荐直接使用 Docker 官方仓库安装。 清理旧版本首先移除系统可能预装的旧版本或非官方版本: 1sudo apt-get remove docker.io docker-doc docker-compose podman-docker containerd runc 配置官方源1. 安装必要工具 12sudo apt-get updatesudo apt-get install -y ca-certificates curl gnupg 2. 添加 GPG 密钥 123sudo install -m 0755 -d /etc/apt/keyringscurl -fsSL...
Java并发-为什么要区分不同线程池而不使用统一的大线程池
前言在设计高并发系统(如基于 Netty、Flink 或 Tomcat NIO 的应用)时,很多开发者都会产生一个直觉性的疑问: “为什么我们要把线程池分得这么细(IO池、业务池、阻塞池)?直接弄一个系统能支持的最大线程池(比如 5000 个线程),然后不管什么任务都扔进去,让 CPU 自己调度不就行了吗?这样还省去了线程切换的麻烦。” 这个想法听起来非常诱人:简单、暴力、直观。但在高并发架构的实践中,这不仅是一个反模式(Anti-pattern),更是一颗随时可能引爆系统的定时炸弹。 本文将从四个核心维度——隔离性、上下文切换、阻塞传递、饥饿死锁——来粉碎“大一统线程池”的迷思,并介绍现代高并发系统标配的**“三层漏斗”线程模型**。 一、 迷思粉碎:为什么“大池子”行不通?试图用一个超大线程池解决所有问题,本质上是在赌博:赌所有的任务都一样快,赌所有的依赖都永远不挂。一旦现实情况发生偏差,系统就会全面崩盘。 1. 核心死穴:丧失隔离性 (Bulkheading)这是最致命的原因。别把鸡蛋放在一个篮子里。 大池子方案:假设你有一个 5000...
Java并发-彻底搞懂 CompletableFuture 的线程切换规则
前言在 Java 高并发编程中,CompletableFuture 是我们处理异步任务的神兵利器。然而,很多开发者在使用时常常困惑于一个核心问题: “我的回调代码(thenApply/whenComplete)到底是由哪个线程执行的?” 是主线程?是执行任务的 IO 线程?还是线程池里的线程? 答案并不像 Executor.execute() 那样直观。CompletableFuture 的线程执行规则是一场 “动态的竞速游戏”。本文将带你深入底层,揭示从正常流转到异常短路的全部线程切换真相。 一、 核心口诀:全景图在深入细节前,请先记住这句核心口诀: 非 Async 方法看状态(谁撞线谁负责),Async 方法看池子(强制甩锅)。 我们将涉及的角色分为三个: Main 线程:指调用 .thenApply/whenComplete 进行回调注册的线程。 Worker 线程:指负责执行上一步 Future 任务的线程(可能是线程池线程,也可能是 IO 线程)。 Executor:指定的线程池。 线程执行规则速查表 API 方法 上一步 (Future)...
Debian 13 开发环境系统优化指南
1. 解除资源限制 (Limits)默认的文件打开数和进程数限制较低,容易导致 Too many open files 或无法创建新线程。 编辑 /etc/security/limits.conf,在末尾添加: 1234567# 提升最大打开文件数 (针对 Netty/Kafka/ES)* soft nofile 65535* hard nofile 65535# 提升最大进程/线程数 (针对 Java/Flink)* soft nproc 65535* hard nproc 65535 注:需注销重新登录后生效。 2. 内核参数调优 (Sysctl)编辑 /etc/sysctl.conf,追加以下针对 Java 开发环境的优化配置: 123456789101112131415# --- 内存管理 ---# 降低 Swap 使用倾向 (保护 JVM GC 性能)vm.swappiness = 10# 增加虚拟内存映射区域 (Elasticsearch/Flink 启动必备)vm.max_map_count = 262144# --- 开发工具 ---# 增加文件监听上限...
Flink1.18.1本地idea源码调试环境搭建
Apache Flink 作为业界领先的流处理和批处理统一计算引擎,其强大的功能与复杂的内部机制吸引了无数开发者深入探索。对于后端开发者而言,能够直接在本地 IDE 中调试 Flink 源码,无疑是提升理解、快速定位问题、甚至参与社区贡献的利器。然而,搭建这样一个庞大项目的本地调试环境,尤其是特定版本如 Flink 1.18.1,往往涉及到诸多配置细节,令不少初学者望而却步。本篇博文旨在提供一份详尽的、按部就班的指南,帮助您在 Windows 系统下,使用 IntelliJ IDEA 顺利搭建起 Flink 1.18.1 的源码调试环境。通过本文的指引,您将能够轻松配置项目、编译源码,并成功启动一个可供调试的本地 Flink Standalone 集群,为您的 Flink 深度学习之旅奠定坚实基础。 温馨提示: 本文所有命令行操作均在 Git Bash 中执行。 请确保您的网络环境已启用科学上网。 环境准备 windows/linux 安装jdk1.8并配置好环境变量 安装git 安装idea 项目准备1. git配置 通用配置(在 Windows 和...
Ubuntu 24.04 GNOME 桌面环境软件与插件清单
前言在 Ubuntu 24.04 LTS 并使用 GNOME 桌面环境中,为了打造一个既美观又高效的开发环境,我整理了一份必备软件和 GNOME 插件清单。 这份清单涵盖了从日常通讯、开发工具到系统美化的各个方面。如果你也是一名追求效率的开发者,这份列表或许能给你一些参考。 🛠️ 第一部分:常用软件清单这部分涵盖了日常开发和办公的基础设施。对于大多数商业软件,推荐直接去官网下载 .deb 包进行安装,以获得最佳的兼容性。对于开发环境管理工具(如 NVM, SDKMan),则推荐使用官方脚本安装。 软件分类 软件名称 推荐理由 / 主要用途 安装方式 通讯社交 Linux QQ 官方重构版,Electron 架构,在 Debian 下运行稳定。 官网下载 (.deb) WeChat (微信) 官方原生 Linux 版,功能够用,解决办公刚需。 官网下载 (.deb) Telegram 强大的即时通讯工具,推荐使用官方包以获得自动更新能力。 官网下载 (官网包) 网络工具 Clash Verge 优秀的网络代理客户端,支持 Clash...
Debian 13.3 GNOME 桌面环境软件与插件清单
前言随着 Debian 13.3 (Stable) 的发布,系统的稳定性与兼容性达到了新的高度。作为一个追求极致稳定开发的程序员,我将工作流完全迁移到了这个版本。 Debian 13.3 搭载了“原汁原味”的 GNOME 桌面,没有任何预装的冗余组件。这种纯净带来了系统资源的极致低占用,但也意味着我们需要手动配置,才能将其打造成顺手的生产力工具。 本文整理了一份在 Debian 13.3 下经过验证的必备软件和 GNOME 插件清单,助你构建一个既稳固又高效的开发环境。 🛠️ 第一部分:常用软件清单这部分涵盖了构建开发工作流的基础设施。Debian 13.3 的软件源策略稳健,对于工具类应用,Flatpak 往往是获取最新版本且不破坏系统依赖的最佳途径。 软件分类 软件名称 推荐理由 / 主要用途 安装方式 通讯社交 Linux QQ 官方重构版,Electron 架构,在 Debian 下运行稳定。 官网下载 (.deb) WeChat (微信) 官方原生 Linux 版,功能够用,解决办公刚需。 官网下载...
我的私人IDEA插件清单
前言作为一名 Java 开发者,我的工作主要聚焦在 Web 后端开发 以及 Apache Flink 实时计算 领域。在日常的编码、调试以及研读 Flink 源码的过程中,IntelliJ IDEA 是我最趁手的兵器。 所谓“工欲善其事,必先利其器”。在多年的开发过程中,我尝试过无数插件,最终保留下来了一套能够切实解决痛点、提升编码幸福感的“精选集”。 很多朋友问我平时是怎么快速排查依赖冲突、或者怎么高效阅读复杂源码的,今天就通过这就这篇文章,把我的 IDEA 插件清单分享给大家。 🛠️ 核心插件清单以下是我目前高频使用的插件列表,涵盖了代码生成、依赖管理、源码阅读和辅助工具等多个方面: 插件名称 推荐理由与核心作用 Maven Helper 后端救星。它能以树形结构展示 Maven 依赖,最重要的是能一键定位并解决 Jar 包冲突(Conflict),是排查 ClassNotFoundException 的神器。 SequenceDiagram Core 核心绘图引擎。这是生成时序图的基础插件,采用 Freemium(免费+内购)...
Maven POM 文件配置模板
前言在日常开发、写 Demo 验证想法,或者刷算法题时,我们往往需要一个干净但功能齐全的 pom.xml。每次都要手动去 Maven Repository 找依赖版本非常影响效率。 本文整理了两套我自用的 Maven 配置模板(分别对应 JDK 8 和 JDK 17)。相比于基础版本,这次更新集成了开发中最常用的“瑞士军刀”级依赖,并新增了单元测试与Fat Jar 打包支持,真正做到“开箱即用”。 建议收藏或直接复制使用,省去繁琐的配置时间。 核心集成说明这两套模板均包含以下全栈基础库与插件,满足绝大多数“快速原型”开发的需要: 1. 开发利器 Lombok: 消除 Getter/Setter/Builder 等样板代码。 Guava: Google 出品的 Java 核心增强库(集合、缓存、并发工具等)。 Commons-Lang3: Apache 的 Java 基础工具类增强。 Gson: 轻量且高效的 JSON 序列化/反序列化工具。 Logback: 简单易用的日志实现。 2. 测试与构建 JUnit 5 (Jupiter) &...
Logback 极简配置模板
前言在搭建验证性项目(Demo/Scratch)或本地调试 Flink/JUC 代码时,我们需要一个既能看清报错,又不会输出太多杂音的日志配置。 这份 logback.xml 模板主打控制台输出和彩色高亮,非常适合本地开发环境。 配置文件模板将以下内容保存为 src/main/resources/logback.xml: 1234567891011121314151617<?xml version="1.0" encoding="UTF-8"?><configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> ...
