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

芯片详细讲解,从而区分CPU、MPU、DSP、GPU、FPGA、MCU、SOC、ECU

目录

芯片的概念结构

芯片的派系划分

通用芯片(CPU,MPU,GPU,DSP)

定制芯片(FPGA,ASIC)

芯片之上的集成(MCU,SOC,ECU)

软硬件的匹配设计


芯片的概念结构

打个比方,假如芯片是一个“银行”,这个银行很小就两个人。

一个负责拨算盘(计算),其他它都不管。

一个负责记录文档(存储),把“算什么?”(数据)和“咋么算?”(程序)都完整的用文档记录下来,方便和拨算盘的人沟通。

他们之间定义了一个沟通方式(一组总线),内容包括了“文档从哪里取?放回哪里?”(寻址总线)和“文档具体内容是什么?”(数据总线)两大部分,换句话说,一组总线包括一个地址总线和一个数据总线。特别注意这里的总线上的“数据”对应着一份文档,不要和文档里 “算什么?”的这个数据概念混淆了。

当下芯片结构是复杂的,但简单划分就三种概念结构。冯.诺依曼结构,哈弗结构和改进哈弗结构。

冯.诺依曼结构: 客户把原始的需求文档(包含输入数据和程序)交给负责记录的人后,根据定义的沟通方式,和负责实际计算的人一起反复来回的传递文档(拿程序指令,拿数据,返结果),最后把最终的计算结果通过记录的人反馈给客户。上面这种分工思路就是冯.诺依曼结构的核心,关键的特点就是客户只用和一个记录人员沟通就行,再复杂的需求都可以一股脑的给一个人,剩下的都是他们之间的事。整个过程非常灵活,这也是冯.诺依曼结构的最大优势。这种结构下程序指令存储地址和数据存储地址指向同一存储器的不同物理位置,因此程序指令和数据的宽度相同。但这种方式效率不高,因为记录的人每个时刻只能干一件事,要么告诉拨算盘的人咋么算,要么告诉它算什么。

哈弗结构:因此出现了哈佛结构,将程序指令和数据分开存储,指令和数据可以有不同的数据宽度。采用了独立的一组程序总线和一组数据总线。这就相当于原来2个人,现在三个人,记录员分了个工,一个就负责记录传递计算方法(程序),一个人就负责记录传递计算内容(数据)。两个人和拨算盘的人点对点沟通,但相互之间老死不往来。这种并行化自然提高了效率,原来要至少两个周期做完的事,一个周期就搞定了。可这种方法让客户要同时对应2个毫无联系的记录员这非常不友好。且如果需求侧重点不同,两个人的工作量常常不均衡导致浪费,如果由一个人担当(冯.诺依曼结构),这些问题都不存在。

改进哈弗结构:为了解决这个平衡问题出现了改进哈弗结构。它只有一组总线供程序存储器和数据存储器分时共用。原来的哈佛结构需要4条(2组)总线,改进后需要两条(1组)总线,且保留了两个独立并行的存储器。也就是说,记录员还是为了效率做了分工,但沟通方式升级,走上了“敏捷之路”。不再是两两沟通的老国企做派,把客户和拨算盘的人也加入进来做了个四方沟通会(分时公用),归口统一保证了灵活性,同时分时也对并行化影响不大。

芯片的派系划分

接着我们聊下芯片的分类,梳理分类首先要区分芯片的两个大类:

通用芯片(CPU, GPU, DSP等)和定制芯片(FPGA, ASIC等),这个大类划分很重要,两者有本质上的不同。同样用银行做比喻,通用芯片就是“银行柜员”而定制芯片就是“ATM机”。

通用芯片

通用芯片关键是“通用”二字,这意味着其必须具备处理各式各样千奇百怪的指令要求,并且经常同时存在多个外部设备的请求,它必须拥有随时中止目前的运算转而进行其他运算,完成后再从中断点继续当前运算的能力。就好比银行柜员,客户要办的业务千奇百怪,时常还来个缺德的插队骂娘或者站着位置不走撩你两下的人存在。柜员都要应对。而为了做到这一点通用芯片有复杂的控制取指译码流程,Cache内存分级机制(缓和高速CPU与低速内存的临时指令存储器),真正的计算单元ALU只占了通用芯片不大的一部分,更多设计是为了灵活性存在的,在计算效率和通用性上的权衡上牺牲前者选择后者。

