当前位置: 首页 > news >正文

创建模式、结构模式及行为模式

谁在什么地方提供什么功能?

要设计几个类?这些类各个是什么功能?相互间的关系是什么?

创建模式指的是对象那么多,怎么把它"生"出来?生几个?从这个角度上来说数组就是一种另类的创建模式。主要着眼于如何重用已有的代码和设计可重用的代码!

结构模式指的是应该定义多少个对象,多少个类,类和对象间要如何组织。比如说全局变量,我们可以以基本数据类型的形式定义,另一种就是将其按照一定的标准进行分类,定义"结构"。主要着眼与如何扩充代码!

行为模式指业务如何处理,先干什么,再干什么。但这部分内容和结构显然是密切相关的:同样是买房子,找中介和不找中介完全是两个流程。行为模式重点是解决代码中if-else过多的问题。这可能是最复杂的内容。主要着眼于如何减低代码间的耦合和代码结构的复杂性。

5种创建模式,7种结构模式,11种行为模式

设计软件就像写文章,架构是谋篇布局,设计模式是段落(章节)安排,习惯法是遣词造句!

他人的解释

  • Creational patterns provide object creation mechanisms that increase flexibility and reuse of existing code.

  • Structural patterns explain how to assemble objects and classes into larger structures, while keeping these structures flexible and efficient.

  • Behavioral patterns take care of effective communication and the assignment of responsibilities between objects.

从另外一个角度思考:---C语言

什么类不类的,对象不对象的,一直到最底层!

创建模式是关于如何创建变量的,结构模式是关于定义如何扩展变量和函数以获得更大的变量和函数,行为模式是关于定义函数。

实现这些模式要实现适当的结构和函数,但是总体来看这些代价是值得的,提升了系统的柔性和效率(flexible &efficient)。

1.创建模式:--主要解决变量定义问题

比如要处理学生的信息,如成绩语数外,我们可以定义3个变量,一行即可。如果要处理1万个学生的信息,不仅是语数外,还有其他信息,如姓名、性别、学校等,当然还有姓名,那每个学生有7个数据项,1万个学生要定义7万个变量,这时候按简单变量的方式定义的话就把自己搞死了,可以将学生的信息定义一个结构,然后定义一个有1万个元素的数组,这也是一种创建模式。

变量的定义包括2个内容:命名及初始化。

  • 工厂模式用于生成一类变量;
  • 抽象工厂模式可以生成多类变量;
  • 建造者模式可以生成复杂变量,涉及大量参数:将初始化过程分成多个步骤;
  • 原型模式用于批量生成一批对象(游戏中的小兵,炮灰都类似):生成一个,复制、拷贝,修改;
  • 单例模式确保只生成一个对象:用静态变量。

2.结构模式:---主要解决函数及变量的定义问题--》如何在减少不必要的定义同时,保持效率和灵活性。

  • 适配器模式:加了一个中间层(适配器),别人变了我可以不变,我变了,别人可以不变
  • 桥接模式:变与不变分开,比如红色铅笔,蓝色钢笔,黑色毛笔等等,不如只定义笔和颜色,然后进行组合;
  • 组合模式:处理树型结构,节点和叶子是不同的,但是可以看做一样来处理,形式简洁
  • 装饰器模式:俄罗斯套娃
  • 享元模式:精兵简政,共用;像组织中的司机,原来每位高管有一位对应的司机,现在几位高管用一个司机;类似的还有将重复的代码组织成函数,其他各处调用即可
  • 代理模式:都经过它处理,其余你就不管了;
  • 外观模式:为程序库、框架或其他数据或函数等提供一个简单的接口。都经过它转交,它自己不处理交给别人处理,内部的复杂关系我不管;有点像每个单位的门房的作用,原来外部人员办事乱糟糟,现在把材料交给门房即可,过段时间来找他问结果。与代理模式不同的是外观模式自己对数据是不处理的,它转交给别人

