- 博客(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
原创 Arthas动态修改looger日志级别
在排查线上问题时,通常需要将日志级别从info提升至debug以获取更详细的信息。传统方法通过修改配置文件并重启应用来实现,但这种方式既繁琐又可能影响业务。阿里提供的Java调试工具Arthas提供了一种动态修改日志级别的便捷方法。
2025-05-13 21:23:13
187
原创 关于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
原创 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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人