【Linux】--- 基础开发工具之yum/apt、vim、gcc/g++的使用

 Welcome to 9ilk's Code World

       

(๑•́ ₃ •̀๑) 个人主页:       9ilk

(๑•́ ₃ •̀๑) 文章专栏:    Linux网络编程     


本篇博客我们来认识一下Linux中的一些基础开发工具 --- yum,vim,gcc/g++。


🏠 yum

🎸 什么是yum

当用户想下载软件或工具时,都需要到特定位置进行下载,比如你在手机上下载app,需要到对应的应用商城下载。类似的,在Linux系统下也有下载的需求,通常来说下载方式主要有以下几种:

1. 源代码安装:下载程序的源码,进行编译得到可执行程序之后使用,非常不方便。

2. rpm包安装:将源码提前在各种不同环境下编译好,形成一种压缩包叫rpm包,直接下载可执行程序就能安装好,实际上就是把可执行程序拷贝到指定路径下。但是主要可能会存在软件之间依赖问题,比如还需要你安装其他软件,额外的库之类的。

3. yum/apt安装:一站式安装。

Q:如何理解yum?

  • 为了方便有的人就把常用的软件提前在各种环境下编译后形成软件包,之后上传到服务端上,通过包管理器可以很方便的获取到这个提前编译好的软件包进行安装。软件包和软件管理器,就好比“App"和”应用商店“的关系!
  • yum是Linux下非常常用的一种软件包管理器,它相当于一个软件管家帮我们管理软件。yum主要用在Fedora,RedHat,Centos等发行版上,而Ubuntu下使用的是apt,apt同样提供了⾃动解决依赖关系、下载和安装软件包的功能。

注:其中服务器端充当一个审核员的作用,保证用户下载到的都是绿色健康的软件。

🎸 Linux软件生态

  • Linux下载软件的过程

  • 操作系统的好坏评估 --- ⽣态问题

对于一款操作系统,我们不仅要看到操作系统本身,还要看到特定OS背后的生态。

  • 为什么会有⼈免费特定社区提供软件,还发布?还提供云服务器让你下载?

注:随着软件越做越大,这样做就有越多开发者,越能暴露更多问题,越能修正问题,有更多开发者维护文档,这对提升项目质量是有益的。

  • 软件包依赖的问题

  • 国内镜像源

🎸 yum/apt 操作

1. 查看软件包

通过该命令可以罗列出当前⼀共有哪些软件包,由于包的数目可能非常之多,这里我们需要使用grep命令进行筛选 :

---Centos
yum list | grep lrzsz

--Ubuntu
apt search lrzsz
apt show lrzsz

2. 安装软件

# Centos
$ sudo yum install -y lrzsz

# Ubuntu
$ sudo apt install -y lrzsz

注:使用yum/apt安装软件需要root权限。

  • 安装软件时由于需要向系统⽬录中写⼊内容,⼀般需要sudo或者切到root账⼾下才能完成
  • yum/apt安装软件只能⼀个装完了再装另⼀个.正在yum/apt安装⼀个软件的过程中,如果再尝试⽤yum/apt安装另外⼀个软件,yum/apt会报错。

3. 卸载软件

# Centos
sudo yum remove [-y] lrzsz

# Ubuntu
sudo apt remove [-y] lrzsz
 
  • 带上-y选项是不提示直接卸载

4. 注意事项

  • 关于yum/apt的所有操作必须保证主机(虚拟机)网络畅通!!!可以通过ping指令验证

5. rzsz工具

(1)安装

//Centos
sudo yum install [-y] lrzsz

//Ubuntu
sudo apt install lrzsz

(2)使用命令介绍

sz 文件名:将Linux中文件下载到Windows中。

rz : 将本地文件上传到Linux中。

🎸 yum/apt源配置

Q : yum/apt既然相当于是一个软件管家,那它是怎么知道到哪台服务器上下载数据的呢?

答:其实yum/apt配置文件中说明了其他软件的下载安装路径!

  • Centos : yum

