自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ConcurrentHashMap源码深度解析

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

2025-01-08 10:27:00 429

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

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

2025-01-03 17:14:13 642

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

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

2025-01-02 10:59:09 825

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

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

2024-12-26 16:37:29 954

原创 JAVA8 Stream API 使用详解

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

2024-12-24 16:34:06 313

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

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

2024-12-24 13:45:34 352

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

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

2024-12-24 10:31:36 715

原创 CompletableFuture 详细使用教程

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

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

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

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

2024-12-20 15:21:39 823

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

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

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

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

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

2024-12-19 16:14:48 1349

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

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

2024-12-19 15:27:19 1155

原创 Spring Boot 声明式事务

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

2024-12-18 15:47:42 571

原创 SpringBoot 编程式事务使用

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

2024-12-18 15:27:46 611

原创 SpringBoot事务传播机制详解

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

2024-12-17 17:46:09 868

原创 SpringBoot事务失效场景

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

2024-12-17 17:25:20 1013

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

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

2024-12-16 09:44:08 1112

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

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

2024-12-13 17:06:24 1083

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

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

2024-12-13 11:41:34 1023

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

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

2024-12-12 11:25:03 758

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

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

2024-12-11 13:54:40 1488

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

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

2024-12-11 11:41:04 856

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

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

2024-12-10 10:05:19 706

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

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

2024-12-09 13:28:24 927

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

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

2024-12-09 09:39:23 1208

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

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

2024-12-06 09:44:55 822

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

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

2024-12-05 10:16:54 828

原创 深入解析工厂模式:从简单工厂到抽象工厂

简单工厂模式,又叫做静态工厂方法模式,它通过一个工厂类来根据参数的不同返回不同类型的对象。通常,简单工厂模式通过静态方法来创建对象。此模式适用于创建对象的逻辑相对简单的情况。工厂方法模式是简单工厂模式的改进版,它允许子类决定实例化哪一个产品类。工厂方法将对象的创建延迟到子类中完成。抽象工厂模式比工厂方法模式更进一步,它提供了一个接口,用于创建一系列相关或相互依赖的对象,而无需指定具体类。

2024-12-04 09:53:19 959

原创 Cursor安装与使用,5分钟完成需求

Cursor是一款基于AI的代码编辑器,旨在帮助开发者更高效地编写和管理代码。它提供了智能代码补全、AI对话和跨文件编辑等创新功能。

2024-12-02 11:41:52 3352

原创 单例模式(Singleton Pattern):深入解析与应用场景

单例模式(Singleton Pattern)是一种常用的软件设计模式,其核心目标是确保一个类只有一个实例,并提供一个全局访问点。这种模式在许多场景下都非常有用,可以有效地控制资源的访问和管理。

2024-11-29 10:45:02 1336

原创 软件设计的七大原则:构建高质量代码的指南

七大设计原则是Java开发中的重要指导准则。帮助我们编写更清晰、更灵活、更易维护的代码。在实际开发中,需要根据具体场景灵活运用这些原则。

2024-11-27 10:02:02 717

原创 Java设计模式:编写高质量代码的艺术

设计模式是在面向对象设计中,针对特定场景的可重用解决方案。它们代表了软件设计中的最佳实践,是前辈程序员在长期实践中总结出的宝贵经验。设计模式就像是前人在代码世界中为我们铺设的道路,它们不仅指明了前进的方向,更提供了值得借鉴的智慧。设计模式不是教条,而是指导思想。真正的智慧在于理解模式的本质,并能够灵活运用。优秀的程序员不仅仅是会使用设计模式,更重要的是理解其背后的设计原则。

2024-11-27 09:58:52 974

原创 Interceptor vs Filter:深入解析Spring框架中的拦截机制

理解 Interceptor 和 Filter 的差异,有助于在不同场景下选择最合适的拦截机制。两者并非互斥,而是可以配合使用,共同构建一个安全、高效的 Web 应用。选择时需要根据具体业务需求和技术架构进行灵活判断。

2024-11-26 09:15:02 934

原创 Spring MVC Interceptor详细使用教程

Spring MVC Interceptor详细使用教程

2024-11-21 16:45:49 424

原创 Filter 使用详解

Filter(过滤器)是Java Web开发中最常用的技术之一。它可以在请求到达Servlet之前和响应返回客户端之前,对请求和响应进行拦截和处理。在SpringBoot中,Filter的使用更加便捷和灵活。Filter是非常实用的功能,合理使用Filter可以实现很多横切关注点的功能,如安全控制、性能监控等。选择合适的Filter注册方式正确配置Filter的优先级注意Filter的性能影响做好异常处理和日志记录遵循单一职责原则,每个Filter只处理特定的功能。

2024-11-18 09:56:27 468

原创 Spring AOP 使用详解

Spring AOP 使用详解。核心概念+实现示例+注意事项

2024-11-14 09:38:13 1048 1

原创 Spring AOP通知类型详解与实战

Spring AOP通知类型详解与实战,包含了详细的通知类型,和应用举例。

2024-11-14 09:30:32 385

原创 在Docker环境下为Nginx配置HTTPS

使用自签名证书在Docker环境下为Nginx配置HTTPS

2024-11-12 11:08:07 1460

原创 Spring MVC 核心原理解析

详细介绍Spring MVC的核心组件、工作原理及主要功能的实现机制

2024-10-27 18:16:00 1446

原创 SpringBoot日志配置体系详解

SpringBoot日志体现介绍包含最佳实践,如何替换日志框架。

2024-10-26 13:41:24 1052

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关注的人

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