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

项目里用到了哪些设计模式是怎么使用的?

在软件开发项目中,设计模式是解决特定问题的通用模板或最佳实践。它们提供了一种经过验证的方式来组织代码,使其更易于理解、维护和扩展。下面我将详细介绍一些常见的设计模式及其在项目中的应用方式。

1. 单例模式(Singleton Pattern)

应用场景:确保一个类只有一个实例,并提供全局访问点。

  • 实现方式:通过私有化构造函数防止外部直接创建对象,使用静态方法返回唯一实例。
  • 项目应用:例如配置管理器、日志记录器等需要保证在整个应用程序生命周期内只存在单个实例的服务组件。
public class ConfigManager {private static final ConfigManager instance = new ConfigManager();// 私有化构造函数private ConfigManager() {}public static ConfigManager getInstance() {return instance;}
}

2. 工厂方法模式(Factory Method Pattern)

应用场景:定义一个用于创建对象的接口,让子类决定实例化哪一个类。

  • 实现方式:定义一个工厂接口或抽象类,其中包含创建产品的方法;具体工厂负责实现该方法以生成相应的产品。
  • 项目应用:用于处理不同类型的对象创建逻辑,如数据库连接池可以根据配置选择不同的驱动程序。
// 抽象工厂
public abstract class DatabaseFactory {public abstract Connection createConnection();
}// 具体工厂
public class MySQLFactory extends DatabaseFactory {@Overridepublic Connection createConnection() {return DriverManager.getConnection("jdbc:mysql://localhost:3306/db", "user", "password");}
}

3. 抽象工厂模式(Abstract Factory Pattern)

应用场景:当一组相关联的对象需要一起使用时,可以提供一个接口来创建这些对象。

  • 实现方式:定义一个抽象工厂接口,包含多个创建不同类型产品的抽象方法;具体工厂则实现了这些方法来创建一系列相关的具体产品。
  • 项目应用:适用于构建复杂的系统,比如图形用户界面库可能需要根据不同操作系统创建相应的窗口、按钮等控件。
// 抽象工厂接口
public interface GUIFactory {Button createButton();Checkbox createCheckbox();
}// 具体工厂 - Windows风格
public class WinFactory implements GUIFactory {@Overridepublic Button createButton() { /* ... */ }@Overridepublic Checkbox createCheckbox() { /* ... */ }
}// 客户端代码
GUIFactory factory = new WinFactory();
Button button = factory.createButton();
Checkbox checkbox = factory.createCheckbox();

4. 原型模式(Prototype Pattern)

应用场景:当需要频繁创建大量相似的对象时,可以通过复制已有对象来节省资源。

  • 实现方式:定义一个原型接口,要求所有可克隆的对象都实现此接口并提供clone()方法。
  • 项目应用:游戏开发中经常用到原型模式快速生成敌人或其他重复性高的实体。
public interface Prototype {Prototype clone();
}public class Enemy implements Prototype {private String type;public Enemy(String type) {this.type = type;}@Overridepublic Prototype clone() {try {return (Enemy) super.clone();} catch (CloneNotSupportedException e) {return null;}}
}

5. 建造者模式(Builder Pattern)

应用场景:构建复杂对象时避免过多参数化的构造函数。

  • 实现方式:分离对象的构建过程与表示形式,允许同一构建过程创建不同表示的对象。
  • 项目应用:适合于需要逐步设置多个属性才能完成初始化的对象,如HTML文档生成器。
public class HtmlDocument {private String title;private List<String> paragraphs;public static class Builder {private final String title;private final List<String> paragraphs = new ArrayList<>();public Builder(String title) {this.title = title;}public Builder addParagraph(String text) {paragraphs.add(text);return this;}public HtmlDocument build() {return new HtmlDocument(this);}}private HtmlDocument(Builder builder) {this.title = builder.title;this.paragraphs = builder.paragraphs;}
}// 使用建造者模式创建对象
HtmlDocument doc = new HtmlDocument.Builder("My Document").addParagraph("First paragraph.").addParagraph("Second paragraph.").build();

6. 观察者模式(Observer Pattern)

应用场景:建立一对多依赖关系,当一个对象状态改变时,所有依赖它的对象都会收到通知并自动更新。

  • 实现方式:定义观察者接口,主体对象维护一个观察者列表,每当状态发生变化时就遍历列表调用每个观察者的更新方法。
  • 项目应用:UI框架中广泛使用的事件监听机制就是一个典型的例子。