yum会根据/etc/yum.repos.d/该路径下面的配置文件,来构成自己的下载链接,(根据OS版本,根据你要下载的软件),yum会帮住我们下载;国外链接一般比较卡,我们可以使用国内各大高校提供的镜像yum源,所以需要配置。那么如何配置?本质就是更改文件,或者更改文件内容,把软件源里的地址链接,从国外的地址链接更新成国内的。

//1.备份
cp -r xxxx
//2.获取yum源 把远端的链接上的配置文件下载下来改名为CentOS-Base.repo
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo xxxx
//3.清理缓存,生成缓存,升级更新
sudo yum clear all
sudo yum makecache
sudo yum -y update
  • Ubuntu : apt
1.打开配置文件
sudo vim /etc/apt/sources.list
2.配置文件替换为下载的apt源
...
3.保存并更新
sudo apt update

🎸 yum/apt其他操作

makecache将软件包信息缓存到本地  (这样每次安装不用去搜索)
clean all 清理老旧的缓存信息
update : 升级所有包同时也升级软件和系统内核  
upgrade:只升级所有包

🏠 Vim/Vi

vi/vim的区别简单来说,他们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面.例如语法加亮,可视化操作不仅可以在终端运行,也可以运行与x window、mac os、windows。

vim使用方法:

vim 文件名

🎸 vim的基本概念

我们讲解vim的三种模式(其实vim有多种模式,目前掌握三种即可),分别是命令行模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

正常/普通/命令模式(Normal mode)

控制屏幕光标的移动,字符、字或⾏的删除,移动复制某区段及进⼊Insert mode下,或者到last line mode。命令模式不能进行文字输入!

插⼊模式(Insert mode)

只有在Insert mode下,才可以做文字输⼊,按「ESC」键可回到命令⾏模式。该模式是我们后⾯⽤的最频繁的编辑模式。

末⾏模式(last line mode)

⽂件保存或退出,也可以进⾏⽂件替换,找字符串,列出⾏号等操作。

在命令模式下,shift+:即可进⼊该模式。要查看你的所有模式:打开vim,底⾏模式直接输⼊ :help vim-modes

模式之间的切换关系如下:

  • 命令模式相当于"游戏中的起始界面", 任何模式都可以从命令模式进入,而且退出都是用的Esc键。
  • 命令行模式 -> 插入模式:

1. i :  按「i」切换进⼊插⼊模式「insertmode」,按“i”进⼊插⼊模式后是从光标当前位置开始输⼊⽂件;

2. a :按「a」进⼊插⼊模式后,是从⽬前光标所在位置的下⼀个位置开始输⼊⽂字。

3. o :  按「o」进⼊插⼊模式后,是插新的⼀⾏,从⾏⾸开始输⼊⽂字。

  • 命令行模式 -> 底行模式 : 按下shift+;就进入底行模式,输入对应操作即可。
  • 底行模式 -> 退出vim : 此时输入不同选项即可退出vim。

1. w : 保存当前文件

2. wq : 保存并退出vim

3. q! : 强制退出

4. w! : 强制写入

  • 如果我想执行shell命令但不退出vim,可以切换为底行模式再使用!+ 指令。

  • 命令行模式退出vim : shift zz

🎸 命令模式常见命令集

(1)对光标(动图中绿色方块即是光标)所在行的操作

  • yy : 对当前光标所在行进行复制
  • n + yy: 从光标当前行开始往下的n行复制。
  • p: 粘贴。
  • u : 撤销上一次操作。
  • ctrl + r : 撤销的恢复。
  • d: 删除光标所在行。可以搭配p完成剪贴操作。
  • n + dd :对光标所在行开始往下n行进行删除操作。搭配n+p完成n次剪贴。

(2)光标快速定位/光标为锚点的操作:

  • shift + g(G) : 定位到文本的最结尾。
  • gg : 定位到文本的最开始。
  • n + shift g : 定位到文本的第n行。
  • h j k l : 其实就是光标上下左右的移动。h为左侧,j为下侧,k为上侧,l为右侧。
  • shift + 4($) : 移动到光标所在行的行尾。
  • shift + 6(^)  :   移动到光标所在行的行首。 
  • w : 以单词(不存在空的连续字符串)为单位向后跳转。(一直按住w会不断往后跳)
  • b :以单词为单位向前跳转。
  • n + x : 从光标当前位置开始进行删除n个字符。(一直按住会不断删)
  • n + shift + x : 删除光标所在位置的前n个字符。
  • shift + ~ : 大小写快速切换。(一直按住会自动往后对字符进行切换大小写)
  • n + r + 替换字符:从光标当前位置开始替换n个字符。(前提是有n个字符否则不会进行替换)

