自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(273)
  • 资源 (9)
  • 问答 (1)
  • 收藏
  • 关注

原创 Reactor线程池切换publishOn与subscribeOn

特性publishOn生效位置整个流的最上游(首次调用生效)只影响之后的操作符常用于指定数据源的线程(IO、慢操作)指定数据处理的线程多次调用只有第一次调用有效(对源)可以多次调用,影响每一处之后应用场景创建慢资源(数据库、文件等)控制不同阶段逻辑在不同线程替代线程切换逻辑可以代替传统线程池包装异步逻辑用于流中间切线程做不同的隔离或调度。

2026-01-24 09:11:16 349

原创 Java的Spliterator

如果你需要对某种特殊数据结构进行高效并行遍历,比如自定义树结构、分页数据等,可以实现自己的// 自定义数据结构和遍历逻辑与 Iterator 对比Spliterator 特性单向遍历支持拆分并行不支持并发可支持并发处理无特性标识有特性标识位顺序遍历可用于并行流是 Java 并发流处理(parallel stream)背后的核心机制,理解它可以帮助你更深入掌握 Stream API 和自定义并发处理逻辑。好的,下面是一个完整的使用手动分割任务 + 自定义线程池并行处理的案例。

2025-12-27 10:24:41 606

原创 kafka高吞吐持久化方案(2)

利用了 Java 的 GC 特性,对 key 精准加锁且无内存泄漏风险;在高并发场景中,它是介于 “分段锁” 和 “全量锁池” 之间的优雅方案;高并发 + 自动清理 + 精确锁粒度的优势。特性说明🔒 精确按 key 加锁每个 key 单独一把锁🧠 自动回收锁使用,key 无引用时锁自动清理⚙️ 高性能基于,适合并发环境✅ 线程安全所有锁获取和清理均线程安全适用场景建议使用方案🧪 简单 demo,单线程测试、小量数据(可快速验证)

2025-12-20 07:50:21 628

原创 kafka高吞吐持久化方案(1)

