自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (5)
  • 收藏
  • 关注

原创 深入理解设计模式之中介者模式

中介者模式(Mediator Pattern)是一种行为型设计模式。它通过引入一个中介对象,来封装一组对象之间的交互,使对象之间不再直接引用彼此,而是通过中介者进行通信,从而降低对象之间的耦合度,便于系统的扩展和维护。将对象之间复杂的网状关系变为星型结构,所有对象只与中介者交互。中介者模式是解耦对象间复杂交互的有效手段,适合多对象协作、交互复杂的场景。掌握中介者模式有助于编写高内聚、低耦合的系统架构。适用于对象间交互复杂、变化频繁的系统注意中介者的复杂度,避免成为“上帝类”

2025-05-28 16:42:05 178

原创 深入理解设计模式之职责链模式

本文详细介绍了职责链设计模式(Chain of Responsibility Pattern),这是一种行为型设计模式,通过将多个处理对象连接成链,使请求能在链上传递直到被处理。文章内容包括:模式定义(解耦请求发送者与处理者)、适用场景(如审批流程、日志处理)、UML类图以及完整的Java实现代码示例(包含抽象处理者、三个具体处理者和客户端组装演示)。还探讨了扩展用法(动态链路、链终止)和Spring框架应用,并分析了模式的优缺点(灵活扩展但可能影响性能)。该模式特别适合需要多级处理的可扩展业务场景。

2025-05-28 16:38:50 542

原创 深入理解设计模式之状态模式

状态模式是一种行为型设计模式,允许对象在内部状态改变时改变其行为。它将状态相关的行为封装到独立类中,通过切换状态来改变对象行为。适用于对象行为依赖状态、存在大量状态条件判断或状态切换频繁的场景(如订单状态、TCP连接状态等)。模式包含Context环境类、State抽象状态和ConcreteState具体状态三部分,通过UML类图展示结构关系。文中提供了Java实现示例,包括基础状态切换和电商订单流转案例,并分析了该模式解耦状态行为、代码清晰的优点,以及可能增加类数量的缺点。

2025-05-27 11:19:16 523

原创 深入理解设计模式之命令模式

命令模式是一种行为型设计模式,它将请求封装为对象,实现请求发送者与执行者的解耦。该模式包含Command(抽象命令)、ConcreteCommand(具体命令)、Receiver(接收者)、Invoker(调用者)等角色,适用于需要支持撤销、重做、日志记录等功能的场景。文章通过Java代码示例演示了如何用命令模式控制电灯开关,分析了其优缺点:优点是解耦性强、易于扩展,缺点是类数量增加。该模式广泛应用于GUI事件处理、事务操作等场景,是实现操作管理的有效方案。

2025-05-27 11:13:18 418

原创 深入理解设计模式之组合模式

组合模式是一种结构型设计模式,用于处理树形结构中的"部分-整体"关系。它通过统一的接口(Component)处理叶子节点(Leaf)和组合节点(Composite),使客户端无需区分对象类型。核心组成包括定义通用操作的组件接口、实现基础操作的叶子类以及管理子组件的组合类。典型应用场景如文件系统实现,其中目录可包含文件或子目录,统一计算大小和显示结构。该模式简化了复杂层次结构的操作,提高了代码的可扩展性和复用性。

2025-05-26 09:42:18 719

原创 深入理解设计模式之桥接模式

桥接模式是一种结构型设计模式,通过分离抽象部分与实现部分,使二者能够独立变化。该模式包含抽象类、扩展抽象类、实现接口和具体实现四个核心角色,避免了继承带来的类爆炸问题。示例展示了图形绘制和消息发送系统的实现,其中抽象部分(如消息类型)与实现部分(如发送渠道)解耦,可灵活组合扩展。桥接模式适用于多维度变化的场景,提高了系统的可扩展性和维护性。

2025-05-26 09:41:45 903

原创 深入理解设计模式之装饰器模式

