自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(171)
  • 收藏
  • 关注

原创 Java 线程间的通信方式

在Java中,线程之间的通信主要涉及线程之间如何交换信息或协调行动。

2026-01-05 23:32:34 712

原创 多版本 JDK 安装与配置

当不同项目可能需要不同Java版本,这时我们需要在同一台机器上安装多个版本的JDK,并能够方便地切换。

2026-01-05 22:49:19 575

原创 Shell 高级用法

函数是一段可以重复调用的代码块提高代码复用性和可维护性使脚本结构更清晰支持局部变量和参数传递# 方式1:传统C语言风格commands# 方式2:使用function关键字commands# 方式3:function关键字带括号commands# 示例:定义简单函数# 调用函数say_hello# 注意:1.return value 表示函数的返回值,value 的值是 (0-255之间的任意数,当然也可以不写 return value,

2026-01-03 18:44:19 909

原创 Shell 基础汇总

存储单元:用于存储数据的命名空间临时存储:通常只在当前 Shell 会话中有效动态类型:无需声明类型,值决定类型# 变量名=值name="John Doe" # 字符串变量age=30 # 整数变量PI=3.14159 # 浮点数(实际存储为字符串)active=true # 布尔值(实际存储为字符串)# 有效变量名VAR_NAME="value" # 推荐使用大写字母和下划线# 无效变量名(会报错)123var="value" # 不能以数字开头。

2026-01-03 15:20:17 973

原创 Linux 常用快捷键及文本编辑器

普通模式(Normal Mode):用于移动光标、删除文本、复制粘贴等操作。启动Vim后默认进入普通模式。可视模式(Visual Mode):用于选择文本块,然后进行复制、删除、替换等操作。命令模式(Command Mode):用于执行保存、退出、搜索替换等命令。插入模式(Insert Mode):用于输入文本。

2026-01-02 14:40:58 214

原创 Linux 压缩与解压缩

【代码】Linux 压缩与解压缩。

2026-01-02 13:45:35 761

原创 Linux 磁盘管理

RAID(Redundant Array of Independent Disks)即独立磁盘冗余阵列,通过将多个磁盘组合成一个逻辑单元来提高性能、可靠性和/或容量。LVM(Logical Volume Manager) 是Linux系统中用于管理磁盘分区的系统,提供比传统分区更灵活的磁盘管理方式。

2025-12-31 20:49:01 757

原创 Linux 用户和用户组管理

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

2025-12-28 11:39:29 744

原创 Linux 文件与目录管理