3.行为模式:--解决函数问题--》重组数据处理流程、简化函数结构,减少if-else结构;简化调用关系。

  • 中介者模式:多对多的关系转变为多对一的关系,类似于多个医院与多个医药公司采购药物,转变为医药集采。
  • 访问者模式:根据数据不同采用不同的处理方式。
  • 观察者模式:多对一的关系变为一对多的关系。事件订阅。每家每户到邮局取信(多对一)变化邮局将信投递到每家每户(一对多)
  • 责任链模式:有专门的链条记录每个处理环节。首问负责制,且确保问题一定会有人处理的
  • 模板模式:流程固定,每个环节可以变化
  • 备忘录模式:有专门的结构用来记录状态的,以便回溯
  • 状态模式:状态的处理和状态的转换结合。有状态和状态机,状态机负责执行,状态负责处理机状态的转换,非常常用和典型
  • 解释器模式:提炼了一个解释器,对不同的文本处理,先有解释器处理后再根据解释的结构进行处理;类似与高级语言处理过程
  • 迭代器模式:提供一个迭代器,将非线性的结构变为线性的,每一项处理有自己的前序和后继
  • 命令模式:将命令打包,存入队列。命令和处理相分离。
  • 策略模式:将数据与数据的处理分离,数据可以相同,但是处理的方法策略不同。
创建模式单例模式(Singleton)独一无二,全局唯一

如何创建变量

--如何创建对象?

抽象工厂(Abstract  Factory )产品族,创建系列
原型模式(Prototype)复制粘贴,一模一样
工厂模式(Factory)创建产品,子类定制
建造者模式(Builder)一步一步,构建复杂
结构模式组合模式(Composite)树状结构,递归遍历

如何组织数据及函数

函数和数据如何变大而不失灵活性(底层越巩固上层越灵活)?

负责如何将对象和类组装成较大的结构?

如何尽量定义越少的数据结构和函数而不失灵活性?

数据组织
享元模式(Flyweight)共享对象,节省内存

个人信息记录,省份信息可以用1~34

数据组织

桥接模式(Brideg)抽象和实现,解耦合
2个维度变化
数据和函数
适配器模式(Adapter)接口不同,转换器
左右对不上
代理模式(Proxy)控制访问,增加安全
代理服务器?
外观模式(Facade)统一接口,简化调用
Linux中的VFS?
装饰器模式(Decorator)包装对象,增强功能
B包含A,C包含A,D包含B,...
数据和函数
行为模式中介者模式(Mdiator)统一协调,对象解耦

如何处理数据(如何定义函数)

--对象间如何高效沟通和职责委派

从多对多变为多对一
观察者模式(Observer)一对多,消息通知
产生消息的函数启动接收消息的函数,接受消息的函数才处理
访问者模式(Visitor)操作对象,分离算法
责任链模式(Chain of Resonsibility)链式处理,一环接一环
模板模式(Template)抽象父类,子类实现
流程一致,每步不同
备忘录模式(Memento)状态保持回复原状
状态模式(State)状态切换,行为变化
行为处理与行为变化封装一起
解释器模式(interpreter)识别文法,构建解释

迭代器模式(Iterator)遍历集合,无需暴露
命令模式(Command)请求封装解耦合
策略模式(Stategy)算法替代,灵活变化

相关文章:

创建模式、结构模式及行为模式

谁在什么地方提供什么功能? 要设计几个类?这些类各个是什么功能?相互间的关系是什么? 创建模式指的是对象那么多,怎么把它"生"出来?生几个?从这个角度上来说数组就是一种另类的创建模式。主要…...

警惕IDEA 2024版重大Bug问题:LomBok失效、Gradle冲突、Spring Boot启动错误

一直以来我认为工具类的软件是越新越好,因为工具代表着一定的先进性;但是IDEA 2024好好的给我上了一课,比如lombok 不起作用、比如Spring Boot 3.4.x 启动报错、再比如MyBatis log plus冲突、再比如Gradle插件冲突. 一、Lombok 失效问题 请不…...

C语言中char str和char str[]的区别

char* str和char* str[]的区别:C语言中char *str[] 和char *str有什么区别-CSDN博客 char str 和 char str[] 在 C 语言中也有不同的含义和用途,以下是它们的区别: 1. char str 类型:这是一个单一的字符变量。 用途&#xff1a…...

(学习总结20)C++11 可变参数模版、lambda表达式、包装器与部分新内容添加

C11 可变参数模版、lambda表达式、包装器与部分新内容添加 一、可变参数模版基本语法及原理包扩展emplace系列接口 二、lambda表达式lambda表达式语法捕捉列表lambda的原理lambda的应用 三、包装器bindfunction 四、部分新内容添加新的类功能1.默认的移动构造和移动赋值2.声明时…...

备份和容灾之区别(The Difference between Backup and Disaster Recovery)