装饰器模式是一种动态扩展对象功能的结构型设计模式,无需修改原有代码即可灵活添加新功能。其核心结构包括组件接口、具体组件、装饰器抽象类和具体装饰器,通过组合而非继承实现功能扩展。典型应用如咖啡订购系统,基础饮料(具体组件)可被调料(装饰器)层层包装,动态计算价格和描述。该模式遵循开闭原则,避免了类爆炸问题,适用于需要透明、动态扩展功能的场景,如Java IO流、GUI组件等。通过将对象包装在装饰器类中,实现了功能扩展的优雅解耦。

2025-05-25 21:07:25 769

原创 深入理解设计模式之建造者模式

建造者模式是一种创建型设计模式,它将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。建造者模式允许用户在不知道内部构建细节的情况下,一步步创建复杂对象。

2025-05-25 10:35:27 636

原创 深入理解设计模式之适配器模式

适配器模式是一种结构型设计模式,用于解决接口不兼容问题。它将一个类的接口转换为客户端期望的另一个接口,使原本不兼容的类能协同工作。适配器模式包含三个核心组件:目标接口、适配者和适配器。实现方式分为对象适配器(通过组合)和类适配器(通过继承)。典型应用场景包括旧系统集成、第三方库适配等。示例代码展示了媒体播放器和支付系统的适配器实现,演示了如何通过适配器转换接口调用方式。该模式提高了代码复用性和系统扩展性,是系统集成中常用的解决方案。

2025-05-24 22:00:51 1141

原创 深入理解设计模式:工厂模式、单例模式

本文详细介绍了两种创建型设计模式:工厂模式和单例模式。工厂模式包括简单工厂、工厂方法和抽象工厂三种实现方式,通过封装对象创建过程来提高代码复用性和灵活性。单例模式确保类只有一个实例,提供全局访问点,包括饿汉式、懒汉式等实现方式。文章通过Java代码示例展示了各种模式的实现方法,并分析了各自的优缺点及适用场景,为开发者提供了实用的设计模式应用指导。

2025-05-24 21:37:57 1172

原创 分布式消息队列kafka详解

Apache Kafka 是一个开源的分布式事件流平台,最初由 LinkedIn 开发,现已成为处理高吞吐量、实时数据流的行业标准。Kafka 的核心架构包括 Broker、ZooKeeper、Producer、Consumer、Connector 和 Stream Processor 等组件,支持高吞吐量、持久性、可靠性和可扩展性。Kafka 采用分区和复制机制,确保消息的并行处理和容错能力。其独特的存储设计基于追加写入的日志结构,支持分段文件存储和稀疏索引。Kafka 的消费模型采用拉取模式,支持消费者

2025-05-23 21:42:20 1027 1

原创 消息队列RabbitMQ与AMQP协议详解

RabbitMQ是一个基于AMQP协议的开源消息队列中间件,用于实现系统组件之间的异步通信。AMQP协议提供了可互操作性、统一模型、安全性、可靠性和高效数据传输等核心特性。RabbitMQ的核心组件包括Producer、Consumer、Queue、Exchange和Binding,通过这些组件实现消息的发送、接收和路由。RabbitMQ支持多种Exchange类型,如Direct、Topic、Fanout和Headers,以灵活路由消息。此外,RabbitMQ提供了消息确认机制、消息优先级、TTL和死信队

2025-05-23 21:38:52 1022

原创 Redis 基础知识详解

Redis 是一个开源的高性能键值对数据库,广泛用于缓存、消息队列、排行榜等场景。其主要特点包括高性能、丰富的数据结构(如字符串、哈希、列表、集合、有序集合)、多种持久化方式(RDB 和 AOF)、原子操作、多语言支持以及分布式与高可用性。Redis 的常用数据类型和命令使其在缓存、分布式锁、消息队列等场景中表现出色。尽管 Redis 具有速度快、功能丰富的优点,但也存在内存成本高、不适合超大数据量持久存储等缺点。掌握 Redis 的基本原理和应用场景是后端开发和运维的重要技能。

2025-05-22 18:36:36 1003

原创 常见排序算法详解及其复杂度分析

