创建型设计模式、结构型设计模式与行为型设计模式 上下文任务通用方案 设计模式 大全
设计模式(Design Pattern)是一种面向对象编程思想,分为创建型模式、结构型模式与行为型模式三大类,提供在特定上下文中解决常见任务通用方案,旨在让程序(软件)具有更好特点,如降低耦合性、提高内聚性、增强可维护性、可扩展性、重用性和灵活性等。设计模式主要分为以下三种类型:
创建型模式:主要用于创建对象,提供灵活的方式来创建对象,将对象的创建与使用分离,提供了更高的灵活性和可维护性。常见的创建型模式包括简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式等。
结构型模式:主要用于解决对象之间组合关系、接口定义和实现等结构性问题。结构型模式关注对象之间的组合和关联关系,以及如何通过这些关系来构建更大的结构。常见的结构型模式包括外观模式、适配器模式、代理模式、装饰模式、桥接模式、组合模式、享元模式等。
行为型模式:主要用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务。行为型模式关注对象之间的通信和交互方式,以及如何有效地管理和组织对象的行为。常见的行为型模式包括模板方法模式、观察者模式、状态模式、策略模式、职责链模式、命令模式、访问者模式、调停者模式、备忘录模式、迭代器模式、解释器模式等。
一、创建型模式(Creational Patterns)
-
单例模式(Singleton Pattern)
- 定义:确保一个类只有一个实例,并提供一个全局访问点。
- 应用场景:配置管理器、连接池管理、日志记录器等。
- 优点:保证全局只有一个实例,节省内存;提供全局访问点,方便管理。
- 缺点:如果实例化过程复杂,可能会导致性能问题;难以并行化。
-
工厂模式(Factory Pattern)
- 定义:一种创建对象的模式,将对象的创建过程封装起来,使代码更加灵活和可维护。
- 分类:
- 简单工厂模式:一个工厂类根据输入参数返回不同的产品实例。
- 工厂方法模式:定义一个创建对象的接口,让子类决定实例化哪一个类。
- 抽象工厂模式:定义一个创建一系列相关或相互依赖对象的接口,而不必指定它们具体的类。
- 应用场景:对象创建过程复杂、需要灵活地添加新的产品类、需要创建一系列相关或相互依赖的对象。
- 优点:将对象的创建和使用分离,提高代码的可维护性和可扩展性;可以灵活地添加新的产品类。
- 缺点:增加了系统的复杂度;如果产品类层次结构复杂,实现起来比较困难。
-
建造者模式(Builder Pattern)
- 定义:将一个复杂对象的构建过程与其表示分离,使同样的构建过程可以创建不同的表示。
- 应用场景:创建对象的构建过程比较复杂,而且需要创建不同表示时。
- 优点:使构建过程更加清晰,易于理解和管理;可以创建复杂对象的不同表示。
- 缺点:增加了代码量,需要定义多个类。
-
原型模式(Prototype Pattern)
- 定义:通过复制原型对象的方式创建新对象,而无需知道其具体的实现细节。
- 应用场景:对象的创建过程比较复杂或者对象的初始化过程需要耗费大量时间。
- 优点:提高对象创建的性能;避免复杂对象的初始化过程。
- 缺点:需要维护一个原型对象集合,可能增加内存开销。
二、结构型模式(Structural Patterns)
-
适配器模式(Adapter Pattern)
- 定义:将一个类的接口转换成客户希望的另一个接口。
- 应用场景:需要使用一个已经存在的类,但其接口与系统中的其他接口不匹配时。
- 优点:使原本接口不兼容的类可以一起工作;提高了代码的复用性。
- 缺点:增加了代码复杂性,需要创建适配器类。
-
装饰器模式(Decorator Pattern)
- 定义:动态地给一个对象添加一些额外的职责。
- 应用场景:需要在不修改现有对象结构的情况下,动态地给对象添加功能。
- 优点:比生成子类方式更为灵活;可以动态地扩展对象的功能。
- 缺点:可能导致过多的装饰器层级,增加代码复杂性。
-
代理模式(Proxy Pattern)
- 定义:为另一个对象提供一个替身或占位符以控制对这个对象的访问。
- 应用场景:需要实现对象的延迟初始化、控制对对象的访问、实现日志记录等功能。
- 优点:控制对真实对象的访问;提高代码的安全性和灵活性。
- 缺点:增加了系统的复杂度;如果代理对象过多,可能导致性能问题。
-
外观模式(Facade Pattern)
- 定义:提供了一个统一的接口,用来访问子系统中的一群接口。
- 应用场景:需要简化复杂系统的接口并提供一个统一的入口点时。
- 优点:隐藏了子系统的复杂性;提供了一个简化的接口。
- 缺点:可能会违背单一职责原则,导致外观对象过于庞大。
-
桥接模式(Bridge Pattern)
- 定义:将抽象部分与实现部分分离,使它们可以独立变化。
- 应用场景:当一个类存在多个维度的变化时,可以使用桥接模式来将这些维度进行分离。
- 优点:提高了系统的灵活性和可扩展性。
- 缺点:增加了代码复杂性,需要定义多个类。
-
组合模式(Composite Pattern)
- 定义:将对象组合成树形结构以表示“部分-整体”的层次结构。
- 应用场景:需要表示对象的层次结构,并且希望客户统一处理单个对象和组合对象时。
- 优点:客户可以统一处理单个对象和组合对象;提高了代码的复用性。
- 缺点:限制了组合对象的类型,可能导致设计过度。
-
享元模式(Flyweight Pattern)
- 运用共享技术有效地支持大量细粒度的对象。
- 通过共享来减少对象的数量,从而提高性能。
三、行为型模式(Behavioral Patterns)
-
策略模式(Strategy Pattern)
- 定义:定义了一系列的算法,并将每一个算法封装起来,使它们可以互换。
- 应用场景:需要根据不同的条件选择不同的算法、算法需要经常变化或扩展、需要将算法的实现细节隐藏起来。
- 优点:算法和客户端分离,提高了代码的可维护性和可扩展性。
- 缺点:策略类的数量可能会增加,导致类的膨胀。
-
观察者模式(Observer Pattern)
- 定义:定义了对象之间的一对多依赖关系,当一个对象状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。
- 应用场景:事件监听机制、发布/订阅系统、GUI组件之间的交互。
- 优点:实现了主题和观察者之间的解耦;提高了代码的可维护性和可扩展性。
- 缺点:如果观察者数量过多,可能会导致性能问题。
-
命令模式(Command Pattern)
- 定义:将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化。
- 应用场景:需要实现命令的封装和执行、实现命令的队列和撤销功能。
- 优点:实现了命令的封装和执行的分离;提高了代码的可维护性和可扩展性。
- 缺点:可能会导致类的数量增加,使系统变得复杂。
-
迭代器模式(Iterator Pattern)
- 定义:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。
- 应用场景:需要遍历一个聚合对象,并且希望客户端代码与集合的具体实现解耦时。
- 优点:支持以不同的方式遍历聚合对象;提高了代码的复用性和灵活性。
- 缺点:需要实现迭代器接口,增加了代码复杂性。
-
中介者模式(Mediator Pattern)
- 定义:用一个中介对象来封装一系列的对象交互。
- 应用场景:多个对象之间存在复杂的交互关系,并且希望通过一个中介者来管理这些交互关系时。
- 优点:使对象之间的交互更加清晰和简单;降低了系统的复杂性。
- 缺点:增加了代码复杂性,中介者对象可能会变得庞大。
-
模板方法模式(Template Method Pattern)
- 定义:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。
- 应用场景:在父类中定义算法的框架,在子类中实现具体的步骤。
- 优点:定义了一个算法的框架,提高了代码的可复用性和可扩展性。
- 缺点:子类的扩展可能会影响算法的整体结构。
-
状态模式(State Pattern)
- 定义:允许对象在内部状态改变时改变它的行为。
- 应用场景:对象的行为随其内部状态的变化而变化时。
- 优点:将状态相关的行为封装在状态类中;提高了代码的可维护性和可读性。
- 缺点:增加了类的数量;状态类可能会变得复杂。
-
责任链模式(Chain of Responsibility Pattern)
- 定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。
- 应用场景:有多个对象可以处理同一个请求,并且处理器之间的顺序可以灵活调整时。
- 优点:降低了请求的发送者和接收者之间的耦合度;提高了系统的灵活性。
- 缺点:可能导致请求的处理链过长,难以调试和定位错误。
-
访问者模式(Visitor Pattern)
- 定义:将数据结构和对数据的操作分离,使得可以在不改变数据结构的前提下定义新的操作。
- 应用场景:需要对一个复杂的对象结构中的不同元素执行不同的操作时。
- 优点:增加了新的操作很容易,无需修改已有的类;提高了代码的复用性和可扩展性。
- 缺点:需要在数据结构中添加访问者接受方法,增加了代码复杂性。
-
备忘录模式(Memento Pattern)
- 定义:在不破坏封装的前提下,捕获并保存对象的内部状态,以便后续恢复。
- 应用场景:需要保存和恢复对象的状态时。
-
解释器模式(Interpreter Pattern)
- 给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
- 实现了特定语法规则的解释和执行。
综上所述,设计模式涵盖了创建型模式、结构型模式和行为型模式三大类,共包括23种具体的设计模式。每种设计模式都有其特定的应用场景和优缺点,开发者可以根据实际需求选择合适的设计模式来提高代码的可复用性、灵活性和可扩展性。
相关文章:
创建型设计模式、结构型设计模式与行为型设计模式 上下文任务通用方案 设计模式 大全
设计模式(Design Pattern)是一种面向对象编程思想,分为创建型模式、结构型模式与行为型模式三大类,提供在特定上下文中解决常见任务通用方案,旨在让程序(软件)具有更好特点,如降低耦…...
2412git,gitdiff与编码
原文 除了git命令行工具外,还有其他工具或服务可让你查看git历史记录中的更改.最有趣的是那些按拉请的一部分更改的情况,因为这些是你正在审查和批准的更改. 但一个常见的问题是,它们给你展示的可能不是实际改变的内容. 我把讨论限制在我有经验的服务和工具上,即它是git命令…...
什么是 Git Hooks?
在团队开发中,当成员提交代码的描述信息不符合约定提交规范的时候,需要阻止当前的提交,而要实现这个目的,我们就需要先来了解一个概念,叫做 Git hooks,即Git 在执行某个事件之前或之后进行一些其他额外的操…...
Android中加载一张图片占用的内存
在安卓(Android)系统中,加载图片占用内存的大小并不是图片本身的大小,比如一张图片大小为100kb,那当他加载到Android上时其占用的内存大小并不是100kb。 加载图片到内存中占用的内存大小取决于多种因素,包括…...
【竞技宝】LOL:IG新赛季分组被质疑
北京时间2024年12月31日,今天已经2024年的最后一天,在进入一月之后,英雄联盟将迎来全新的2025赛季。而目前新赛季第一阶段的抽签结果已经全部出炉,其中人气最高的IG战队在本次抽签中抽到了“绝世好签”引来了网友们的质疑。 首先介…...
智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之12 方案再探之3:特定于领域的模板 之2 首次尝试和遗留问题解决
本文提要 现在就剩下“体”本身的 约定了--这必然是 自律自省的,或者称为“戒律” --即“体”的自我训导discipline。完整表述为: 严格双相的庄严“相” (<head>侧),完全双性的本质“性”(<boot>侧&…...
超融合时间节点同步
1. 执行以下命令停止相关进程。 l 节点为主机,执行: perl /opt/galax/gms/common/config/restartCnaProcess.pl l 节点为VRM,执行: sh /opt/omm/ha/module/hacom/script/stop_ha.sh 2. 执行以下命令修改节…...
【分布式文件存储系统Minio】2024.12保姆级教程
文章目录 1.介绍1.分布式文件系统2.基本概念 2.环境搭建1.访问网址2.账号密码都是minioadmin3.创建一个桶4.**Docker安装miniomc突破7天限制**1.拉取镜像2.运行容器3.进行配置1.格式2.具体配置 4.查看桶5.给桶开放权限 3.搭建minio模块1.创建一个oss模块1.在sun-common下创建2.…...
pycharm pytorch tensor张量可视化,view as array
Evaluate Expression 调试过程中,需要查看比如attn_weight 张量tensor的值。 方法一:attn_weight.detach().numpy(),view as array 方法二:attn_weight.cpu().numpy(),view as array...
LeetCode 3219.切蛋糕的最小总开销 II:贪心——先切贵的
【LetMeFly】3219.切蛋糕的最小总开销 II:贪心——先切贵的 力扣题目链接:https://leetcode.cn/problems/minimum-cost-for-cutting-cake-ii/ 有一个 m x n 大小的矩形蛋糕,需要切成 1 x 1 的小块。 给你整数 m ,n 和两个数组&…...
【PDF物流单据提取明细】批量PDF提取多个区域内容导出表格或用区域内容对文件改名,批量提取PDF物流单据单号及明细导出表格并改名的技术难点及小节
相关阅读及下载: PDF电子物流单据: 批量PDF提取多个区域局部内容重命名PDF或者将PDF多个局部内容导出表格,具体使用步骤教程和实际应用场景的说明演示https://mp.weixin.qq.com/s/uCvqHAzKglfr40YPO_SyNg?token720634989&langzh_CN扫描…...
Redis到底支不支持事务啊?
大家好,我是锋哥。今天分享关于【Redis到底支不支持事务啊?】面试题。希望对大家有帮助; Redis到底支不支持事务啊? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 支持事务,但它的事务模型与传统的…...
Druid连接Oracle数据库,连接失效导致SQL无法执行
原始配置: type: com.alibaba.druid.pool.DruidDataSource druid:initial-size: 5max-active: 25min-idle: 5max-wait: 10000testWhileIdle: truetestOnBorrow: falsetestOnReturn: falsetimeBetweenEvictionRunsMillis: 2000minEvictableIdleTimeMillis: 600000ma…...
JVM 及内存管理:掌握 Java 8 的内存模型与垃圾回收机制
Java 虚拟机(JVM)是运行 Java 程序的核心,它负责代码执行和内存管理。Java 8 引入了一些重要的内存模型和垃圾回收机制优化。本文将详细解析 JVM 的内存模型、垃圾回收机制,并配以相关图解,帮助你深刻理解 JVM 的工作原…...
用户界面的UML建模06
4.1 抽象表示层的结构(Abstract Presentation Structure) 如图6 所示,抽象表示层模型具有一个顶层的容器(container),《apm》AbstractForm,其包含了许多组件,《apm》AbstractCompon…...
HTML——41有序列表
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>有序列表</title></head><body><!--有序列表:--><!--1.列表中各个元素在逻辑上有先后顺序,但不存在一定的级别关系-->…...
REDIS1.0
redis的基础知识: NOsql: not only sql 非关系型数据库:主流的数据库以外,基本上都是nosql 非关系型数据库也有库,库是系统自带的,而且也不需要创建,也不能创建,也无需在裤子创建…...
【HarmonyOS之旅】ArkTS语法(二) -> 动态构建UI元素
目录 1 -> Builder 2 -> BuilderParam8 2.1 -> 引入动机 2.2 -> 参数初始化组件 2.3 -> 尾随闭包初始化组件 3 -> Styles 4 -> Extend 5 -> CustomDialog 1 -> Builder 可通过Builder装饰器进行描述,该装饰器可以修饰一个函数&…...
【漫话机器学习系列】028.CP
Mallows’ Cp:标准化公式解析与应用 Mallows’ Cp 是一种常用的模型选择工具,用于在一系列候选模型中权衡拟合度和复杂性,帮助我们选择性能最优的模型。本文将基于其标准化公式展开详细解析,并探讨其应用场景、实现方法、优点与局…...
【SpringBoot教程】搭建SpringBoot项目之编写pom.xml
🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 👏今天毛毛张分享的内容主要是Maven 中 pom 文件🆕,涵盖基本概念、标签属性、配置等内容 文章目录 1.前言🥭2.项目基本…...
送给一年编程道路的自己
回望过去一年在编程道路上的成长与收获,是一个很有意义的过程。总结自己这一年的编程经历,不仅可以帮助你更清晰地了解自己的进步和不足,还能为未来的发展指引方向。以下是一些可能的收获,供你参考: 1. 技能提升 语言…...
libvirt学习
文章目录 libvirt 简介节点、Hypervisor和域libvirt 安装和配置libvirt的XML配置文件libvirt APIMain libvirt APIsError handlingSpecial specific APIs 建立到Hypervisor的连接libvirt API使用编译libvirt工具virshvirt-clonevirt-dfvirt-imagevirt-installvirt-topvirt-what…...
第二十五天 项目实践:图像分类
项目实践:图像分类 一、数据集准备 在图像分类任务中,数据集的选择和准备是至关重要的。一个高质量的数据集可以显著提高模型的训练效果和泛化能力。 数据集选择 ImageNet:这是一个广泛应用于训练卷积神经网络(CNN)模…...
学技术学英文:Tomcat的线程模型调优
导读: tomcat 线程调优关键需要理解下面这几个参数: 1. maxConnections 描述:指定服务器能够同时接受和处理的最大连接数。也就是说,服务器在任何时候都能处理的最大并发连接数。作用:限制服务器在任何给定时间点能…...
软考高项(二十)高级项目管理 ★重点集萃★
👑 个人主页 👑 :😜😜😜Fish_Vast😜😜😜 🐝 个人格言 🐝 :🧐🧐🧐说到做到,言出必行&am…...
Android 系统 `android.app.Fragment` 类的深度定制与常见问题解析
Android 系统 android.app.Fragment 类的深度定制与常见问题解析 目录 引言Fragment 概述Fragment 的生命周期Fragment 的系统层深度定制 4.1 Fragment 的创建与初始化4.2 Fragment 的布局与视图4.3 Fragment 的通信机制4.4 Fragment 的动画与过渡4.5 Fragment 的状态保存与恢…...
[Qt] Qt介绍 | 搭建SDK
目录 1. Qt 简介 什么是 Qt? 1.1 引入 1.2 GUI 1.3 Qt 介绍 2. Qt 发展史 3. Qt 支持的平台 4. Qt 版本信息 5. Qt 的优点 6. Qt 应用场景 7. Qt 成功案例 8. Qt 发展前景及就业分析 二. Qt 开发环境搭建 1. 开发工具概述 2.Qt SDK 安装 3.使用 1. …...
工作中常用Vim的命令
Hi, 我是你们的老朋友,主要专注于嵌入式软件开发,有兴趣不要忘记点击关注【码思途远】 目录 0. ctags -R 1.认识 Vim的几种工作模式 2.高频使用命令 2.1 修改文件 2.2 关于行号 2.3 删除多行,删除部分 2.4 复制粘贴 2.5 光标移动 2.…...
【广州计算机学会、广州互联网协会联合主办 | ACM独立出版 | 高录用】第四届大数据、信息与计算机网络国际学术会议(BDICN 2025)
第四届大数据、信息与计算机网络国际学术会议(BDICN 2025)定于2025年01月10-12日在中国广州举行。会议旨在为从事“大数据”、“计算机网络”与“信息”研究的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术,了解学术发…...
CSS系列(43)-- Anchor Positioning详解
前端技术探索系列:CSS Anchor Positioning详解 🎯 致读者:探索智能定位的艺术 👋 前端开发者们, 今天我们将深入探讨 CSS Anchor Positioning,这个强大的元素定位特性。 基础概念 🚀 锚点设…...
测试带宽上行方法
测试宽带上行速度的软件有多种,以下是一些常见的选择: Speedtest 平台支持:iOS、Android、Windows、MacOS等 特点:全球知名的网络测速软件,测试结果准确,支持多平台。用户可以选择最近的服务器进行测试&am…...
pugixml XML配置文件 的增删改查
<?xml version"1.0" encoding"UTF-8"?> <SXConfiguration><LocalSetting><VMSLoginServer><exitServerName>2</exitServerName><server><name>2</name><ip>152.131.121.131</ip><…...
自动化办公-将 Excel 的 Sheet 页拆分成单独的 Excel 文件
在日常的数据处理工作中,很多时候我们会遇到一个包含多个工作表(Sheet)的 Excel 文件,可能需要将每个工作表分别保存为独立的 Excel 文件。手动进行这种操作非常繁琐且易出错,但借助 Python 中的 pandas 库,…...
安全漏洞合集
一,X-Content-Type-Options响应头降低XSS攻击的风险 在Nginx配置文件中,可以使用add_header指令来添加自定义的HTTP响应头。 (通常是nginx.conf或站点特定的配置文件)添加以下指令来设置X-Content-Type-Options响应头:…...
python 堆排序(Heap Sort)
堆排序(Heap Sort) 堆排序是一种基于二叉堆数据结构的排序算法。它的基本思想是:将待排序的数组构建成一个最大堆(或最小堆),然后依次将堆顶元素(最大值或最小值)与堆的最后一个元素…...
word中文献引用[]符号的上下标格式修改
word中文献引用[]符号的上下标格式修改 百度网址 1、查找打开使用通配符,输入[[][0-9]{1,2}[]],即可匹配所有的字[1],[12]这些字符,然后鼠标点击替换为的空白处,再点击特殊格式–>“字体”,选中上标,最…...
地心地固坐标系
地心地固坐标系(ECEF, Earth-Centered, Earth-Fixed) 是一种三维坐标系,常用于表示地球表面或地球内部的点的位置。它的特点是坐标系的原点位于地球的质心,并且坐标轴固定在地球表面,并随地球自转而旋转。 ECEF 坐标系…...
3.CSS字体属性
3.1字体系列 CSS使用font-family属性定义文本的字体系列。 p{font-family:"微软雅黑"} div{font-family:Arial,"Microsoft Yahei",微软雅黑} 3.2字体大小 css使用font-size属性定义字体大小 p{ font-size:20px; } px(像素)大小是我们网页的最常用的单…...
使用PyTorch实现的二分类模型示例,综合了CNN、LSTM和Attention技术
以下是一个使用PyTorch实现的二分类模型示例,综合了CNN、LSTM和Attention技术,并尝试满足你提出的各项需求: 1. 数据预处理 扩充输入数据维度 假设你的原始数据是二维的(例如图像或序列数据),可以通过一些变换来扩充维度。例如,对于图像数据,可以进行翻转、旋转、缩放…...
[Wi-Fi]802.11u Vs hotspot2.0
介绍 802.11u 和 Hotspot 2.0 是两个相关但不同的技术标准,它们都旨在改善无线网络的用户体验,特别是在公共 Wi-Fi 环境中。 802.11u 定义:802.11u 是 IEEE 802.11 标准的一个扩展,专注于增强无线网络的互操作性和用户体验。功能…...
VisualStudio 2019 升级遇到的问题及解决
事件起因 今天计划想研究下.net core(后面版本直接称为 .net ),发现 .net sdk 5.0 最新版本安装不成功。解决之后,真是手欠,看着Visual Studio 2019 有更新了,就直接点击了,这时才发现问题大了。。。 安装…...
Java - 日志体系_Simple Logging Facade for Java (SLF4J)日志门面_SLF4J集成logback 及 原理分析
文章目录 Pre官网集成步骤POM依赖使用第一步:编写 Logback 的配置文件第二步:在代码中使用 SLF4J 原理分析1. 获取对应的 ILoggerFactory2. 根据 ILoggerFactory 获取 Logger 实例3. 日志记录过程 小结 Pre Java - 日志体系_Apache Commons Logging&…...
机器学习-方案设计题(在线医疗诊断项目)
在一个在线医疗诊断项目中,我们希望利用机器学习算法来预测患者是否患有某种疾病。请设计一个方案,包括数据收集、预处理、特征选择、模型选择和评估等步骤来完成这个任务。 1.数据收集数据来源 电子病历系统:收集患者的基本信息&…...
基于Sentinel的服务保护方案的三种方式(请求限流、线程隔离、服务熔断)超详细讲解
目录 1、三种方式介绍 1.1请求限流 1.2 线程隔离方案 1.3 服务熔断 2、基于sentinel实现 2.1 启动sentinel 2.2 基于springboot整合sentinel 2.2.1请求限流 2.2.2请求隔离 2.2.2.1 OpenFeign整合Sentinel 2.2.3 服务熔断 2.2.3.1 编写降级代码 2.2.3.2 服务熔断 1、…...
[开源]C++代码分享
一,声明 被人水平有限,开源只是为了分享。勿喷!!!还请大佬指点。 二,代码 // --------------------------------------------------------- 头文件 ----------------------------------------------- #in…...
vulnhub ica1
搭建靶机跟之前一样 不过这个要修改一下网卡;下面链接有教程 vulnhub jangow靶机-CSDN博客 1.扫描靶机IP arp-scan -l 192.168.47.135 2.信息收集 nmap -sS 192.168.47.135 访问网站 这个是一个web应用,框架是qdpm 9.2 在kali上搜索一下发现有两个漏洞&#x…...
Linux(Centos 7.6)基础命令/常用命令说明
1.目录相关命令 命令命令说明pwd用于显示/打印当前目录位置。ls/ll 列出当前目录下的文件或者目录,ll是ls -l的别名,ls仅显示名称,ll会显示详细的目录文件信息。 cd目录切换,常见用法有,cd /切换到根目录,…...
Solon 加入 GitCode:助力国产 Java 应用开发新飞跃
在当今数字化快速发展的时代,Java 应用开发框架不断演进,开发者们始终在寻找更快、更小、更简单的解决方案。近期,Solon 正式加入 GitCode,为广大 Java 开发者带来全新的开发体验,尤其是在国产应用开发进程中ÿ…...
Browser Use:AI智能体自动化操作浏览器的开源工具
Browser Use:AI智能体自动化操作浏览器的开源工具 Browser Use 简介1. 安装所需依赖2. 生成openai密钥3. 编写代码4. 运行代码5. 部署与优化5.1 部署AI代理5.2 优化与扩展总结Browser Use 简介 browser-use是一个Python库,它能够帮助我们将AI代理与浏览器自动化操作结合起来;…...
ArcGIS中怎么进行水文分析?(思路介绍)
最近有人咨询,ArcGIS中怎么进行水文分析,大致的说一下河网提取的思路哈 解决思路:dem填洼→计算水流方向→计算水流累积矩阵→形成河网 dem填洼 计算水流方向 计算水流累积矩阵 用栅格计算器,设阈值(自己多次尝试&…...