/ equals 和 hashCode 用于 map 去重@Overrideif (cmp!// equals(), hashCode(), constructor 省略这种方式使用WorkPool并发消费,但自己在每个消费者内部管理,对于同一个 key,必须队列顺序处理,不如方式一清晰可靠。我们不为每个 key 分配一个(太耗内存),而是用固定数量的 ReentrantLock 数组,根据uid+cidhash 映射到某一个锁。// 根据并发量设置i++) {特性。

2025-12-07 11:23:43 778

原创 银行家舍入法(RoundingMode.HALF_EVEN)

手续费费率本身:建议使用来避免偏差手续费金额(实际值):先用HALF_EVEN计算,最终展示再HALF_UP保留 2 位(元)

2025-12-07 11:13:58 322

原创 如何在 Java 中避开夏令时坑点

夏令时(DST)是一种人为调整时间的制度,目的是更充分地利用夏季较长的日照时间。每年夏天把时间往前拨一小时,秋天再拨回来。凌晨2点 → 调快到3点凌晨2点 → 调回到1点这种制度常用于欧美地区,亚洲大部分国家(包括中国、日本、韩国等)不使用夏令时。夏令时虽然看似只是“时间调快/调慢一小时”,但它带来的开发陷阱极多,特别是在跨国、电商、调度、日志分析等领域,稍不留意就可能导致生产事故。存储使用 UTC(Instant)展示使用带时区的 ZonedDateTime永远不要用表示跨时区的绝对时间问题。

2025-11-22 13:33:54 966

原创 arthas排查常用命令(持续更新)

【代码】arthas排查常用命令(持续更新)

2025-11-22 13:31:18 227

原创 Redis RDB 持久化机制深入理解:Copy-On-Write 与数据一致性保障

问题回答RDB 保存的是哪个时间点的数据?fork 子进程那一刻(如 11:00)RDB 执行过程中更新数据会污染快照吗?❌ 不会,更新的数据页主进程会 COW,子进程仍持有旧页主进程会合并或清理 COW 数据?❌ 不会,是操作系统自动释放子进程的旧页fork 会增加内存使用吗?✅ 是的,写多了会触发大量 COW,峰值会高于平时内存,需关注。

2025-11-01 14:12:44 703

原创 kafka与zero-copy

零拷贝(Zero Copy)数据在内核空间和用户空间之间传输时,尽量避免不必要的拷贝操作,从而提高性能、降低 CPU 占用。它并不是真的“0 次拷贝”,而是相比传统方式减少了数据复制次数。技术是否用户态拷贝是否完全零拷贝适用场景✅ 有❌ 否通用逻辑,处理灵活sendfile❌ 无✅ 是文件下载、静态资源❓ 视实现而定❌ 否(半零拷贝)高效读取但可读写处理splice❌ 无✅ 是pipe 传输/中继场景是的,你说得对 ——

2025-10-17 22:43:49 891

原创 IO模型select与poll,epoll

*epoll**:通过边缘触发(ET)模式有效避免惊群效应。水平触发(LT)模式下,可能会遇到惊群效应。**kqueue**:同样通过边缘触发(ET)模式来避免惊群效应。水平触发(LT)模式下,也可能会出现惊群效应。因此,边缘触发(ET)模式是防止惊群效应的关键,无论是epoll还是kqueue,启用边缘触发模式都能有效减少或避免惊群效应。

2025-10-03 17:32:13 1075

原创 Http与WebSocket

WebSocket 和 HTTP 都是基于的协议,但它们的设计目标和工作方式有很大区别。✅✅。

2025-09-26 20:52:08 1302 1

原创 布隆过滤器实战

布隆过滤器(Bloom Filter)是一种,用于高效地检测某个元素是否存在于集合中。它具有和的特点,但存在(即可能会误认为某个元素存在,但实际上不存在)。布隆过滤器由**位数组(Bit Array)0110"hello""hello"1"world""world"

2025-09-21 07:08:56 735

原创 连续hash函数

需求:需要一个的哈希函数。如果。

2025-09-12 20:54:50 960

原创 HttpClient、OkHttp 和 WebClient

是 Java 生态中常见的 HTTP 客户端,它们在设计理念、异步能力、性能等方面有所不同。

2025-09-06 11:08:40 817

原创 Let‘s Encrypt证书自动续期

如果你希望避免手动干预,建议切换到支持自动续期的插件(如 HTTP 或 DNS 插件)。如果你仍然希望使用手动插件,则需要编写并配置认证钩子脚本。这些方式会让你轻松处理证书续期问题。按照以上步骤,你应该能在 CentOS 8 系统上成功安装certbot和 Nginx 插件,申请和续期 Let’s Encrypt 证书。删除不再需要的旧证书,保留有效证书。更新 Nginx 配置,确保使用正确的证书路径。测试自动续期功能,确保续期配置无误。

2025-08-30 17:04:01 1507

原创 Centos 8 管理防火墙

你可以通过命令删除基于端口的转发规则,或者使用规则编号删除。删除完规则后,别忘了保存配置以确保修改在重启后生效。概念描述表 (Tables)主要有filternatmanglerawsecurity,分别处理不同类型的网络流量和规则。链 (Chains)每个表包含多个链,最常见的链有INPUTOUTPUTFORWARD,每个链包含过滤规则。默认链策略每个链有默认策略,常见的策略有ACCEPT(接受)和DROP(丢弃)。NAT 和过滤nat表处理地址转换,filter表处理数据包过滤。要唯一确定。

2025-08-22 20:40:52 1622

原创 Spring静态页面切Nginx

检查后端服务:确认它是否能正常返回有效的 HTTP 响应头。检查 Nginx 配置:确保正确设置了代理头和协议。查看日志:检查 Nginx 和后端服务的日志,看看是否有更多的错误信息。通过这些方法,你应该能够定位并解决问题。如果问题仍然存在,提供更多的配置和日志信息可能有助于进一步诊断。nginx.conf中的user指令指示 Nginx 使用的用户。使用可以查看正在运行的 Nginx 进程和它们的用户。

2025-08-16 10:35:12 1169

原创 mac安装node.js

您可以通过两种方式安装 Node.js:使用官方安装包或Homebrew。使用官方安装包访问 Node.js 官网,下载适合您操作系统的安装包(macOS)。按照安装向导完成安装。使用 Homebrew安装完成后,您可以通过配置 npm 的全局安装目录来避免权限问题。创建一个新的全局安装目录):配置 npm 使用新的目录更新环境变量:确保新的全局安装路径在$PATH中。打开您的 shell 配置文件并编辑:nano ~/.bash_profile # 或者 nano ~/.zshrc保存并退出。

2025-08-09 16:05:34 2098

原创 本地环境vue与springboot联调

【代码】本地环境vue与springboot联调。

2025-08-03 13:11:51 455

原创 npm安装下载慢问题

通过将 npm 的镜像源切换到国内的镜像(如淘宝镜像),您可以显著提升安装速度,避免因为长时间等待或“转圈”而影响开发效率。

2025-08-02 08:08:23 657

原创 vue项目入门