备份和容灾之区别 备份和容灾都是数据安全常见的保障手段,但是一般在正常业务运行时是无需用到这两个技术手段的。只有在业务已经崩溃,需要进行业务恢复时,这两种技术的价值才能真正体现。所以,备份和容灾可以说是数据安全最后两…...

Go语言之路————数组、切片、map

Go语言之路————数组、切片、map 前言一、数组二、切片三、map 前言 我是一名多年Java开发人员,因为工作需要现在要学习go语言,Go语言之路是一个系列,记录着我从0开始接触Go,到后面能正常完成工作上的业务开发的过程&#xff…...

Kotlin Bytedeco OpenCV 图像图像57 图像ROI

Kotlin Bytedeco OpenCV 图像图像57 图像ROI 1 添加依赖2 测试代码3 测试结果 1 添加依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns"http://maven.apache.o…...

字符编码通过字节数组向16进制的互转【终端设备通讯案例篇】:微信小程序 JavaScript字符串转gb2312 字符编码,以16进制字符串传输。(接收蓝牙设备的信息,发送北斗终端消息)

文章目录 引言I 原理II 案例一:微信小程序字符串转gb2312 字符编码,以16进制字符串传输。字节数组 转16进制字符串微信小程序字符串转gb2312 字节数组(utf8ToGb2312Bytes)demo:gb2312 字符编码->字节数组->16进制字符串III 案例二: 小程序接收gb2312 的16进制字符串…...

LabVIEW与WPS文件格式的兼容性

LabVIEW 本身并不原生支持将文件直接保存为 WPS 格式&#xff08;如 WPS 文档或表格&#xff09;。然而&#xff0c;可以通过几种间接的方式实现这一目标&#xff0c;确保您能将 LabVIEW 中的数据或报告转换为 WPS 可兼容的格式。以下是几种常见的解决方案&#xff1a; ​ 导出…...

协程(还需要输入3个字)

昨天我偶然听到协程这个概念&#xff0c;不禁好奇地了解了一下&#xff0c;做些笔记如下&#xff1a; 一、什么是协程 协程是在线程内部&#xff0c;由程序自己控制逻辑&#xff0c; 显式地让出控制权&#xff08;yield&#xff09;来实现任务切换&#xff0c;而不是由操作系…...

系统架构设计师-第1章-计算机系统知识要点

【本章学习建议】 根据考试大纲&#xff0c;本章主要考查系统架构设计师单选题&#xff0c;预计考1分左右。第二版教材2.2节增加了本块内容&#xff0c;但较为简略&#xff0c;需要课程补充&#xff0c;属于非重点内容。 1.1 计算机硬件组成 计算机的基本硬件系统由运算器、控…...

Linux -- 初识HTTP协议

目录 什么是HTTP协议 什么是 URL &#xff1f; 理解 URL 初识HTTP 请求与响应格式 代码验证 gitee HTTP.hpp 结果 什么是HTTP协议 HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;主要用于客户端&#xff08;通常是浏览器&#…...

【已解决】我和ollama运行的qwen2.5大模型通信,总是返回GGGG?

起因&#xff1a; 和大模型通信的时候&#xff0c;总是返回 GGG 之类的乱码。 curl查询返回到结果&#xff1a; 既然curl通信不行&#xff0c;直接在控制台聊天呢&#xff1f; 话都说不明白&#xff0c;我火了&#xff0c;结果一查&#xff0c;我熄火了&#xff0c;是ollama…...

在Mac mini上实现本地话部署AI和知识库

在Mac mini上实现本地话部署AI和知识库 硬件要求&#xff1a;大模型AI&#xff0c;也叫LLM&#xff0c;需要硬件支持&#xff0c;常见的方式有2种&#xff1a;一种是采用英伟达之类支持CUDA库的GPU芯片或者专用AI芯片&#xff1b;第二种是采用苹果M系列芯片架构的支持统一内存架…...

SQL和MySQL以及DAX的日期表生成?数字型日期?将生成的日期表插入到临时表或者实体表中

几种生成日期表的方法 如何用SQL语句生成日期表呢&#xff1f; 如何用MySQL语句生成日期表呢&#xff1f; 如何用DAX语句生成日期表呢&#xff1f; 1. MySQL生成日期表 1.1 日期格式&#xff1a;yyyy-MM-dd 字符型 2024-01-02 -- 生成日期表 WITH RECURSIVE temp_dateTable …...