🎸 底行模式命令集

  • set nu: 显示文本行号。
  • set nonu : 取消行号。
  • n + 回车 :跳转到第n行。
  • / +关键字:先按/键,再输入想查找的字符,如果第一次找的关键字不是想要你的,可以一直按住n会往后寻找。(从前往后)
  • / +关键字:先按/键,再输入想查找的字符,如果第一次找的关键字不是想要你的,可以一直按住n会往前寻找。(从后往前)

如果你想同时用vim编辑多个文件,那可以在底行模式输入vs + 文件名进行分屏操作:

注 : 光标在哪个文件,就说明正在编辑哪个文件,如果想将光标切换到另一个窗口,使用ctrl + ww。

🎸  替换模式

底行模式时使用shift+ r则可进入替换模式,能对文本进行自由替换编辑,输入啥就会将光标所在处替换为啥。

示范:

🎸  视图模式

当我们对文本部分内容想批量化进行注释时,在命令模式操作有点麻烦,此时我们可以切换到视图模式。

切换方法:先切换到insert模式,按住ctrl + v进入视图模式。

注释操作方法:可以使用h j k l移动光标进行批量化选取代码区域(可利用n+shift g进行快速跳转),选取之后按住shift + I进入插入模式,按/两次再Esc即可进行注释。

取消注释:进入视图模式,同样利用h j k l进行批量化选取区域,再按住d。

示范:

🎸 简单vim配置

配置文件位置:

  • 在目录/etc/下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
  • 在每个用户的主目录下,都可以建立私有配置文件,命名为".vimrc“。在该配置文件下进行的操作只对当前用户生效!

常用配置选项测试:

  • 设置语法高亮度:syntax on
  • 显示行号:set nu
  • 设置缩进空格数为4:set shiftwidth=4

🎸 普通用户使用sudo提权

提权问题:如何把用户从普通用户提权提到root权限?

默认情况下普通用户使用root权限时,即使sudo也会受阻,这是因为普通用户并没有成为root用户的受信任列表里,此时需要把普通用户加入到该列表这样就可以使用root用户权限!

  • 打开/etc/sudoers

  • 添加普通用户进受信任名单

🏠 gcc/g++

🎸 前置知识

  • 预处理:进行宏替换/去注释/条件编译/头文件展开等。
  • 编译:生成汇编。
  • 汇编:生成机器可识别代码。
  • 链接:生成可执行文件或库文件。

🎸 gcc/g++介绍及安装

1. 什么是gcc/g++

gcc/g++都是编译器,其中gcc是GCC中的GUN C编译器,g++是GCC中GUN C++编译器。

  • gcc : gcc对于.c和.cpp文件分别当作c和cpp文件编译(c和cpp语法强度不同)
  • g++: g++统一当作cpp文件内编译
  • g++编译文件时,会自动链接标准库STL,而gcc不会。

2. 安装

//1.先查看版本
gcc --version
g++ --version

//2.没有则进行安装
yum/apt install -y gcc
yum/apt install -y g++ 

🎸 gcc/g++编译选项

我们以gcc为例

(1)不带选项

gcc是一个编译器,如果不带任何选项,默认直接将程序编译为可执行文件,也就是一步到位,默认形成的可执行程序叫a.out:

如果想执行可执行权限,直接./+可执行程序名。但是注意该可执行权限本身有可执行的权限!

如果想删除可执行程序,则使用rm即可,因为可执行程序也是文件:

(2)预处理

  • 预处理功能主要包括宏定义,⽂件包含,条件编译,去注释等
  • 预处理指令是以#号开头的代码行
  • 选项“-E”,该选项的作⽤是让gcc在预处理结束后停⽌编译过程
  • 选项“-o”是指⽬标⽂件,“.i”⽂件为已经过预处理的C原始程序

test.i文件是源码经过预处理之后的内容:

