走向多模态AI之路(二):多模态 AI 如何工作?
目录
- 前言
- 一、跨模态对齐(Cross-modal Alignment):AI 如何理解不同模态的关系
- 二、多模态融合(Multimodal Fusion):AI 如何整合不同模态的信息
- 三、多模态生成(Multimodal Generation):AI 如何创造多种模态的内容
- 四、博查 API:多模态 AI 的高效数据引擎
- 总结
前言
大家好啊,我是北极熊,上一篇文章我们介绍了为什么现在多模态AI会越来越流行,以及它的发展历程,相比于传统AI,多模态 AI 不仅要学会处理文字、图像、音频、视频等多种数据,还要理解它们之间的关系,让 AI 能像人一样整合多个信息源,提高对世界的认知能力。比如,一款智能助理如果能同时分析你的语音语调、面部表情和语义内容,它就能更准确地判断你的情绪,而不仅仅是听懂你在说什么。
那么,多模态 AI 究竟是如何工作的?它的核心技术有哪些?这篇文章将详细解析多模态 AI 的关键技术,让你对它的原理有一个清晰的认识。
一、跨模态对齐(Cross-modal Alignment):AI 如何理解不同模态的关系
人类可以轻松地把图片、声音和文字联系在一起,比如看到一只猫,我们知道这是一只“猫”,听到“喵喵”声,我们知道是猫在叫。但 AI 天生不会这些,它需要学习。
跨模态对齐的核心目标,就是让不同模态的数据在 AI 的内部有相同的语义表示。 比如让 AI 知道“猫的图片”和“cat”这个单词是同一件事。常见的做法主要有以下几种:
- 共享语义空间(Shared Semantic Space): 就是通过深度学习模型,将不同模态的数据转换成同一个数学空间中的表示,使它们能够进行直接比较。简单的说,就是让不同模态的数据通过神经网络转换成一种 AI 能理解的“通用语言”。CLIP 就是一个典型的例子,它用大量图片和文本的配对数据进行训练,让 AI 学会把相同意思的文本和图像映射到相近的向量空间。这样一来,AI 看到一张猫的图片,就可以推测出它对应的文本是“cat”或者“猫”。
- 对比学习(Contrastive Learning): 训练模型学会将相似的数据拉近、不同的数据推远。简单的说,就是让 AI 学会区分哪些图像和文本是相关的,哪些是不相关的。
- 弱监督学习(Weakly Supervised Learning): 利用不完全标注的数据进行学习,比如从社交媒体上的图片和配文中自动学习它们的对应关系。
总的来说,这个阶段的关键任务,就是让 AI 能够理解不同模态之间的关系,而不是孤立地处理每一种数据。
二、多模态融合(Multimodal Fusion):AI 如何整合不同模态的信息
光是知道图像和文本是对应的还不够,AI 还需要学会结合多种模态的信息,才能做出更深入的理解。比如,在自动驾驶系统中,摄像头提供的视觉信息和雷达提供的深度信息需要结合起来,才能更准确地识别障碍物。
多模态融合最常见的应用就是情感分析。如果 AI 只看文字,它可能判断一条“你真厉害”是积极的评论。但如果加上语音,它会发现语气是讽刺的,情绪其实是负面的。又比如在医学影像分析中,医生通常会结合 CT 扫描、病人的文字描述、体检数据等多种信息才能做出准确判断,AI 也需要具备类似的能力。
多模态融合的目标,就是让 AI 学会如何“合并”不同来源的信息,使它们互相补充,提升整体理解能力。
多模态融合主要有三种策略:
- 早期融合(Early Fusion): 在模型输入时就将不同模态的数据合并,比如把图像和文字一起输入神经网络。
- 中期融合(Mid Fusion): 是指 AI 先分别处理不同模态的信息,再在特征层面进行合并,这种方法更灵活,适合复杂任务。比如 Transformer 结构可以分别处理不同模态的数据,然后在某一层进行交互。
- 后期融合(Late Fusion): 先分别对不同模态的数据进行处理,得到各自的预测结果后再合并,比如在自动驾驶中,AI 可能会先分别分析摄像头画面、雷达数据,然后再结合所有信息做出最终决策。
近年来,多模态 Transformer 逐渐成为主流,它借鉴了 NLP 领域的 Transformer 结构,它的自注意力机制可以让不同模态的数据相互影响,从而能够处理和整合多种模态的信息。比如 Flamingo 模型就可以同时理解图片和文本,而 GPT-4V 也可以结合文本和图像信息进行推理。这些技术的进步,让 AI 在多模态理解上越来越接近人类的水平。
三、多模态生成(Multimodal Generation):AI 如何创造多种模态的内容
当 AI 能够理解和融合不同模态的信息后,它就可以反过来进行内容生成,比如从文本生成图像、从语音生成视频等。近年来,多模态生成技术的发展极大地推动了 AI 在内容创作领域的应用。
多模态生成的核心挑战在于如何从一种模态的信息,合成另一种模态的内容,甚至跨模态自由转换。
最典型的多模态生成案例是文本到图像(Text-to-Image),比如 DALL·E、Stable Diffusion 这样的 AI,可以根据一句话生成符合语义的图片。它们的核心原理是通过大规模的数据训练,使模型学会不同文本描述与视觉特征之间的对应关系。简单的说,就是让 AI 学会把文本描述和视觉元素关联起来,并合成符合逻辑的图像。
同样的逻辑也适用于文本到视频(Text-to-Video),比如 OpenAI 的 Sora 和快手的可灵大模型可以根据文字生成动态视频,甚至还能控制镜头运动和画面风格。相比于图像生成,视频生成需要额外考虑时间序列信息,让画面保持连贯性。
除了从文本生成视觉内容,多模态生成还能应用在语音和音乐上,比如**文本到语音(Text-to-Speech, TTS)**让 AI 朗读文本,并生成富有情感的声音。AI 甚至可以根据一张图片生成对应的描述,或者让一段无声视频自动配上合理的背景音乐,这些技术正在让 AI 具备更强的创造能力。
多模态生成的核心技术,主要依赖扩散模型(Diffusion Models)和变分自编码器(VAE)等深度生成模型。 扩散模型是目前最主流的生成方法,它的原理是从一团“噪声”中逐步还原出清晰的图像,就像是在雾气中慢慢拼凑出一幅完整的画面。这种方法能生成高质量、符合语义的多模态内容,也是 DALL·E、Sora 等大模型的基础。
四、博查 API:多模态 AI 的高效数据引擎
多模态 AI 的能力提升不仅依赖算法创新,更需要高质量、多维度的数据支撑。博查 API 在这一环节扮演着关键角色,通过三项核心能力为 AI 系统提供可靠的数据支持。
数据源的深度整合是多模态 AI 的基础需求。 传统搜索引擎受限于索引范围和商业策略,难以覆盖 GitHub 代码库、arXiv 预印本等垂直领域内容。博查 API 通过定向抓取与清洗机制,打通了学术论文中的图表数据、开源社区的代码案例、技术论坛的实操视频等多模态内容。例如,在医疗 AI 开发中,研究人员可一次性获取某疾病的病理描述、CT 影像切片、患者随访录音等多维度数据,显著降低数据采集成本。
动态更新的时效性保障是另一大技术优势。 传统数据检索存在数天至数周的延迟,而博查 API 采用流式增量索引技术,可实现小时级更新。这种特性尤其适配多模态生成任务——当用户要求生成“2024 年诺贝尔奖解读视频”时,AI 调用的数据不会停留在去年的获奖名单上。
语义驱动的结果优化则解决了信息噪声问题。 普通搜索引擎的排序受 SEO 干扰严重,而博查 API 内置的 Semantic Reranker API 通过 BERT 等预训练模型,对检索结果进行上下文重排序。例如,搜索“自动驾驶多传感器融合方案”,系统会优先返回带代码实现、仿真视频、传感器标定流程图的技术文档,而非营销软文或过时教程。
当然,博查 API 仍存在改进空间。例如视频检索功能尚未开放,对非结构化数据(如工业设计草图)的支持有限,且部分小众语种的内容覆盖率有待提升。但作为多模态 AI 的基础设施,它已建立起从数据获取、清洗到智能分发的完整链路,为算法模型提供了稳定的“燃料供给”。
总结
多模态 AI 的工作原理可以拆解为三大核心技术:
- 跨模态对齐让 AI 认识不同模态的信息是同一回事;
- 多模态融合让 AI 学会整合多个模态的数据进行更准确的理解;
- 而多模态生成则让 AI 具备从一个模态到另一个模态的创造能力。
这些技术的进步,使 AI 变得更聪明、更灵活,应用范围也越来越广泛。从智能搜索、自动驾驶,到内容生成、医疗诊断,多模态 AI 正在重塑人工智能的能力边界。
未来,我们或许会见证 AI 变得更像人类,不仅能看、能听、能说,还能创造和思考,真正具备通用智能的潜力。
🔗 系列文章推荐:
【轻松认识RAG(一):AI 为何会一本正经地胡说八道?】
【轻松认识RAG(二):RAG——让 AI“会查资料”的关键技术】
【轻松认识RAG(三):手把手带你实现 博查API + LangChain + DeepSeek = RAG的项目实战】
【轻松认识RAG(四):RAG 的前沿发展与未来趋势】
【【手把手教学】用博查Web Search API实现多模态搜索:打造专属于你的搜索引擎!】
【走向多模态AI之路(一):什么是多模态 AI?】
相关文章:
走向多模态AI之路(二):多模态 AI 如何工作?
目录 前言一、跨模态对齐(Cross-modal Alignment):AI 如何理解不同模态的关系二、多模态融合(Multimodal Fusion):AI 如何整合不同模态的信息三、多模态生成(Multimodal Generation)…...
MCP 实战:实现server端,并在cline调用
本文动手实现一个简单的MCP服务端的编写,并通过MCP Server 实现成绩查询的调用。 一、配置环境 安装mcp和uv, mcp要求python版本 Python >3.10; pip install mcppip install uv 二、编写并启用服务端 # get_score.py from mcp.server.fastmcp import…...
C#游戏开发【第18天】 | 深入理解队列(Queue)与栈(Stack):从基础到任务队列实战
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
2.5路径问题专题:LeetCode 64. 最小路径和
动态规划解决最小路径和问题 1. 题目链接 LeetCode 64. 最小路径和 2. 题目描述 给定一个包含非负整数的 m x n 网格 grid,从网格的左上角出发,每次只能向右或向下移动一步,最终到达右下角。要求找到一条路径,使得路径上的数字…...
办公设备管理系统(springboot+ssm+jsp+maven)
基于springboot的办公设备管理系统(springbootssmjspmaven) 系统功能主要有: 欢迎页账号管理 管理员账号管理系统账号添加密码修改 普通管理员管理 用户管理用户添加用户查询 资产类型管理资产信息管理资产档案管理资产报表...
蓝桥杯2024JavaB组的一道真题的解析
文章目录 1.问题描述2.问题描述3.思路分析4.代码分析 1.问题描述 这个是我很久之前写的一个题目,当时研究了这个题目好久,发布了一篇题解,后来很多人点赞,我都没有意识到这个问题的严重性,我甚至都在怀疑自己…...
数据库--SQL
SQL:Structured Query Language,结构化查询语言 SQL是用于管理关系型数据库并对其中的数据进行一系列操作(包括数据插入、查询、修改删除)的一种语言 分类:数据定义语言DDL、数据操纵语言DML、数据控制语言DCL、事务处…...
SQL Server:Log Shipping 说明
目录标题 SQL Server Log Shipping与Oracle归档日志备份对比分析一、SQL Server Log Shipping的日志截断机制二、Oracle归档日志备份对比三、关键配置对比表四、最佳实践建议 如何修改和查看SQL Server默认备份配置防止自动删除?一、查看现有备份配置二、修改备份配…...
Zephyr实时操作系统初步介绍
一、概述 Zephyr是由Linux基金会托管的开源实时操作系统(RTOS),专为资源受限的物联网设备设计。其核心特性包括模块化架构、跨平台兼容性、安全性优先以及丰富的连接协议支持。基于Apache 2.0协议,Zephyr允许商业和非商业用途的自…...
【大模型系列篇】大模型基建工程:基于 FastAPI 自动构建 SSE MCP 服务器 —— 进阶篇
🔥🔥🔥 上期 《大模型基建工程:基于 FastAPI 自动构建 SSE MCP 服务器》中我们使用fastapi-mcp自动挂载fastapi到mcp工具,通过源码分析和实践,我们发现每次sse请求又转到了内部fastapi RESTful api接口&…...
深度学习deeplearn3
# Jupyter Notebook魔法命令,用于在Notebook中内联显示图表 %matplotlib inline# 导入NumPy库,用于高效的数值计算 import numpy as np# 从matplotlib_inline库导入backend_inline模块,用于设置图表显示格式 from matplotlib_inline import b…...
(九)图形管线
一图说明问题 顶点数据->顶点着色器->细分着色器->几何着色器->光栅化->片元着色器->颜色混合 创建图形管线函数放在后面位置 void MyApplication::initVulkan() { createInstance(); createSurface(); pickPhysicalDevice(); createLogicalDevice(); cre…...
7-3 逆序的三位数
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。 输入格式: 每个测试是一个3位的正整数。 输出格式: 输出按位逆序…...
git从历史版本创建新分支或标签
git从某个历史版本创建标签 # 查看历史版本 git log git tag tag-v1.0 780e2a7fc714faf388ba71git从某个分支的指定历史版本中创建新分支 # 查看历史版本 git log # 从历史分支创建标签 git checkout -b new-branch 780e2a7fc714faf388ba71...
HTML 音频(Audio)学习笔记
一、HTML 音频概述 在 HTML 中,音频可以通过多种方式播放,但要确保音频在不同浏览器和设备上都能正常播放,需要掌握一些技巧。HTML5 引入了 <audio> 元素,为音频播放提供了一种标准方法,但在 HTML4 中ÿ…...
五种音频器件综合对比——《器件手册--音频器件》
目录 音频器件 简述 1. 扬声器(Speakers) 2. 麦克风(Microphones) 3. 放大器(Amplifiers) 4. 音频接口(Audio Interfaces) 5. 音频处理器(Audio Processors)…...
数据结构复习(单调栈,单调队列,KMP,manacher,tire,字符串哈希)
单调栈: 介绍: 单调栈用于解决"寻找每个元素左侧/右侧第一个比它小/大的元素"类问题。栈中元素保持单调性,时间复杂度O(n)。 维护一个严格递增栈。对于每个元素a[i],不断弹出栈顶比a[i]大的元素,剩下的栈顶即…...
(学习总结32)Linux 基础 IO
Linux 基础 IO 一、什么是 " 文件 "二、C 文件接口打开文件写文件读文件其它介绍 三、系统文件 I/O传递标志位系统接口写文件系统接口读文件部分系统调用接口介绍打开文件函数 open关闭文件函数 close写入文件函数 write读取文件函数 read 文件描述符 fdfd 0 & 1…...
操作系统(一):概念及主流系统全分析
目录 一.操作系统是什么 二.操作系统的分类 2.1 按应用场景分类 2.2 按实时性分类 2.3 按内核架构分类 2.4 按用户与任务分类 三.主流操作系统比较 四.未来趋势 一.操作系统是什么 操作系统(Operating System, OS)是计算机系统的核心软件&#x…...
三、GPIO
一、GPIO简介 GPIO(General Purpose Input Output)通用输入输出口GPIO引脚电平:0V(低电平)~3.3V(高电平),部分引脚可容忍5V 容忍5V,即部分引脚输入5V的电压,…...
Ceph异地数据同步之-RBD异地同步复制(上)
#作者:闫乾苓 文章目录 前言基于快照的模式(Snapshot-based Mode)工作原理单向同步配置步骤单向同步复制测试双向同步配置步骤双向同步复制测试 前言 Ceph的RBD(RADOS Block Device)支持在两个Ceph集群之间进行异步镜…...
fastapi完全离线环境(无外网)的访问Swagger所做特殊处理
在互联网环境中,只要 启动FastAPI 服务运行在本地机器上,访问 http://localhost:8000/docs(Swagger UI)就可以访问到Swagger界面,但是在完全离线环境(无外网)下如何访问Swagger页面呢࿱…...
在网络中加入预训练的多层感知机(MLP)有什么作用?
在网络中加入预训练的多层感知机(MLP)通常是为了引入先验知识、提升特征表示能力或dropout,具体作用取决于MLP的设计和预训练任务。以下是常见的应用场景和优势: 1. 特征融合与迁移学习:预训练的MLP可以作为特征提取器࿰…...
3.2/Q2,GBD数据库最新文章解读
文章题目:Temporal trends in the burden of vertebral fractures caused by falls in China and globally from 1990 to 2021: a systematic analysis of the Global Burden of Disease Study 2021 DOI:10.1186/s13690-025-01500-y 中文标题:…...
机器学习的一百个概念(9)学习曲线
前言 本文隶属于专栏《机器学习的一百个概念》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见[《机器学习的一百个概念》 ima 知识库 知识库广场搜索&…...
浅谈Tomcat数据源连接池
目录 为什么需要JDBC连接池 Tomcat JDBC Pool 相关参数 1. 基本配置 2. 连接池大小控制 3. 连接验证与测试 4. 空闲连接回收 5. 连接泄漏与超时 Tomcat JDBC Pool 源码分析(tomcat 8.5.3) DataSourceFactory DataSource ConnectionPool Pool…...
Techub 财报解读:Circle 冲刺 IPO,但收入增长难掩利润困局
作者:Techub 财报解读 撰文:Yangz,Techub News 4 月 1 日,Circle 向美国证券交易委员会(SEC)提交 S-1 文件,计划进行首次公开募股(IPO),股票代码为 CRCL&…...
C++中的链表操作
在C中,链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针。C标准库(STL)中提供了std::list和std::forward_list两种链表实现,分别对应双向链表和单向链表。此外&am…...
Vue2 生命周期
文章目录 前言🔄 Vue2 生命周期流程(8个核心钩子)📝 代码中典型用法示例一、您的描述验证二、完整生命周期代码示例三、关键阶段行为说明🔍 常见问题 前言 提示:以下是本篇文章正文内容,下面案…...
2007-2022年 上市公司政府补助数据 -社科数据
上市公司政府补助数据(2007-2022年)-社科数据https://download.csdn.net/download/paofuluolijiang/90028547 https://download.csdn.net/download/paofuluolijiang/90028547 政府补助是指政府为支持企业发展,提供的资金或资源支持。对于上市…...
设计心得——状态机
一、状态机 在设计一些与硬件交互或者游戏等开发中,经常会听到状态机(State Machines)这个字眼,而在设计模式(GoF)中,又经常听到状态模式这个概念,它们之间有什么联系和不同呢&…...
python match case语法
学习路线:B站 普通的if判断 def if_traffic_light(color):if color red:return Stopelif color yellow:return Slow downelif color green:return Goelse:return Invalid colorprint(if_traffic_light(red)) # Output: Stop print(if_traffic_light(yellow)) …...
Lua中协程相关函数使用详解
目录 1. coroutine.create(f)2. coroutine.resume(co [, val1, ...])3. coroutine.yield([val1, ...])4. coroutine.status(co)5. coroutine.wrap(f)6. coroutine.running()7. coroutine.isyieldable()协程状态转换示例总结 Lua 中的协程(coroutine)提供…...
代码拟有感
最近的日子像被按了0.5倍速播放键。腱鞘炎让手腕转动时发出咯吱声,尾骨的钝痛让久坐变成酷刑,落枕的脖子和酸胀的手臂组成了“疼痛交响乐”——这些隐秘的、持续的身体抗议,让原本枯燥的代码练习变成了一场生理与意志的拉锯战。 我盯着屏幕苦…...
《实战AI智能体》MCP对Agent有哪些好处
首先MCP为Agent提供了标准化的方式来接入各种工具和数据源,无论是本地运行的工具,例如通过stdio服务器,还是远程托管的服务HTTP over SSE服务, Agent都可以通过统一的接口与它们进行交互,极大扩展了第三方工具库。 例如,在金融领域,Agent 可以接入股票分析的MCP工具。当…...
maptalks获取所有图层并把图层按照zIndex排序
maptalks获取所有图层并把图层按照zIndex排序 获取所有图层 通过调用 map.getLayers() 可以返回当前地图上所有的图层集合。此方法会返回一个数组形式的结果,其中包含了地图上的每一个图层层级对象。 图层属性中的 ZINDEX 每种图层类型(如矢量图层、…...
GUI-Guider 按钮按下 选项卡 右移动一个,到最右边停下
extern lv_ui guider_ui; // 在文件顶部添加// 在按钮事件中使用: lv_obj_t * tabview guider_ui.screen_tabview_1; // 替换为你的实际 TabView 名称 uint16_t current lv_tabview_get_tab_act(tabview); lv_tabview_set_act(tabview, current 1, LV_ANIM_ON); …...
让AI再次伟大-MCP-Client开发指南
👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理、AI应用🔥如果感觉…...
sql工具怎么选?
为什么大多数主流工具又贵又难用? 有没有一款免费好用的sql工具? 像大多人朋友常用的sql工具,应该都遇到过这种情况, 用着用着收到了来自品牌方的律师函, 或者处理数据经常卡死, 再或者不支持国产数据库…...
video标签播放mp4格式视频只有声音没有图像的问题
video标签播放mp4格式视频只有声音没有图像的问题 这是由于视频格式是hevc(H265)编码的,这种编码格式视频video播放有问题主要是由于以下两种原因导致的: 1、浏览器没有开启硬加速模式: 开启方法(以谷歌浏览器为例)&a…...
问题解决:glog中的LOG(INFO)与VLOG无法打印
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 MotivationProcess glog版本为:https://github.com/google/glog/archive/…...
【第2月 day16】Matplotlib 散点图与柱状图
好的!以下是针对初学者的 Matplotlib 散点图与柱状图 学习内容,用简单易懂的语言和示例讲解: 一、散点图(Scatter Plot) 作用:展示两个变量之间的关系(如相关性、分布等)。 1. 核心…...
汽车 HMI 设计的发展趋势与设计要点
一、汽车HMI设计的发展历程与现状 汽车人机交互界面(HMI)设计经历了从简单到复杂、从单一到多元的演变过程。2012年以前,汽车HMI主要依赖物理按键进行操作,交互方式较为单一。随着特斯拉Model S的推出,触控屏逐渐成为…...
Vue 3 中按照某个字段将数组分成多个数组
方法一:使用 reduce 方法 const originalArray [{ id: 1, category: A, name: Item 1 },{ id: 2, category: B, name: Item 2 },{ id: 3, category: A, name: Item 3 },{ id: 4, category: C, name: Item 4 },{ id: 5, category: B, name: Item 5 }, ];const grou…...
06-Spring 中的事件驱动机制
Spring 中的事件驱动机制(ApplicationEvent 源码解析) 本小结主要总结Spring的事件,如果对于观察者模式比较熟悉的话,理解这个应该不难。 这块涉及的面试题相对简单,主要还是以日常使用为主。 另外在Spring的源码中也运…...
Python学习笔记(8)关于列表内置函数和多维列表
列表访问计数 索引直接访问 index()#获得首次出现指定元素的索引 index(value,[start,[end]] #控制搜索索引范围 counr()#获得指定元素在列表中出现的次数 len()#返回列表长度 成员资格判断 incount()返回0,代表不存在 列表切片 slice[起始偏移量 start:终止…...
【算法学习计划】回溯 -- 递归
目录 leetcode 面试题08.06.汉诺塔问题 leetcode 21.合并两个有序链表 leetcode 206.反转链表 leetcode 24.两两交换链表中的节点 leetcode 50. Pow(x, n) 本篇文章将是我们回溯专题的第一篇文章,在这里我先浅浅讲一下什么是回溯 其实就是递归,只不…...
Unity中 JobSystem使用整理
Unity 的JobSystem允许创建多线程代码,以便应用程序可以使用所有可用的 CPU 内核来执行代码,这提供了更高的性能,因为您的应用程序可以更高效地使用运行它的所有 CPU 内核的容量,而不是在一个 CPU 内核上运行所有代码。 可以单独使…...
【从零实现Json-Rpc框架】- 项目实现 - 服务端主题实现及整体封装
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
JavaScript基础-移动端常用开发框架
随着移动互联网的发展,越来越多的应用和服务需要支持移动设备。为了提高开发效率和用户体验,开发者们依赖于一些成熟的JavaScript框架来构建响应迅速、功能丰富的移动Web应用。本文将介绍几款广泛使用的移动端开发框架,并通过具体的示例展示它…...