自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 行为型模式:⑥备忘录模式(Memento Pattern)

封装原则:备忘录的状态仅允许发起人访问,外部(包括管理者)不可修改;单一职责原则:发起人管业务 + 状态读写,备忘录管状态存储,管理者管备忘录管理;开闭原则:新增状态或扩展备忘录时,无需修改管理者,仅需调整发起人和备忘录。

2025-11-24 21:22:39 405

原创 行为型模式:②命令模式(Command Pattern)

开闭原则:新增命令无需修改现有代码;单一职责原则:命令负责封装请求,接收者负责执行操作,调用者负责管理命令;依赖倒置原则:调用者依赖抽象命令,不依赖具体命令和接收者。

2025-11-24 18:08:28 374

原创 行为型模式:①责任链模式(Chain of Responsibility Pattern)

单一职责原则:每个处理者仅处理自身职责内的请求;开闭原则:新增处理者或调整链结构无需修改现有代码;依赖倒置原则:客户端依赖抽象处理者,不依赖具体处理者。

2025-11-24 17:59:19 425

原创 结构型模式:⑦代理模式(Proxy Pattern)

开闭原则:增强目标对象功能时,无需修改目标类,仅需新增代理类;依赖倒置原则:客户端依赖抽象接口,不依赖具体目标类或代理类;单一职责原则:目标类负责核心逻辑,代理类负责访问控制和功能增强,职责清晰。

2025-11-19 08:16:11 831

原创 结构型模式:⑥享元模式(Flyweight Pattern)

1.单一职责原则:享元负责存储内部状态和处理核心逻辑,工厂负责缓存和创建,职责清晰;2.开闭原则:新增享元类型时,仅需新增具体享元类,工厂无需大幅修改;3.最小内存原则:通过共享内部状态,将对象数量从 “N 个” 减少到 “M 个”(M 为内部状态的种类数)。

2025-11-19 08:15:49 681

原创 结构型模式:④装饰模式(Decorator Pattern)

1.组合优于继承:装饰器通过组合持有组件,而非继承,降低耦合;2.开闭原则:新增职责只需新增装饰器,无需修改原组件和现有装饰器;3.接口一致:装饰器与被装饰对象实现同一接口,确保客户端透明操作。

2025-11-18 23:55:26 357

原创 结构型模式:⑤外观模式(Facade Pattern)

1.最少知识原则:客户端只需了解外观,无需了解子系统内部组件;2.单一职责原则:外观负责协调子系统,子系统负责自身功能,职责清晰;3.开闭原则:扩展子系统时(如新增组件),只需修改外观,无需修改客户端和现有子系统。

2025-11-18 23:55:04 305

原创 结构型模式:③组合模式(Bridge Pattern)

1.开闭原则:新增组件类型(叶子 / 容器)无需修改现有代码,仅需实现抽象接口;2.单一职责:叶子专注于自身业务(如文件的显示),容器专注于子组件管理(添加 / 移除 / 遍历);3.依赖倒置:客户端依赖抽象组件(Component),不依赖具体实现(File/Folder)。

2025-11-17 10:11:20 868

原创 结构型模式:②桥接模式(Bridge Pattern)

1.将类的 “抽象部分” 与 “实现部分” 解耦,通过 “组合关系”(桥接)替代 “继承关系”,使两者可以独立扩展、互不影响:1.1抽象部分:定义上层逻辑(如 “产品类型”:普通手机、游戏手机),持有实现部分的引用;1.2实现部分:定义底层具体实现(如 “品牌”:华为、苹果),提供统一接口供抽象部分调用;2.核心本质:用 “对象组合” 替代 “多层继承”,避免因两者组合导致的 “类爆炸”(例如不用桥接时,需定义华为普通机、华为游戏机、苹果普通机、苹果游戏机等大量子类)。实现关键要点1.接口模拟:用

2025-11-17 09:42:06 492

原创 结构型模式:①适配器模式(Adapter Pattern)

解决接口不兼容问题:将一个类(或结构体)的接口转换成客户端期望的另一个接口,使得原本因接口不匹配而无法协同工作的类(或结构体)能够一起工作。适配器模式分为两种实现方式:1.对象适配器:通过「组合」适配者(已存在的、接口不兼容的组件)实现,灵活性更高(优先推荐);2.类适配器:通过「继承」适配者实现(C 语言不支持继承,仅 C++ 可实现)。

2025-11-16 11:59:27 310

原创 创建型模式:⑤构建器模式(Builder)

核心思想将复杂对象的 “构建过程” 与 “表示” 分离,通过 “构建器” 分步组装部件,“指挥者” 控制构建流程(适合多部件、多配置的复杂对象)。关键要点1.分离关注点:构建器(Builder):负责 “组装部件”(如装 CPU、内存)。指挥者(Director):负责 “构建流程”(如先装 CPU 再装内存)。2.优势:相同构建流程可创建不同配置的产品(游戏电脑 / 办公电脑),扩展新产品只需新增构建器,无需修改指挥者。

