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

大模型推理--从零搭建大模型推理服务器:硬件选购、Ubuntu双系统安装与环境配置

自从大模型火了之后就一直想自己组装一台机器去深入研究一下大模型,奈何囊中羞涩,迟迟也没有行动。在下了很大的勇气之后,终于花了接近4万块钱组装了一台台式机,下面给大家详细介绍一下我的装机过程。

1.硬件配置

研究了一周,最终选择了如下配置:
在这里插入图片描述
我是在京东之家线下组装的,花了38600,装机没收钱。不过小哥对装Ubuntu不太懂,当天只给我安装了windows 11,Ubuntu是回家之后我自己装的。弄完之后跑了几天感觉这个配置还不错,对得起这个价格,可以分享给大家。
在这里插入图片描述
CPU选择了A卡的9950x3D,这个在CPU排名中还是非常靠前的,截至2025年5月4日性能仅次于AMD的线程撕裂者系列。它有16核32线程,但是用cat /proc/cpuinfo命令会直接显示32个核心,所以可以简单地认为它有32个逻辑核。显卡我选择了48G的4090,没有选择最新的32G 5090,主要原因是针对大模型推理来说显存是最大的瓶颈,选择显卡肯定是显存越大越好。此外,当下5090的溢价较为严重,没必要去吃亏买性能,而且搞不好买个5090还会出现烧卡的问题。内存选择了一个非主流的品牌金百达,但是单张内存条的容量可以到48G,两张内存条就可以达到96G,这个对不少大模型任务来说足够了。高通有些模型量化的任务需要80G以上的内存,所以64G内存还是少了点,建议大家配置内存时尽量都96G往上。
在这里插入图片描述
介绍完三大件之后,其他的硬件中最关键的就是主板。我没有选择最高配置的主板,算是选择了一个中等配置的。X870-PLUS可以安装两张显卡,四张内存条,四块SSD硬盘,所以给我留了一半的余量以作将来扩展。电源用的是1000w的,针对单显卡是够用了,如果升级成双4090就不够了,考虑到一会半会也没钱去升级双显卡,所以暂时就用1000w电源。硬盘选择了三星PCIe 4.0协议的2T固态硬盘,拷贝速度不是最快但是也挺快的,不过用了几天发现2T还是太少了,Ubuntu下download大模型以及装各种软件硬盘用得超快,我感觉最少4T用着才会有安全感。
虽然用了一段时间感觉还不错,但是我觉得当前配置尚未达到理想状态,以下是我实际体验感觉还有改进空间的地方:

  1. 选择的散热液晶屏稍微有点大,安装上之后就会轻微挤压内存条一号槽,所以不知道安上四张内存条之后会不会有问题,建议水冷散热选择屏幕较小一点的;
  2. 选择的主板虽然可以装双显卡,但是在单显卡情况下就出现了显卡的风扇与机箱下部的风扇对吹的情况,目前还没有出现显卡温度过高的问题,但总感觉风扇对吹是很不好的搭配。要是搭配双显卡,风扇对吹就会更严重,可能会对显卡散热带来不利影响。所以大家在选择主板和机箱的时候看看能否避免风扇对吹这个问题;
  3. 电源1000w应该无法支持双4090显卡。如果要安装双4090,电源最好选择1600w的;
  4. 华硕这个X870-PLUS主板默认没有启用内存超频,所以内存的速度只有4800MT/s,这个与DDR5内存的宣传相比还是弱了一些,不知道超频之后内存是否会出问题,有待后续进一步验证;
  5. 也不知道是什么原因,windows 11下蓝牙无法使用,也不知道是哪个地方出了问题;
  6. 安钛克Flux Pro这个机箱不能算是静音机箱,机箱本身有6个风扇,加上水冷的3个风扇,运行起来还是能比较明显地感受到噪音,如果对声音敏感的人建议上更高级的机箱。

2.Ubuntu双系统安装

