- 博客(315)
- 资源 (3)
- 收藏
- 关注
原创 Java 中的 KDF(密钥派生函数)详解
KDF(Key Derivation Function,密钥派生函数)是一种用于从**密码(Password)**或**主密钥(Master Key)** 生成安全加密密钥的算法。它的主要作用是增强密钥的安全性,防止暴力破解或彩虹表攻击。
2025-03-20 15:48:54
1041
原创 了解ProGuard 代码混淆
在 Android 开发中,代码混淆(Obfuscation)是一个常见的安全措施,旨在 **让代码难以阅读,以提高破解难度**。
2025-03-19 14:32:44
458
原创 了解AES加密算法
在信息安全的世界里,AES(Advanced Encryption Standard,高级加密标准)是一个绕不开的名字。它被广泛应用于数据加密,从 HTTPS 安全通信到磁盘加密,几乎无处不在。
2025-03-19 14:31:47
878
原创 了解 Grafana,安装Grafana
Grafana 是一个开源的数据可视化和监控工具,广泛用于 **监控、数据分析和告警**,适用于 IT 运维、DevOps、业务分析等领域。它能够连接多种数据源,如 **Prometheus、InfluxDB、Elasticsearch、MySQL**,并提供直观的 **仪表板(Dashboards)**。
2025-03-18 09:00:00
1590
原创 SpringBoot监听应用启动和优雅停机
在 Spring Boot 中,监听应用的启动和优雅停机(graceful shutdown)可以使用 `ApplicationListener` 监听 `ApplicationReadyEvent` 和 `ApplicationFailedEvent` 事件,同时通过 `@PreDestroy` 或 `DisposableBean` 处理关闭逻辑。
2025-03-18 08:30:00
821
原创 深入解析 Spring Boot 中的 FailureAnalyzer
在 Spring Boot 应用中,我们难免会遇到启动失败的情况,而默认的异常信息往往过于复杂,导致排查问题变得困难。**Spring Boot 提供了一套强大的 FailureAnalyzer 机制,能够捕获常见的异常并提供清晰的错误提示,让开发者更快定位问题。**
2025-03-17 10:05:11
1115
原创 深入解析 `SQL_SMALL_RESULT`:MySQL 的“小优化”大作用
在 MySQL 的查询优化工具箱中,`SQL_SMALL_RESULT` 是一个容易被忽略但可能带来小幅性能提升的关键字。它适用于特定场景,尤其是涉及 `GROUP BY` 或 `DISTINCT` 计算的小数据集查询。本文将深入解析 `SQL_SMALL_RESULT` 的作用、使用方式以及适用场景,并结合示例探讨其优化效果。
2025-03-17 09:59:31
1165
原创 深入理解Spring Boot Starter及如何自定义Starter
Spring Boot Starter本质上是一种依赖管理和自动配置机制。通过引入一个Starter依赖,可以自动引入并配置一系列相关组件,极大地简化开发流程。比如使用`spring-boot-starter-web`,可以自动引入Spring MVC、Tomcat服务器、JSON解析器等,无需手动逐个配置。
2025-03-14 17:20:06
1165
原创 Spring Boot:如何在业务项目中覆盖基础项目的默认实现
在 Spring Boot 项目中,我们通常会将一些通用的功能封装到基础项目(基础模块)中,而业务项目则依赖于这个基础项目。但是,实际开发过程中,业务项目可能需要自定义某些功能的实现,而不是直接使用基础项目提供的默认实现。
2025-03-14 17:19:19
1236
原创 Ubuntu中为curl和Docker配置代理
在Ubuntu环境下工作时,经常需要使用代理来访问网络资源,尤其在网络受限或需要翻墙访问时。本文介绍如何分别为`curl`命令和Docker配置代理`192.168.100.11:8000`。
2025-03-14 11:25:11
1149
原创 深入理解 Maven BOM 及其继承特性
Maven BOM(Bill Of Materials,物料清单)是一种特殊的 Maven 项目,用于集中管理依赖项的版本信息。BOM 项目本身并不包含实际的代码或资源,而仅仅声明一组依赖项的版本,从而使其他项目在引入这些依赖时无需重复指定版本。
2025-03-14 10:20:49
1119
原创 Kotlin关键字`when`的详细用法
在Kotlin中,`when`是一个强大的控制流语句,相当于其他语言中的`switch`语句,但更加强大且灵活。本文将详细讲解`when`的用法及其常见场景,并与Java的`switch`语句进行对比。
2025-03-13 10:54:17
565
原创 RAG 技术入门:让 AI 更聪明的秘密武器
在当今的人工智能(AI)领域,**大语言模型(LLM)** 如 GPT-4、Claude 和 Llama 已经非常强大,但它们有一个明显的缺陷:**知识是静态的**。也就是说,它们只能回答训练数据范围内的问题,无法访问最新的信息。而 **RAG(Retrieval-Augmented Generation,检索增强生成)** 技术,正是为了解决这个问题而诞生的。
2025-03-13 10:46:52
1236
原创 如何使用Gradle发布Jar包到私有仓库
在企业开发或团队协作中,我们经常需要将自己的Jar包发布到私有仓库,以方便管理和引用。本文将介绍如何使用Gradle实现这个过程。
2025-03-12 09:57:17
387
原创 Gradle 多模块项目结构介绍
Gradle 的多模块项目(Multi-Module Project)是一种将复杂项目拆分为多个模块,以提高可维护性和复用性的开发方式。
2025-03-12 09:56:39
804
原创 记一次Spring Boot应用中数据库连接阻塞问题排查过程
最近在项目开发过程中,发现一个Spring Boot服务在执行某个涉及数据库的操作时,程序线程会突然阻塞,不会继续执行,也没有明显的异常提示。经过详细排查,最终确定了问题根本原因是数据库连接未被正确释放导致连接池耗尽。以下是具体的排查过程与问题定位和解决方法。
2025-03-11 10:50:10
943
原创 详解了解websocket协议
WebSocket是一种建立在TCP协议之上的全双工通信协议,它允许客户端与服务器之间进行实时双向数据通信。相比传统的HTTP请求-响应模式,WebSocket能够有效地减少网络延迟和带宽开销,广泛用于即时通信、实时游戏、股票行情等应用领域。
2025-03-11 10:48:16
1308
原创 Ubuntu 22.04 官方下载安装 Gradle 记录
Gradle 是一个强大的自动化构建工具,广泛用于 Java、Android 等项目的构建中。下面详细介绍如何在 Ubuntu 22.04 中使用官网下载安装 Gradle。
2025-03-10 11:32:15
588
原创 MongoDB 集群模式简单了解
在现代应用架构中,数据库的扩展性和高可用性至关重要,而 **MongoDB** 作为 NoSQL 数据库的佼佼者,提供了多种 **集群模式** 来应对不同场景的需求。这篇文章将深入探讨 MongoDB 的主要集群模式,并分析它们的适用场景和优缺点。
2025-03-10 11:25:48
971
原创 Vite 6 升级指南:CJS 和 ESM 的爱恨情仇
如果说 CJS 是 JavaScript 模块化的“老干部”,那么 ESM 就是新时代的“带头大哥”。Vite 6 的升级彻底向前迈了一步,把 CJS 甩在了身后,给前端开发带来了更快的启动、更好的兼容性和更清爽的代码。今天我们就来聊聊这俩模块规范的区别,以及如何在 Vite 6 的“强制迁移令”下,优雅地抛弃 CJS,投入 ESM 的怀抱。所以,与其挣扎着想办法让 CJS 继续活下去,不如早早投靠 ESM,跟上 Vite 6 的节奏,让你的项目跑得更快更顺畅!好消息是,这些改动让前端环境更清爽、更高效。
2025-03-07 15:06:11
781
原创 MySQL 连接报错: “Public Key Retrieval is not allowed“ 问题解决方案
如果遇到 “Public Key Retrieval is not allowed” 错误,可依据实际情况,选择上述方案中的一种或多种解决方案。在实现后,连接问题应该已经解决,同时需根据安全需求核实安全性,以免暴露在公网环境下。
2025-03-07 15:05:03
663
原创 Java代码,为什么随机生成大范围数时会重复?
将范围分成多个区间,分别生成随机数。这种方法通过分段减小计算的数值范围,从而减少精度丢失的可能性。这段代码生成了 100 个随机数,但如果将幂次从 8 提高到 12,比如。,你会发现结果中出现了大量重复的随机数。更高的精度,从而避免因精度丢失导致的随机数重复问题。当随机数生成范围 ( 61^n ) 的指数过大时,为了解决随机数重复的问题,我们可以采用以下方法。类型的有效精度限制会导致随机数重复。类可以替换为更高级的随机数生成器,例如。精度不足,实际计算结果会被舍入到。支持任意大小的整数运算,可以避免。
2025-03-07 15:03:10
726
原创 了解网络诊断工具: `netstat`
在网络故障排查、性能监控和系统调优中,有一个工具堪称不可或缺——**`netstat`**。作为网络状态的观察窗口,它不仅提供关于网络连接、路由表、接口状态等信息,还为系统管理员和开发者提供了诊断复杂问题的能力。
2025-03-07 15:02:13
988
原创 部署RabbitMQ集群详细教程
下面是一份在 **Ubuntu** 环境下部署 **RabbitMQ** 集群的详细步骤说明,涉及主机名设置、Erlang & RabbitMQ 安装、管理插件启用、集群通信 Cookie 配置、节点加入集群、镜像队列策略设置以及集群验证等。为了演示方便,以下示例假设有三台主机,分别命名为 `rabbit1`, `rabbit2`, `rabbit3`,IP 地址分别为 `192.168.1.101`, `192.168.1.102`, `192.168.1.103`。请根据自己的实际环境进行修改。
2025-03-06 10:19:47
1429
原创 理解 Gradle:`build.gradle` 常用配置
在使用 Gradle 时,`build.gradle` 文件是核心,它定义了项目的构建逻辑、依赖和任务。
2025-03-06 10:18:12
978
原创 Gradle 配置 Lombok 项目并发布到私有 Maven 仓库的完整指南
在 Java 项目开发中,使用 Lombok 可以极大地减少样板代码(如 `getter/setter` 方法、构造器等),提高开发效率。然而,当使用 Gradle 构建工具并将项目发布到私有 Maven 仓库时,常常会遇到 Lombok 注解未正确发布或生成代码缺失的问题。本文将详细讲解如何正确配置 Gradle 项目,确保 Lombok 在开发和发布过程中正常工作。
2025-03-05 15:58:54
800
原创 探索 Ubuntu 中的 Hostname 配置与管理
当你搭建一台 Ubuntu 服务器时,Hostname 是你遇到的第一个配置项之一。无论是一个趣味十足的名字(比如 "TARDIS")还是一个冷酷无情的描述性标识(比如 "webserver-01"),Hostname 就像计算机的身份证明。本文将深入探讨 Ubuntu 中的 Hostname:如何查看、修改,以及需要注意的事项。
2025-03-05 15:58:02
694
原创 什么是 ABA 问题及其解决方案?
在计算机科学和多线程编程中,**ABA 问题**是一个经典的并发问题,主要出现在使用无锁数据结构或算法时,特别是在 CAS(Compare-And-Swap)操作中。它的出现可能导致程序逻辑错误,尽管从表面上看操作是成功的。以下将详细解释 ABA 问题的成因及其解决方案。
2025-03-04 11:39:56
373
原创 为什么要提倡尽早返回(Early Return)
在编程中,"尽早返回"(Early Return)是一种常被提倡的编程方式,特别是在需要提升代码可读性、减少嵌套层级、以及快速处理异常情况时。本文将讨论尽早返回的优点、应用场景以及一些注意事项。
2025-03-04 11:39:12
986
原创 深入理解 Vue 中的 `ref`
在 Vue.js 开发中,`ref` 是一个重要且常用的功能。它不仅可以帮助开发者访问模板中的 DOM 元素,还能用来操作子组件,甚至在 Vue 3 中引入了响应式引用的概念,让 `ref` 的功能更加强大。本篇文章将全面介绍 `ref` 的基本概念、原理以及使用场景。
2025-03-03 10:06:06
1447
原创 深入理解 Promise 和 Async/Await,并结合 Axios 实践
JavaScript 是一门单线程的语言,这意味着它无法同时处理多个任务。然而,在实际开发中,我们经常需要处理异步操作,比如网络请求、定时器、文件读取等。为了解决这些异步操作带来的复杂性,JavaScript 提供了多种方式,从最早的回调函数到现代的 Promise 和 Async/Await,逐步让异步代码更加优雅和易于维护。
2025-03-03 10:04:59
1103
原创 Vue 项目中配置代理的必要性与实现指南
在 Vue 前端项目的开发过程中,前端与后端地址通常不同,可能引发跨域问题。为了在开发环境下顺畅地请求后端接口,常常会通过配置**代理(proxy)**来解决问题。这篇文章将详细解析代理的作用、原理、实现方式,以及相关注意事项。
2025-02-26 10:59:19
772
原创 Nmap使用指南
Nmap (网络映射器) 是一款强大的应用网络扫描和安全核查工具,适合于网络管理和安全专家。本文将介绍Nmap的基本使用方法,包括基本命令和常用功能。
2025-02-26 10:57:45
722
原创 揭秘 Linux 端口号:从 0 到 65535 的神奇之旅
在 Linux 的世界里,端口号就像一个个门牌号,帮助数据找到它们的“家”。不论你是刚入门的 Linux 用户,还是想要深入了解网络通信的老手,搞清楚端口号是非常有必要的。今天,我们将从 **端口号的基础概念** 开始,一路聊到 **如何管理与排查端口问题**,带你玩转端口号,搞定那些让人头疼的网络连接问题!
2025-01-09 08:00:00
1217
原创 集群监控:Prometheus 安装记录
随着系统复杂度的增加,监控的重要性不言而喻。在微服务和分布式架构盛行的今天,Prometheus 作为一款功能强大且开源的监控和报警系统,已成为 DevOps 工具箱中的必备利器。本文将详细记录 Prometheus 的安装过程,帮助你快速搭建一个稳定的监控系统。
2025-01-09 07:00:00
1132
原创 集群监控:Node Exporter 安装记录
在现代的服务器集群管理中,监控系统是不可或缺的一部分。而在 Prometheus 的生态中,Node Exporter 是基础监控指标采集的核心工具之一。它轻量、高效,专注于导出主机的硬件和操作系统指标,如 CPU、内存、磁盘 I/O 等。本文将分享一次从零安装 Node Exporter 的完整过程,包括常见坑点和解决方案,希望能为你的集群监控之旅提供帮助。
2025-01-08 08:00:00
853
原创 深入理解 Spring MVC 中的 @ModelAttribute 注解
`@ModelAttribute` 是 Spring MVC 中一个很重要和常用的注解,它在应用中为模型数据的初始化和请求参数绑定提供了极大方便。在本文中,我们将对 `@ModelAttribute` 进行全方位的分析和讨论。
2025-01-08 07:00:00
594
原创 Apache Calcite:数据管理的幕后英雄
在大数据和分布式计算的世界里,Apache Calcite 是一个低调但功能强大的工具。虽然它不像 Hadoop 或 Spark 那样频繁出现在头条新闻中,但它在数据管理和查询优化领域扮演着不可或缺的角色。本篇文章将带你深入了解 Apache Calcite,探讨它的核心功能、适用场景以及为何它被称为“数据库的数据库”。
2025-01-07 08:00:00
998
原创 MySQL编码导致的插入报错(UTF8MB3和UTFMB4的区别)
开发中遇到一个奇怪的问题:尝试向 MySQL 数据库插入一个“𫖯”字时,居然报错了!深入排查后发现,罪魁祸首竟然是 MySQL 的编码问题——`utf8` 和 `utf8mb4` 的差异。
2025-01-07 07:00:00
1554
原创 Spring Boot Kotlin 项目用gradle构建运行时报错 “NoSuchMethodException“ 的问题排查与解决
使用 Kotlin 和 Spring Boot 构建 REST 服务。在 Kotlin 中,顶层函数默认会被编译到独立的类中,并添加。但 Spring Boot 默认查找入口方法时,只会寻找。这导致 Spring Boot 无法找到正确的入口方法,抛出。,因为它简单且更符合 Kotlin 的特性,无需改变代码逻辑。无论采用哪种方案,重新构建后,确保 JAR 包的。后缀类中),只需修改 Gradle 的。为了兼容 Java 的传统规范,可以将。检查生成的类文件,发现。检查生成的类文件,确认。
2025-01-06 08:00:00
894
GitKraKen-6.5.1-main.zip
2023-08-31
文件处理程序-转移指定文件-v0.4
2023-08-31
Xshell6个人版,本人自己在用。解压即可使用。亲测有效。
2020-09-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人