VL开源模型实现文本生成图片
一、 基础知识
根据描述生成图片的视觉-语言模型(Vision-Language Models, VL 模型)是近年来多模态生成领域的热点研究方向。这些模型能够根据自然语言描述生成高质量的图像,广泛应用于艺术创作、设计辅助、虚拟场景构建等领域。
1 根据描述生成图片的 VL 模型
1.1 DALL·E 系列
模型简介
DALL·E:由 OpenAI 提出,基于 GPT-3 架构,能够根据文本描述生成高质量的图像。
DALL·E 2:DALL·E 的升级版,生成图像的分辨率和质量更高,支持更复杂的文本描述。
特点
支持零样本生成(Zero-Shot Generation)。
能够生成高度符合文本描述的图像。
支持图像编辑(如修改图像中的特定部分)。
应用场景
艺术创作、广告设计、虚拟场景构建等。
1.2 Stable Diffusion
模型简介
由 Stability AI 提出,基于扩散模型(Diffusion Model),能够根据文本描述生成高质量的图像。
开源且可定制,支持用户训练自己的模型。
特点
生成图像的分辨率高,细节丰富。
支持文本到图像生成、图像修复、图像编辑等多种任务。
计算效率较高,适合在消费级硬件上运行。
应用场景
艺术创作、游戏设计、个性化内容生成等。
3. Imagen
模型简介
由 Google 提出,基于扩散模型和大型语言模型(如 T5),能够根据文本描述生成高质量的图像。
强调文本理解的准确性和图像生成的真实性。
特点
生成图像的质量极高,细节逼真。
支持复杂的文本描述。
在文本-图像对齐方面表现优异。
应用场景
广告设计、虚拟场景构建、教育辅助等。
4. CogView
模型简介
由清华大学提出,基于 Transformer 架构,专门用于文本到图像生成。
支持中文和英文文本描述。
特点
对中文文本的支持较好。
生成图像的分辨率较高。
支持多种风格的图像生成。
应用场景
中文内容创作、广告设计、教育辅助等。
5. MidJourney
模型简介
由 MidJourney 团队开发,专注于艺术风格的文本到图像生成。
通过 Discord 平台提供服务,用户可以通过文本指令生成图像。
特点
生成图像具有独特的艺术风格。
支持多种艺术风格(如油画、水彩、科幻等)。
用户交互友好,适合非技术用户使用。
应用场景
艺术创作、个性化内容生成、社交媒体等。
6. Parti (Pathways Autoregressive Text-to-Image)
模型简介
由 Google 提出,基于自回归模型(Autoregressive Model),能够根据文本描述生成高质量的图像。
强调生成图像的多样性和文本-图像对齐能力。
特点
支持长文本描述。
生成图像的多样性高。
在复杂场景生成方面表现优异。
应用场景
广告设计、虚拟场景构建、教育辅助等。
7. Make-A-Scene
模型简介
由 Meta (Facebook) 提出,结合文本描述和用户绘制的草图生成图像。
强调用户控制和生成图像的细节。
特点
支持用户通过草图控制生成图像的布局。
生成图像的细节丰富。
适合需要高精度控制的应用场景。
应用场景
艺术创作、设计辅助、虚拟场景构建等。
示例
输入:文本
"A forest with a river running through it."
和用户绘制的草图。输出:一张符合描述和草图的森林河流图片。
8. VQGAN+CLIP
模型简介
结合 VQGAN(一种生成对抗网络)和 CLIP(一种视觉-语言模型),能够根据文本描述生成图像。
开源且易于定制。
特点
生成图像的风格多样。
支持用户自定义生成过程。
计算资源需求较低。
应用场景
艺术创作、个性化内容生成、社交媒体等。
2. 各模型需要的计算资源
模型名称 | 计算需求 | 备注 |
---|---|---|
DALL·E 系列 | 高 | 需要大规模 GPU 集群,适合在云端运行。 |
Stable Diffusion | 中等 | 可以在消费级 GPU 上运行,但高分辨率生成仍需较强算力。 |
Imagen | 高 | 基于大规模语言模型和扩散模型,计算需求较高。 |
CogView | 中等至高 | 基于 Transformer,生成高分辨率图像时需要较强算力。 |
MidJourney | 中等 | 通过云端服务提供,用户无需本地计算,但对服务器算力需求较高。 |
Parti | 高 | 基于自回归模型,生成高质量图像需要大量计算资源。 |
Make-A-Scene | 中等至高 | 结合用户输入和生成模型,计算需求较高。 |
VQGAN+CLIP | 低 | 可以在消费级 GPU 甚至 CPU 上运行,计算需求最低。 |
二、VQGAN+CLIP 的使用示例
1. 前期准备:
1. 安装依赖
pip install torch torchvision ftfy regex tqdm clip
pip install torch torchvision
pip install taming-transformerspip install pytorch_lightning==1.9.4 (
taming-transformers
依赖于pytorch_lightning
)pip install git+https://github.com/openai/CLIP.git
2. 模型仅支持英文,若需要其他语言,需要安装多语言库(用于把其他语言转化成英文):
pip install multilingual-clip
2. 下载模型参数和配置:
2.1 模型权重
- vqgan_imagenet_f16_16384.ckpt
- vqgan_imagenet_f16_1024.ckpt
2.2 VQGAN 配置文件: vqgan_imagenet_f16_16384.yaml
- vqgan_imagenet_f16_16384.yaml
- vqgan_imagenet_f16_1024.yaml
3. 代码
import torch
import clip
from omegaconf import OmegaConf
from pytorch_lightning.callbacks import ModelCheckpoint
from taming.models.vqgan import VQModel
from torchvision import transforms
from torchvision.transforms.functional import to_pil_image# 加载 VQGAN 模型
def load_vqgan_model(config_path, model_path, device="cuda"):"""加载 VQGAN 模型:param config_path: VQGAN 配置文件的路径:param model_path: VQGAN 模型权重的路径:param device: 模型运行的设备(如 "cuda" 或 "cpu"):return: 加载好的 VQGAN 模型"""# 加载配置文件config = OmegaConf.load(config_path)# 初始化 VQGAN 模型model = VQModel(**config.model.params)# 将 ModelCheckpoint 添加到允许的全局变量列表中torch.serialization.add_safe_globals([ModelCheckpoint])# 加载模型权重,资源有限可以使用参数量小的模型state_dict = torch.load(model_path, map_location="cpu")["state_dict"]model.load_state_dict(state_dict, strict=True)# 将模型移动到指定设备model = model.to(device)model.eval() # 设置为评估模式return model# 加载 CLIP 模型
device = "cuda" if torch.cuda.is_available() else "cpu"
clip_model, preprocess = clip.load("ViT-B/32", device=device)# 加载 VQGAN 模型
config_path = "vqgan_imagenet_f16_16384.yaml" # 配置文件路径
model_path = "vqgan_imagenet_f16_16384.ckpt" # 模型权重路径
vqgan_model = load_vqgan_model(config_path, model_path, device=device)# 定义文本描述
text_description = "A futuristic cityscape at night with neon lights"# 使用 CLIP 生成文本特征
text = clip.tokenize([text_description]).to(device)
with torch.no_grad():text_features = clip_model.encode_text(text)# 使用 VQGAN 生成图像
# 注意:VQGAN 本身不支持直接根据文本特征生成图像,需要结合其他方法(如优化过程)
# 计算资源有限的情况可以把num_steps调小一点50,image_size调小128
def generate_from_text_features(model, text_features, num_steps=50, image_size=128):"""根据文本特征生成图像(示例代码,需要结合优化过程):param model: VQGAN 模型:param text_features: 文本特征:param num_steps: 优化步数:param image_size: 生成图像的大小:return: 生成的图像(PIL 图像)"""# 初始化随机噪声图像noise = torch.randn(1, 3, image_size, image_size).to(device)noise.requires_grad_(True)# 优化器optimizer = torch.optim.Adam([noise], lr=0.01)# 优化过程for step in range(num_steps):optimizer.zero_grad()# 使用 VQGAN 编码和解码噪声图像quantized, _, _ = model.encode(noise)reconstructed_image = model.decode(quantized)# 将张量转换为 PIL 图像reconstructed_image_pil = to_pil_image(reconstructed_image.squeeze(0).cpu()) # 移除 batch 维度并转换为 PIL 图像# 使用 CLIP 的预处理函数preprocessed_image = preprocess(reconstructed_image_pil).unsqueeze(0).to(device) # 添加 batch 维度并移动到设备# 使用 CLIP 提取图像特征image_features = clip_model.encode_image(preprocessed_image)# 计算损失(假设使用 CLIP 的相似度作为损失)loss = -torch.cosine_similarity(text_features, image_features).mean()# 反向传播和优化loss.backward()optimizer.step()print(f"Step {step + 1}/{num_steps}, Loss: {loss.item()}")# 将生成的图像转换为 PIL 图像generated_image = torch.clamp(reconstructed_image, -1, 1) # 限制值范围generated_image = (generated_image + 1) / 2 # 反归一化到 [0, 1]generated_image = generated_image.squeeze(0).cpu() # 移除 batch 维度并移动到 CPUreturn transforms.ToPILImage()(generated_image)# 生成图像
generated_image = generate_from_text_features(vqgan_model, text_features)# 保存生成的图像
generated_image.save("generated_cityscape.png")
相关文章:
VL开源模型实现文本生成图片
一、 基础知识 根据描述生成图片的视觉-语言模型(Vision-Language Models, VL 模型)是近年来多模态生成领域的热点研究方向。这些模型能够根据自然语言描述生成高质量的图像,广泛应用于艺术创作、设计辅助、虚拟场景构建等领域。 1 根据描述…...
动态规划——分组背包问题
动态规划——分组背包问题 分组背包问题分组背包思路分组背包OJ分组背包OJ汇总 分组背包问题 N件物品和一个容量为V的背包。第i件物品的体积是w[i],价值是v[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入…...
Leetcode 3495. Minimum Operations to Make Array Elements Zero
Leetcode 3495. Minimum Operations to Make Array Elements Zero 1. 解题思路2. 代码实现 题目链接:3495. Minimum Operations to Make Array Elements Zero 1. 解题思路 这一题的话核心就是统计对任意自然数 n n n,从 1 1 1到 n n n当中所有的数字对…...
STM32 —— MCU、MPU、ARM、FPGA、DSP
在嵌入式系统中,MCU、MPU、ARM、FPGA和DSP是核心组件,各自在架构、功能和应用场景上有显著差异。以下从专业角度详细解析这些概念: 一、 MCU(Microcontroller Unit,微控制器单元) 核心定义 集成系统芯片&a…...
Linux高级IO
五种IO模型 具象化理解 IO:等 数据拷贝 read/recv: 1、等 - IO事件就绪 - 检测功能成分在里面 2、数据拷贝 问:什么叫做高效的IO? 答:单位时间,等的比重越小,IO的效率越高。 IO模型&am…...
机器人的手眼标定——机器人抓取系统基础系列(五)
机器人的手眼标定——机器人抓取系统基础系列(五) 前言一、机器人标定相关概念1.1 内参标定和外参标定1.2 Eye-in-Hand 和 Eye-to-Hand1.3 ArUco二维码和棋盘格标定区别 二、机器人标定基本原理2.1 机器人抓取系统坐标系2.2 标定原理 三、标定步骤和注意…...
Android 图片加载框架:Picasso vs Glide
引言 在 Android 开发中,图片加载是移动应用的核心功能之一。合理选择图片加载框架不仅能提升用户体验,还能优化内存管理和应用性能。本文将深入对比 Picasso 和 Glide 两大主流框架,结合代码示例分析它们的差异、工作原理及优化策略。 1. …...
uniapp从 vue2 项目迁移到 vue3流程
以下是必须为迁移到 vue3 进行调整的要点,以便 vue2 项目可以在 vue3 上正常运行。 1. 在index.js中创建应用程序实例 // Before - Vue 2 import Vue from vue import App from ./App // with no need for vue3 Vue.config.productionTip false // vue3 is no lon…...
DeepSeek R1 本地部署指南 (2) - macOS 本地部署
上一篇: DeepSeek R1 本地部署指南 (1) - Windows 本地部署-CSDN博客 1.安装 Ollama Ollama https://ollama.com/ 点击 Download - Download for macOS 解压下载 zip 启动程序 3. 选择版本 DeepSeek R1 版本 deepseek-r1 https://ollama.com/library/deepseek-r1 模…...
DeepSeek技术架构解析:MoE混合专家模型
一、前言 2025年初,DeepSeek V3以557万美元的研发成本(仅为GPT-4的1/14)和开源模型第一的排名,在全球AI领域掀起波澜。其核心创新之一——混合专家模型(Mixture of Experts, MoE)的优化设计,不…...
Ubuntu实时读取音乐软件的音频流
文章目录 一. 前言二. 开发环境三. 具体操作四. 实际效果 一. 前言 起因是这样的,我需要在Ubuntu中,实时读取正在播放音乐的音频流,然后对音频进行相关的处理。本来打算使用的PipewireHelvum的方式实现,好处是可以直接利用Helvum…...
2025年2月-3月后端go开发找工作感悟
整体感悟 目标 找工作首先要有一个目标,这个目标尽可能的明确,比如我要字节、拼多多之类的公司,还是要去百度、滴滴这样的,或者目标是创业公司。但是这个目标是会动态调整的,有可能我们的心态发生了变化,一…...
OpenCV图像拼接(1)自动校准之校准旋转相机的函数calibrateRotatingCamera()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::detail::calibrateRotatingCamera 是OpenCV中用于校准旋转相机的函数。它特别适用于那种相机相对于一个固定的场景进行纯旋转运动的情况&…...
【极速版 -- 大模型入门到进阶】快速了解大型语言模型
文章目录 🌊 大模型作为一种生成式人工智慧,厉害在哪儿?-> 通用能力🌊 LLM 如何生成输出:简而言之就是文字接龙🌊 GPT 之前 ...:模型规模和数据规模概览🌊 ChatGPT 有三个训练阶段…...
MySQL 锁机制详解
MySQL 锁机制详解 5.1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、 RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有 效性是所有数…...
牛客网【模板】二维差分(详解)c++
题目链接:【模板】二维差分 1.题目分析 类比一下,因为差分因为差分是在数组里的某一段同时加上一个K二维是在二维数组中选择一个词矩阵,让词矩阵中每一个元素都加上一个K 2.算法原理 解法-:暴力解法 -> 模拟 你告诉我一个左上角和右下…...
从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!
我正在参加Trae「超级体验官」创意实践征文, 本文所使用的 Trae 免费下载链接: www.trae.ai/?utm_source… 前言 大家好,我是小Q,字节跳动近期推出了一款 AI IDE—— Trae,由国人团队开发,并且限时免费体…...
【清华大学】AIGC发展研究(3.0版)
目录 AIGC发展研究报告核心内容一、团队简介二、AI哲学三、国内外大模型四、生成式内容(一)文本生成(二)图像生成(三)音乐生成(四)视频生成 五、各行业应用六、未来展望 AIGC发展研究…...
Kafka--常见问题
1.为什么要使用 Kafka,起到什么作用 Kafka是一个高吞吐量、分布式、基于发布订阅的消息系统,它主要用于处理实时数据流 Kafka 设计上支持高吞吐量的消息传输,每秒可以处理数百万条消息。它能够在处理大量并发请求时,保持低延迟和…...
maptalks图层交互 - 模拟 Tooltip
maptalks图层交互 - 模拟 Tooltip 图层交互-模拟tooltip官方文档 <!DOCTYPE html> <html><meta charsetUTF-8 /><meta nameviewport contentwidthdevice-width, initial-scale1 /><title>图层交互 - 模拟 Tooltip</title><style typet…...
【前端】Visual Studio Code安装配置教程:下载、汉化、常用组件、基本操作
文章目录 一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2、view-in-browser3、Live Server 四、基本操作五、感谢观看! 一、Visual Studio Code下载 下载官网:https://code.visualstudio.com/ 进入官网后点击右上角的Download &…...
datetime“陷阱”与救赎:扒“时间差值”证道
时间工具陷阱,其实是工具引用的误解。 笔记模板由python脚本于2025-03-23 23:32:58创建,本篇笔记适合时间工具研究的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值:在于输出思考与经验,而不仅仅是知识的简单复述。 Pyth…...
3DMAX曲线生成器插件CurveGenerator使用方法
1. 脚本功能简介 3DMAX曲线生成器插件CurveGenerator是一个用于 3ds Max 的样条线生成工具,用户可以通过简单的UI界面输入参数,快速生成多条样条线。每条样条线的高度值随机生成,且可以自定义以下参数: 顶点数量:每条…...
Apache漏洞再现
CVE-2021-41773路径穿越漏洞 1、开环境 sudo docker pull blueteamsteve/cve-2021-41773:no-cgid sudo docker run -dit -p 8082:80 blueteamsteve/cve-2021-41773:no-cgid 2、访问8082端口 3、打开工具 4、输入网址,检测漏洞...
git,openpnp - 根据安装程序打包名称找到对应的源码版本
文章目录 git,openpnp - 根据安装程序打包名称找到对应的源码版本概述笔记备注 - 提交时间不可以作为查找提交记录的依据END git,openpnp - 根据安装程序打包名称找到对应的源码版本 概述 想在openpnp官方最新稳定版上改一改,首先就得知道官方打包的安装程序对应的…...
SQL Server查询计划操作符(7.3)——查询计划相关操作符(11)
7.3. 查询计划相关操作符 98)Table Scan:该操作符从查询计划参数列确定的表中获取所有数据行。如果其参数列中出现WHERE:()谓词,则只返回满足该谓词的数据行。该操作符为逻辑操作符和物理操作符。该操作符具体如图7.3-98节点1所示。 图 7.3-…...
编译原理——词法分析
文章目录 词法分析:从基础到自动构造一、词法分析程序的设计一、词法分析程序的设计二、PL/0编译程序中词法分析程序的设计与实现1. 语法特定考量2. 通过状态转移表运用有限状态自动机3. 示例代码片段(用于说明的伪代码) 三、单词的形式化描述…...
Linux内核,内存分布
x86_64的物理地址范围为64bit,但是因为地址空间太大目前不可能完全用完,当前支持57bit和48bit两种虚拟地址模式。 地址模式单个空间用户地址空间内核地址空间32位2G0x00000000 - 0x7FFFFFFF0x80000000 - 0xFFFFFFFF64位(48bit)128T0x00000000 00000000 …...
AI鸟类识别技术革新生态监测:快瞳科技如何用“智慧之眼”守护自然?
在生态环境保护日益受关注的今天,“鸟类识别”已从专业科研工具演变为推动生态治理数字化的核心技术。无论是湿地保护区的珍稀候鸟监测,还是城市机场的鸟击风险预警,AI技术的精准赋能正在改写人类与自然的互动方式。作为行业领先的智能解决方…...
c++之set
一、set特性及用途? 唯一性:set 中的元素是唯一的,不会存在重复的元素。自动排序:set 中的元素会自动按照默认的升序规则进行排序。底层实现:set 通常基于红黑树实现,具有自平衡功能,因此插入、…...
【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解
目录 一、前言 二、AI视频概述 2.1 什么是AI视频 2.2 AI视频核心特点 2.3 AI视频应用场景 三、通义万相介绍 3.1 通义万相概述 3.1.1 什么是通义万相 3.2 通义万相核心特点 3.3 通义万相技术特点 3.4 通义万相应用场景 四、DeepSeek 通义万相制作AI视频流程 4.1 D…...
【操作系统】自旋锁和互斥锁
自旋锁和互斥锁是用于多线程同步的两种常见锁机制,主要区别在于等待锁的方式和适用场景。以下是它们的对比分析: 1. 等待机制 自旋锁(Spinlock)互斥锁(Mutex)线程通过 忙等待(Busy-Wait&#x…...
人工智能在医疗影像诊断中的应用与实践
引言 随着人工智能技术的飞速发展,其在医疗领域的应用逐渐成为研究和实践的热点。特别是在医疗影像诊断方面,人工智能技术凭借其强大的数据处理能力和模式识别能力,为提高诊断效率和准确性带来了新的希望。本文将探讨人工智能在医疗影像诊断中…...
Java中synchronized 和 Lock
1. synchronized 关键字 工作原理 对象锁:在Java中,每个对象都有一个与之关联的监视器锁(monitor lock)。当一个线程尝试进入由 synchronized 保护的代码块或方法时,它必须首先获取该对象的监视器锁。如果锁已经被其…...
【C语言系列】数据在内存中存储
数据在内存中存储 一、整数在内存中的存储二、大小端字节序和字节序判断2.1什么是大小端?2.2练习2.2.1练习12.2.2练习22.2.3练习32.2.4练习42.2.5练习52.2.6练习6 三、浮点数在内存中的存储3.1练习3.2浮点数的存储3.2.1 浮点数存的过程3.2.2 浮点数取的过程 3.3题目…...
qt 对QObject::tr()函数进行重定向
在 Qt 中,QObject::tr() 函数用于国际化(i18n),它用于标记需要翻译的字符串。通常情况下,tr() 函数会从翻译文件(如 .qm 文件)中查找对应的翻译字符串。如果你希望重定向 tr() 函数的行为&#…...
C#基础学习(三)值类型和引用类型:编程世界的“现金“ vs “银行卡“,以及string这个“渣男“的叛变行为
开场白 各位程序猿/媛们,今天我们来聊一聊编程世界里的"金钱观"。 你以为只有人类会纠结现金和存款的区别?不不不,C#中的值类型和引用类型每天都在上演这场大戏! 而我们的string同学,表面是…...
自动驾驶背后的数学:多模态传感器融合的简单建模
上一篇博客自动驾驶背后的数学:特征提取中的线性变换与非线性激活 以单个传感器为例,讲解了特征提取中的线性变换与非线性激活。 这一篇将以多模态传感器融合为例,讲解稍复杂的线性变换和非线性激活应用场景。 (一)权重矩阵的张量积分解 y = W x + b = [ w 11 ⋯ w 1 n ⋮…...
如何设置sudo权限
打开终端:按 Ctrl Alt T 打开终端。 编辑 sudoers 文件: 使用 visudo 命令编辑 /etc/sudoers 文件(visudo 会检查语法,避免错误): sudo visudo 添加用户权限: 在文件中找到以下行࿱…...
Codeforces Round 1012 (Div. 2) 3.23
文章目录 2025.3.23 Div2B. Pushing Balls(暴力)代码 C. Dining Hall题意思路代码 2025.3.23 Div2 Dashboard - Codeforces Round 1012 (Div. 2) - Codeforces B. Pushing Balls(暴力) 题意很好懂,每一行每一列从左…...
langfuse追踪Trace
介绍 🧠 Langfuse 是什么? Langfuse 是一个专门为 LLM 应用(如 OpenAI / LangChain / 自定义 Agent) 设计的 观测与追踪平台(Observability Platform)。 简单说,它就像是你为 AI 应用插上的 “…...
Java-模块二-2
整数类型 byte:在 Java 中占用8位(1字节),因此它的取值范围是从 -128 到 127。这是最小的整数类型,适合用于节省空间的情况。 short:这种类型的大小是16位(2字节),允许的…...
使用VS2022编译CEF
前提 选择编译的版本 CEF自动编译,在这里可以看到最新的稳定版和Beta版。 从这里得出,最新的稳定版是134.0.6998.118,对应的cef branch是6998。通过这个信息可以在Build requirements查到相关的软件配置信息。 这里主要看Windows下的编译要…...
大模型RLHF训练-PPO算法详解:Proximal Policy Optimization Algorithms
一、TL;DR 提出了一种新的策略梯度方法家族,用于强化学习,这些方法交替进行与环境交互采样数据提出了一个新的目标函数,使得能够进行多个小批量更新的多轮训练这些新方法为近端策略优化(Proximal Policy Optimization…...
【STM32实物】基于STM32的扫地机器人/小车控制系统设计
基于STM32的扫地机器人/小车控制系统设计 演示视频: 基于STM32的扫地机器人小车控制系统设计 简介:扫地机器人系统采用分层结构设计,主要包括底层硬件控制层、中间数据处理层和上层用户交互层。底层硬件控制层负责对各个硬件模块进行控制和数据采集,中间数据处理层负责对采…...
【C++初阶】从零开始模拟实现vector(含迭代器失效详细讲解)
目录 1、基本结构 1.1成员变量 1.2无参构造函数 1.3有参构造函数 preserve()的实现 代码部分: push_back()的实现 代码部分: 代码部分: 1.4拷贝构造函数 代码部分: 1.5支持{}初始化的构造函数 代码部分: …...
AI比人脑更强,因为被植入思维模型【21】冯诺依曼思维模型
定义 冯诺依曼思维模型是一种基于数理逻辑和系统分析的思维方式,它将复杂的问题或系统分解为若干个基本的组成部分,通过建立数学模型和逻辑规则来描述和分析这些部分之间的关系,进而实现对整个系统的理解和优化。该模型强调从整体到局部、再…...
Keil5调试技巧
一、引言 Keil5作为一款广泛应用于嵌入式系统开发的集成开发环境(IDE),在微控制器编程领域占据着重要地位。它不仅提供了强大的代码编辑和编译功能,还具备丰富的调试工具,帮助开发者快速定位和解决代码中的问题。本文…...
Web PKI现行应用、标准
中国现行 Web PKI 标准 中国在 Web PKI(公钥基础设施)领域制定了多项国家标准,以确保网络安全和数字证书管理的规范性。以下是一些现行的重要标准: 1. GB/T 21053-2023《信息安全技术 公钥基础设施 PKI系统安全技术要求》 该标…...
ROS多机通信(四)——Ubuntu 网卡 Mesh 模式配置指南
引言 使用Ad-hoc加路由协议和直接Mesh模式配置网卡实现的网络结构是一样的,主要是看应用选择, Ad-Hoc模式 B.A.T.M.A.N. / OLSR 优点:灵活性高,适合移动性强或需要优化的复杂网络。 缺点:配置复杂,需手动…...