public interface Observer {void update(float temperature, float humidity, float pressure);
}public class WeatherData {private List<Observer> observers = new ArrayList<>();private float temperature;private float humidity;private float pressure;public void registerObserver(Observer o) {observers.add(o);}public void measurementsChanged() {notifyObservers();}public void notifyObservers() {for (Observer observer : observers) {observer.update(temperature, humidity, pressure);}}
}

7. 策略模式(Strategy Pattern)

应用场景:定义一系列算法,并将每个算法封装起来,使它们可以互换。

  • 实现方式:定义一个策略接口,具体策略类实现该接口的不同行为;上下文对象持有对策略对象的引用,在运行时根据需求动态切换策略。
  • 项目应用:支付网关可以选择不同的支付方式(信用卡、PayPal等),或者排序算法可以根据数据集大小选择最合适的排序方法。
// 策略接口
public interface PaymentStrategy {void pay(double amount);
}// 具体策略 - 信用卡支付
public class CreditCardPayment implements PaymentStrategy {@Overridepublic void pay(double amount) {System.out.println("Paid " + amount + " using credit card.");}
}// 上下文对象
public class ShoppingCart {private PaymentStrategy paymentStrategy;public void setPaymentStrategy(PaymentStrategy strategy) {this.paymentStrategy = strategy;}public void checkout(double totalAmount) {paymentStrategy.pay(totalAmount);}
}// 使用策略模式进行支付
ShoppingCart cart = new ShoppingCart();
cart.setPaymentStrategy(new CreditCardPayment());
cart.checkout(100.0);

总结

以上只是部分常用的设计模式及其简单示例。实际上,在实际项目中可能会结合多种模式来解决问题,而且同一个模式也可以有多种形式的表现。重要的是理解每种模式背后的核心思想,并灵活运用到具体的业务场景中去。

相关文章:

项目里用到了哪些设计模式是怎么使用的?

在软件开发项目中&#xff0c;设计模式是解决特定问题的通用模板或最佳实践。它们提供了一种经过验证的方式来组织代码&#xff0c;使其更易于理解、维护和扩展。下面我将详细介绍一些常见的设计模式及其在项目中的应用方式。 1. 单例模式&#xff08;Singleton Pattern&#…...

CPU性能篇-CPU 100%如何定位根因-Day 03

1. CPU使用率 1.1 关键指标介绍 user&#xff08;通常缩写为 us&#xff09;&#xff0c;代表用户态 CPU 时间。注意&#xff0c;它不包括下面的 nice 时间&#xff0c;但包括了 guest 时间。nice&#xff08;通常缩写为 ni&#xff09;&#xff0c;代表低优先级用户态 CPU 时…...

访谈积鼎科技总经理:国产CFD软件发展与未来趋势展望

傅彦国&#xff0c;上海积鼎信息科技有限公司创始人 记者&#xff1a;请傅总介绍下我国流体仿真行业的发展现状是怎样的&#xff1f; 傅彦国&#xff1a;自2018年政府加大了对核心技术自主研发的支持力度&#xff0c;国产CFD软件逐渐步入发展正轨。 首先&#xff0c;从市场规…...

四种自动化测试模型实例及优缺点详解

一、线性测试 1.概念&#xff1a; 通过录制或编写对应应用程序的操作步骤产生的线性脚本。单纯的来模拟用户完整的操作场景。 &#xff08;操作&#xff0c;重复操作&#xff0c;数据&#xff09;都混合在一起。 2.优点&#xff1a; 每个脚本相对独立&#xff0c;且不产生…...

数字后端培训项目Floorplan常见问题系列专题续集1

今天继续给大家分享下数字IC后端设计实现floorplan阶段常见问题系列专题。这些问题都是来自于咱们社区IC后端训练营学员提问的问题库。目前这部分问题库已经积累了4年了&#xff0c;后面会陆续分享这方面的问题。 希望对大家的数字后端学习和工作有所帮助。 数字后端项目Floor…...

NVIDIA GPU 内部架构介绍

NVIDIA GPU 架构 NVIDIA GPU 的 SM&#xff08;Streaming Multiprocessor&#xff09; 和 GPC&#xff08;Graphics Processing Cluster&#xff09; 是 GPU 架构中的关键组成部分。它们决定了 GPU 的计算能力和性能&#xff0c;以下是对这两个参数的详细介绍&#xff1a; 1. …...

