自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 别再踩坑了!正确使用Apache Commons Exec管理Java外部进程

Apache Commons Exec是一个专门用于执行外部命令的库,帮你优雅使用外部进程

2025-05-06 23:15:33 647

原创 Nginx 报错403 排查与解决

403 Forbidden 错误解决

2025-04-19 18:11:01 2719

原创 离线部署kubesphere(已有k8s和私有harbor的基础上)

本文是在已有k8s集群和私有仓库harbor上进行离线安装kubesphere;官网的离线教程写都很详细,但是在部署部份把搭建集群和搭建仓库也写一起了,跟着做踩了点坑,这里就记录下来希望可以帮助到需要的xdm。

2025-04-04 18:30:43 721

原创 K8s私有仓库拉取镜像报错解决:x509 certificate signed by unknown authority

在Kubernetes环境中使用自签名证书的私有Harbor镜像仓库时,常会遇到证书验证失败的问题。本文将详细讲解如何解决这个常见的证书问题。Kubernetes版本:1.28.2容器运行时:containerd 1.6.20私有仓库:Harbor(使用自签名证书)(超简单搭建私有仓库Harbor-亲测无坑解决K8s私有仓库证书问题的关键在于正确配置容器运行时(本例中是containerd)信任私有仓库的证书。

2025-04-04 16:42:56 1257

原创 数据迁移(基于模板方法模式)

本节概述了整体设计思路和核心实现模式本代码实现了一个数据迁移方案,采用模板方法模式(Template Method Pattern)组织迁移逻辑。核心类作为抽象基类,定义了通用的迁移流程,而具体的迁移逻辑由等子类实现。

2025-03-11 00:38:51 749

原创 一文搞定!RabbitMQ基础与Spring Boot集成

RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据。RabbitMQ是使用Erlang语言来编写的,并且基于AMQP(Advanced Message Queuing Protocol,高级消息队列协议)协议实现。RabbitMQ作为一个成熟的消息中间件,结合Spring Boot可以快速构建可靠的消息服务。通过合理配置和使用其特性,可以实现高性能、高可用的消息传递系统。

2025-03-06 23:26:56 1243

原创 消息队列中间件

消息队列中间件(Message Queue Middleware,简称MQ)是一种软件基础设施,它基于队列的通信协议,在分布式系统的不同进程或服务之间传递控制信息、数据或请求。消息队列提供了异步的消息传递机制,使得消息的发送者和接收者不必同时在线,从而实现了应用程序之间的解耦。消息队列中间件作为分布式系统的重要组件,通过提供异步通信、应用解耦、流量削峰等功能,极大地提高了系统的可扩展性、可靠性和性能。选择合适的消息队列中间件并正确使用,对于构建高效、稳定的分布式系统至关重要。

2025-03-06 22:48:20 1274

原创 加密算法学习与SpringBoot实践

加密是将明文信息转换为密文的过程,目的是保护数据的机密性、完整性和真实性。用于生成数据指纹,验证数据完整性。

2025-03-05 11:45:33 706

原创 分布式锁实现方案对比与最佳实践

在分布式系统中,常常需要控制对共享资源的访问。

2025-03-04 16:08:04 508

原创 Spring Boot 优雅参数校验(Bean Validation)

Bean Validation 是 Java 定义的一套基于注解的数据校验规范,Spring Boot 默认集成了 Hibernate Validator 作为其实现。通过在实体类的字段或方法参数上添加校验注解,我们可以优雅地实现参数校验,避免大量的 if-else 代码。

2025-03-04 11:23:53 1010

原创 Spring Security简介与使用

Spring Security 提供了全面的安全解决方案,适用于企业级应用程序。

2025-03-03 10:38:22 779

原创 从AD到IAM

Active Directory(AD)是微软开发的目录服务,基于LDAP(轻量级目录访问协议)标准,主要用于Windows环境中的网络资源管理和身份验证。它作为一个中央化的身份存储库,存储了网络中所有用户、计算机和资源的信息。IAM(身份与访问管理)是一个框架和技术集合。它是一套全面的解决方案,不仅处理身份验证,还管理授权和用户生命周期。

2025-02-28 07:27:58 657 1

原创 Docker 迁移到 Containerd

因为docker不给用了,所以使用Containerd来代替。

2025-02-21 07:59:50 447

原创 ConcurrentHashMap源码深度解析

ConcurrentHashMap是Java中的线程安全的哈希表实现,它在JDK 1.7和1.8中有着完全不同的实现方式。本文将深入分析JDK 1.8中ConcurrentHashMap的实现原理。使用CAS + synchronized实现同步使用volatile保证可见性使用红黑树优化性能使用多线程协助扩容这些优化使得ConcurrentHashMap成为了一个高性能的线程安全集合类。

2025-01-08 10:27:00 489

原创 超简单搭建私有仓库Harbor-亲测无坑

Harbor 是由 VMware 公司开源的企业级 Docker Registry 项目,提供了基于角色的访问控制(Role Based Access Control)、镜像复制、漏洞扫描等企业级功能。本文将介绍如何搭建 Harbor 私有镜像仓库。

2025-01-03 17:14:13 1960

原创 ArrayList 与 LinkedList 对比与源码解读

特性ArrayListLinkedList底层实现动态数组双向链表随机访问O(1)O(n)插入删除O(n)O(1)内存占用连续内存空间零散内存空间默认容量10无初始容量ArrayList和LinkedList各有优势:ArrayList: 随机访问快,内存占用少LinkedList: 插入删除快,空间利用灵活核心区别:底层数据结构不同操作效率侧重点不同内存占用模式不同使用建议。

2025-01-02 10:59:09 881

原创 HashMap源码深度解析(JDK 1.8)

HashMap是Java中最常用的集合类之一,它实现了Map接口,提供了键值对的存储方式。在JDK 1.8中,HashMap的实现采用了数组+链表+红黑树的数据结构,相比于JDK 1.7的数组+链表结构,在性能上有了显著提升。

2024-12-26 16:37:29 1035

原创 JAVA8 Stream API 使用详解

Java 8 的 Stream API 是一个强大的工具,用于处理集合和数组的数据流操作。它提供了一种声明性、简洁且高效的方式来进行数据的过滤、转换、分组、统计等操作。本文将深入讲解 Stream API 的使用。S

2024-12-24 16:34:06 375

原创 docker部署oracle19c-超简单实测无坑

业务需要一个oracle数据库来验证业务,这里直接使用docker快速简单搭建一个。

2024-12-24 13:45:34 496

原创 IoC(控制反转)与 DI(依赖注入)解析

控制反转(Inversion of Control, IoC)是一种设计原则,其核心思想是将对象的控制权从代码中移交给外部容器。传统的代码由开发者手动控制对象的创建和管理,而在 IoC 模式下,对象的创建和生命周期由容器管理,程序只需关注逻辑本身。简而言之,IoC 的本质是“谁控制谁,控制什么,何时控制反转”谁控制谁:IoC 容器控制对象。控制什么:控制对象的创建、初始化和依赖关系。何时控制反转:在程序运行时,容器负责注入依赖而不是由代码主动获取依赖。

2024-12-24 10:31:36 1215

原创 CompletableFuture 详细使用教程

CompletableFuture是Java 8引入的一个类,它实现了Future和CompletionStage接口,用于处理异步计算。相比传统的Future,它提供了更强大的任务编排和异常处理能力。

2024-12-23 10:57:37 3268 1

原创 Java 8 Optional 详细使用教程-优雅解决NPE

Optional 是 Java 8 引入的一个容器类,代表一个值存在或不存在。Optional 的本质目的是为了解决 NullPointerException(NPE)问题,使代码更加优雅和安全。提高代码的可读性和可维护性减少NPE的发生强制开发者思考null值情况支持函数式编程风格但要注意合理使用,避免过度使用导致代码复杂化或性能问题。在适当的场景下使用Optional,能够显著提升代码质量。

2024-12-20 15:21:39 908

原创 部署 K8s 1.28.2(一主两从)-亲测无坑

手把手教你搭建k8s 1.28.2 一主两从版本!!!

2024-12-20 13:41:02 1470 2

原创 什么?七步搞定部署K8s高可用集群1.28.2

超简单搭建K8s高可用集群1.28.2,2个Master节点:用于运行Kubernetes控制平面组件3个Worker节点:用于运行实际工作负载2个负载均衡节点:使用HAProxy + Keepalived实现Master节点的高可用访问

2024-12-19 16:14:48 1480

原创 Linux限制root 用户的远程登录(安全要求)

现在基本用户主机都不允许使用root来操作,本文通过创建新用户,并限制root用户的ssh来解决这个问题。

2024-12-19 15:27:19 1853

原创 Spring Boot 声明式事务

声明式事务是Spring通过AOP(面向切面编程)实现的事务管理功能。通过@Transactional注解,可以将事务管理代码与业务代码分离,降低代码耦合度。

2024-12-18 15:47:42 787

原创 SpringBoot 编程式事务使用

编程式事务管理是通过编写代码来管理事务,相对于声明式事务(@Transactional注解),它提供了更细粒度的事务控制。使用 TransactionTemplate直接使用 TransactionManager。

2024-12-18 15:27:46 1609

原创 SpringBoot事务传播机制详解

事务传播机制是Spring框架中的一个重要概念,它定义了当一个事务方法被另一个事务方法调用时,事务应该如何传播。简单来说,就是定义了方法之间调用时事务的行为。

2024-12-17 17:46:09 1316

原创 SpringBoot事务失效场景

事务失效的常见场景,帮你快速掌握事务!

2024-12-17 17:25:20 1314

原创 外观模式(Facade Pattern):为子系统提供统一的接口

外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口,用来访问子系统中的一组接口。外观模式定义了一个高层接口,让子系统更容易使用。Spring JDBC的JdbcTemplateSLF4J日志门面Spring的ApplicationContext各种抽象工具类外观模式是一种非常实用的设计模式,它通过提供一个统一的接口来简化复杂子系统的使用。在实际开发中,我们经常会使用这种模式来提供更简单的API,使系统更易用。

2024-12-16 09:44:08 1159

原创 责任链模式:请求的链式处理

责任链模式是一种行为型设计模式,它让多个处理器(handler)都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些处理器连接成一条链,并沿着这条链传递请求,直到有一个处理器对其进行处理。Java Servlet中的Filter链Spring Security的安全过滤器链日志框架中的日志级别过滤异常处理机制责任链模式通过建立一条处理器链来处理请求,实现了请求发送者和接收者的解耦。它在实际开发中有着广泛的应用,特别是在处理过滤、拦截等场景中。

2024-12-13 17:06:24 1150

原创 模板方法模式详解:定义程序骨架与框架设计

模板方法模式是一种行为型设计模式,它在一个方法中定义一个算法的骨架,将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。Spring框架中的各种Template类JUnit测试框架Servlet的生命周期方法模板方法模式是一种简单但强大的设计模式,它通过把不变的行为搬移到超类,去除子类中的重复复代码来体现它的优势。它是基于继承的代码复用的基本技术。在框架设计中有着广泛的应用。使用时要注意权衡父类和子类之间的责任分配,以及钩子方法的合理使用。

2024-12-13 11:41:34 1117

原创 观察者模式:事件处理机制与松耦合设计

观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象发生变化时,它的所有观察者都会收到通知并自动更新。GUI系统中的事件处理消息推送系统订阅发布机制观察者模式是一种强大的设计模式,它通过松耦合的方式实现了对象之间的一对多的依赖关系。通过合理使用观察者模式,我们可以构建出灵活、可维护的事件处理系统。在实际应用中,要根据具体场景选择合适的实现方式,并注意处理好各种边界情况。

2024-12-12 11:25:03 804

原创 策略模式(Strategy Pattern):算法族的优雅切换

策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户端。需要在运行时动态切换算法的场景有一组类似的算法,只是具体实现不同算法的使用者不需要知道算法的具体实现需要消除一系列的条件语句策略模式是一种强大的行为型设计模式,它通过将算法族封装在独立的类中,实现了算法的动态切换。相比传统的if-else方式,策略模式提供了更好的代码组织方式和更强的扩展性。

2024-12-11 13:54:40 3300

原创 组合模式(Composite Pattern):树形结构的优雅处理方案

组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构来表现"整体-部分"的层次关系。使用组合模式后,客户端可以统一对待单个对象和组合对象,无需关心处理的是一个叶子节点还是一个组合节点。文件系统的目录结构公司的组织架构GUI界面的控件层次菜单系统的多级菜单组合模式是一种优雅的设计模式,特别适合处理树形结构的问题。它通过统一对象的接口,简化了客户端的调用,使得代码更加优雅和易于维护。

2024-12-11 11:41:04 1225

原创 深入理解代理模式(Proxy):静态代理、动态代理与AOP

代理模式是一种结构型设计模式,它允许我们提供一个代理来控制对其他对象的访问。代理模式在不改变原始类代码的情况下,通过引入代理类来给原始类附加功能。静态代理简单直观,但是代理类需要手动编写适用于代理类较少的场景JDK动态代理只能代理实现了接口的类运行时动态生成代理类灵活性高CGLIB动态代理可以代理未实现接口的类通过继承实现性能较好Spring AOP提供了更高层次的抽象支持声明式代理结合了动态代理的优点。

2024-12-10 10:05:19 1091

原创 Java 装饰器模式详解:动态增强对象功能

装饰器模式是一种结构型设计模式,它允许在不修改原有类的情况下,动态地为对象添加额外的职责和行为。这种模式提供了一种灵活的方式来扩展对象的功能,同时避免了通过继承导致的类爆炸问题。// 咖啡接口。

2024-12-09 13:28:24 982

原创 适配器模式 (Adapter) · 对象适配器 · 类适配器 · 实际开发中的应用

适配器模式在开发中非常常见,尤其是在需要对接第三方接口、实现旧代码兼容时,表现出很高的实用价值。类适配器和对象适配器各有优缺点,开发者应根据实际需求选择合适的实现方式。适配器模式的核心就是兼容性和复用性。

2024-12-09 09:39:23 1286

原创 原型模式(Prototype Pattern)——对象克隆、深克隆与浅克隆及适用场景

原型模式的核心思想是:通过“复制”一个已有的实例(原型),来创建新的对象,而不需要重新初始化一个新的对象。这样可以避免一些对象的重复构建,尤其是当对象的创建成本较高时,使用原型模式可以显著提高性能。

2024-12-06 09:44:55 902

原创 建造者模式(Builder Pattern):优雅地构建复杂对象

建造者模式是构建复杂对象的利器,它通过将对象构建的复杂逻辑封装起来,提供了一种优雅且灵活的对象创建方式。

2024-12-05 10:16:54 895

Linux创建新用户并限制root 用户的远程登录(安全要求)

一键创建角色并限制root的ssh登录,运行 ./create_user_and_disable_root.sh 用户名,例如./create_user_and_disable_root.sh test

2024-12-19

jQuery轮播图 带文字提示 平滑过渡

完整demo

2024-09-29

空空如也

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

TA关注的人

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