tac [选项] [文件]...-b:分隔符放在行前`-r:将分隔符视为正则表达式-s:指定分隔符(默认是换行符)# 创建测试文件echo -e "第一行\n第二行\n第三行" > test.txt# 正常查看# 输出:# 第一行# 第二行# 第三行# 反向查看# 输出:# 第三行# 第二行# 第一行# 创建两个文件# 反向查看多个文件(每个文件独立反向)# 输出:# A3 # file1.txt的最后一行# A2# A1 # file1.txt的第一行。

2025-12-19 23:02:10 712

原创 Linux 基础

Linux是一种典型的多用户、多任务、支持多线程和多 CPU 的操作系统,不同的用户处于不同的地位,拥有不同的权限。Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

2025-12-18 22:51:46 785

原创 Docker 常用命令解析

功能:搜索 Docker Hub 镜像。

2025-12-14 22:38:08 795

原创 Docker 详解

操作系统(精简版)运行时环境应用程序代码依赖库配置文件环境变量应用程序及其所有依赖项独立的文件系统网络配置进程空间资源限制Docker 仓库是存储和分发 Docker 镜像的中心化服务,类似代码仓库(Git),但专门用于 Docker 镜像。

2025-12-14 20:11:09 608

原创 Dockerfile 详解

语法 VOLUME [ "/path/to/dir" ] VOLUME /var/log /var/db # 示例 VOLUME /data。

2025-12-14 18:20:27 768

原创 Docker 搭建Nexus3私服

Nexus3的仓库类型主要分为三大类:代理仓库(Proxy Repository)、宿主仓库(Hosted Repository)和仓库组(Repository Group)。宿主仓库(Hosted Repository)代理仓库(Proxy Repository)仓库组(Repository Group)完整配置命令(生产环境推荐)创建宿主仓库(Hosted)配置 Docker 客户端。创建仓库组(Group)启用 Docker 仓库。配置 Docker 仓库。

2025-12-14 17:15:47 1171

原创 Docker 搭建Nginx服务

最简单启动的 Nginx 容器常用参数启动的 Nginx 容器。

2025-12-08 22:22:51 1138

原创 Docker 存储卷管理

存储卷是一种方便、灵活、高效的Docker容器内数据存储方式,用于持久化存储容器数据的一种机制。存储卷完全由Docker管理,与容器的生命周期分离。数据持久化:卷的生命周期独立于容器,删除容器甚至重建都不会影响卷中的数据,数据安全得到保障。跨容器共享:多个容器可以安全、方便地挂载同一个卷,实现数据共享或协作。易于备份与迁移:卷本质是宿主机上的目录(通常在/var/lib/docker/volumes/下),易于直接进行文件级备份、复制或迁移。

2025-12-06 12:30:43 913

原创 Docker 搭建Redis服务

本文介绍了使用Docker搭建Redis单节点和集群的详细步骤。单节点部署包括拉取镜像、运行容器、配置密码和持久化等操作。集群部署部分重点讲解了主从复制模式,通过Docker Compose实现一个主节点和两个从节点的配置,包括创建目录结构、编写配置文件、启动验证和数据同步测试。文章提供了完整的命令和配置示例,涵盖了从基础部署到高可用集群的实现方法,适合不同场景下的Redis服务搭建需求。

2025-11-25 22:24:11 642

原创 Docker 搭建MySQL服务

在 /usr/local/src/mysql/conf 目录下创建一个名为 my.cnf 的文件,用于设置MySQL的配置。[mysqld]# 基础设置# 字符集设置# 存储引擎# 连接设置# 缓冲区设置# InnoDB 设置# 日志设置# 二进制日志(主从复制用)[mysql][client]EOF。

2025-11-21 18:15:09 713

原创 Synchronized、ReentrantLock、volatile 和 ThreadLocal

编译时:被转换为 monitorenter 和 monitorexit 字节码指令。运行时:锁信息存储在 Java 对象头的 Mark Word 中。锁升级:为了平衡性能和功能,JVM 采用了精细的锁升级策略:无竞争:偏向锁(已逐步淘汰)。轻度竞争:轻量级锁 + 自旋,避免线程阻塞。激烈竞争:升级为重量级锁,通过操作系统的 Monitor 进行线程调度。

2025-11-20 23:26:23 1072

原创 Java SOLID 原则

SOLID原则是面向对象设计中的重要原则,旨在使软件设计更易于理解、维护和扩展。这些原则由Robert C. Martin提出,并由Michael Feathers用首字母缩略词SOLID表示。S - 单一职责原则(Single Responsibility Principle, SRP)O - 开放封闭原则(Open/Closed Principle, OCP)L - 里氏替换原则(Liskov Substitution Principle, LSP)

2025-11-17 10:47:38 1015

原创 Java 8 Lambda表达式详解

Lambda表达式是Java 8引入的最重要的新特性之一,它允许我们将函数作为方法参数,或者将代码作为数据来处理。本质上,Lambda表达式是一个匿名函数,它没有名称,但有参数列表、函数体和返回类型。

2025-11-15 17:10:12 821

原创 Canal实时同步MySQL数据到Elasticsearch

目标:将MySQL中的 orders 表的任何变更(INSERT, UPDATE, DELETE)近实时地同步到Elasticsearch的对应索引中,并确保数据一致性和处理效率。MySQL: 数据源,需开启Binlog。Canal Server (Canal-Deployer): 模拟MySQL Slave,解析Binlog,将数据变更事件投递出去。

2025-11-08 17:12:40 657

原创 微服务 - 网关统一鉴权

网关统一鉴权,顾名思义,就是将原本分散在各个微服务中的身份验证和权限校验逻辑,抽取出来并集中到API网关这一层来统一处理。传统方式(无网关): 每个微服务(如用户服务、订单服务、支付服务)都需要自己实现一套鉴权逻辑,检查Token是否有效、用户是否有权限访问等。这会导致以下一系列问题:代码重复与维护困难:每个服务都需要编写和维护相似的鉴权代码,违反了“Don‘t Repeat Yourself”原则。标准不一:不同的开发团队可能实现不同的鉴权逻辑或安全标准,导致系统整体安全性不一致。

2025-11-04 23:30:05 775 1

原创 Flowable 工作流引擎

工作流引擎的核心是将业务逻辑与流程控制逻辑分离。开发者无需在代码中硬编码复杂的流程跳转和状态判断,而是通过流程定义文件(如 BPMN 2.0 标准)来描述业务流程,由引擎来解析和执行这个流程。

2025-11-02 17:17:41 1103

原创 JVM 调优方案

一切依赖于数据和场景:调优必须基于监控数据(GC 日志、堆快照、性能分析工具),并根据应用类型(Web 服务、大数据计算、交易系统)来制定策略。-XX:MetaspaceSize 和 -XX:MaxMetaspaceSize。通常将参数分为堆内存、垃圾收集器、GC 日志、其他性能相关几大类。详细 GC 日志(JDK 8 及之前)统一日志框架(JDK 9+ 推荐)ZGC 收集器(极致低延迟)并行收集器(吞吐量优先)CMS 收集器(低延迟)-Xms 和 -Xmx。jmap - 内存分析。G1 收集器(推荐)

2025-11-01 15:21:36 948

原创 SSO 单点登录

单点登录(SSO)在微服务架构中是一个核心概念,它允许用户在一个应用中登录后,无需再次登录即可访问其他相互信任的应用。在微服务架构中,由于系统被拆分成多个独立的服务,如果用户每访问一个服务都要登录一次,那对用户的体验太不友好,而单点登录就是为了解决这个问题而生。简而言之,单点登录其本质就是多个系统之间的会话共享。

2025-10-31 20:37:32 840

原创 Java HashMap 详解

HashMap 是 Java 集合框架中最常用的 Map 实现类之一,基于哈希表实现,用于存储键值对(Key-Value Pair)。它提供了快速的查找、插入和删除操作,是许多 Java 应用程序的核心数据结构之一。版本扩容策略优点缺点Java 7头插法,重新hash所有元素实现简单多线程下可能产生死循环Java 8尾插法,位运算优化定位避免死循环,性能更好实现相对复杂。

2025-10-31 10:22:13 891

原创 OAuth 2.0 安全授权

OAuth 2.0 是一个授权框架,它允许第三方应用程序在获得用户授权后,代表用户访问该用户在另一个服务提供商上存储的资源,而无需分享用户的密码。重要区别:OAuth 2.0 是关于授权,而非认证。认证:是确认“你是谁”的过程。(例如:用账号密码登录)授权:是确认“你被允许做什么”的过程。(例如:授权一个App来管理你的QQ邮箱)

2025-10-30 17:43:40 755

原创 Spring--Security

Spring Security 是一个功能强大、高度可定制的身份认证和访问控制框架,它是保护基于 Spring 的应用程序的事实标准。它的核心目标是为一套 Java 应用程序提供全面的安全服务。核心思想:通过一系列的 过滤器(Filter) 来拦截进入应用程序的请求,并在这些过滤器中执行身份验证和授权检查。核心特性:全面的安全服务:身份验证、授权、防护攻击等。高度可配置:基于注解、Java Config 或 XML。

2025-10-29 18:29:52 608

原创 分布式Session会话实现方案

分布式 Session 是一种在微服务架构中,保证用户会话(Session)数据能够在多个独立的、无状态的服务实例之间共享和保持一致的机制。以下是传统单体架构中的 Session与微服务架构中的 Session之间的对比:单体架构 Session:应用部署在一台服务器上。用户登录后,服务器会在本地内存中创建一个 Session 对象,存储用户ID、用户名等数据,并给浏览器返回一个唯一的 Session ID(通常保存在 Cookie 中)。

2025-10-29 16:14:48 952

原创 Spring Boot Actuator & Admin

Spring Boot Actuator 是 Spring Boot 的一个子项目,为应用提供了生产级别的功能。它提供了一系列的端点(endpoints),允许我们通过HTTP或JMX来监控应用的健康状况、指标、日志等。/actuator/health: 应用健康状态,通常由HealthIndicator实现。/actuator/info: 应用信息,可以来自Maven项目信息、自定义信息等。/actuator/metrics: 应用指标,如内存使用、HTTP请求计数等。

2025-10-28 18:41:24 907

原创 SpringCloud--Sleuth 分布式链路追踪

Sleuth 是 Spring Cloud 生态系统中的一个组件,它提供了分布式追踪的解决方案。在微服务架构中,一个请求可能会经过多个服务,Spring Cloud Sleuth 可以帮助我们跟踪这些请求,为每个请求生成一个唯一的追踪ID,并在日志中记录这些ID,从而使得我们可以轻松地追踪请求在各个微服务中的流转情况。@Service// 创建自定义Span// 业务逻辑// 模拟数据库查询throw e;@Bean// 自定义采样策略:只追踪重要接口。

2025-10-28 16:39:42 875 1

原创 服务发布策略

服务发布策略,也称为部署策略或发布模式,是指在将新版本软件部署到生产环境时,所采用的技术方法和流程。其核心目标是:在保证系统整体稳定性和用户体验的前提下,安全、平滑、高效地发布新功能或修复问题。策略核心思想优点缺点适用场景停机发布先停后更简单服务中断低要求内部系统蓝绿发布冗余切换零停机、快速回滚资源成本高高可用无状态服务滚动发布逐步替换节约资源版本共存、回滚慢云原生、K8s 默认金丝雀发布小范围试水风险极低、实时验证周期长、技术复杂核心业务、高风险变更。

2025-10-25 14:30:04 963

原创 DDD 领域驱动设计

领域驱动设计(Domain-Driven Design,简称DDD)是一种软件设计方法,由Eric Evans在他的著作《Domain-Driven Design: Tackling Complexity in the Heart of Software》中提出。它主要关注于复杂系统的设计,强调通过领域模型来捕获业务逻辑和规则,并将软件系统的设计重心放在业务领域上。

2025-10-24 10:00:00 953

原创 设计模式详解

设计模式是可重用的解决方案,用于解决在软件设计中常见的问题。它们不是具体的代码,而是最佳实践的模板。通常将设计模式分为三类:创建型、结构型和行为型。实现方式:2.2 工厂方法模式 (Factory Method)目的:定义一个创建对象的接口,但让子类决定实例化哪个类。案例:日志记录器、数据库连接工厂。实现方式:2.3 抽象工厂模式(Abstract Factory)目的:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。案例:GUI工具包,跨平台UI组件。实现方式:

2025-10-19 21:55:24 421

原创 MySQL锁机制

MySQL的锁机制是数据库并发控制的核心组成部分,用于管理多个事务对共享资源的并发访问,确保数据的一致性和完整性。MySQL的锁机制大致可以分为全局锁、表级锁、行级锁和意向锁。表级锁是MySQL中最基本的锁策略,它锁定整张表,包括表共享读锁和表独占写锁。意向锁是表级锁,分为意向共享锁(IS)和意向排他锁(IX)。自增锁是一种特殊的表级锁,用于自增列。行级锁是InnoDB存储引擎支持的锁,包括记录锁、间隙锁、临键锁等。记录锁,也叫行锁,是一种精确锁定索引记录的锁。临键锁 是 记录锁 和 间隙锁 的组合。

2025-10-11 18:39:24 1081

原创 SpringBoot+Redis实现电商秒杀方案

/ 秒杀活动实体@Data// 0-未开始 1-进行中 2-已结束// 秒杀订单实体@Data// 0-待支付 1-已支付 2-已取消Redis原子操作// 关键代码:原子扣减库存Lua脚本原子性将库存检查、扣减、用户记录等多个操作封装在一个Lua脚本中Redis单线程执行,保证原子性分布式锁// 防止极端情况下的并发问题用户防重// 记录用户参与记录异常恢复机制// 下单失败时恢复库存。

2025-10-09 21:08:10 519 1

原创 Elasticsearch 故障转移及水平扩容

Elasticsearch 的水平扩容(Horizontal Scaling)是通过增加节点数量来扩展集群的处理能力和存储容量,以应对数据量增长或高并发请求的场景。其核心思想是利用分布式架构的特性,将数据和负载均匀分配到更多节点上。Elasticsearch 的故障转移(Failover)机制是其高可用性的核心,通过分布式设计、自动检测和恢复策略确保集群在节点故障时持续服务。分片强制分配(自动恢复失败时)延迟分片分配(应对短暂故障)步骤 2:调整分片分配策略。步骤 3:调整索引分片数。心跳检测(Ping)

2025-04-13 22:43:09 1120 1

原创 Elasticsearch 集群搭建

可以使用docker 依次启动多个节点,也可以使用Docker Compose一次启动全部节点。Elasticsearch 8.x 默认启用安全功能。首次启动容器时,控制台会输出默认密码。在创建索引的时候,在 settings 中进行分片及副本数量设置。使用 Docker Compose 一次启动。设置监控告警(如 Watcher):、docker 依次启动。

2025-04-09 23:44:40 2833 3

原创 Elasticsearch DSL 的结果处理

在 Elasticsearch 的 DSL 中,_source 参数用于控制返回的原始文档内容,类似于 SQL 中的 SELECT 字段列表。在 Elasticsearch 的 DSL 中,highlight 功能用于标记搜索结果中与查询条件匹配的文本片段,通常以高亮、加粗或颜色变化的形式展示,帮助用户快速定位关键内容。在 Elasticsearch 的 DSL 中,script_fields 允许你通过脚本动态计算并返回新字段,这些字段不会存储在索引中,而是在查询时实时生成。

2025-04-08 22:00:05 1200

空空如也

空空如也

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

TA关注的人

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