本文详细介绍了九种常见的排序算法,包括冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序、堆排序和计数排序。每种算法均从原理、Python实现、时间复杂度、空间复杂度和稳定性等方面进行了分析。文章还提供了各算法的复杂度对比表,帮助读者快速了解不同算法的性能特点。总结部分强调了根据数据规模和特性选择合适的排序算法的重要性,并推荐了在实际开发中常用的高效排序算法。

2025-05-22 18:34:16 1442

原创 MySQL EXPLAIN 使用详解与执行计划分析优化

EXPLAIN 是 MySQL 提供的 SQL 语句分析工具,可以显示 SQL 语句在执行时的执行计划,包括表的访问顺序、使用的索引、连接类型、扫描行数等。通过分析 EXPLAIN 的输出结果,可以帮助我们发现 SQL 性能瓶颈,进行有针对性的优化。

2025-05-21 15:44:11 1040

原创 MySQL 索引详解与原理分析

MySQL 索引是数据库表中用于加速数据检索的数据结构,类似于书本的目录。常见的索引类型包括主键索引、唯一索引、普通索引、组合索引、全文索引和空间索引。MySQL 默认使用 B+Tree 作为索引结构,主键索引是聚簇索引,数据存储在叶子节点上,而辅助索引则存储主键值,需要回表查询。索引的创建、删除和查看可以通过 SQL 语句实现。索引的使用遵循最左前缀原则,覆盖索引可以避免回表,提升查询效率。索引的优点在于加速查询和排序操作,但会占用磁盘空间并影响写入性能。适用场景包括频繁查询的字段、需要唯一性约束的字段等

2025-05-21 15:36:55 782

原创 Linux 常用命令大全与实用技巧

本文系统介绍了 Linux 操作系统的常用命令及其使用技巧,涵盖了文件和目录操作、文件搜索、权限管理、系统信息、网络命令、压缩解压、软件安装等多个方面。通过掌握这些命令,用户可以高效地管理和操作 Linux 系统。文章还提供了组合命令和实用技巧,如管道符、重定向和后台运行等,帮助用户进一步提升操作效率。建议用户多实践、多查阅帮助文档,逐步提升对 Linux 命令的熟练度。

2025-05-20 20:46:45 235

原创 Linux 下 rsync 工具详解与实用指南

rsync 是 Linux/Unix 系统中用于数据同步和备份的强大工具,支持本地与远程主机之间的高效文件同步,具备增量同步、断点续传、权限保留等功能。其基本语法为 rsync [选项] 源路径 目标路径,常用选项包括 -a(归档模式)、-v(显示详细过程)、-z(压缩数据)等。常见应用场景包括网站数据备份、日志归档、多机文件分发等。使用 rsync 时需注意权限、防火墙、安全性等问题,并可结合 crontab 实现定时同步。

2025-05-20 20:45:03 937

原创 cursor+MCP系列:12306-MCP车票查询工具

12306-MCP车票查询工具是一款通过魔塔MCP广场获取的实用工具,用户可以通过SSEURL服务连接获取MCP配置信息,并将其添加到MCPserver中。该工具提供了余票查询、区域代码查询和过站查询等功能。例如,用户可以查询到从广州南到上海虹桥的高铁/动车班次,如G818、G1302和G820,以及普通列车如T170和Z100的详细信息,包括出发和抵达时间、历时、票价及座位余量。这些信息对于计划出行的用户来说非常有用,可以帮助他们做出更明智的购票决策。

2025-05-19 21:34:26 346

原创 cursor-MCP-Fetch实现根据接口文档自动生成调用代码

今天我们来介绍一个比较实用的MCPserver-fetch网页内容抓取。通过这个MCP工具,我们可以实现一个非常有用的功能,就是通过抓取接口文档的内容,自动生成接口调用代码。

2025-05-19 19:23:01 463

原创 Spring Cloud 技术实战

Spring Cloud 是基于 Spring Boot 的微服务框架,提供了一套完整的微服务解决方案。其核心组件包括 Eureka(服务注册与发现)、Gateway(API 网关)、Config(配置中心)、OpenFeign(声明式 REST 客户端)、Circuit Breaker(断路器)以及 Sleuth & Zipkin(分布式追踪)。

2025-05-18 09:41:39 498

原创 jenkins pipeline实现CI/CD