[spring]实例化对象(静动态工厂)

在前面文章的例子当中&#xff0c;我们都创建了Bean对象。spring里常用的获取类的实例化对象有几种方式&#xff1a;构造函数获取Bean对象、静态和动态工厂获取Bean对象、实现FactoryBean规范。 因为一些步骤没有什么别的不同&#xff0c;所以我不会重复去讲&#xff0c;届时会…...

【转】arm64架构的银河麒麟系统Kylin的qt安装教程

转自&#xff1a;arm64架构的银河麒麟系统Kylin的qt安装教程_银河麒麟安装qt-CSDN博客 文章目录 前言 一、准备环境 安装C编译器和调试器 二、安装qt、qtcreator 检查是否已经安装过Qt组件 安装Qt组件和Qt creator 检查组件是否安装成功&#xff1a; 三、测试程序运行 报错 Qt…...

C# Main方法 和顶级语句详解

总目录 前言 Main方法 和顶级语句 介绍。 一、Main方法 1. 基本信息 Main 方法是 C# 应用程序的入口点。 Main 方法是应用程序启动后调用的第一个方法。C# 程序中只能有一个入口点。如果多个类包含 Main 方法&#xff0c;必须使用 StartupObject 编译器选项来编译程序&#…...

传输层协议分析头歌

第1关&#xff1a;TCP 包基础 本机使用的IP地址和TCP端口号(用;隔开):192.168.1.102;1161 gaia.cs.umass.edu的IP地址和端口号(用;隔开):128.119.245.12;80 第2关&#xff1a;三次握手 第一次握手&#xff0c;TCP SYN区段的序列号是&#xff1a;232129012 gaia.cs.umass.edu…...

JAVA AOP简单实践(基于SpringBoot)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

重温设计模式--迭代器模式

文章目录 迭代器模式&#xff08;Iterator Pattern&#xff09;概述迭代器模式的结构迭代器模式UML图C 代码示例应用场景 迭代器模式&#xff08;Iterator Pattern&#xff09;概述 定义&#xff1a; 迭代器模式是一种行为型设计模式&#xff0c;它提供了一种方法来顺序访问一个…...

Unity-Editor扩展GUI基本实现一个可拖拉放的格子列表

短短几百行代码,好吧,又是“参考”了国外的月亮 操作,还真地挺自然的。。。。。。国外的实现有点小牛 拖拉,增加+ 一个Element 鼠标左键长按,可以出提示 鼠标右键,清除Element, 有点小bug,不是很自然地完全清除, using System.Collections; using System.Collecti…...

Android 11添加电容笔电量监测需求

软件平台&#xff1a;Android11 硬件平台&#xff1a;QCS6125 需求&#xff1a;PAD接入电容笔&#xff0c;该笔通过驱动上报坐标及当前电量等数据&#xff0c;即走系统的input通道&#xff0c;需要系统层监测到该硬件数据&#xff0c;这里主要展示电量&#xff0c;对用户显示提…...

迈向AGI——大模型创新体验嘉年华邀请函

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; ‍ 深度对话&#xff0c;思想碰撞 大模型创新体验嘉年华诚邀您与我们共同见证 智见未来&#xff0c;只等你来 往期精彩文章推荐 关于AI TIME AI TIME源起于2019年&#xff0c;旨在发扬科学思辨精神&#xff0c…...

VSCode 性能优化指南:提高编码效率,减少资源占用

Visual Studio Code&#xff08;简称VSCode&#xff09;是一款广受欢迎的代码编辑器&#xff0c;以其强大的功能和丰富的插件生态系统著称。然而&#xff0c;随着项目规模的扩大和插件数量的增加&#xff0c;VSCode 的性能可能会受到影响。本文将介绍一系列优化措施&#xff0c…...

如何获取 ABAP 内表中的重复项

要识别 ABAP 内表中的重复项&#xff0c;可以结合使用排序和循环。下面的示例展示了如何查找内部表中的重复条目&#xff1a; DATA: BEGIN OF itab OCCURS 0,field1 TYPE i,field2 TYPE c LENGTH 10,END OF itab,wa LIKE LINE OF itab.* Add sample data to internal table it…...

android 登录界面编写