( 3 )  编译

  • 在这个阶段中,gcc⾸先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的⼯作,在检查⽆误后,gcc把代码翻译成汇编语⾔。
  • ⽤⼾可以使⽤“-S”选项来进⾏查看,该选项只进⾏编译⽽不进⾏汇编,⽣成汇编代码.s文件

编译文件内容如下:

(4)汇编

  • 汇编阶段是把编译阶段⽣成的“.s”⽂件转成⽬标⽂件
  • 可使⽤选项“-c”就可看到汇编代码已转化为“.o”的⼆进制⽬标代码了

注意:当然也可以对.c文件直接使用-c选项生成.o文件,帮我们把预处理,编译都做了

(5)链接

在成功编译之后,就进⼊了链接阶段,链接的时候需要把⼀堆文件链接在⼀起才生成可执行程序。

gcc test.o -o test

注:我们可以使用-o来自命名可执行文件的名字。

🎸 函数库

1. 什么是库?

  • 我们的C程序中,并没有定义"printf"的函数实现,而且在预编译中包含的"stdio.h"中也只有该函数 的声明,而没有定义函数的实现,那么是在哪里定义函数的实现呢?
  • 答案是:系统把这些函数的实现都放到名为libc.so.6的库文件中,在没有指定时,gcc会到系统默认路径的搜索路径"/usr/lib"下进行查找,也就是链接到libc.so.6库函数中去,这样就能实现函数了,这也就是链接的作用!
  • ldd + 可执行程序查看可执行程序链接时依赖的库

2. 库分类

函数库一般分为静态库和动态库两种。动态库在linux下后缀一般为.so,在windows下后缀为.dll静态库在linux下后缀为.a,在windows下后缀为.lib

  • 静态库:编译链接时,把库⽂件的代码全部加入到可执⾏⽂件中,因此⽣成的⽂件⽐较⼤,但在运⾏时也就不再需要库⽂件了。
  • 动态库与之相反,在编译链接并没有把库⽂件的代码加⼊到可执⾏⽂件中,⽽是在程序执⾏时由运⾏时链接⽂件加载库,这样可以节省系统的开销。动态库⼀般后缀名为“.so”,如前⾯所述的libc.so.6就是动态库。gcc在编译时默认使⽤动态库
  • gcc默认生成的二进制程序是动态链接的,可以使用file命令验证

  • 如果想静态链接则需要带上-static选项

注:无论是动态链接还是静态链接,都一定要提供对应的动静态库!

🎸 理解动静态库以及安装动静态库

(1)例子1

🌰: 假设你是个刚中考完的准高中生,你咨询你录取学校的张三学长你录取的学校怎么上网,学长就提前告诉你了网吧的相关信息,当你上高中时,你每天按时完成学习完成任务4-6点的时候就去学长说的西门上网,日复一日都是这样,你每天来回翻墙一趟去网吧上网

准高中生时的相当于还没加载进操作系统的可执行程序学校相当于是操作系统,学校的附近网吧就相当于是动态库,你要上网的时候需要跑到他那去上网,而你这个张三学长相当于是个编译器,他告诉你网吧信息就相当于是连接的过程!

(2) 例子2

🌰 : 没过多久网吧遭到举报倒闭了,但是你没有因为网吧而成绩下降只是当作一种闲暇娱乐,知道什么时间做什么事,因此你要求老爸跟校长申请在宿舍申请安装一台电脑保证适当的闲暇,校长鉴于你的优秀成绩同意了

由于网吧倒闭,原本也在网吧上网的同学也不能上网,这体现了动态库一旦丢失所有程序都无法运行;而你在宿舍安装一台电脑,此时相当于静态链接,此时不依赖网吧也能上网了。因此,静态链接就是把我们要访问的方法实现,拷贝到我们自己的可执行程序中!

(3)⼀般我们的云服务器,C/C++的静态库并没有安装,可以采⽤如下⽅法安装::

sudo yum install -y glibc-static           # C语言静态库
sudo yum install -y libstdc++-static       # C++静态库

(4)动静态库/链接比较:

1. 动态库一旦动态库缺失,所有经过动态链接的程序都无法运行。同时动态库比较节省资源,可执行程序体积比较小。