本文介绍了如何使用Jenkins Pipeline实现企业项目的CI/CD流程。开发人员提交代码后自动构建镜像,发布到镜像仓库,供部署平台部署

2025-05-18 09:40:38 538

原创 Git 版本控制系统入门指南

Git 是一个分布式版本控制系统,广泛用于跟踪文件变化、管理代码版本和协调多人协作。其核心特点包括分布式架构、快速分支操作、完整历史记录和数据完整性保证。Git 的工作流程涉及三个主要区域:工作目录、暂存区和本地仓库。基本操作包括初始化仓库、配置用户信息、添加文件、提交更改和推送远程仓库。分支管理是 Git 的重要功能,支持创建、切换、合并和删除分支。远程仓库操作涉及查看、添加、获取、拉取和推送更新。

2025-05-17 15:47:34 430

原创 SVN 版本控制入门指南

SVN(Subversion)是一种集中式版本控制系统,用于管理文件的历史记录和多人协作开发。其核心概念包括仓库(Repository)、工作副本(Working Copy)和版本号(Revision)。仓库是存储所有项目文件和历史记录的中央数据库,工作副本是本地文件副本,版本号是每次提交生成的唯一标识。SVN的基本操作包括检出(Checkout)、更新(Update)、提交(Commit)以及添加/删除文件。状态查看、差异比较和日志查看功能帮助开发者了解文件状态和历史记录。分支管理支持创建、切换和合并分支

2025-05-17 15:31:59 1028

原创 k8s部署实战-springboot应用部署

本文详细介绍了如何将 SpringBoot 应用部署到 Kubernetes 集群中的完整流程。首先,通过 Dockerfile 构建应用镜像,并将其推送到镜像仓库。接着,编写 Kubernetes 配置文件,包括 Deployment、Service 和可选的 ConfigMap,并通过 kubectl 命令部署到集群中。文章还涵盖了高级配置,如水平自动扩缩容(HPA)、持久化存储和 Ingress 配置,以及监控、日志收集和滚动更新等维护操作。

2025-05-16 22:02:45 449

原创 容器编排利器-k8s入门指南

Kubernetes(K8s)是一个开源的容器编排平台,由Google开发并由云原生计算基金会(CNCF)管理。它主要用于自动化部署、扩展和管理容器化应用程序,特别适用于微服务架构。Kubernetes的核心概念包括Pod(最小的部署单元)、Node(工作节点)、Deployment(管理Pod的声明式配置)、Service(提供统一的访问入口)和Namespace(资源隔离)。

2025-05-16 21:34:14 1224

原创 Jenkins + SonarQube:实现项目自动构建与代码质量检测

本文详细介绍了如何通过 Jenkins 和 SonarQube 实现项目的自动构建与代码质量检测。

2025-05-15 14:55:23 588

原创 新手入门系列-springboot项目初体验

本文介绍了如何从零开始搭建一个 SpringBoot 项目,并整合 MySQL 数据库和 Redis 缓存。

2025-05-15 14:23:57 785

原创 新手入门系列-linux系统下安装和使用docker

本文介绍了如何在Linux系统下安装和使用Docker,并通过实例演示了如何利用Docker安装和运行MySQL容器。

2025-05-14 21:38:57 479

原创 新手入门系列-virtualbox+vagrant创建linux虚拟机

我们很多项目或者组件需要运行在linux操作系统上,但我们大部分PC电脑都是基于windows操作系统的。本文介绍如何在windows操作系统上搭建linux虚拟操作系统。

2025-05-14 20:54:26 1349

原创 go语言环境安装

本文介绍了如何在Ubuntu系统上通过二进制包安装Golang。

2025-05-13 21:34:37 293

原创 Arthas动态修改looger日志级别

在排查线上问题时,通常需要将日志级别从info提升至debug以获取更详细的信息。传统方法通过修改配置文件并重启应用来实现,但这种方式既繁琐又可能影响业务。阿里提供的Java调试工具Arthas提供了一种动态修改日志级别的便捷方法。

2025-05-13 21:23:13 187

原创 Git账号登录配置详解(http+ssh)