win32汇编环境,窗口程序中基础列表框的应用举例

;运行效果 ;win32汇编环境,窗口程序中基础列表框的应用举例 ;比如在窗口程序中生成列表框&#xff0c;增加子项&#xff0c;删除某项&#xff0c;取得指定项内容等 ;直接抄进RadAsm可编译运行。重点部分加备注。 ;以下是ASM文件 ;>>>>>>>>>>>…...

Sentinel配置流控规则详解

前言 在微服务架构中&#xff0c;流量控制&#xff08;Flow Control&#xff09;是保障服务稳定性的重要手段之一。Sentinel作为一款开源的流量控制、熔断降级Java库&#xff0c;以其丰富的应用场景和完善的监控能力&#xff0c;在微服务保护中扮演了重要角色。本文将详细介绍…...

opencv图像基础学习

2.3图像的加密解密 源码如下&#xff1a; import cv2 import numpy as np import matplotlib.pyplot as plt def passImg():imgcv2.imread(./image/cat.jpg,0)h,wimg.shape#生成一个密码&#xff0c;加密key_imgnp.random.randint(0,256,size(h,w),dtypenp.uint8)img_addmcv2…...

递归40题!再见递归

简介&#xff1a;40个问题&#xff0c;有难有易&#xff0c;均使用递归完成&#xff0c;需要C/C的指针、字符串、数组、链表等基础知识作为基础。 1、数字出现的次数 由键盘录入一个正整数&#xff0c;求该整数中每个数字出现的次数。 输入&#xff1a;19931003 输出&#xf…...

javadoc使用dos命令生成api文档演示

新建一个文本后缀改java&#xff0c;名字改为类名 文本内容&#xff1a; /** * author ZZJ * version jdk23.0.1 */ public class Test{/*** 求输入两个参数范围以内整数的和* param n 接收的第一个参数&#xff0c;范围起点* param m 接收的第二个参数&#xff0c;范围终点*…...

OpenAI推出首个AI Agent!日常事项自动化处理!

2025 年1月15日&#xff0c;OpenAI 正式宣布推出一项名为Tasks的测试版功能 。 该功能可以根据你的需求内容和时间实现自动化处理。比方说&#xff0c;你可以设置每天早晨 7 点获取天气预报&#xff0c;或定时提醒遛狗等日常事项。 看到这里&#xff0c;有没有一种熟悉的感觉&a…...

uniapp实现“到这儿去”、拨打电话功能

"到这儿去" 在 UniApp 中实现“到这儿去”的功能,即调起地图导航至指定位置,对于不同的平台(小程序、H5、App)有不同的处理方式。下面将简单介绍如何在这些平台上实现该功能,并讨论位置信息的获取。后面需求会用到,先来找一些相关资料,并不一定很准确,但也来…...

T-SQL语言的计算机基础

T-SQL语言的计算机基础 引言 在当今信息技术迅猛发展的时代&#xff0c;数据已成为企业和组织决策的重要基础。而处理和管理数据的工具和语言也日益成为IT专业人员必备的技能之一。T-SQL&#xff08;Transact-SQL&#xff09;作为微软SQL Server数据库的扩展&#xff0c;是一…...

SpringBoot + Websocket实现系统用户消息通知

1、引入依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.7</version><relativePath/> </parent> <dependencies><dependency>…...

基于 HTML5 Canvas 制作一个精美的 2048 小游戏--day 1

基于 HTML5 Canvas 制作一个精美的 2048 小游戏 在这个快节奏的生活中&#xff0c;简单而富有挑战性的游戏总能给我们带来乐趣。2048 是一款受欢迎的益智游戏&#xff0c;不仅考验智力&#xff0c;还能让人回味无穷。今天&#xff0c;我带领大家将一起学习如何使用 HTML5 Canv…...

macos arm 本地/docker/本地k8s 安装jupyterhub 并登陆

概述 很多文章写的启动官方docker镜像后,新建linux用户即可直接登录,不知道是否版本原因,总之目前最新版我亲测不可以,踩坑两天,这里记录下解决过程,以及各种细节在文档中的位置.以及为什么官方镜像不能直接使用的原因. part1 本地安装jupyterhub https://jupyterhub.readth…...

go采集注册表