下面开始介绍操作系统的安装,windows 11是京东小哥帮忙装的,Ubuntu是我自己装的,所以重点关注Ubuntu的安装。不过在安装windows 11的时候也遇到了一个配置问题,花了俩小时才搞明白,当装系统时提示下面的问题时,要输入Y,不要输入N,否则就无法安装windows系统。
在这里插入图片描述
安装完Windows之后还有一步建议的操作,就是要给Ubuntu系统划分一个独立的盘。通过Win+X打开磁盘管理,然后将一个windows下不使用的盘符右键删除卷留给Ubuntu备用。当然也可以不执行这一步删除操作,在安装Ubuntu时再删除也行。具体要留多少空间给Ubuntu系统看你的需求,我一开始留了500G,结果用了一天就明显感觉不够用,被迫无奈又重装了一次Ubuntu系统,建议给Ubuntu留至少1T的空间。

2.1 制作Ubuntu镜像

之前装双系统都是用同事的U盘,这次我决定自己来整一个。起初以为制作一个镜像是很难的事情,用DeepSeek一问才知道这个事简单到不能再简单了。首先从官网下载最新版的Ubuntu 22.04.5。这里切记要用22.04.5版本,不要用22.04.3或者22.04.4,否则可能会导致安装完成之后有线和无线均无法上网的问题,后续压根无法开展任何工作。我没有考虑24.04,因为这个版本的系统问题很多。
有了镜像文件之后,还需要一个至少8G空间的U盘,我们需要将U盘做成可以启动的引导盘。方法很简单,按照以下流程来即可:

  1. 下载并运行Rufus[from https://rufus.ie/zh/](便携版无需安装);
  2. 插入U盘,Rufus会自动识别(确保选择正确的设备);
  3. 点击选择按钮,找到下载的Ubuntu 22.04.5 ISO文件;
  4. 分区类型:
    旧电脑:MBR + BIOS(或UEFI-CSM)
    新电脑:GPT + UEFI(非CSM,选择这个就行)
  5. 文件系统:FAT32(默认);
  6. 点击开始 → 确认警告(会格式化U盘)→ 等待完成。

2.2 安装Ubuntu系统

做好镜像之后开始进入真正的安装环节。针对X870-PLUS主板,在启动电脑的时候通过按F2或者Del进行BIOS界面,然后选择从U盘启动进入Ubuntu安装界面。绝大多数步骤都是选择下一步即可,但是有一步需要特别注意,就是要选择将Ubuntu安装在哪个盘,以及如何划分分区的问题。在安装到下图时,要选择第三个选项something else,
在这里插入图片描述
这样就可以允许我们将Ubuntu安装到我们指定的位置,并进行合理的空间划分。点击Install Now之后进入下图,下图应该是安装Ubuntu时最复杂的步骤了。
在这里插入图片描述
需要我们将一块windows下删除的盘符,现在显示为free space的分区进行更细致的划分(如果没有free space的分区那就是我们没有在Windows下删除某个盘符,需要我们选择要安装的分区然后点击减号进行删除)。后续的分区我参考了豆包的建议,划分成了4部分:

  • 创建EFI系统分区:若磁盘为GPT分区表格式,需创建EFI系统分区。右键点击未分配空间,选择“新建分区” ,设置分区大小200 - 500MB左右 ,“用于”选择“EFI System Partition” 。我设置了500M,后续的boot loader也选择该分区;
  • 创建根分区(/):再次右键点击剩余未分配空间,选“新建分区” ,设置较大空间,“用于”选“ext4日志文件系统” ,“挂载点”选“/” 。我选择了500G。这部分空间会被安装的软件以及docker镜像等系统软件占用,建议大一点;
  • 创建交换分区(可选):若电脑内存较小(如小于8GB),可创建交换分区。右键未分配空间选“新建分区” ,大小一般设为内存1 - 2倍 ,“用于”选“swap area” 。我选择了64G。这块可能影响不大,自行决定;
  • 创建/home分区(可选):想单独管理个人数据,可再分空间创建/home分区。右键未分配空间选“新建分区” ,“用于”选“ext4日志文件系统” ,“挂载点”选“/home” 。我给该分区也留了500G空间,这个分区用来放自己的资源,比如大模型权重,非root下pip安装的软件等。Home分区是平时工作的分区,但是我们后续可以通过添加新的硬盘来增大空间,所以预留500G暂时够用。但是根分区我也不知道咋通过增加硬盘的方式来扩大空间,所以最好一开始就给根分区留足空间。

完成分区划分之后,点击continue等待安装完成。

3.Ubuntu环境配置

完成安装之后,首次启动会出现下述界面:
在这里插入图片描述
其中,Windows Boot Manager就是windows系统。此时,如果直接按Enter进行Ubuntu系统有可能会卡死,如果卡死就进入Advanced options for Ubuntu,然后通过recovery方式点击resume进入了Ubuntu系统。第二次的时候就可以正常进入系统了。进入系统之后,我们就需要安装一系列的软件完成Ubuntu环境的配置。

3.1 基础软件的安装

执行下述命令安装一些基础软件:

sudo apt update
sudo apt install vim
sudo apt install pip
sudo apt install cmake
sudo apt install htop
sudo apt install curl
sudo apt install libcurl4-openssl-dev
sudo apt install dos2unix

上面这些软件可以按需安装,主要是先安装vim编辑软件以及pip python包安装软件。

3.2 docker环境配置

执行下述命令配置docker环境:

sudo apt install docker.iodistribution=$(. /etc/os-release;echo $ID$VERSION_ID) \&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update   
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker     

执行完上述命令之后就可以通过docker pull来抓取镜像。

3.3 cuda环境配置

首先从nvidia官网下载最新的cuda驱动:cuda_12.8.1_570.124.06_linux.run。正常情况下我们可以通过sh运行上面的脚本安装驱动和cuda,但是可能会遇到很多问题,现在有一种更简单的方式。我们可以通过Ubuntu software updates中的Additional Drivers来安装最新版的驱动,如下图所示。
在这里插入图片描述
安装完驱动之后,我们再通过sh cuda_12.8.1_570.124.06_linux.run来安装cuda。在安装过程中我们把安装驱动的选项取消掉即可。完成之后再通过如下命令配置PATH和LD_LIBRARY_PATH:

vim ~/.bashrc
export PATH=$PATH:/usr/local/cuda-12.8/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.8/lib64/

接着我们再从nvidia官网下载最新版的cudnn cudnn-local-repo-ubuntu2204-9.8.0_1.0-1_amd64.deb,按照下述命令完成cudnn的安装:

sudo dpkg -i cudnn-local-repo-ubuntu2204-9.8.0_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2204-9.8.0/cudnn-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cudnn

执行完上述所有步骤,我们基本完成了整个环境的搭建,后续就可以正式开始搞大模型推理了。

3.4 大模型推理环境配置

我们可以通过pip安装modelscope命令,然后利用modelscope download --model Qwen/Qwen3-8B下载最新的Qwen3大模型等。有了大模型之后,我们还可以选择vllm或者sglang等推理框架进行部署。vllm可以通过pip install vllm来安装。如此就完成了大模型推理服务器的配置~

相关文章:

大模型推理--从零搭建大模型推理服务器:硬件选购、Ubuntu双系统安装与环境配置

自从大模型火了之后就一直想自己组装一台机器去深入研究一下大模型,奈何囊中羞涩,迟迟也没有行动。在下了很大的勇气之后,终于花了接近4万块钱组装了一台台式机,下面给大家详细介绍一下我的装机过程。 1.硬件配置 研究了一周&am…...

如何使用QWidgets设计一个类似于Web Toast的控件?

如何使用QWidgets设计一个类似于Web Toast的控件? 前言 ​ 笔者这段时间沉迷于给我的下位机I.MX6ULL做桌面,这里抽空更新一下QT的东西。这篇文章是跟随CCMoveWidget一样的文章,尝试分享自己如何书写这份代码的思考的过程,和笔者…...

博图V20编译报错:备不受支持,无法编译。请更改为受支持的设备。

使用高版本博图打开低版本博图的工程文件时,hmi编译报错不通过,报错提示:备不受支持,无法编译。请更改为受支持的设备。 原因:当前版本的博图软件没有或不支持该组态设备的固件版本。 解决办法:1、安装报错…...

凸性(Convexity)

凸性(Convexity)是一个跨学科的重要概念,广泛应用于数学、优化理论、金融等领域。其核心含义是描述某种结构(如函数、集合)在特定条件下的“无凹陷”性质。 1. 数学中的凸性 1.1 凸函数与凹函数 在数学分析中&#…...

Vuex使用指南:状态管理

一、什么是状态管理?为什么需要 Vuex? 1. 状态管理的基本概念 在 Vue 应用中,状态指的是应用中的数据。例如: 用户登录状态购物车中的商品文章列表的分页信息 状态管理就是对这些数据的创建、读取、更新和删除进行有效管理。 …...

kotlin中枚举带参数和不带参数的区别

一 ✅ 代码对比总结 第一段(带参数 工具方法) enum class SeatPosition(val position: Int) {DRIVER_LEFT(0),DRIVER_RIGHT(1),SECOND_LEFT(2),SECOND_RIGHT(3);companion object {fun fromPosition(position: Int): SeatPosition? {return SeatPosi…...

【Python】Python好玩的第三方库之二维码生成,操作xlsx文件,以及音频控制器

前言 🌟🌟本期讲解关于python的三种第三方库的使用介绍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 🎆那么…...

VTK 交互类介绍

基本概念 交互器(Interactor): 处理用户输入事件的基础类 交互样式(InteractorStyle): 定义具体的交互行为 Widgets: 可交互的UI组件,如滑块、按钮等 Picker: 用于选择场景中的对象 常用交互类 类名功能描述vtkRenderWindowInteractor渲染窗口交互器vtkInteractorStyle交互样式…...

在Window10 和 Ubuntu 24.04LTS 上 Ollama 在线或离线安装部署

Ollama 是一个开源的大型语言模型(LLM)服务框架,旨在通过轻量化、跨平台的设计,简化大模型在本地环境中的部署与应用。其基于 Go 语言开发,通过 Docker 容器化技术封装模型运行环境,提供类似命令行工具的交…...

语音合成之十一 提升TTS语音合成效果:低质量数据清洗、增强与数据扩增

低质量数据清洗、增强与数据扩增 1. 引言:TTS的基石——数据质量2. 基础:TTS数据准备工作流2.1 规划:定义蓝图2.2 执行:从原始数据到训练就绪格式2.3 最佳实践与可复现性 3. 攻克缺陷:低质量语音数据的清洗与增强3.2 手…...

RGB三原色

本文来源 : 腾讯元宝 ​​RGB三原色(红绿蓝)详解​​ RGB(Red, Green, Blue)是光学的三原色,通过不同比例的混合可以产生人眼可见的绝大多数颜色。它是现代显示技术(如屏幕、投影仪&#xff09…...

BUUCTF 大流量分析(一) 1

BUUCTF:https://buuoj.cn/challenges 文章目录 题目描述:密文:解题思路:flag: 相关阅读 CTF Wiki BUUCTF:大流量分析(一) 题目描述: 某黑客对A公司发动了攻击,以下是一段时间内我们…...

虚幻引擎5-Unreal Engine笔记之显卡环境设置使开发流畅

虚幻引擎5-Unreal Engine笔记之显卡环境设置使开发流畅 code review! 文章目录 虚幻引擎5-Unreal Engine笔记之显卡环境设置使开发流畅1.电源管理2.显卡优先设置3.拯救者支持FnQ性能模式切换,建议开发前切至“野兽模式”或高性能模式。4.NVIDIA 驱动设置5.VS2022中…...

suna工具调用可视化界面实现原理分析(一)

这是一个基于React构建的工具调用侧边面板组件,主要用于展示和管理自动化工具调用流程。以下是代码功能解析及关键组件分析: 一、核心功能模块 多工具视图切换系统 • 动态视图加载:通过getToolView函数根据工具名称(如execute-c…...

【将你的IDAPython插件迁移到IDA 9.x:核心API变更与升级指南】

文章目录 将你的 IDAPython 插件迁移到 IDA 9.x:核心 API 变更与升级指南为什么 API 会变化?关键不兼容性一:数据库信息访问 (inf_structure)关键不兼容性二:窗口/视图类型判断 (BWN_* 和 form_type)其他可能的 API 变更迁移策略建…...

《Python星球日记》第31天:Django 框架入门

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏:《Python星球日记》,限时特价订阅中ing 目录 一、Django…...

读《人生道路的选择》有感

读完戴维坎贝尔的《人生道路的选择》,深有感触,虽然只有短短的108也,但作者强调了在复杂的生活环境之中“选择”的重要性。这也是我想要探讨的话题,选择到底会对我们人生产生怎样的影响。 在我们人生当中,确实有许多的…...

opencv+opencv_contrib+cuda和VS2022编译

本文介绍使用OpenCV和OpenCV_Contrib源码及Cuda进行编译的过程,编译过程中会用到OpenCV、OpenCV_Contrib、Toolkit、Cmake、VS2022等工具,最终编译OpenCV的Cuda版本。 一、OpenCV下载地址 OpenCV官网下载地址:https://opencv.org/releases/#&#xff0…...

STC单片机与淘晶驰串口屏通讯例程之01【新建HDMI工程】

大家好,我是『芯知识学堂』的SingleYork,今天笔者给大家一起学习这款“SYK-0806-A2S1”控制板与淘晶驰串口屏通讯的例程,本例使用的是淘晶驰的4.3寸电阻触摸屏TJC4827T143_011R_I_P20,分辨率为480272,详细参数大家可以查看这个屏的手册。 先来看下本例程整体的效果: 那么…...

PE文件结构(导出表)

导出表 什么是导出表? 导出表是PE文件中记录动态链接库(DLL)对外提供的函数或数据的列表,包含函数名称、序号和内存地址等信息,供其他程序调用 我们写一个dll来查看一下导出函数 int exportFunc1(int a, int b) {ret…...

网络安全自动化:精准把握自动化边界,筑牢企业安全防

在当今数字化时代,网络攻击的威胁日益严峻,企业网络安全的重要性不言而喻。随着海量资产与复杂架构的出现,网络安全自动化成为了众多企业关注的焦点。网络安全维护看似简单的修补系统、删除旧账户、更新软件,在大型企业中却极易变…...

实战设计模式之中介者模式

概述 中介者模式是一种强大且灵活的设计模式,适用于需要优化对象间通信的场景。中介者模式通过引入一个中介对象,来封装一系列对象之间的交互。在没有中介者的情况下,这些对象之间可能会直接相互引用,导致系统中的类紧密耦合&…...

价格识别策略思路

该策略是一种基于价格形态和市场条件的交易算法,旨在通过识别特定的价格模式来生成买入和卖出信号。 价格形态识别 策略的核心在于识别价格的高点和低点形态。通过比较当前周期及其前几个周期的最高价和最低价, 策略定义了一系列条件来判断价格是否形成了…...

Kotlin带接收者的Lambda介绍和应用(封装DialogFragment)

先来看一个具体应用:假设我们有一个App,App中有一个退出应用的按钮,点击该按钮后并不是立即退出,而是先弹出一个对话框,询问用户是否确定要退出,用户点了确定再退出,点取消则不退出,…...

【NLP】32. Transformers (HuggingFace Pipelines 实战)

🤖 Transformers (HuggingFace Pipelines 实战) 本教程基于 Hugging Face 的 transformers 库,展示如何使用预训练模型完成以下任务: 情感分析(Sentiment Analysis)文本生成(Text …...

[ 设计模式 ] | 单例模式

单例模式是什么?哪两种模式? 单例模式就是一个类型的对象,只有一个,比如说搜索引擎中的索引部分,360安全卫士的桌面悬浮球。 饿汉模式和懒汉模式:饿汉模式是线程安全的,懒汉模式不是线程安全的…...

用网页显示工控仪表

一.起因 现在工控也越来越多的使用web页面来显示电压,电流,温度,转速等物理量.本例使用js控制网页显示速度仪表. 二.代码 <html> <head><script type"text/javascript">var ctx;var px0;var movePoint{x0:0,x1:0};function init(){drawFace();m…...

Spring项目改造Solon版,使用体验,对比

概述 对于Solon有些人可能并不了解&#xff0c;在官方概述中&#xff0c;称其是新一代Java企业级应用开发框架&#xff0c;从零开始构建&#xff0c;有自主的标准规范与开放生态。近16万行代码。 并有更快、更小、更简单的特点 什么样的Java项目用Solon好&#xff1f; 按正常…...

2.CFD 计算过程概述:Fluent在散热计算中的优势

1.主流散热软件 2.电子产品热设计的基本要求 3.失效率与温度之间的关系 4.电子产品热设计的基本要求 5.电子产品必须要做散热设计 6.主动散热与被动散热 7.高效山热方案 8.热交换模型 9.Fluent中传热模型...

【Java ee初阶】多线程(6)

一、阻塞队列 队列的原则&#xff1a;“先进先出”&#xff0c;队列分为普通队列&#xff0c;优先级队列等等。在数据结构中&#xff0c;堆是特殊的完全二叉树&#xff0c;一定不要把堆和二叉搜索树混淆。 阻塞队列是一种特殊的队列&#xff0c;也遵循“先进先出”的原则。 …...

Unity:Surface Effector 2D(表面效应器 2D)

目录 什么是表面效应器 2D&#xff1f; &#x1f3af; 它是做什么的&#xff1f; &#x1f9ea; 从第一性原理解释它是怎么工作的 &#x1f4e6; 重要参数解释 为什么不直接用 Rigidbody&#xff08;刚体&#xff09;来控制运动 &#xff1f; 所以什么时候该用哪个&#…...

Spring 框架的底层原理

Spring 框架的底层原理主要包括以下几个方面&#xff1a; 核心容器&#xff08;IoC 容器&#xff09; IoC&#xff08;控制反转&#xff09;原理 &#xff1a; 依赖注入&#xff08;DI&#xff09; &#xff1a;这是 IoC 的实现方式之一。在传统的程序开发中&#xff0c;程序组…...

【Unity】AssetBundle热更新

1.新建两个预制体&#xff1a; Cube1&#xff1a;GameObject Material1&#xff1a;Material Cube1使用了Material1材质 之后设置打包配置 Cube1的打包配置为custom.ab Material1的打包配置为mat.ab 2.在Asset文件夹下创建Editor文件夹&#xff0c;并在Editor下创建BuildBundle…...

【算法笔记】动态规划基础(二):背包dp

目录 01背包例题状态表示状态计算初始化AC代码 完全背包例题状态表示状态计算初始化TLE代码 多重背包例题状态表示状态计算初始化AC代码 分组背包例题状态表示状态计算初始化AC代码 二维费用背包例题状态表示状态计算初始化AC代码 混合背包问题例题状态表示状态计算初始化TLE代…...

IP属地是我的定位吗?——解析两者区别

在互联网时代&#xff0c;我们经常看到社交媒体、论坛或APP上显示用户的“IP属地”&#xff0c;许多人会疑惑&#xff1a;‌IP属地是不是我的精确定位&#xff1f;它会不会暴露我的隐私&#xff1f;‌ 本文将详细解析IP属地和定位的区别&#xff0c;并解答常见的相关问题&#…...

力扣每日一题1128等价多米诺骨牌对的数量

1128. 等价多米诺骨牌对的数量 题目&#xff1a; 给你一组多米诺骨牌 dominoes 。 形式上&#xff0c;dominoes[i] [a, b] 与 dominoes[j] [c, d] 等价 当且仅当 (a c 且 b d) 或者 (a d 且 b c) 。即一张骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌。 在 0 &l…...

SpringBoot集成CXF框架,实现WebService

SpringBoot官网地址&#xff1a;https://spring.io/projects/spring-ws 1、WebService服务端搭建 Maven依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.17&…...

android-ndk开发(2): macOS 安装 ndk

android-ndk开发(2): macOS 安装 ndk 2025/05/05 1. 概要 对于 android-ndk 在 r23 之前的版本&#xff0c;官方提供了 .zip 文件&#xff0c; 解压即安装。 对于 android-ndk 在 r23 以及之后的版本&#xff0c; 官方只提供了 .dmg 文件&#xff0c; 不能简单的解压完成安…...

科创大赛——知识点复习【c++】——第一篇

目录 输入 一、cin 二、scanf 三、gets 四、getchar 五、fgets 输出 一、cout 二、printf 基本数据类型 一&#xff0c;数据类型有哪些&#xff1f; 二&#xff0c;整型&#xff08;Integer Types&#xff09; 1&#xff0c;修饰符 2&#xff0c;整型数据的数据范…...

硬件工程师面试常见问题(14)

第六十六问&#xff1a;运放--输入偏置电流和输入失调电流 输入偏置电流lb&#xff1a;是由于运放两个输入极都有漏电流的存在。实际的运放,会有电流流入运放的输入端的。那么输入偏置电流就定义这两个电流的平均值。 输入失调电流 Ios&#xff1a;定义为两个差分输入端偏置电…...

Flink流水线任务在线演示

Flink流水线在线演示 1. 登录系统 访问系统登录页面&#xff0c;输入账号密码完成身份验证。 2. 创建任务 入口&#xff1a;通过顶部菜单栏选择 任务开发&#xff0c;或通过快捷入口 快速创建任务。 任务类型&#xff1a;选择 FlinkPipeline。 3. 配置任务 进入配置界面…...

C++笔记之接口`Interface`

C++笔记之接口Interface code review! 一个简洁简短的 C++ 接口实现示例: #include <iostream>// 1. 定义接口(抽象类) class Shape {public:...

css使用aspect-ratio制作4:3和9:16和1:1等等比例布局

文章目录 1. 前言2. 用法2.1 基本语法2.2. 与max-width、max-height等属性结合使用2.3. 动态计算比例 3. 应用场景4. 兼容性和替代方案5. 总结 1. 前言 在网页制作过程中&#xff0c;有时候我们只知道宽度&#xff0c;或者只知道高度&#xff0c;这时候需要制作一个4:3和9:16这…...

深入探索 Apache Spark:从初识到集群运行原理

深入探索 Apache Spark&#xff1a;从初识到集群运行原理 在当今大数据时代&#xff0c;数据如同奔涌的河流&#xff0c;蕴藏着巨大的价值。如何高效地处理和分析这些海量数据&#xff0c;成为各行各业关注的焦点。Apache Spark 正是为此而生的强大引擎&#xff0c;它以其卓越…...

0903Redux改造项目_用户信息_状态管理-react-仿低代码平台项目

文章目录 1 Redux管理用户信息1.1 定义store和reducer1.2 使用useSeletor 2 自定义Hook统一加载用户信息存储Redux3 根据用户登录状态动态跳转页面结语 1 Redux管理用户信息 1.1 定义store和reducer src/store/userReducer.ts代码如下所示&#xff1a; import { createSlice…...

PyTorch_构建线性回归

使用 PyTorch 的 API 来手动构建一个线性回归的假设函数&#xff0c;数据加载器&#xff0c;损失函数&#xff0c;优化方法&#xff0c;绘制训练过程中的损失变化。 数据构建 import torch from sklearn.datasets import make_regression import matplotlib.pyplot as plt i…...

领略算法真谛: 多源bfs

嘿&#xff0c;各位技术潮人&#xff01;好久不见甚是想念。生活就像一场奇妙冒险&#xff0c;而编程就是那把超酷的万能钥匙。此刻&#xff0c;阳光洒在键盘上&#xff0c;灵感在指尖跳跃&#xff0c;让我们抛开一切束缚&#xff0c;给平淡日子加点料&#xff0c;注入满满的pa…...

Linux的web服务器的部署及优化

实验环境的配置 我们依然是要配置本地软件仓库&#xff0c;之前已有详细介绍&#xff0c;然后再次基础上还有如下操作&#xff0c;首先是进入到以下文件进行编辑 编辑内容为下&#xff0c;并且注意自身的网关有没有写错 然后给予权限 再进行下列操作后&#xff0c;就配置完成了…...

ASP.NET Core 请求限速的ActionFilter

文章目录 前言一、实现步骤1&#xff09;创建自定义Action Filter示例1&#xff1a;示例2&#xff1a; 2&#xff09;注册服务3&#xff09;使用 二、实现说明总结 前言 以下是一个基于内存缓存实现的自定义限流Action Filter。 一、实现步骤 1&#xff09;创建自定义Action…...

本地化语音转换工具推荐与使用

软件介绍 Buzz是一款基于OpenAI Whisper技术开发的开源语音转文字工具&#xff0c;支持离线运行和实时语音转换&#xff0c;能够高效完成会议记录、音频转文字等任务。 安装注意事项 在使用Buzz之前需要注意软件的安装设置&#xff0c;由于程序自带较大的模型文件&…...