1、登录页面实现内容 1.实现使用两个EditText输入框输入用户名和密码。 2.使用CheckBox控件记住密码功能。 3.登录时候&#xff0c;验证用户名和密码是否为空。 4.当前CheckBox控件记住密码勾上时&#xff0c;使用SharedPreferences存储用户名和密码。 5.登录时候使用Prog…...

3D-resnet 50 医学3D图像二分类python代码

离上次发布3D-resnet代码时隔两年&#xff0c;最近让AI推荐3D-resnet的文章给我&#xff0c;AI推荐了三篇 其中两篇是我两年前发的&#xff0c;另一篇在这里Resnet3D预训练网络...... 于是决定更新之前代码&#xff0c;供诸位参考1. 可以用cpu或gpu&#xff08;推荐8G以上&…...

android sqlite 数据库简单封装示例(java)

sqlite 数据库简单封装示例&#xff0c;使用记事本数据库表进行示例。 首先继承SQLiteOpenHelper 使用sql语句进行创建一张表。 public class noteDBHelper extends SQLiteOpenHelper {public noteDBHelper(Context context, String name, SQLiteDatabase.CursorFactory fact…...

项目练习:若依-前端项目的目录结构介绍

文章目录 一、目录截图二、目录讲解 一、目录截图 二、目录讲解 1、首先&#xff0c;我们可以看到&#xff0c;这个VUE项目&#xff0c;只有一个App.vue&#xff0c;所以&#xff0c;它是一个单页面系统。 这个App.vue是根组件&#xff0c;root组件。 2、public目录 在Vue 3.…...

Android 之 List 简述

一、简单创建方式 Android 开发中&#xff0c;列表有很多种类&#xff0c;如ArrayList、LinkedList、List、MutableList等&#xff0c;创建列表的方式如下所示&#xff1a; fun listDemo() {// 使用 listOf 创建不可变的空列表val list listOf<Int>()val list1 listOf…...

CV(6)-SIFT和Hash

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 SIFT:尺度不变特征变换&#xff1a; SIFT提取图像的局部特征&#xff0c;在尺度空间寻找极值点&#xff0c;并提取出其位置、尺度、方向信息。SIFT的应用范围包括物体辨别、机器人地图感知与导航、影像拼接、3D模型建立、手势…...

javax.net.ssl.SSLPeerUnverifiedException: Hostname 192.168.13.13 not verified:

javax.net.ssl.SSLPeerUnverifiedException: Hostname 192.168.13.13 not verified: 前言&#xff1a; 之前需求推送数据是采用http:192.168.13.13:8000 后面业务需求修改为 https:192.168.13.13:443 修改后推送数据到第三方报以下异常&#xff0c; https://192.168.13.13:443…...

用Unity做没有热更需求的单机游戏是否有必要使用AssetBundle?

在使用Unity开发没有热更需求的单机游戏时&#xff0c;是否使用AssetBundle&#xff08;AB包&#xff09;是一个值得探讨的问题。以下是对此问题的详细分析&#xff1a; 一、AssetBundle的概述 AssetBundle是Unity中用于存储和加载游戏资源的打包文件&#xff0c;可以包含各种…...

WebRTC Simulcast 大小流介绍与优化实践

Simulcast 是 WebRTC 中的一种标准化技术 &#xff0c;简称大小流。通过 Simulcast&#xff0c;客户端可以同时发送同一视频的多个版本。每个版本都以不同的分辨率和帧率独立编码&#xff0c;带宽较多的拉流端可以接收较高质量的视频流&#xff0c;带宽有限的拉流端则可以接收较…...

软件测试之测试用例

文章目录 测试用例测试用例的编写总结 测试用例 测试用例:描述测试点执行的文档(测试输入、执行条件、预期结果等) 作用 1.测试点能被精准执行 2.便于团队合作测试用例核心内容 用例编号、用例标题、所属模块、优先级、前置条件、测试步骤、测试数据、预期结果 测试用例的编写…...

Redis--通用命令学习

目录 一、引言 二、基础命令 1.set 2.get 3.keys 3.1 keys &#xff1f; 3.2 keys * 3.3 keys [abe] 3.4 keys [^] 3.5 keys [a-b] 4.exists 5.delete 6.expire 7.ttl 8.type 三、Redis中的过期策略&#xff08;面试题&#xff09; 1.惰性删除 2.定期删除 …...