2025-11-16 11:43:28 215

原创 创建型模式:④原型模式(Prototype)

【代码】创建型模式:④原型模式(Prototype)

2025-11-15 21:19:43 160

原创 创建型模式:③抽象工厂模式(Abstract Factory)

核心思想提供创建 “产品族” 的接口(多个相关产品),具体工厂负责创建对应族的所有产品(比工厂方法更抽象,处理多产品组合)。关键要点1.抽象工厂管理 产品族(如 “华为产品” 包含屏幕 + 电池),而非单个产品。2.扩展新品牌(如小米)只需新增 “小米工厂” 和对应产品,无需修改原有代码(符合开闭原则)。

2025-11-15 21:19:05 857

原创 创建型模式:②工厂方法模式(Factory Method)

核心思想定义 “产品创建接口”(工厂),由具体工厂决定实例化哪个产品(解耦产品创建与使用)。关键要点1.用 函数指针 模拟 “多态”:不同产品实现不同的 run 方法,工厂通过统一接口创建。2.解耦:客户端无需知道产品创建细节(如 create_car),只需通过工厂接口 create_product 获取产品。

2025-11-14 16:34:50 274

原创 创建型模式:①单例模式(Singleton)

核心思想确保一个 “类” 只有唯一实例,且提供全局访问点(C 语言用静态局部变量 + 函数封装实现)。关键要点1.静态局部变量 static Singleton* instance 是 “唯一实例” 的核心(生命周期贯穿程序)。2.双重检查锁定(DCL):避免多线程下创建多个实例,同时减少锁竞争。3.C11 标准后静态变量初始化是线程安全的,可省略锁(简化版本)。

2025-11-14 16:14:10 131

原创 软件设计工具应用

比如先用 IPO 图确定模块边界,再用 PDL 或 PAD 图描述内部逻辑,用程序流程图向非技术人员展示流程。

2025-10-16 10:18:02 376

原创 Linux下Cmake4.x版本安装教程

目前演示linux64位安装。

2025-08-07 18:26:12 325

原创 c语言的三目运算符问题

赋值需要在左值,而不是右值。

2025-02-13 15:11:21 434

原创 为什么linux进行可执行程序运行会出现乱码

答案是因为linux可能不支持相应格式中文,比如ANSI编码。

2025-02-13 15:07:09 143

原创 RS232和RS485串口通信一些要点

使用serial串口通信模块,坏处就是要写这么多行直接使用echo将写内容到标准输出。

2025-02-13 15:02:29 181

原创 socket一对一代码

用socket让客户端和服务器一对一进行通信

2022-12-08 11:21:12 300

原创 mqtt调用mosquitto.h错误码

mqtt调用mosquitto.h错误码

2022-12-07 09:58:14 2454

原创 arm-linux-gnueabihf工具安装

arm开发编译工具安装

2022-10-19 15:33:58 3136

原创 hide middle packages

hide middle packages

2021-06-15 19:43:34 221 1

原创 RabbitMq2021版安装教程

安装前需要准备1.下载Eralnghttps://www.erlang.org/2.下载rabbitmqhttps://www.rabbitmq.com/安装步骤1.erlang安装步骤右键安装包,然后点管理员运行不想默认安装在C盘就自己创一个然后等待安装,然后close2.rabbitmq安装步骤win10的高级系统设置增加系统变量添加到path里面...

2021-06-14 10:44:41 854

原创 汇总程序员文档方便查找,简洁无修饰不定期更新

Mybatis官网https://mybatis.org/mybatis-3/getting-started.html中文文档https://www.w3cschool.cn/mybatis/MyBatis-Plus中文https://mp.baomidou.com/Spring、SpringMvc官网https://docs.spring.io/spring-framework/docs/current/reference/html/以上只是作为方便到时查询做的记录,可能不定时更新

2021-06-08 16:47:58 368 2

原创 druid与mysql版本8.0以上目前在idea中遇到

一、代码错误问题展示解决办法二、版本兼容问题展示解决办法目前暂时这样,后续再记录

2021-06-06 21:26:57 433 2

原创 CURRENT_TIMESTAMP

一、问题原文1.解决办法更新mysql数据库版本

2021-06-06 20:27:24 117

原创 3780 - Referencing column ‘order_id‘ and referenced column ‘order_id‘ in foreign key constraint ‘t_o

一、操作步骤1.问题原文2.问题效果3.加入ENGINE=INNODB DEFAULT CHARSET=utf8;4.执行5.成功

2021-06-06 20:22:10 3583

原创 计算机网络笔记

应用层协议POP3 是Post Office Protocol 3的简称,即邮局协议的第3个版本,常指收取邮件,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。端口号为110ftp(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议族中的一员。用于互联网双向传输,控制文件下载空间在服务器复制文件从本地计算机或本地上传文件复制到服务器上的空间。端口号为20/21,20数据口,21控制口HTTP协议(HyperText Transfer

2021-05-24 19:55:10 401

空空如也

空空如也

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

TA关注的人

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