在VS Code中开发 Vue.js 项目时,保持清晰的文件夹结构非常重要。推荐使用和src/views来分离组件和页面,来管理 API 请求,src/router来管理页面路由。使用 Vue CLI 创建项目并启动开发服务器。在开发过程中,可以使用VS Code的插件来提高效率,比如Vetur(Vue.js 语法支持),ESLint(代码质量检查)等。定期使用来启动和查看项目进展。这样,你就可以快速构建一个具有 CRUD 功能的 Vue.js 项目,并在VS Code中高效开发。使用。

2025-07-25 21:54:34 913

原创 配置Mac/Linux终端启动执行脚本

如果系统是Linux,默认的终端脚本都是bash。因此需要在home目录下配置**如果系统是mac,默认的终端脚本都是zsh。因此需要在home目录下配置**这将显示当前shell进程的信息,包括使用的shell路径。这条命令会输出当前用户默认使用的shell路径,例如。配置终端启动执行脚本。

2025-07-25 21:53:17 343

原创 Homebrew安装

Homebrew 默认使用国外源,特别是 GitHub,这会影响国内用户的下载速度。您可以通过将 Homebrew 的源配置为国内镜像(如清华、中科大或阿里云)来提高安装速度。配置下载源后,后续的安装过程会更加顺畅且更快速。设置为 JDK 21验证 Java 和 Maven 版本确保 Maven 指向。使用卸载。清理环境并验证 Maven 和 JDK 是否正常工作。

2025-07-20 07:24:33 2446

原创 阿里云服务器安装JDK21

国内推荐:清华大学开源镜像站。

2025-07-12 07:40:22 701

原创 Tomcat/Jetty/Undertow对比

Spring Boot 支持多种嵌入式 Web 容器,其中和是最流行的三种选择。

2025-07-05 08:07:27 943

原创 Java流式处理

在 Java 中,没有直接类似 Python 生成器的语法,但可以通过迭代器(Iterator)和流式处理(如使用或 Reactive Streams)来实现类似生成器的功能。此外,也可以通过和线程的组合实现异步文件解压流。

2025-06-29 09:25:27 746

原创 maven之scope

在 Maven 中,scope定义了依赖的可见性和生存周期,主要影响依赖在编译、测试和运行阶段的可用性,以及是否传递给下游模块。以下是 Maven 中常用的scope。

2025-06-20 22:05:48 954

原创 文件打包压缩Java实践

LZ系列(LZ77, LZ78, LZMA, LZ4):基于字典的压缩方法,适用于重复性较强的数据。霍夫曼编码:基于字符频率的变长编码,用于优化数据表示。DEFLATE:结合 LZ77 和霍夫曼编码,广泛用于 GZIP 和 ZIP 格式。BZIP2:使用 Burrows-Wheeler 变换和霍夫曼编码,适合需要高压缩比的应用。Zstd 和 Brotli:现代压缩算法,提供良好的压缩比与速度平衡,适合多线程和 Web 应用。

2025-06-14 08:36:01 788

原创 Unsafe.putOrderedInt与Volatile

是 Java类中的一个方法,它提供了一个底层的机制,允许程序直接修改内存中的指定位置(在 JVM 之外),而不经过标准的 Java 内存管理。具体来说,方法允许直接在指定的内存位置(或对象字段)写入一个int类型的值,同时保证写入顺序。

2025-05-30 21:49:24 1104

原创 Linux的读写屏障

在 Linux 中,(Read-Write Barriers,简称 RWB)是对内存访问顺序的一种控制机制,用来保证在多核处理器环境下,内存访问的正确顺序,避免因乱序执行导致的数据一致性问题。它是操作系统内核或硬件架构(如 x86, ARM 等)中实现内存顺序性的一种手段。

2025-05-24 22:16:47 1137

原创 cpu缓存一致性

用于缓存即将写回主内存的数据,缓解写延迟、支持乱序执行,并帮助缓存一致性协议协调处理器间的写操作。:用于管理缓存行的失效操作,记录需要失效的缓存行,确保其他处理器不会读取过时或不一致的数据。这两者通过配合工作,协同维护多核处理器系统中的缓存一致性,减少了不必要的内存访问、避免了数据竞争,提高了多核系统的整体性能和吞吐量。

2025-05-10 16:50:06 1048

原创 Aws S3上传优化

Google 的 Brotli Java 绑定提供了和类,分别用于解压和压缩 Brotli 格式的文件。这个库比Brotli4j更活跃,且得到了 Google 官方的支持。通过调整压缩级别,你可以在压缩率和速度之间找到合适的平衡。

2025-05-02 18:04:30 1674

原创 计算机硬件吞吐量