在Git中管理多个代码仓库时,为了避免每次操作都输入账号密码,可以通过配置SSH密钥实现自动登录。

2025-05-13 14:41:40 737

原创 关于mysql表分区

分区表的主要目的是将数据按照较粗的颗粒度分在不同的表中,以应对大数据量的存储和查询需求。分区表在实际场景中具有强大的作用,如处理无法全部放入内存的大表、维护数据、高效利用设备、避免特殊瓶颈等。分区表的数据存放在不同的物理内存中,可以独立进行优化、检查、修复操作,并支持备份和恢复。然而,分区表也存在一些限制,如最多1024个分区、无法使用外键等。建立分区表时,分区列必须是主键或包含于主键中。MySQL支持多种分区方式,如范围分区、键值分区、哈希分区等。在处理超大数据时,分区可以看作索引的最初形态,定位数据到某

2025-05-10 22:11:48 677 1

原创 AI编程工具cursor实战

Cursor是由Anysphere公司开发的一款AI代码编辑器,支持多种编程语言如Python、Java和JavaScript。它能够通过自然语言输入自动生成代码,并具备代码理解、重构和优化的能力。Cursor的主要功能包括代码提示补全和交互式聊天,后者可以回答问题并自动生成代码。本文介绍了使用cusor开发一个excel合并功能的实战情况,全程AI工具自动生成,无手写一行代码。

2025-05-10 17:29:16 456

原创 AI客户端LobeChat私有化部署

我们在启动lobechat的时候可以通过设置大模型的环境变量,来自动设置好对应的模型,用户访问的时候就不需要单独设置了。我这里通过设置QWEN_API_KEY,QWEN_PROXY_URL,QWEN_MODEL_LIST这3个环境变量分别指定了千问大模型的apikey,aip代理url,和指定模型列表。点击右侧的会话设置,选择语言模型lobechat几乎支持了所有主流的大模型,这里需要配置是否启用该大模型,启用的话,配置相关的api地址和apikey。我这里配置了阿里云千问大模型,选择了3个模型。

2025-05-10 15:13:54 1093

原创 DeepSeek 本地部署详细教程

本文介绍了如何在本地部署和运行最近流行的DeepSeek大模型。首先,建议使用Ollama工具进行部署,用户需从其官网下载并安装Ollama。安装完成后,通过命令行检查版本以确认安装成功。接着,在Ollama官网搜索DeepSeek模型,选择适合自己机器配置的模型版本(如7b)。运行相关命令自动下载模型,并通过设置环境变量更改模型存储路径以避免占用C盘空间。最后,用户可以通过命令行与模型交互,进行提问等操作。整个过程展示了DeepSeek模型在普通办公电脑上的部署流程,即便未配备显卡也能运行,尽管性能可能受

2025-05-10 11:02:32 178

原创 cursor+MCP+mysql实现自然语言操作数据库

本文主要分享一下使用AI编程工具cursor,来通过MCPserver连接mysql数据库,实现通过自然语言对数据库进行操作

2025-05-07 17:53:38 746

原创 cursor+MCP+figma实现从设计稿生成代码

使用AI编程工具cursor+MCP+figma实现从设计稿直接生成代码

2025-05-06 18:01:08 1190 4

原创 Mysql在线DDL工具

一 背景在实际生产应用中,经常会有mysql表结构修改的场景,涉及到的表数据量大,如果直接修改,锁表时间过长,影响正常业务。因此,寻求通过在线DDL工具进行表结构修改。这里选择了常用的2个在线DDL工具gh-ost 和pt-online-schema-change进行测试。二 gh-ost 是github贡献的一款online DDL工具。大致原理如下1 根据原表新建一个临时...

2020-04-14 16:43:23 1572 1

java设计模式

java设计模式详细介绍

2008-07-09

struts标签文档

struts标签帮助文档

2008-07-09

DOM4J

DOM4J使用简介,很实用的指南

2008-07-09

Spring in Action.pdf

介绍SPRING结合STRUTS的使用

2008-07-09

JSTL帮助文档

JSTL帮助文档,chm格式

2008-07-09

空空如也

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

TA关注的人

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