自动控制系统综合与LabVIEW实现

自动控制系统综合是为了优化系统性能&#xff0c;确保其可靠性、稳定性和灵活性。常用方法包括动态性能优化、稳态误差分析、鲁棒性设计等。结合LabVIEW&#xff0c;可以通过图形化编程、高效数据采集与处理来实现系统综合。本文将阐述具体方法&#xff0c;并结合硬件选型提供实…...

一篇文章学会HTML

目录 页面结构 网页基本标签 图像标签 超链接标签 文本链接 图像链接 锚链接 功能链接 列表 有序列表 无序列表 自定义列表 表格 跨列/跨行 表头 媒体元素 视频 音频 网站的嵌套 表单 表单元素 文本框 单选框 多选框 按钮 下拉框 文本域和文件域 表…...

48页PPT|2024智慧仓储解决方案解读

本文概述了智慧物流仓储建设方案的行业洞察、业务蓝图及建设方案。首先&#xff0c;从政策层面分析了2012年至2020年间国家发布的促进仓储业、物流业转型升级的政策&#xff0c;这些政策强调了自动化、标准化、信息化水平的提升&#xff0c;以及智能化立体仓库的建设&#xff0…...

React Props 完整使用指南

React Props 完整使用指南 1. 类组件中的 Props 1.1 基本使用 // 父组件 class ParentComponent extends React.Component {render() {return (<ChildComponent name"John"age{25}isStudent{true}hobbies{[reading, swimming]}/>);} }// 子组件 class Child…...

金融数据可视化实现

一、设计题目 金融数据可视化 二、设计目的 使学生掌握用Pandas第三方库数据计算、数据分析的知识与能力。Pandas是专门用于数据分析的库&#xff0c;其提供的read_excel()方法可以方便的读取xlsx格式的文件中的数据到Pandas中的DataFrame中。 DataFrame.plot(kindline)&am…...

逆袭之路(6)——解析数据世界的灵动基石——变量

困厄铸剑心&#xff0c;逆袭展锋芒。 寒苦凝壮志&#xff0c;腾跃绘华章。 我要逆袭。 目录 一、引言 二、变量的定义 三、变量的性质 &#xff08;一&#xff09;可变性 &#xff08;二&#xff09;有界性 &#xff08;三&#xff09;关联性 四、变量的类型 &#xff…...

【云原生】kubeadm搭建的kubernetes1.28集群上自建ingress-nginx服务

1、查询兼容性 先确认下kubernetes版本与ingress-nginx版本兼容性 Ingress-NGINX 版本支持的 k8s 版本Alpine 版本Nginx 版本Helm Chart 版本v1.12.0-beta.01.31, 1.30, 1.29, 1.283.20.31.25.54.12.0-beta.0v1.11.31.30, 1.29, 1.28, 1.27, 1.263.20.31.25.54.11.3v1.11.21.3…...

分布式协同 - 分布式事务_TCC解决方案

文章目录 导图Pre流程图2PC VS 3PC VS TCC2PC&#xff08;Two-Phase Commit&#xff0c;二阶段提交&#xff09;3PC&#xff08;Three-Phase Commit&#xff0c;三阶段提交&#xff09;TCC&#xff08;Try-Confirm-Cancel&#xff09;2PC、3PC与TCC的区别2PC、3PC与TCC的联系 导…...

两分钟解决:vscode卡在设置SSH主机,VS Code-正在本地初始化VSCode服务器

问题原因 remote-ssh还是有一些bug的&#xff0c;在跟新之后可能会一直加载初始化SSH主机解决方案 1.打开终端2.登录链接vscode的账号&#xff0c;到家目录下3.找到 .vscode-server文件,删掉这个文件4.重启 vscode 就没问题了...

SpringBoot3整合FastJSON2如何配置configureMessageConverters

在 Spring Boot 3 中整合 FastJSON 2 主要涉及到以下几个步骤&#xff0c;包括添加依赖、配置 FastJSON 作为 JSON 处理器等。下面是详细的步骤&#xff1a; 1. 添加依赖 首先&#xff0c;你需要在你的 pom.xml 文件中添加 FastJSON 2 的依赖。以下是 Maven 依赖的示例&#…...

数据库安全-redisCouchdb