2. 静态库:比较浪费资源,可执行程序体积比较大不依赖其他库,库丢失也无所谓,程序照样能运行。

3. 静态链接虽然因为可执行程序中已经具备所需任何东西而运行速度快,但是它浪费空间,因为每个可执行程序中对所有需要的目标文件都要有一份副本,而且更新比较困难,因为因为每当库函数的代码修改了,这个时候就需要重新进行编译链接形成可执行程序;而动态库因为可以做到被大家所共享方法,所以真正的实现永远都是在库中。程序内部只有地址,比较节省空间。动态链接其实远⽐静态链接要常⽤得多,Linux中默认使用动态链接和动态库。

🎸 gcc其他常用选项 

• -E只激活预处理,这个不⽣成⽂件,你需要把它重定向到⼀个输出⽂件⾥⾯

• -S编译到汇编语⾔不进⾏汇编和链接

• -c编译到⽬标代码

• -o⽂件输出到⽂件

• -static此选项对⽣成的⽂件采⽤静态链接

• -g⽣成调试信息。GNU调试器可利⽤该信息。

• -shared此选项将尽量使⽤动态库,所以⽣成⽂件⽐较⼩,但是需要系统由动态库.

• -O0

• -O1

• -O2

• -O3编译器的优化选项的4个级别,-O0表⽰没有优化,-O1为缺省值,-O3优化级别最⾼

• -w不⽣成任何警告信息。

• -Wall⽣成所有警告信息。


下篇博客我们将讲解Linux其他常用工具Makefile,git , gdb。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/969922.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

物联网平台-分布式的设备接入与管理系统

乐吾乐物联网平台是由乐吾乐自主研发的一款分布式的设备接入与管理系统,专为满足不断增长的设备接入和数据处理需求而设计。平台集数据采集、分析、监控、告警和通知等功能于一体,并融合了乐吾乐大屏可视化和乐吾乐3D数字孪生技术,帮助用户快…

Day65_20250213图论part9_dijkstra(堆优化版)|Bellman_ford算法精讲

Day65_20250213图论part9_dijkstra(堆优化版)|Bellman_ford算法精讲 dijkstra(堆优化版) 题目 https://www.programmercarl.com/kamacoder/0047.%E5%8F%82%E4%BC%9Adijkstra%E5%A0%86.html 小明参加科学大会 思路 思路 朴素版的dijkstra,时间复杂度为O(n^2)&am…

动手实现自己的 JVM——Go!(ch01)

动手实现自己的 JVM——Go!(ch01) 参考张秀宏老师的《自己动手写java虚拟机》 为什么需要命令行 在 JMV 中,要运行一个 Java 文件(字节码),首先需要找到这个文件。那么,如何找到文件…

IIS部署netcore程序后,出现500.30错误解决方案之一

netcore程序部署到IIS后一直出现错误,访问首页后会跳转到登录页地址,然后看到如下错误 HTTP Error 500.30 - ANCM In-Process Start Failure Common solutions to this issue: The application failed to start The application started but then stopp…

将Docker容器打包成镜像提交

前言 Docker 是一个开源软件,也是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容…

【设计模式】【行为型模式】命令模式(Command)

👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 👍 欢迎点赞、收藏、关注,跟上我的更新节奏 🎵 当你的天空突…

【DDD系列-3】DDD战术设计实践分享

