快速理解24种设计模式
简单工厂模式
建立产品接口类,规定好要实现方法。
建立工厂类,根据传入的参数,实例化所需的类,实例化的类必须实现指定的产品类接口
创建型
单例模式Singleton
保证一个类只有一个实例,并提供一个访问他它的全局访问点
懒汉式:调用获取单例方法,才进行实例化
饿汉式:类初始化时即生成了实例
工厂方法模式Factory(类)
定义一个创建对象的接口,让子类决定实例化那一个类
在简单工厂模式的基础上,将工厂也进行抽象,工厂类实现工厂接口。工厂接口只对指定的一个产品进行实例化。
抽象工厂模式Abstract Factory
提供一个创建一系列相关或互相依赖对象的接口,而无需指定他们的具体类
在简单工厂方法模式的基础上,对工厂接口进行扩展,接口中可以定义多个方法,每个方法产生不同产品类的实例。
原型模式Prototype
用原型实例指定创建的对象种类,并复制原型中的属性给新创建的对象
即类中实现克隆自己的方法,供外部调用。
但是现在很多高级语言已经自带了clone方法,可以克隆对象,那么原型模式还有什么用呢。这是因为有时候语言中自带的clone方法存在一定的局限性。
以java为例,java中的clone,克隆出的新对象中的引用类型属性,是对原对象中属性的引用,他们内存地址是相同的。如果对克隆对象的属性进行操作,可能会修改原对象的信息。这个时候我们就需要重新实现clone,实现真正的克隆。这就要求参与功能的类都需要实现克隆接口
详解Java中的clone方法 -- 原型模式_java clone-CSDN博客 这篇文章对这个问题进行了详细的说明
建造者模式Builder
将一个复杂对象的构建与他的表示分离,使同样的构建过程可以创建不同的表示
- 也叫生成器模式,当类的初始化过程需要设置很多属性且过程复杂时,一次性把所有参数传入构造函数中显得非常不优雅。我们可以把这些属性的设置过程拆分到各个个方法中去,每个方法中设置属性后,返回类本身。这样,在使用时我们可以以链式操作的形式配置参数和调用方法。yii2框架中的query操作就是典型的使用。
- 以上属于是建造者模式的进阶模式,在方法层面就实现了建造者模式。如果严格按照建造者模式的类图,则是在类层面实现建造者模式,如下
当创建了一个建造者类B1,他的BuilderPart方法中,调用了Product的F1,F2方法设置了属性,我们就获取了一个拥有F1,F2状态的product对象。
当我们想要获取一个设置了F2,F3属性的product对象时,就需再在创建一个建造者类。符合开闭原则。
结构型
组合模式Composite
把对象组合成树形结构,以表示“整体-部分”的层次结构,使单个对象与组合对象的使用具有一致性
主要解决整体和部分的关系。比如全国人口统计,每个省,每个市,每个县都需要完成各自辖区的人口统计,但是实现方式不一样。统计全国人口时,不关心统计方法的内部代码,只需要拿到统计方法的值即可。
该模式基于容器实现,容器本身和传入容器的对象(即每个地区的人口统计)都要实现同一个统计接口。完成数据组合后(即往容器中加入子对象),调用容器的统计方法遍历执行列表中对象的统计方法即可,关键代码如下
适配器模式Adapter (类&对象)
将一个类的接口转换为客户希望的另一个接口。使原本因接口不兼容无法一起工作的类可以一起工作。
主要目的是将一个类的接口转换成客户希望的另外一个接口。
基本使用流程为:创建一个适配器类,类的属性为待适配的对象,类的方法为目标方法。除目标方法外,还有一个方法用于接收传入的适配对象,并赋值给待适配属性对象,然后就可以在各个目标方法中调用适配对象的对应方法
装饰器模式Decorator
无需继承,动态的给一个对象添加额外的功能
主要实现:不使用继承,对已有类的方法进行扩展和增加。
实现方式与适配器模式很相似,区别是创建的装饰器类必须实现被扩展类中的方法,这些方法中可以调用被扩展类的原有方法并进行扩展。也可以添加新的方法,实现新的功能。
代理模式Proxy
为一个对象提供一个代理,只能通过代理访问对象
代理模式与适配器模式、装饰器模式类似。不同点是,代理类中的方法只需与被代理类保持一致即可,不需增加和适配
桥接模式Bridge
将抽象部分与实现部分分离,使他们都可以独立变化
一个类存在两个(或多个)独立变化的维度,我们通过组合的方式,让这两个(或多个)维度可以独立进行扩展。通过组合关系来替代继承关系,避免继承层次的指数级爆炸。
策略模式是对算法的抽象,调用者可以根据不同的情况,自主选择不同的算法实现。桥接模式是策略模式的升级版,不仅对算法实现进行抽象,对于调用者也进行抽象,让系统扩性更好,更灵活。世界没有免费的午餐,灵活性变高了,但是复杂性也变高了,对程序员的要求也更高。
桥接模式中,可能存在多个角色,这些角色都要抽象出对应的接口供各自的角色实现,并根据需求依次作为其他角色的使用者
例如角色A实现了sendA()方法,角色B是A的使用者,接收A并处理后,在sendB()方法中执行A的sendA()方法,此时A的sendA()方法输出已经发生了改变。如果存在角色C,那么角色C就会接收B,并在自己的sendC方法中调用sendB()方法。
这个过程中,原数据在各个角色之间被交接和处理,各个角色就像桥一样连接在一起,把数据从开始送到结束,实现了输出。
https://zhuanlan.zhihu.com/p/112497289 该文章中的桥接模式代码描述的比较清晰
外观模式Facade
给系统中的一组接口提供一个高层次的调用接口,使系统更加容易使用
通过创建一个类,在类的方法中将多个功能和步骤有序的执行,外部调用时,只需要调用类的一个方法即可,不需要关心方法内部各个功能的执行顺序和关系。
这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。不符合开闭原则,新增需求时要修改外观类
享元模式(FlyWeight)
使用共享技术支持大量细粒度对象
即连接池技术,通过维护一个对象的集合,通过集合对集合内的对象进行共享。当使用时,先查询集合内是否有可用对象,使用完毕时,释放对象(即修改对象的使用状态)
行为型
命令模式Command
将一个请求封装为一个对象,从而可以使用不同的请求对象对客户端进行参数化
命令模式与外观模式很像,都是对一系列功能进行组织和调用。不同的是,命令模式不需要将这些调用步骤封装到一个类里,可以实时添加或撤销某一步操作。类似mvc架构中的控制器,在控制器方法中可以将请求、数据、视图等功能进行组织和执行。
详细代码示例如下:
责任链模式Chain of Responsibility
使多个对象都有机会处理请求,避免发送者与接收者之间的耦合关系
责任链模式与过滤器模式类似,都是对一个对象进行一系列处理,处理类都是实现相同接口或抽象的类。不同点是,责任链模式中的处理流程是提前准备好的。每个处理类在实例化时,必须指定下一个处理对象,直到最后一个处理类时,无需再指定。一旦对象在某个处理对象中被处理,则不在进行后续的步骤。
解释器模式Interpreter (类)
针对语言或算法,定义一个解释器,用以表示语言中的句子
解释器模式类似过滤器模式,只不过侧重点不同。过滤器侧重对数据的过滤删除,而解释器则侧重对数据的解释和修改
迭代器模式Iterator
提供一种方法顺序访问一个聚合对象中各个元素,且不需暴露对象的内部表示
用于顺序访问集合对象的元素,其实就是工厂方法模式的具体使用。
首先定义一个迭代器接口,接口中包hasNext()和next()方法,之后实现多个迭代器类。当一个类中有集合元素,且需要迭代访问时,可以在类中创建一个getIterator()方法用于获取和返回一个迭代器对象,之后该类就可以使用返回的迭代器访问类中的集合元素了。
中介者模式Mediator
用一个中介对象封装一些列对象的交互,使其耦合松散
主要用于解决多个同类对象间的通信复杂性问题。
类似于享元模式,不同点在于中介者模式中的对象容器,可以由参与者动态添加或删除。一个参与者信息的变动,可以通过中介者类中的容器,广播给其他参与者
观察者模式Observer
定义对象间的一种一对多关系,当一个对象状态改变时,所有依赖它的对象都会得到通知
也叫发布订阅模式。类似于中介这模式,不同点在于参与者的不同。观察者模式中的参与者不再是同类的对象,而是分为订阅者和发布者。订阅者可以对观察者类中的对象容器进行操作,即订阅和取消订阅。发布者则只能使用观察者类中的发布方法,向订阅者发布消息
备忘录模式Memento
在不破坏对象封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态。在需要时可以将对象恢复到原先保存的状态。
也叫做快照模式,和原型模式有些类似,都是在类内部对自己的属性进行克隆操作。
不同点在于,备忘录模式中,文档类对自身属性的克隆时机不需要放在clone方法中,而是在类的某些信息发生变动时。生成的克隆对象叫做备忘录对象,这些对象需要实现一个备忘录接口,接口方法是一些对信息的读取和操作。生成备忘录对象后,需要把这些备忘录对象以栈的形式存储。当文档类进行快照读取时,从栈中依次取出备忘录对象,然后使用备忘录对象的方法读取备忘录数据。
状态模式State
允许一个对象在其内部状态改变时改变它的行为
其实就是工厂模式的实际应用。工厂模式中,最终结果是根据条件实例化一个类。状态模式是把生成的类传入使用的方法中,使用方法根据传入的类(即状态)不同,执行不同的工作。
策略模式Strategy
定义一系列算法把它们一个个封装起来,并且使它们可以互相替换
就是状态模式的另外一种称呼。这两个模式只是在概念的理解上稍有不同,状态模式强调的是结果的不同,策略模式强调的是过程的不同。
访问者模式Visitor
ElementA、B、C属于被调用对象,被调用对象中除了自身的业务方法外,都要实现一个accept方法,用于接收访问者对象,并调用访问者对象中针对该对象的方法。
访问者对象,针对每一个被调用对象都要实现一个访问方法,用于将传入的调用对象赋值给当前的访问者对象。访问者可以把接收后的调用对象就行各种扩展
客户端调用时,实例化被调用对象,然后调用accept方法把对象传入访问者。之后就可以通过访问者调用被调用对象的各个方法。更换访问者对象后,就可以实现功能的切换
模板模式Template(类)
定义一个算法骨架,将一些步骤延迟到子类中。使得子类可以不改变一个算法结果即可重定义算法的某些特定步骤
用以解决执行顺序确定,但顺序中每个节点功能不确定的问题。
比如盖房子,标准顺序是打地基、建围墙、封顶、安门窗、走水电、室内装修。盖房子时必须严格按照此顺序执行,但是各个阶段可能因为房子的不同导致工艺、材质有所不同。
这个时候我们把每个步骤抽象出来,但是房子建造的顺序在父类中实现。每个子类可以自由实现各个步骤,但是建造顺序必须继承父类。
相关文章:
快速理解24种设计模式
简单工厂模式 建立产品接口类,规定好要实现方法。 建立工厂类,根据传入的参数,实例化所需的类,实例化的类必须实现指定的产品类接口 创建型 单例模式Singleton 保证一个类只有一个实例,并提供一个访问他它的全局…...
5G -- 5G网络架构
5G组网场景 从4G到5G的网络演进: 1、UE -> 4G基站 -> 4G核心网 * 部署初中期,利用存量网络,引入5G基站,4G与5G基站并存 2、UE -> (4G基站、5G基站) -> 4G核心网 * 部署中后期,引入5G核心网&am…...
硬件开发笔记(三十二):TPS54331电源设计(五):原理图BOM表导出、元器件封装核对
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/144753092 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...
UE5 崩溃问题汇总!!!
Using bundled DotNet SDK version: 6.0.302 ERROR: UnrealBuildTool.dll not found in "..\..\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" 在你遇到这种极奇崩溃的BUG ,难以解决的时候。 尝试了N种方法,都不行的解决方法。…...
美国站群服务器如何帮助实现有效的多域名管理?
国站群服务器以其丰富的IP资源、高性能硬件和灵活的配置选项,成为多域名管理的理想选择。特别是在需要针对不同域名实现SEO优化、业务分离或多站点运营的场景中,美国站群服务器提供了高效且实用的解决方案。以下是如何利用美国站群服务器实现有效的多域名…...
VMware的三种网络模式——在NAT模式下开放接口为局域网内其他主机提供服务
众所周知 VMware 有三种常用的网络通讯模式,分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式),它们各有不同的用法。 Bridged 桥接模式是与主机…...
【漏洞复现】灵当CRM datapdf.php 任意文件读取漏洞
免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作…...
MySql详细教程-从入门到进阶(超实用)
基础篇 通用语法及分类 DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)DML: 数据操作语言,用来对数据库表中的数据进行增删改DQL: 数据查询语言,用来查询数据库中表的记录DCL: 数据控制语言,用…...
【C语言练习(17)—输出杨辉三角形】
C语言练习(17) 文章目录 C语言练习(17)前言题目题目解析整体代码 前言 杨辉三角形的输出可以分三步,第一步构建一个三角形、第二步根据规律将三角形内容填写、第三步将三角形以等腰的形式输出 题目 请输出一个十行的…...
服务器压力测试怎么做
在部署任何Web应用程序或服务之前,进行服务器压力测试(也称为负载测试)是确保系统能够处理预期用户流量的关键步骤。通过模拟大量并发请求,可以评估服务器的性能、稳定性和响应时间,识别潜在瓶颈,并优化资源…...
深度学习中的正则化
深度学习中的正则化(regularization)旨在防止过拟合并提高模型对未知数据的泛化能力。正则化是一种通过在给定的训练集上适当地拟合函数并避免过度拟合来减少误差的技术。 通过对模型参数添加约束,正则化鼓励模型学习更简单、更稳健的模式,从而降低其对噪…...
深入了解 React:从入门到高级应用
深入了解 React:从入门到高级应用 React 是由 Facebook 开发并维护的一个开源 JavaScript 库,用于构建用户界面。自2013年发布以来,React 在前端开发领域迅速崛起,成为最受欢迎的 UI 构建工具之一。无论是小型的单页应用…...
华为云环境下LVS/DR架构的故障诊断优化
本文作者:刘涛 文章目录 前言1.LVS/DR集群的问题2.华为云环境3.问题排查3.1 检查LVS/DR模式配置3.1.1 RS服务器3.1.2 DS服务器 3.2 继续分析抓包结果3.2.1 调整tcpdump抓包过滤条件3.2.2 client向集群VIP发包3.2.3 DS服务器arp消息 3.3 查看丢包3.3.1 监控DS和RS服…...
Effective C++ 条款 22:将成员变量声明为 private
文章目录 条款 22:将成员变量声明为 private核心思想示例代码注意事项结论 条款 22:将成员变量声明为 private 核心思想 成员变量的封装性 将成员变量声明为 private 是面向对象设计的重要原则,有助于保持封装性。 为何使用 private&#x…...
ShardingSphere(分库分表)
ShardingSphere 高性能架构模式 读写分离架构: 基本原理是将数据库读写操作分散到不同的节点上,主库负责处理事务性的增删改操作,从库负责处理查询操作。避免由数据更新导致的行锁,来提升性能。 一主一从:可以将查…...
Visual Studio Code(VS Code)配置C/C++环境
一、Visual Studio Code安装 Visual Studio Code,下文中简称为VS Code的详细安装方法请参考VSCode安装教程(超详细)-CSDN博客 二、MinGW编译器下载与配置 1、MinGW介绍 MinGW(Minimalist GNU for Windows)是一款用于Windows 平台的轻…...
使用 OpenCV 在图像中添加文字
在图像处理任务中,我们经常需要将文本添加到图像中。OpenCV 提供了 cv2.putText() 函数,可以很方便地在图像上绘制文本,支持多种字体、颜色、大小和位置等参数。 本文将详细介绍如何使用 OpenCV 在图像中添加文字,介绍 cv2.putTe…...
高校网络安全_网络安全之道
需要对学校的网络进行安全防护,主要有这么几个痛点: 传统本地化产品难以及时更新情报库,应对新型攻击。 近年来,黑客和黑产团伙攻击手 段呈现多样化实战化,除传统僵木蠕外,各类新型、复杂甚至未知威胁高发…...
『大模型笔记』评估大型语言模型的指标:ELO评分,BLEU,困惑度和交叉熵介绍以及举例解释
评估大型语言模型的指标:ELO评分,BLEU,困惑度和交叉熵介绍以及举例解释 文章目录 一. ELO Rating大模型的elo得分如何理解1. Elo评分的基本原理2. 示例说明3. 大模型中的Elo得分总结3个模型之间如何比较计算,给出示例进行解释1. 基本原理扩展到三方2. 示例计算第一场: A A…...
kafka的配置
server.properties server.properties模板 # broker id,多个broker服务器的话,每个broker id必须不同 broker.id1# kafka broker所在节点的 hostnamehostname10.1.1.1.3:9092# 处理网络请求的线程数 num.network.threads 8# 执行磁盘IO的线程数 num.io…...
Linux下Java通过JNI调用C++
以下为Demo流程 1.创建Java文件 public class HelloWord {// 声明本地方法public native void sayHello();static {// 加载本地库System.loadLibrary("hello");}public static void main(String[] args) {new HelloWord().sayHello();} } 2.编译生成.h头文件 在H…...
家政预约小程序数据库设计
目录 1 如何设计表结构1.1 用户表1.2 服务分类表1.3 服务表1.4 服务规格表1.5 订单表1.6 服务人员表1.7 评价表1.8 促销活动表1.9 投诉表1.10 年卡表1.11 派单表1.12 支付记录表1.13 通知记录表1.14 优惠券表1.15 用户优惠券表1.16 消息模板表1.17 积分记录表 经过一系列的设计…...
【Git学习】windows系统下git init后没有看到生成的.git文件夹
[问题] git init 命令后看不到.git文件夹 [原因] 文件夹设置隐藏 [解决办法] Win11 win10...
云手机群控能用来做什么?
随着云手机的发展,云手机群控技术逐渐从小众的游戏多开工具,发展为涵盖多个领域的智能操作平台。不论是手游搬砖、短视频运营,还是账号养成等场景,云手机群控都展现出了强大的应用潜力。本文将为大家详细解析云手机群控的应用场景…...
go下载依赖提示连接失败
1、现象 Go下载模块提示连接失败 dial tcp 142.251.42.241:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.…...
在线excel编辑(luckysheet)
项目地址:Luckysheet: 🚀Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 可以下载项目使用npm安装运行,也可以用cdn 加载excel文件(使用luckyexcel): …...
2024国赛A题第一问
第一问 板凳龙等距螺线匀速运动模型的建立 坐标系的建立 根据题意,舞龙队沿螺距为55cm的螺线顺时针进入,进入位置为螺线第16圈点A处,即整个螺线的最外侧点,设定其为 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)。为了便于计算出题目要…...
【魅力golang】之-反射
1、引言 反射(Reflection)在 Golang中用于运行时检查和操作变量的类型和值。通过反射,可以实现动态类型处理,这在构建泛型代码、框架、序列化工具和动态代理等场景中非常有用。 2、什么是反射 反射是指程序在运行时能够动态地检…...
Java在 聊天管理系统中的应用
聊天管理系统已经成为人们日常沟通不可或缺的一部分。无论是企业内部的即时通讯,还是社交媒体平台的聊天功能,聊天管理系统都扮演着至关重要的角色。 Java 作为一种广泛应用的编程语言,凭借其强大的功能、良好的跨平台性以及丰富的类库&…...
记一次rac故障原因分析(虚拟化平台)
一 现象描述 XX客户于1月14号凌晨业务中断,检查数据库发现数据库集群宕机。 XX客户于2月14号春节初五早上业务异常,连接数据库无响应。 二 问题详细诊断 1月14号故障 1月14号凌晨2点,客户反馈业务中断,发现节点1无法连接&…...
opencv中的各种滤波器简介
在 OpenCV 中,滤波器是图像处理中的重要工具,用于对图像进行平滑、去噪、边缘检测等操作。以下是几种常见滤波器的简单介绍。 1. 均值滤波 (Mean Filter) 功能: 对图像进行平滑处理,减少噪声。 应用场景: 去除图像…...
文本数据处理
文本数据处理 一、数据转换与错误处理 (一)运维中的数据转换问题 在计算机审计及各类数据处理场景中,数据转换是关键步骤,涉及将被审计单位或其他来源的数据有效装载到目标数据库,并明确标示各表及字段含义与关系。…...
ThinkPHP 8开发环境安装
【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《ThinkPHP 8高效构建Web应用 夏磊 编程与应用开发丛书 清华大学出版社》【摘要 书评 试读】- 京东图书 1. 安装PHP8 Windows系统用户可以前往https://windows.php.net/downloads/releases/archives/下载PHP 8.0版本&am…...
php怎么去除数点后面的0
在PHP中,我们可以使用几种方法来去除数字小数点后的0。 方法一:使用intval函数 intval函数可以将一个数字转化为整数,另外,它也可以去除小数点后面的0。 “php $number 123.4500; $number intval($number); echo $number; // 输…...
Database.NET——一款轻量级多数据库客户端工具
文章目录 Database.NET简介下载使用使用场景总结 Database.NET简介 Database.NET 是一个功能强大且易于使用的数据库管理工具,适用于多种数据库系统。它为开发者和数据库管理员提供了一个统一的界面,可以方便地管理和操作不同类型的数据库。 支持的数据…...
Unittest02|TestSuite、TestRunner、HTMLTestRunner、处理excel表数据、邮件接收测试结果
目录 八、测试套件TestSuite和测试运行器TestRunner 1、基本概念 2、创建和使用测试套件 3、 自动发现测试用例、创建测试套件、运行测试 4、生成html的测试报告:HTMLTestRunner 1️⃣导入HTMLTestRunner模块 2️⃣运行测试用例并生成html文件 九、unittest…...
protobuf学习使用
1、概述 protobuf是Google开发的一种语言中立、平台无关、可扩展的序列化结构数据格式。允许定义一次数据结构,然后可以使用各种支持的语言来生成代码,以轻松地读写这些结构到一个二进制流中,如网络传输或文件,Protobuf支持多种编…...
跟我学c++中级篇——C++中的缓存利用
一、缓存 学习过计算机知识的一般都知道缓存这个概念,大约也知道缓存是什么。但是如果是程序员,如何更好的利用缓存,可能就有很多人不太清楚了。其实缓存的目的非常简单,就是了更高效的操作数据。大家都听说过“局部性原理”&…...
Goland 安装与使用
GoLand安装 官方网址: JetBrains GoLand:不只是 Go IDE 1. 进入官网,点击下载: 2. 如下图一步步安装 3. 如下图一步步安装...
cesium通过经纬度获取3dtiles 得feature信息
找到这里3dtiles的两种访问方式: 1.1 3DTileContent#getFeature 这里涉及3DTile 数据结构,暂不了解3DTile 数据结构,因此暂不使用。 1.2 scene.pick 本次使用 scene表示虚拟场景中所有 3D 图形对象和状态的容器;scene中…...
spring cloud gateway 3
**Spring Cloud Gateway 3** 是 Spring Cloud 生态系统中的一个重要组件,用于构建 API 网关,提供路由、监控、安全等关键功能。以下是关于 Spring Cloud Gateway 3 的详细介绍: ## 1. 什么是 Spring Cloud Gateway? **Spring Clou…...
青少年编程与数学 02-005 移动Web编程基础 03课题、流式布局
青少年编程与数学 02-005 移动Web编程基础 03课题、流式布局 一、流式布局二、网页示例HTML (index.html)CSS (styles.css) 三、精灵图精灵图的工作原理精灵图的优点精灵图的缺点精灵图的适用场景 四、轮播图HTML (index.html)CSS (styles.css)JavaScript (script.js) 课题摘要…...
【数据可视化复习方向】
1.数据可视化就是数据中信息的可视化 2.数据可视化主要从数据中寻找三个方面的信息:模式、关系和异常 3.大数据可视化分类:科学可视化、信息可视化、可视分析学 4.大数据可视化作用:记录信息、分析推理、信息传播与协同 5.可视化流程&…...
Spring Security 6 系列之九 - 集成JWT
之所以想写这一系列,是因为之前工作过程中使用Spring Security,但当时基于spring-boot 2.3.x,其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0,结果一看Spring Security也升级为6.3.0,关键是其风…...
大数据实验三
Python and anaconda 实验三数据预处理和轨迹聚类参考地址: https://www.hifleet.com/wp/communities/data/hangyundashujujishukechengshiyanzhinanshujuyuchulijiguijijuleichixugengxinzhong#post-2212https://www.hifleet.com/wp/communities/data/hangyundas…...
《计算机网络(第7版)-谢希仁》期末考试复习题和答案(总结整理)
目录 前言: 一、选择题。 二、填空题。 三、名词解释。 四、简答题。 前言: 这个自动标题自己带了序号,一开始想全部选项和题号都改过来的,结果一看一百多个全是,懒得改了 一、选择题。 1、广域网覆盖的地理范围…...
学习笔记 --C#基础其他知识点(持续更新)
C#中的同步和异步《一》 以下理解借鉴博客:借鉴博客地址1 异步编程(Asynchronous) 允许任务在后台执行,而不会阻塞调用线程。C#使用async和await关键字 async Task AsynchronousMethod() {// 等待异步操作完成await Task.Delay…...
STM32 高级 谈一下IPV4/默认网关/子网掩码/DNS服务器/MAC
首先可以通过 winr->输入cmd->输入ipconfig 命令可以查看计算机的各种地址 IPV4:是互联网协议第 4 版(Internet Protocol version 4)所使用的地址。它是一个 32 位的二进制数字,通常被分为 4 个 8 位的部分ÿ…...
智能家居实训室中,STC单片机驱动的“互联网+”智能家居系统设计
一、引言 随着经济的快速发展,人们对家居环境的智能化、网络化需求日益增强,智能家居的研究也因此受到了国内外相关机构的广泛关注。STC单片机凭借其卓越的性能和广泛的应用领域,成为了智能家居系统设计的优选方案。作为一种先进的微控制器&…...
esp32学习:用虫洞ESP32S3-EYE开发板快速实现USB摄像头(UVC免驱)
直接上干货:实现一个USB摄像头,免驱UVC设备。 硬件准备: 乐官方推荐的Cam开发板就是乐鑫带摄像头OV2604的esp32-s3-eye,我们虫洞esp32-s3-eye完全兼容这个板子哦,虫洞ESP32-S3-EYE 人脸识别 esp-cam升级 OpenCV LVGL …...