当我们在讨论芯片结构的时候更多的是在讨论通用芯片的结构,是在讨论说满足客户变化需求的时候,哪种“人员组织形式和沟通方式”是最高效的。

定制芯片

而定制芯片就是完全的另一个概念,虽然它也有结构思想在里面,但是就像你不会去讨论一个程序的“人员组织架构”一样,在这种芯片里根本就没有时序中断,取指译码这些为了灵活性而设计的概念。相比通用芯片,定制芯片是没有“人性”的,就是一个ATM机,其给客户定义了清晰的操作流程,省去了中断等大量灵活性设计,撩小姐姐的一套对机器人是不成立。

打个比方,比如一个比大小的逻辑用冯诺依曼结构的CPU至少需要几条指令完成,但用FPGA就根本不用考虑时序周期,只要串联几个逻辑单元,在一个周期就搞定了。但如果再增加几个逻辑,CPU还是在相同逻辑资源下用几个指令完成,但是FPGA 就需要额外占用另一部分逻辑资源完成计算。再比如FPGA和GPU(GPU是通用芯片)在并行化上有类似的思想,但两者实际没有多少可比性,你不会把三个柜员的办理通道和ATM机理存在在三个恰好并行的流程做比较一样。还有人在信号处理效率上把DSP和FPGA拿出来对比,我觉得这些零零种种的比较都没有太大意义。为灵活性存在的“人”(通用芯片),和为效率存在的“机器”(定制芯片)是两个维度的事情,不要从性能上去强行比较。

从这里我们可以大致看出来,两者的几个重要差异。定制芯片是对已经固化的业务进行降本增效,就像银行用ATM机,代替成本更高的柜员处理一些常规银行业务。而通用芯片是为了对一些无法或者暂时没有固化的业务作出的灵活设计。两者没有优劣之分。

通用芯片(CPU,MPU,GPU,DSP)

CPU和MPU可以简单理解为一个概念,只是理解范畴上的区别。

CPU和GPU之间的区别更多的是核的数量。

CPU虽然有多核,但基本不超过两位数,每个核都有足够大的缓存和足够多的数字和逻辑运算单元,并有更复杂的逻辑判断硬件,就像银行里常备的3-4个柜台的柜员,擅长处理客户很复杂的业务。

而GPU的核数远超CPU,每个核拥有的缓存大小相对小,数字逻辑运算单元也少而简单,更像是500多个电话客服柜员,处理一些相对简单但数量众多的客户业务。

DSP(数字信号处理芯片)是一类特殊的CPU,采用了上面说的哈佛结构,且存在专用的硬件算法电路和专门的寻址模式。它具有通用芯片设计的灵活性,但在实时运算过程中很少变化,因此特化了业务流程的性能(记录和计算过程)。就像是某个办理“外汇存取”的专业柜台会部署一些特化的柜员和流程。DSP对于专用信号(视频编解码,通讯信号)的处理能力远远的优于一般CPU。当然普通柜台也可以处理展业柜台的业务,但性价比就很差了,如果需求很多开设专门的柜台就变得有意义,这些还是和客户需求有关。用DSP处理专门的信号流常具有执行时间可控,芯片性价比高等优点。

定制芯片(FPGA,ASIC)

讲完了通用芯片,定制芯片也有两个主要方向,FPGA和ASIC。两者核心的区别就是固化程度。FPGA仍然具有一定的灵活性(但远逊于通用芯片),而ASIC则是完成固化的设计(也存在和FPGA类似的部分编辑的产品存在)。类似可以编程的ATM机和完全固化的ATM机,两者区别最大的维度还是成本和功耗。

FPGA最早是从专用集成电路发展而来的半定制化的可编程电路,是高端的CPLD (Complex Programmable Logic Device复杂可编程逻辑器件)。FPGA可以实现一个DSP, GPU甚至是CPU的功能,就像之前说的把柜员业务固化为ATM机操作流程一样。但不是说FPGA可以代替CPU,这是设计目的上的大方向差异,反复强调。