DDD 战术设计概念​ ​ ​​ TMF2 中的概念:​ 领域能力:​ 扩展点:​ DDD 战术设计使用场景​ 复杂业务场景​ 复杂来源面对的需求方更加多样化。​ 1 相同场景不同垂直业务方的需求(1688,淘宝,天…

基于单片机的仓库安防系统(论文+源码)

2.1 需求分析 仓库由于存有大量物品,因此对仓库的监控非常重要,目前仓库已经普遍装有安防系统,以保证仓库的安全,本次基于单片机的仓库安防系统设计,在功能上设计如下: 用户可通过IC卡进入仓库&#xff1…

使用 AutoMQ 和 Tinybird 分析用户网购行为

前言 在当前竞争激烈的市场环境中,数据分析已成为企业实现差异化和精准营销的关键。通过分析用户行为数据,企业能够深入了解用户的习惯、偏好和行为模式,从而更精准地定位目标市场,制定个性化营销策略,并提供定制化推…

小米 R3G 路由器刷机教程(Pandavan)

小米 R3G 路由器刷机教程(Pandavan) 一、前言 小米 R3G 路由器以其高性价比和稳定的性能备受用户青睐。然而,原厂固件的功能相对有限,难以满足高级用户的个性化需求。刷机不仅可以解锁路由器的潜能,还能通过第三方固…

Python数据可视化 - Matplotlib教程

文章目录 前言一、Matplotlib简介及安装1. Matplotlib简介2. 安装Matplotlib 二、Matplotlib Pyplot1. Pyplot介绍2. Pyplot中方法介绍2.1 创建和管理图形2.2 绘制图形2.3 设置图形属性2.4 保存和展示 三、Matplotlib绘图标记1. 介绍2. 基本用法3. 标记大小与颜色4. 标记样式列…

DeepSeek 与网络安全:AI 驱动的智能防御

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 随着人工智能(AI)的快速发展,深度学习技术正渗透到多个领域,从医疗诊断到…

STM32——HAL库开发笔记19(串口中断接收实验)(参考来源:b站铁头山羊)

本实验,我们以中断的方式使得串口发送数据控制LED的闪烁速度,发送1,慢闪;发送2,速度正常;发送3,快闪。 一、电路连接图 二、实现思路&CubeMx配置 1、实现控制LED的闪烁速度 uint32_t bli…

开关电源实战(一)宽范围DC降压模块MP4560

系列文章目录 文章目录 系列文章目录MP4560MP4560 3.8V 至 55V 的宽输入范围可满足各种降压应用 MOSFET只有250mΩ 输出可调0.8V-52V SW:需要低VF肖特基二极管接地,而且要靠近引脚,高压侧开关的输出。 EN:输入使能,拉低到阈值以下关闭芯片,拉高或浮空启动 COMP:Compens…

网络IP地址冲突故障,快速解决方案!

由于网络被广泛运用,网络规模持续变大,对应的 IP 地址分配也越来越多,IP 地址冲突的情况日益严重,在一定程度上对网络的正常运行造成了影响。 要维护网络稳定、高效地运行,解决 IP 地址冲突的问题就成了网络管理里的一…

C++模拟实现二叉搜索树

目录 1.二叉搜索树概念 2.二叉搜索树的实现 2.1二叉搜索树的查找 2.2二叉树的插入 2.3二叉树的删除 3.所有代码 4.二叉搜索树的应用 5.二叉搜索树的性能分析 1.二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二…

3D渐变柱状图

代码说明 数据准备: 数据可以是任意形式的矩阵,例如 5x7 的矩阵。 行标签 (rowLabels) 和列标签 (colLabels) 是可选的,如果不需要可以删除相关部分。 颜色定义: 使用自定义的蓝黄渐变色 (map)。 如果需要其他颜色,…

完美解决 error:0308010C:digital envelope routines::unsupported

查看专栏目录 Network 灰鸽宝典专栏主要关注服务器的配置,前后端开发环境的配置,编辑器的配置,网络服务的配置,网络命令的应用与配置,windows常见问题的解决等。 文章目录 windows电脑完美解决办法:设置说明…

Xilinx kintex-7系列 FPGA支持PCIe 3.0 吗?

Xilinx kintex-7系列资源如下图 Xilinx各系列的GT资源类型和性能 PCIe Gen1/2/3的传输速率对比 K7上面使用的高速收发器GTX最高速率为12.5GT/s, PCIe Gen2 每个通道的传输速率为 5 GT/s。 PCIe Gen3 每个通道的传输速率为 8 GT/s。 所以理论上硬件支持PCIe3.0&#…

支持列表拖拽嵌套,AI流式输出的多模态文档编辑器flowmix/docx: 全面升级

hi, 大家好, 我是徐小夕. 马上又到周五了, 最近也收到很多用户对 flowmix/docx 多模态文档编辑器的反馈,我们也做了一波新功能的升级,今天就和大家分享一下 flowmix/docx 多模态文档编辑器的最新更新. 演示地址: https://flowmix.turntip.cn/docx 以下是…