常见的 CPU、磁盘(包括机械硬盘和固态硬盘)、内存的吞吐量范围差异较大,下面是基于当前技术水平的一个大致估计,实际吞吐量会根据硬件型号、配置和负载等因素有所不同。

2025-04-26 09:20:35 924

原创 java写文件优化(2)

Memory-Mapped Files (MMF) 是一种将文件的内容映射到进程的虚拟内存中的技术,允许进程像操作内存一样读取和写入文件。它通过操作系统的虚拟内存管理机制来实现,在使用内存映射文件时,JVM 的行为与传统的堆内存管理不同,具体的内存占用方式如下:Memory-Mapped Files 使用的是 堆外内存,即它们不直接占用 JVM 的堆内存空间。堆外内存不受 JVM 的垃圾回收管理,而是由操作系统的虚拟内存管理器来管理。通过 对象进行文件映射时,内存分配和回收由操作系统负责,而不是 JVM

2025-04-19 11:13:07 752

原创 java写文件优化(1)

增大缓冲区:可以尝试增大的缓冲区,以减少 I/O 次数。多线程异步写入:对于多个文件或大文件,使用线程池并行写入会提高效率。内存映射文件(Memory-mapped files):对于非常大的文件,内存映射文件的方式能显著提高性能。:对于小文件,是一个简单且高效的选择。去掉不必要的封装:如果没有计数需求,避免使用,只保留进行写入。选择合适的方案,依据你的实际数据规模和场景来优化文件写入性能。增大缓冲区大小。

2025-04-04 15:01:37 904

原创 正向代理与反向代理

是客户端的代理,帮助客户端访问外部资源,隐藏客户端的真实 IP。

2025-03-22 22:08:43 721

原创 域名配置服务端口

你遇到的错误很可能是因为你没有足够的权限绑定特权端口(如 80 端口)。以 root 用户或通过sudo运行 Java 应用程序;确保没有其他进程占用该端口;检查防火墙和安全组规则;如果使用 SELinux,检查并调整策略。如果你希望绑定到 80 端口,但不想以 root 身份运行 Java 应用,可以考虑使用端口转发工具,如iptables或authbind,将 80 端口的流量转发到高于 1024 的端口上。

2025-03-08 13:51:38 1292

原创 package-info.java的作用

是一个为包提供额外元数据的文件,主要用于文档说明、声明包级注解,以及统一管理包的整体信息。虽然不是必需的,但它是一个非常有用的工具,特别是在注释、文档生成和注解的使用场景中。

2025-02-28 20:46:35 844

原创 排查定位jar包大文件

这会列出 JAR 包中最大的文件或目录,方便你定位大文件。

2025-02-01 08:30:22 1092

原创 MySQL 事件调度器

确实是一个更方便且内置的解决方案,可以在 MySQL 服务器端自动定期执行表优化操作,无需依赖外部工具或应用程序代码。这种方式也能减少数据库维护的复杂性,尤其适用于在数据库频繁更新或删除时进行自动化优化。

2025-01-24 21:03:40 747

Java_HotSpotTM虚拟机内存管理

Java HotSpotTM虚拟机内存管理 gc 垃圾回收 内存管理

2017-06-12

hsdis-amd64.dylib

打印Java字节码插件 mac版

2021-02-18

数据结构与算法分析Java语言描述

数据结构与算法分析Java语言描述,很棒的图书,由浅入深,经典之作

2018-06-05

DbVisualizer破解版

数据库链接工具,已破解,查看数据库元数据,导入导出数据等等,功能强大

2018-06-05

Sybase PowerDesigner16.5破解文件

相关的源文件下载: 官网:http://www.powerdesigner.de/ 国内:http://rj.baidu.com/soft/detail/16619.html?ald 上面的文件直接安装,之后下载该破解文件 放到安装目录的D:\Program Files (x86)\Sybase\PowerDesigner Viewer 16 文件夹下,进行文件覆盖就可以了(要选择自己安装目录) 亲自测试可用,与大家分享,希望对大家有用…………

2017-08-18

jprofiler.linux.windws.64.bit.part2.破解版

jprofiler.6.2.4,亲测,可用,第一部分为windows,第二部分为linux

2016-07-08

jprofiler.linux.windws.64.bit.part1.破解版

破解版,jprofiler.6.2.4,亲测,可用,第一部分为windows,第二部分为linux

2016-07-08

jprofiler.linux.windws.64.bit.part1

jprofiler.6.2.4,亲测,可用,第一部分为windows,第二部分为linux

2016-07-08

jprofiler.linux.windws.64.bit.part2

jprofiler.6.2.4,亲测,可用,第一部分为windows,第二部分为linux

2016-07-08

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除