FPGA是一堆逻辑门,通过硬件描述语言HDL把它转成电路连接,从最基本的逻辑门层面上连接成电路。虽然看起来像一块CPU,其实是完全硬件实现的。根据一个固定的模式来处理输入的数据然后输出。FPGA片上大部分都是计算单元,没有控制单元并不代表FPGA不会执行指令,事实上FPGA里控制单元的角色由单元和单元之间可编程逻辑连接线来完成的,通过HDL编程更改每个单元的运算逻辑和单元之间的连接方式,从而使其达到和一般的运行程序差不多的效果。由于省去了CPU的取指和译码两个步骤,FPGA重复运行相同代码的效率得到了极大的提高,也因此,其无法应对没有被编程过的指令。

ASIC就是专用IC,没有明确的定义。可以理解为除了单片机、DSP、FPGA之类的能叫出名的IC,剩下的都是ASIC。ASIC原本就是专门为某一项功能开发的专用集成芯片。后来ASIC发展了一些,称为半定制专用集成电路,相对来说更接近FPGA,甚至在某些地方,ASIC是个大概念,FPGA属于ASIC的一部分,也常常被作为ASIC开发的预研。其代表了在需求一定的情况下,对性价比的极致追求。

芯片之上的集成(MCU,SOC,ECU

在上面我偷偷遗漏了一个概念MCU,原因是其本身不是一种芯片类型而是一种集成方式,SOC芯片也是同样的道理,两者的区别是程度上的不同。

在自动驾驶汽车领域MCU更多的是集成了更多的输入和输出设备在芯片当中,方便更好的控制,因此叫做微控制器而不是微处理器。而SOC是在更高的层面上将不同的芯片做了进一步的集成,维度更高。如果MCU是一种人员组织最终形成一个公司对外服务,那SOC更像是公司级别的组织形成了一个行业对外服务。

单片机是MCU的通俗说法,经典的51系列就是一堆IO口,后来慢慢的把常用的PWM, AD之类的功能加入了单片机之中。其构成等价于一个带了更多外设CPU,但侧重点是讨论其外设的部分。

在PWM,AD等之上继续发展其外设也就形成了汽车行业熟悉的ECU即电子控制单元,同时泛指汽车上所有电子控制系统,可以是转向ECU,空调ECU等。

ECU一般由MCU,扩展内存,扩展输入和输出(CAN/LIN,AD,PWM等),电源电路和其他一些电子元器件组成,特定功能的ECU还带有诸如红外线收发器、脉冲发生器,强弱电隔离等元器件。整块电路板设计安装与一个铝质盒内,通过卡扣或者螺钉方便安装于车身钣金上。

在输入处理电路中,ECU的输入信号主要有三种形式,模拟信号、数字信号(包括开关信号)、脉冲信号。模拟信号通过A/D转换为数字信号提供给微处理器。

在输出电路中,微处理器输出的信号往往用作控制电磁阀、指示灯、步进电机等执行件。微处理器输出信号功率小,使用+5v的电压,汽车上执行机构的电源大多数是蓄电池,需要将微处理器的控制信号通过输出处理电路处理后(D/A,放大等)再驱动执行机构。

电源电路中,传统车的ECU一般带有电池和内置电源电路,以保证微处理器及其接口电路工作在+5v的电压下。即使蓄电池电压有较大波动时,也能提供稳定电压保证系统的正常工作。

一般搭载8位MCU的ECU主要应用于风扇控制、空调控制、雨刷、天窗、门控等较低阶的控制功能。

16位MCU主要应用如引擎控制、齿轮与离合器控制等。

32位MCU应用于多媒体信息系统,实时性的安全动力系统以及复杂的X-by-wire等传动功能。

更复杂的功能就不在MCU或者ECU的讨论范围内了。

随着自动驾驶的发展,ECU的概念进一步升级,更为流行的说法是域控制器,其无外乎就是把MCU变成了SoC(片上系统),同时集成了更多的外围设备而已。目前域控制器搭载的主流通用芯片(GPP)多采用SoC的芯片设计方法,通过HDL语言在SoC内由电路集成各种功能芯片。在SoC中各种组件(IP核)采用类似搭积木的方法组合在一起。IP核(诸如典型的ARM内核设计技术)被授权给数百家半导体厂商,做成不同的SoC芯片。还可能集成GPU、编解码器(DSP)、GPS、WiFi蓝牙基带等一系列功能。

如果看一下高通或者TI的芯片,基本是:

一个ARM核控制整体运算.

一个DSP处理语音编解码

一个GPU负责图像运算

一个基带和天线处理模块负责通信

以及GPS,安全加密等林林总总的特殊芯片。

过去极端情况下自动驾驶的原型处理器功耗可以高达5000W,不仅昂贵且需要搭载额外的散热装置。SoC和ASIC的发展给我们带来很多启示,回到我经常提及的贯穿整个自动驾驶系统的灵活性。在新的SoC世界里,你不会从不同的供应商那里组装物理元件。相反,你从不同的供应商那里组装IP从而获得更好的集成度,也因此更容易降低功耗和成本。

软硬件的匹配设计

大部分自动驾驶算法公司都想定制或自制ASIC/SOC计算平台,原因还有另一个层面来源于软硬件的匹配问题。算法的性能与硬件设计往往脱离不开。追求模块化就要牺牲利用率。要提高利用率就需要软硬件一体设计。你的算法是用GPU合适还是CPU合适,网络模型一次用多少内存又同时使用多少MAC,由此来设计芯片。或者说反过来给定一个芯片,我的算法要如何兼容,是否要减少内存访问次数提高利用率,还是要迁移部分CPU基于规则的算法,改为用GPU基于深度学习来实现。软硬件一起考虑往往才能充分利用好系统性能。

不同的芯片,不同的算法和需求,往往有最优的组合方式。比如一个经典底层而常用的算法应用,需求是大量的且竞争是激烈的时候,ASIC就是很好的选择。为了一个简单功能(比如编解码)支付一个ARM的授权是愚蠢的。

如果算法非常经典且底层,但仍然有改进的空间和需要适配的不同场景,信号流的处理(手机语音处理)可以直接使用DSP,而更复杂的输入输出逻辑算法(比如图像SIFT特征处理),就可以交给FPGA来做,性能相对于CPU都可以由30-100倍的提升,且成本和耗能更小。

在复杂算法领域相对于CPU,GPU的众核架构把同样的指令流并行发送到众核上,采用不同的输入数据执行。所以GPU比CPU更适合并行算法,而串行的复杂规则逻辑则更适合CPU处理。更具体的说,如果标量视为零阶张量,矢量视为一阶张量,矩阵视为二阶张量。

CPU对应标量计算,主要是路径规划和决策类算法,常用的传感器融合如卡尔曼滤波算法也多是标量运算。用CPU编写程序时,更适合通过精益化逻辑来提升性能。

GPU则对应矢量或者说向量计算,包括点云,地图,深度学习,核心是矩阵运算。用GPU编写程序时,则更合适利用算法并发处理来提升性能。

相关文章:

芯片详细讲解,从而区分CPU、MPU、DSP、GPU、FPGA、MCU、SOC、ECU

目录 芯片的概念结构 芯片的派系划分 通用芯片(CPU,MPU,GPU,DSP) 定制芯片(FPGA,ASIC) 芯片之上的集成(MCU,SOC,ECU) 软硬件的匹…...

2025年01月09日Github流行趋势

1. 项目名称:khoj 项目地址url:https://github.com/khoj-ai/khoj项目语言:Python历史star数:22750今日star数:1272项目维护者:debanjum, sabaimran, MythicalCow, aam-at, eltociear项目简介:你…...

OpenCV计算机视觉 06 图像轮廓检测(轮廓的查找、绘制、特征、近似及轮廓的最小外接圆外接矩形)

目录 图像轮廓检测 轮廓的查找 轮廓的绘制 轮廓的特征 面积 周长 根据面积显示特定轮廓 轮廓的近似 给定轮廓的最小外接圆、外接矩形 外接圆 外接矩形 图像轮廓检测 轮廓的查找 API函数 image, contours, hierarchy cv2.findContours(img, mode, method) 代入参…...

安装完docker后,如何拉取ubuntu镜像并创建容器?

1. 先docker拉取ubuntu镜像 docker search ubuntu #搜索ubuntu 镜像 docker pull ubuntu:22.04 #拉取ubuntu 镜像 docker images #下载完成后,查看已经下载的镜像 docker run --name ubuntu_container -dit ubuntu:22.04 /bin/bash # docker container -l 2.…...

C++中的表达式

文章目录 算数操作符位操作符bitset对象或整型值的使用将位移操作符用作IO 赋值操作符赋值操作符的右结合性赋值操作具有低优先级 自增和自减操作符条件操作符sizeof操作符优先级new和delete表达式类型转换何时发生隐式转换显示转换旧式强制类型转换 C中的表达式由一个或多个操…...

直流无刷电机控制(FOC):电流模式

目录 概述 1 系统框架结构 1.1 硬件模块介绍 1.2 硬件实物图 1.3 引脚接口定义 2 代码实现 2.1 软件架构 2.2 电流检测函数 3 电流环功能实现 3.1 代码实现 3.2 测试代码实现 4 测试 概述 本文主要介绍基于DengFOC的库函数,实现直流无刷电机控制&#x…...

LabVIEW水轮发电机组振动摆度故障诊断

本文介绍了基于LabVIEW的水轮发电机组振动摆度故障诊断系统的设计与实施过程。系统在通过高效的故障诊断功能,实现水轮发电机组的振动、温度等关键指标的实时监控与智能分析,从而提高电力设备的可靠性和安全性。 ​ 项目背景 随着电力行业对设备稳定性…...

《暗时间》读书笔记

前言 2003年,刘未鹏在杂志上发表了自己的第一篇文章,并开始写博客。最初的博客较短,也较琐碎,并夹杂着一些翻译的文章。后来渐渐开始有了一些自己的心得和看法。在这8年里,作者平均每个月写1篇博客或更少,…...

【SQL】COUNT()函数 用法详解

COUNT()函数 COUNT函数用法:COUNT ( [ALL | DISTINCT] column | expression | *) ALL关键字指示统计所有值,而DISTINCT关键字强制函数仅对不同的值进行操作。 默认情况下,使用ALL选项。条件表达式 COUNT()函数中条件表达式加 OR null。例如…...

Kafka优势剖析-幂等性和事务

目录 1. 幂等性(Idempotence) 1.1 什么是幂等性? 1.2 幂等性的实现 1.2.1 生产者 ID 和序列号 1.2.2 重复消息检测 1.2.3 幂等性的优势 1.3 幂等性的配置 2. 事务支持(Transactions) 2.1 什么是事务支持&…...

内网穿透的应用-Ubuntu本地Docker部署Leantime项目管理工具随时随地在线管理项目

文章目录 前言1.关于Leantime2.本地部署Leantime3.Leantime简单实用4.安装内网穿透5.配置Leantime公网地址6. 配置固定公网地址 前言 本文主要介绍如何在本地Linux系统使用Docker部署Leantime,并结合cpolar内网穿透工具轻松实现随时随地查看浏览器页面,…...

Python 中的错误处理与调试技巧

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…...

使用 NestJS 构建高效且模块化的 Node.js 应用程序,从安装到第一个 API 端点:一步一步指南

一、安装 NestJS 要开始构建一个基于 NestJS 的应用,首先需要安装一系列依赖包。以下是必要的安装命令: npm i --save nestjs/core nestjs/common rxjs reflect-metadata nestjs/platform-express npm install -g ts-node包名介绍nestjs/coreNestJS 框…...

Linux下Qt程序设置system服务开机自启

1、执行 > /home/firefly/.config/lxsession/Lubuntu/autostart2、执行 crontab -e修改 10 * * * * /bin/bash /opt/restart_bluetoothdemo.sh &> /dev/null为 10 * * * * /bin/systemctl restart ble-gw3、执行 vim /etc/systemd/system/ble-gw.service复制下面…...

golang OpcUaClient

实现功能 package mainimport ("fmt""log""opcuaclient/util/plugin/client/opcclient""os""os/signal""syscall" )func main() {OPCUATest()// 监听操作系统信号,阻塞直到接收到信号quit : make(chan…...

福建双色荷花提取颜色

提取指定颜色 HSV双色荷花代码验证 参照《OpenCV图像处理技术》 HSV 要用HSV的色调、饱和度和亮度来提取指定颜色。 双色荷花 农林大学金山校区观音湖 代码 import cv2 import numpy as npimgcv2.imread("./sucai6/hua.jpg") cv2.imshow("SRC",img) h…...

记录一次面试中被问到的问题 (HR面)

文章目录 一、你对公司的了解多少二、为什么对这个岗位感兴趣三、不能说的离职原因四、离职原因高情商回复五、你的核心优势是什么六、你认为你比其他面试候选人的优势是什么七、不要提及情感 一、你对公司的了解多少 准备要点: 在面试前,对公司进行充分…...

解决sublime编译无法输入问题

在使用sublime编译简单的c语言的时候,发现编译过程中,带有scanf的程序,无法正确的输入。 需要提前配置好gcc 和g++ 一、新增配置 新建编译系统文件:C.sublime-build 具体步骤:菜单中选择Tools——Build System——New Build System——保存文件名C.sublime-build ,填写以…...

基于JAVA+SSM的小区物业管理系统

基于JAVASSM的小区物业管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 哈喽兄弟们&a…...

List-顺序表--2

目录 1、ArrayList 2、ArrayList构造方法 3、ArrayList常见方法 4、ArrayList的遍历 5、ArrayList的扩容机制 6、ArrayList的具体使用 6.1、杨辉三角 6.2、简单的洗牌算法 1、ArrayList 在集合框架中,ArrayList 是一个普通的类,实现了 List 接口…...

Rabbitmq 具体怎么做到削峰的,是丢弃部分消费吗,有的实际场景是不允许丢弃

在高并发场景中,RabbitMQ 可以通过几种策略来实现 削峰(缓解瞬时负载激增),而这些策略并不一定需要丢弃消息。在一些业务场景下,丢弃消息显然是不允许的,因此在这种情况下,可以使用以下方法来确…...

Apache JMeter 压力测试使用说明

文章目录 一、 安装步骤步骤一 下载相关的包步骤二 安装 Jmeter步骤三 设置 Jmeter 工具语言类型为中文 二、使用工具2.1 创建测试任务步骤一 创建线程组步骤二 创建 HTTP 请求 2.2 配置 HTTP 默认参数添加 HTTP消息头管理器HTTP请求默认值 2.3 添加 查看结果监听器2.4 查看结果…...

STM32 拓展 RTC案例1:使用闹钟唤醒待机模式 (HAL库)

需求描述 执行完毕正常代码之后,让MCU进入待机模式,设置闹钟,自动让MCU从待机模式中被唤醒。可以用led点亮熄灭显示是否唤醒。 应用场景:比如设计一个野外温度自动采集的设备,规定每小时采集一次温度,就可…...

Perturbed-Attention Guidance(PAG) 笔记

Self-Rectifying Diffusion Sampling with Perturbed-Attention Guidance Github 摘要 近期研究表明,扩散模型能够生成高质量样本,但其质量在很大程度上依赖于采样引导技术,如分类器引导(CG)和无分类器引导&#xff…...

C#语言的数据库编程

C#语言的数据库编程 在现代软件开发中,数据库是不可或缺的一部分。无论是企业级应用还是个人项目,数据的存储与管理都是程序的核心功能之一。C#作为一种强类型、面向对象的编程语言,广泛应用于Windows平台的开发,尤其是在构建与数…...

FPGA技术的深度理解

目录 引言 FPGA的基本原理 结构组成 工作原理 FPGA的设计流程 设计阶段 编程阶段 实现阶段 FPGA的应用领域 FPGA编程技巧和示例代码 编程技巧 示例代码 结论 引言 FPGA(现场可编程门阵列)是一种可编程的集成电路,它允许用户根据…...

JavaScript语言的学习路线

JavaScript语言的学习路线 引言 JavaScript是一门广泛使用的编程语言,最初为网页添加互动效果而设计。随着技术的发展,JavaScript的应用领域已经从网页开发扩展到了移动应用、桌面应用、服务器端开发等多个领域。掌握JavaScript不仅能够帮助你成为一名…...

关于Mac中的shell

1 MacOS中的shell 介绍: 在 macOS 系统中,Shell 是命令行与系统交互的工具,用于执行命令、运行脚本和管理系统。macOS 提供了多种 Shell,主要包括 bash 和 zsh。在 macOS Catalina(10.15)之前&#xff0c…...

设计模式学习笔记——结构型模式

文章目录 适配器模式 Adapter适用场景UML 桥接模式 Bridge适用场景UML 组合模式 Composite装饰模式 Decorator外观模式 Facade享元模式 Flyweight代理模式 Proxy 适配器模式 Adapter 适用场景 希望使用某个类, 但是其接口与其他代码不兼容时, 可以使用…...

MySQL之企业面试题:InnoDB存储引擎组成部分、作用

InnoDB存储引擎主要由以下四个组成部分: 1. Buffer Pool(缓冲池) 原理: 缓冲池是InnoDB存储引擎的核心组件之一,用于缓存表的数据页和索引页,减少对磁盘I/O的访问次数。缓冲池中的数据页在事务提交时会根…...

安装MySQL的五种方法(Linux系统和Windows系统)

一.在Linux系统中安装MySQL 第一种方法:在线YUM仓库 首先打开MySQL官网首页 www.mysql.com 找到【DOWNLOADS】选项,点击 下拉,找到 【MySQL Community(GPL) Downloads】 在社区版下载页面中,【 MySQL Yum Repository 】链接为在线仓库安装…...

使用 C++ 实现神经网络:从基础到高级优化

引言 在现代机器学习中,神经网络已经成为最重要的工具之一。虽然 Python 提供了诸如 TensorFlow、PyTorch 等强大的机器学习库,但如果你想深入理解神经网络的实现原理,或者出于某些性能、资源限制的考虑,使用 C 来实现神经网络会是…...

scala代码打包配置(maven)

目录 mavenpom.xml打包配置项&#xff08;非完整版&#xff0c;仅含打包的内容< build>&#xff09;pom.xml完整示例&#xff08;需要修改参数&#xff09;效果说明 maven 最主要的方式还是maven进行打包&#xff0c;也好进行配置项的管理 以下为pom文件&#xff08;不要…...

[免费]微信小程序(高校就业)招聘系统(Springboot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序(高校就业)招聘系统(Springboot后端Vue管理端)&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序(高校就业)招聘系统(Springboot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项目介绍…...

cursor vip

https://cursor.jeter.eu.org?pf7f4f3fab0af4119bece19ff4a4360c3 可以直接复制命令使用git bash执行即可 命令&#xff1a; bash <(curl -Lk https://gitee.com/kingparks/cursor-vip/releases/download/latest/ic.sh) f7f4f3fab0af4119bece19ff4a4360c3 等待执行完成后…...

web作业

作业一 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>Document</title> </head&g…...

Docker compose 使用 --force-recreate --no-recreate 控制重启容器时的行为【后续】

前情&#xff1a;上一篇实际是让AI工具帮我总结了一下讨论的内容&#xff0c;这里把讨论的过程贴出来&#xff0c;这个讨论是为解决实际问题 前文https://blog.csdn.net/wgdzg/article/details/145039446 问题说明&#xff1a; 我使用 docker compose 管理我的容器&#xff0…...

Virgo:增强慢思考推理能力的多模态大语言模型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

城市生命线安全综合监管平台

【落地产品&#xff0c;有需要可留言联系&#xff0c;支持项目合作或源码合作】 一、建设背景 以关于城市安全的重要论述为建设纲要&#xff0c;聚焦城市安全重点领域&#xff0c;围绕燃气爆炸、城市内涝、地下管线交互风险、第三方施工破坏、供水爆管、桥梁坍塌、道路塌陷七…...

Linux:进程概念、进程状态、进程切换、进程调度、命令行参数、环境变量,进程地址空间

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《Linux&#xff1a;进程》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 如果本篇文章对你有帮助&#xff0c;还请各位点点赞&#xff01;&#xff01;…...

Python教程丨Python环境搭建 (含IDE安装)——保姆级教程!

工欲善其事&#xff0c;必先利其器。 学习Python的第一步不要再加收藏夹了&#xff01;提高执行力&#xff0c;先给自己装好Python。 1. Python 下载 1.1. 下载安装包 既然要下载Python&#xff0c;我们直接进入python官网下载即可 Python 官网&#xff1a;Welcome to Pyt…...

【ASP.NET学习】ASP.NET MVC基本编程

文章目录 ASP.NET MVCMVC 编程模式ASP.NET MVC - Internet 应用程序创建MVC web应用程序应用程序信息应用程序文件配置文件 用新建的ASP.NET MVC程序做一个简单计算器1. **修改视图文件**2. **修改控制器文件** 用新建的ASP.NET MVC程序做一个复杂计算器1.创建模型&#xff08;…...

在线工具箱源码优化版

在线工具箱 前言效果图部分源码源码下载部署教程下期更新 前言 来自缤纷彩虹天地优化后的我爱工具网源码&#xff0c;百度基本全站收录&#xff0c;更能基本都比较全&#xff0c;个人使用或是建站都不错&#xff0c;挑过很多工具箱&#xff0c;这个比较简洁&#xff0c;非常实…...

网站自动签到

我研究生生涯面临两个问题&#xff0c;一是写毕业论文&#xff0c;二是找工作&#xff0c;这两者又有很大的冲突。怎么解决这两个冲突呢&#xff1f;把python学好是一个路子&#xff0c;因此从今天我要开一个专栏就是学python 其实我的本意不是网站签到&#xff0c;我喜欢在起点…...

python学opencv|读取图像(二十七)使用time()绘制弹球动画

【1】引言 前序已经学习了pythonopencv画线段、圆形、矩形、多边形和文字的相关操作&#xff0c;具体文章链接包括且不限于&#xff1a; python学opencv|读取图像&#xff08;十八&#xff09;使用cv2.line创造线段_cv2. 画线段-CSDN博客 python学opencv|读取图像&#xff0…...

物联网智能项目简述

物联网智能项目 一、物联网智能项目的定义 物联网智能项目是指基于物联网技术&#xff08;IoT&#xff09;&#xff0c;结合人工智能&#xff08;AI&#xff09;、大数据、云计算等先进技术&#xff0c;开发出的具有智能化、自动化、远程监控等功能的项目。物联网&#xff08…...

el-table 合并单元格

参考文章&#xff1a;vue3.0 el-table 动态合并单元格 - flyComeOn - 博客园 <el-table :data"tableData" border empty-text"暂无数据" :header-cell-style"{ background: #f5f7fa }" class"parent-table" :span-method"obj…...

SQL语言的函数实现

SQL语言的函数实现 引言 随着大数据时代的到来&#xff0c;数据的存储和管理变得越来越复杂。SQL&#xff08;结构化查询语言&#xff09;作为关系数据库的标准语言&#xff0c;其重要性不言而喻。在SQL语言中&#xff0c;函数是一个重要的组成部分&#xff0c;可以有效地帮助…...

细说STM32F407单片机以DMA方式读写外部SRAM的方法

目录 一、工程配置 1、时钟、DEBUG、GPIO、CodeGenerator 2、USART3 3、NVIC 4、 FSMC 5、DMA 2 &#xff08;1&#xff09;创建MemToMem类型DMA流 &#xff08;2&#xff09;开启DMA流的中断 二、软件设计 1、KEYLED 2、fsmc.h、fsmc.c、dma.h、dma.c 3、main.h…...

Vue 3前端与Python(Django)后端接口简单示例

项目 后端&#xff08;Django&#xff09;前端&#xff08;Vue 3&#xff09; 后端&#xff08;Django&#xff09; 创建Django项目和应用&#xff1a; 确保你已经安装了Django。如果没有安装&#xff0c;可以使用以下命令安装&#xff1a; pip install django创建一个新的Dja…...