package mainimport ("fmt""golang.org/x/sys/windows/registry""log""os""strconv""strings" )func USBSTOR_Enum() {// 打开注册表键keyPath : SYSTEM\CurrentControlSet\Services\USBSTOR\Enumk, err : regist…...

Java连接TDengine和MySQL双数据源

git文件地址&#xff1a;项目首页 - SpringBoot连接TDengine和MySQL双数据源:SpringBoot连接TDengine和MySQL双数据源 - GitCode 1、yml配置 spring:datasource:druid:mysql:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/testusername: roo…...

配置AOSP下载环境

1#curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo 2#repo init -u https://android.googlesource.com/platform/manifest 3#清华镜像站帮助页 https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ 4#同步安卓AOSP 这里是安卓13 repo init -u htt…...

SpringBoot源码解析(七):应用上下文结构体系

SpringBoot源码系列文章 SpringBoot源码解析(一)&#xff1a;SpringApplication构造方法 SpringBoot源码解析(二)&#xff1a;引导上下文DefaultBootstrapContext SpringBoot源码解析(三)&#xff1a;启动开始阶段 SpringBoot源码解析(四)&#xff1a;解析应用参数args Sp…...

5 分钟复刻你的声音,一键实现 GPT-Sovits 模型部署

想象一下&#xff0c;只需简单几步操作&#xff0c;就能生成逼真的语音效果&#xff0c;无论是为客户服务还是为游戏角色配音&#xff0c;都能轻松实现。GPT-Sovits 模型&#xff0c;其高效的语音生成能力为实现自然、流畅的语音交互提供了强有力的技术支持。本文将详细介绍如何…...

数字化时代,传统代理模式的变革之路

在数字化飞速发展的今天&#xff0c;线上线下融合&#xff08;O2O&#xff09;成了商业领域的大趋势。这股潮流&#xff0c;正猛烈冲击着传统代理模式&#xff0c;给它带来了新的改变。 咱们先看看线上线下融合现在啥情况。线上渠道那是越来越多&#xff0c;企业纷纷在电商平台…...

python爬虫爬取淘宝商品比价||淘宝商品详情API接口

最近在学习北京理工大学的爬虫课程&#xff0c;其中一个实例是讲如何爬取淘宝商品信息&#xff0c;现整理如下&#xff1a; 功能描述&#xff1a;获取淘宝搜索页面的信息&#xff0c;提取其中的商品名称和价格 探讨&#xff1a;淘宝的搜索接口 翻页的处理 技术路线:requests…...

HunyuanVideo 文生视频模型实践

HunyuanVideo 文生视频模型实践 flyfish 运行 HunyuanVideo 模型使用文本生成视频的推荐配置&#xff08;batch size 1&#xff09;&#xff1a; 模型分辨率(height/width/frame)峰值显存HunyuanVideo720px1280px129f60GHunyuanVideo544px960px129f45G 本项目适用于使用 N…...

CSRF攻击XSS攻击

概述 ​在 HTML 中&#xff0c;<a>, <form>, <img>, <script>, <iframe>, <link> 等标签以及 Ajax 都可以指向一个资源地址&#xff0c;而所谓的跨域请求就是指&#xff1a;当前发起请求的域与该请求指向的资源所在的域不一样。这里的域指…...

vue3学习日记8 - 一级分类

最近发现职场前端用的框架大多为vue&#xff0c;所以最近也跟着黑马程序员vue3的课程进行学习&#xff0c;以下是我的学习记录 视频网址&#xff1a; Day2-17.Layout-Pinia优化重复请求_哔哩哔哩_bilibili 学习日记&#xff1a; vue3学习日记1 - 环境搭建-CSDN博客 vue3学…...

Notepad++移除所有空格

1.打开Notepad。 2.打开你想要编辑的文件。 3.按下 Ctrl H 打开查找和替换对话框&#xff0c;并选择 “正则表达式”。 4.在 “查找目标” 框中输入 \s。 5.在 “替换为” 框中留空&#xff0c;不填写任何内容。 6.点击 “全部替换” 按钮。...

JavaSE第八天

一、继承之super关键字 super关键字&#xff1a; 一个引用变量&#xff0c;用于引用父类对象 父类和子类都具有相同的命名方法&#xff0c;要调用父类方法时使用 父类和子类都具有相同的命名属性&#xff0c;要调用父类中的属性时使用 super也是父类的构造函数&#xff0c;…...

ideal jdk报错如何解决

例如: 可能一:环境变量中未配置 请在Path中加入并将要使用的最好置顶,如 可能二:项目结构中语言级别错误: 可能三:Maven工程中,对于模块要单独设置jdk: 如: 未设置则为默认,在博主本次展示中为:...

嵌入式Linux ntpclient的使用

ntpclient是一个用于与NTP&#xff08;Network Time Protocol&#xff0c;网络时间协议&#xff09;服务器通信并测量系统时间的工具。我这里用的是"ntpclient_2024_132"。下载源码编译后会得到一个ntpclient程序。 下面是对ntpclient每个选项的解释&#xff1a; -…...

25/1/15 嵌入式笔记 初学STM32F108

GPIO初始化函数 GPIO_Ini&#xff1a;初始化GPIO引脚的模式&#xff0c;速度和引脚号 GPIO_Init(GPIOA, &GPIO_InitStruct); // 初始化GPIOA的引脚0 GPIO输出控制函数 GPIO_SetBits&#xff1a;将指定的GPIO引脚设置为高电平 GPIO_SetBits(GPIOA, GPIO_Pin_0); // 将GPIO…...

【练习】力扣热题100 字符串解码

题目 给定一个经过编码的字符串&#xff0c;返回它解码后的字符串。 编码规则为: k[encoded_string]&#xff0c;表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k保证为正整数。 你可以认为输入字符串总是有效的&#xff1b;输入字符串中没有额外的空格&#xff0c…...

1.快慢指针-力扣-283-移动零

题目描述 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 用例 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nu…...

5. 使用springboot做一个音乐播放器软件项目【业务逻辑开发】

#万物oop 上一章文章 我们做了音乐播放器 数据表的创建。参加地址&#xff1a; https://blog.csdn.net/Drug_/article/details/145093705 今天分享的这篇文章就是根据数据表 来写 业务逻辑 。 今天我们主要是实现管理后台的功能。 对于这篇文章 的理解 需要小伙伴有 springbo…...

配置正确spring-boot工程启动的时候报错dynamic-datasource Please check the setting of primary

一个两年没有碰的spring-boot工程&#xff0c;启动时报错。因为用了baomidou的多源数据库配置&#xff0c;因此启动时报错primary没有正确配置。经过检查&#xff0c;确定配置文件配置正确。 报错原因是没有读到正确的配置文件。pom文件里的resources标签重定义&#xff0c;把…...

Freeswitch使用media_bug能力实现回铃音检测

利用freeswitch的media bug能力来在智能外呼时通过websocket对接智能中心的声音检测接口&#xff0c;来实现回铃音检测&#xff0c;来判断用户当前是否已响应&#xff0c;拒接&#xff0c;关机等。 1.回铃音处理流程 2.模块源码目录结构 首先新建一个freeswitch的源码的src/a…...

Kubernetes(k8s)和Docker Compose本质区别

Kubernetes&#xff08;简称 k8s&#xff09;和 Docker Compose 是容器编排领域的两大重要工具&#xff0c;虽然它们都用于管理和编排容器化应用&#xff0c;但在设计目标、功能特性、使用场景和复杂度上存在显著差异。以下将从多个方面详细探讨 Kubernetes 和 Docker Compose …...

OSI七层协议——分层网络协议

OSI七层协议&#xff0c;顾名思义&#xff0c;分为七层&#xff0c;实际上七层是不存在的&#xff0c;是人为的进行划分,让人更好的理解 七层协议包括&#xff0c;物理层(我),数据链路层(据),网络层(网),传输层(传输),会话层(会),表示层(表),应用层(用)(记忆口诀->我会用表…...

RabbitMQ 客户端 连接、发送、接收处理消息

RabbitMQ 客户端 连接、发送、接收处理消息 一. RabbitMQ 的机制跟 Tcp、Udp、Http 这种还不太一样 RabbitMQ 服务&#xff0c;不是像其他服务器一样&#xff0c;负责逻辑处理&#xff0c;然后转发给客户端 而是所有客户端想要向 RabbitMQ服务发送消息&#xff0c; 第一步&a…...

SQL ON与WHERE区别

在 MySQL 中&#xff0c;ON 和 WHERE 都用于过滤数据&#xff0c;但它们的使用场景和作用有所不同&#xff0c;尤其是在涉及 JOIN 操作时。下面通过具体的例子来说明它们的区别。 1. ON 的作用 ON 用于指定表之间的连接条件&#xff0c;决定哪些行应该被连接在一起。它在 JOI…...