1.redis未授权访问 默认端口:6379 1.1 Redis沙盒逃逸漏洞RCE-CVE-2022-0543 介绍&#xff1a;Redis 是一套开源的使用 ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值存储数据库&#xff0c;并提供多种语言的API。Redis 如果在没有开启认证的情况下&#xff0c;…...

java如何使用poi-tl在word模板里渲染多张图片

1、poi-tl官网地址 http://deepoove.com/poi-tl/ 2、引入poi-tl的依赖 <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version></dependency>3、定义word模板 释义&#xf…...

ASP.NET |日常开发中常见问题归纳讲解

ASP.NET &#xff5c;日常开发中常见问题归纳讲解 前言一、性能问题1.1 数据库访问性能1.2 视图状态&#xff08;在ASP.NET Web Forms 中&#xff09; 二、安全问题2.1 SQL 注入2.2 跨站脚本攻击&#xff08;XSS&#xff09; 三、状态管理问题3.1 会话状态&#xff08;Session …...

Jenkins安全部署规范及安全基线

Jenkins安全部署规范及安全基线 进入安全设置界面启用安全Disable remember me访问控制——安全域&#xff08;Security Realm&#xff09;servlet容器代理&#xff08;Delegate to servlet container&#xff09;Jenkins专有用户数据库&#xff08;Jenkins’ own user databas…...

stm32定时器输出比较----驱动步进电机

定时器输出比较理论 OC(Output Compare)输出比较输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形每个高级定时器和通用定时器都拥有4个输出比较通道高级定时器的前3个通道额外拥有死区生成和互补输出…...

文本文件和二进制文件

1.为什么使用文件 使用文件我们可以将数据直接存放在电脑的硬盘上&#xff0c;做到了数据的持久化。 2. 什么是文件 磁盘上的文件是文件。 但是在程序设计中&#xff0c;我们一般谈的文件有两种&#xff1a;程序文件、数据文件&#xff08;从文件功能的角度来分类的&#xff09…...

Linux 常见用例汇总

注&#xff1a;本文为 Linux 常见用例文章合辑。 部分内容已过时&#xff0c;未更新整理。 检查 Linux 上的 glibc 版本 译者&#xff1a;joeren | 2014-11-27 21:33 问&#xff1a;检查 Linux 系统上的 GNU C 库&#xff08;glibc&#xff09;的版本&#xff1f; GNU C 库&…...

R9000P键盘失灵解决办法

问题描述 突然&#xff0c;就是很突然&#xff0c;我买的R9000P 2024不到三个月&#xff0c;键盘突然都不能用了&#xff0c;是所有键盘按键都无效的那种。&#xff08;可以使用外接键盘&#xff09; 解决办法 我本科室友说的好哈&#xff0c;全坏全没坏。 &#xff08;该解…...

Windows、CentOS环境下搭建自己的版本管理资料库:GitBlit

可以搭建属于公司内部或者个人的Git服务器&#xff0c;方便程序代码及文档版本管理。 官网&#xff1a;http://www.gitblit.com/ Windows环境下安装 提前已经安装好了JDK。 官网下载Windows版的GitBlit。 将zip包解压到自己想要放置的文件夹下。 建立版本库路径&#xff0c…...

《Web 应用项目开发:从构思到上线的全过程》

目录 一、引言 二、项目启动与需求分析 三、设计阶段 四、技术选型 五、开发阶段 六、测试阶段 七、部署与上线 八、维护与更新 九、总结 一、引言 在数字化浪潮席卷全球的当下&#xff0c;Web 应用如繁星般在互联网的苍穹中闪烁&#xff0c;它们形态各异&#xff0c…...

ctf相关总结

CTF比赛定义&#xff1a; CTF&#xff08;Capture The Flag&#xff09;是一种信息安全竞赛形式&#xff0c;参赛队伍通过破解题目获取flag来得分。 比赛流程&#xff1a; 参赛队伍在题目平台上登录&#xff0c;选择题目进行解答&#xff0c;提交flag后由系统自动评分。 三…...

v3s点RGB屏 40pin 800x480,不一样的点屏,不通过chosen。

一、背景、目的、简介。 一般来说&#xff0c;通过uboot将屏幕参数传给kernel&#xff0c;是通过修改设备树。 uboot和kernel都需要屏幕点亮。uboot侧重于显示一张图片。而kernel则多是动画。 在这里&#xff0c;我先是找到了一个裸机点屏的代码。将其编译成静态库后&#x…...