最新资讯

  • Linux《基础开发工具(下)》

Linux《基础开发工具(下)》

2025-04-27 03:00:34 1 阅读

在之前的Linux《基础开发工具》上和中当中我们已经了解了一些的Linux当中的基础开发工具,接下来在本篇当中我们将继续来了解两个基本的开发工具git和gbd,信息通过本篇的学习让你了解和这两个工具的基本使用方法,接下来就开始本篇的学习吧!!!


1.版本控制器Git

 1.1 版本控制器的作用

在之前你大概率有过这样的经历:在编写各种文档时,为了防止文档丢失,更改失误,失误后能恢复到原来的版本,不得不复制出一个副本,比如:
“报告-v1”
“报告-v2”
“报告-v3”
“报告-确定版”
“报告-最终版”
“报告-究极进化版”
...
每个版本有各自的内容,但最终会只有⼀份报告需要被我们使用。

每个版本有各自的内容,但最终会只有⼀份报告需要被我们使用 。
但在此之前的工作都需要这些不同版本的报告,于是每次都是复制粘贴副本,产出的文件就越来越
多,文件多不是问题,问题是:随着版本数量的不断增多,你还记得这些版本各自都是修改了什么
吗?
文档如此,我们写的项目代码,也是存在这个问题的!!

为了能够更方便我们管理这些不同版本的文件,便有了版本控制器所谓的版本控制器,就是能让你了解到⼀个文件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录工程的每⼀次改动和版本迭代的⼀个管理系统,同时也方便多人协同作业。

一开始的版本管理器是将对应的历史创建的各个版本的软件或者报告等存储在本地当中,但是这种方式就无法实现多人开发的进行,每个开发者都只能在自己的本地当中进行版本的控制,因此在此之后就诞生了在远端的服务器当中进行版本的控制,这样就可以使得各个开发者都可以将开发过程中项目的各个版本同步到服务器上,这就解决了开发者之间无法实现协同开发的问题。

在此所有开发者只需要将在本地的仓库同步到远端的仓库就可以在远端的仓库当中存储所有的版本信息

现在主流的版本控制器就是git,我们使用的gitee、github等都是基于git的网站或者平台

Git 可以控制电脑上所有格式的⽂件,例如 doc、excel、dwg、
dgn、rvt等等。对于我们开发⼈员来说,Git 最重要的就是可以帮助我们管理软件开发项目中的源代码文件!有了git我们就不再害怕在本地的电脑出现问题时会造成代码丢失的问题,在此我们只需要在进行开发时将代码同步到远端的gitee或者githu上就可以在本地的代码丢失时将远端的数据拉到本地即可。

1.2 git简史

在了解git之前我们要先来了解git大概的的发展历史,这有助于我们更好的了解git

首先要了解的是git也是与Linux一样也是开源的。

在Linux诞生之后由于Linux的作者托瓦兹将Linux开源之后,世界各地的参与Linux项目的人越来越多了,在此过程当中托瓦兹需要将世界上的工程师提交的代码进行审核,若对应的代码符合要求就将其上线到Linux当中,但是由于参与Linux项目的人太多了,提交的代码也越来越多,托瓦兹一个人已经无法将所有的代码进行审核。此时托瓦兹就想能不能使用一个软件将所有提交的代码进行管理,之后再将这些代码让Linux的开发工程师进行审核等操作。在此托瓦兹找寻找程过程中寻找的是免费的版本控制器,这是因为托瓦兹认为Linux是开源的但如果版本控制器是收费的这就和Linux的开源精神相违背了。之后托瓦兹发现进行版本控制的的软件都是收费的,之后一家公司看到Linux开发者无私的精神愿意将自己的版本控制器免费给Linux社区使用,但是在社区使用这款版本控制器的过程中出现了有些人将该软件破解了,之后该版本控制器的公司就不再将该版本控制器免费提供给Linux社区了。

之后托瓦兹在无法得到使用市面上免费的版本控制器之后就自己写了一个开源的版本控制器,这就是以上提到的git

1.3 gitee使用

以上我们初步了解了git的使用以及git的由来,那么接下来我们就来了解一个基于git的网站gitee如何进行使用

Gitee - 基于 Git 的代码托管和研发协作平台

在此点击以上的链接就可以打开gitee的官网,接下来会讲解如何在gitee下创建远程的仓库,之后如何将本地的仓库同步到远端的仓库当中

当你创建了账户之后接下来在你的gitee主页当中就可以看到右上角有一个+,点击之后再点击创建仓库

 之后就可以在gitee当中进行仓库的创建了,在此仓库的命名由你决定,一般我们会将仓库内存储的数据最主要的特点作为仓库名,之后选择开源还是闭源;开源就是其他人都可以查看你gitee该仓库内的数据,闭源就是仓库内的数据只有你或者指定的人才能查看。

在初始化仓库当中,将语言选择C++,添加.gitignore为C++

注:.gitignore的作用在之后会进行讲解

在选择分支模型当中我们选择单分支即可,在一些大的公司当中需要进行多人协作的开发就可能会使用到其他的生成/开发模型等

创建仓库完成之后就会出现以下的页面,接下来点击其中的克隆/下载

之后对应的复制对应的HTTPS即可 

1.4 Linux内git操作 

在以上我们了解了如何在gitee当中创建仓库,那么接下来就接着来学习如何在Linux当中使用git将对应的代码拉到远程仓库当中

在Linux当中使用git之前需要先在Linux当中使用yum下载git

sudo yum install git

在使用了以上的命令在Linux当中下载了git之后接下来就可以使用git clone来将以上我们在gitee当中创建的远程仓库同步到本地的Linux当中

git clone [HTTPS地址]

使用了以上的指令之后接下来就可以在当前的目录下看到创建了一个和我们之前创建的仓库同名的目录

进入到该目录之后就可以看到已经将远程仓库当中的数据同步到Linux当中 

了解了远端的仓库如何拉到Linux当中之后接下来来了解如何将Linux当中的文件代码传输到远端的仓库当中

在进行传输只需要进行三步即可实现,分别是add、commit、push

首先在当前的linux目录下创建一个名为test.c的文件,之后在该文件内写入以下的内容

在此要进行传输时首先使用add来实现将对应的文件传输到本地的缓冲区当中

在此要查询对应的文件是否进入到缓冲区当中就需要使用git status

git status

以上我们使用了add指令之后其实对应的文件只是被拷贝到缓冲区当中,此时还未被拷贝到本地的git仓库当中

在此可以使用ls -a看到在当中路径下存在一个名为 .git 的隐藏文件,并且在该目录当中还没有我们创建的test.c的文件

要使得在缓冲区当中的文件拷贝到本地的git仓库当中接下来再使用git commit 就可实现

git commit -m "XXX"

在使用git commit要带上-m选项并且在此之后还要在之后再使用引号写上该文件的简介

完成了以上的操作之后接下来再使用push就可以将本地当前git仓库内的文件同步到远端的仓库当中

git push

接下来在使用该指令之后只需要输入你的gitee的用户名以及gitee账号的密码即可实现文件的传输

此时在gitee就可以看到test.c已经同步到远端的仓库当中

以上我们就了解了在Linux当中如何使用git来将文件同步到远端的仓库当中,那么接下来了解之前提到的.gitignore文件的作用

首先先在当中的目录下一个  test.o的文件,之后再按照以上的add、commit、push三步来实现远端的同步

在以上的操作过程当中就可以看出在使用add时就会没有对应的文件没有将对应的文件传输到缓冲区当中,此时通过该示例就可以了解到.gitignore的作用就是在进行git操作时进行特点文件的忽略,在.gitignore内保存的就是要进行忽略文件的后缀

在一般情况下我们除了在Linux当中进行文件远端的同步外还会进行Linux与Windows的协同开发,那么首先就要了解如何在Windows下将远端的仓库同步到本地。在此确实可以和之前Linux一样使用命令行进行操作,但是在Windows还有更好地方式进行传输,同步等操作,但是使用小乌龟会更加地简便。

详细教程可以观看以下地视频: 

gitee(码云)的注册和代码提交【手把手】_哔哩哔哩_bilibili

在此在Windows当中点击pull就可以将远端地仓库同步到本地

接下来在Windows当中将之前我们在Linux当中创建地test.c文件进行修改再加上一行代码

之后进行add、commit、push同步到远端

 接下来在Linux当中继续使用创建另外地文件同步到远端

但是此时在使用push就会出现以下地错误

那么此时地问题是什么呢?

其实问题很简单之前在Windows端我们将原来地test.c文件进行了修改,而此时Linux端还是保存的是之前未修改文件的数据,这是就会形成远端仓库和Linux本地仓库的人冲突,此时的冲突就是提醒用户要和远端进行同步了,在此就需要使用 pull来将远端的仓库同步到本地

git pull

以上就是关于git基本的使用,更多的git操作将在之后的git专栏当中进行讲解

2.gdb

通过之前的学习我们知道软件发布的模式有两种分别是debug模式和release模式,一般我们在开发时的模式是debug模式,而最终发布的模式是release模式。

之前在windows当中默认在进行代码的编写时的模式就是debug模式,但是在之前我们在Linnux当中使用vim等编辑器编写完代码之后接下来使用gcc/g++编译默认生成的是release模式下的程序。

我们知道在release模式下是无法进行调试工作的,那么接下来我们就要来学习如何在Linux当中将可执行程序形成为debug模式。

在Linux当中要进行调试就需要使用到gdb,同时还必须在源代码生成二进制程序的时候, 加上 -g 选项,如果没有添加,程序无法被编译。

那么接下来我们实现了进度条项目的代码,此时如果我们要进行调试就需要将之前实现makefile内的依赖方法进行修改;加上-g选项

接下来使用make命令之后就会发现形成的可执行程序相比之前的要大了一些,在此我们还可以通过以下的readelf指令进一步验证

此时就可以看到在形成的可执行程序process.exe内包含了对应调试信息

因此总的来说-g选项的作用就是让最后形成的可执行程序添加调试信息,也就是改为debug模式。

接下来我们来基于以下的代码来学习gdb内相关的指令

#include 

int Sum(int s, int e)
{
    int result = 0;
    for(int i = s; i <= e; i++)
    {
        result += i;
    }
    return result*flag;
}

int main()
{
    int start = 1;
    int end = 100;
    printf("I will begin
");
    int n = Sum(start, end);
    printf("running done, result is: [%d-%d]=%d
", start, end, n);
   return 0;
}

以上的代码很好理解,其实现的功能就是计算出1到100之间的全部整数之和,接下来我们就依据以上的代码来了解如何使用gdb来进行调试

实现在当前路径下创建对应的makefile文件,内部内容如下所示:

创建的makefile之后接下来使用make命令创建出了对应的mytest可执行程序后再使用gdb mytest指令就会出现以下的信息,此时就表明我们进入到gdb当中了

接下来要查看可执行程序内的代码就需要使用list指令,在此直接使用l也是可以的

以上我们就可以看到可执行程序内的代码了,但是这样在gdb内进行调试是在黑屏下进行的,还是比较难操作的,因此在此推荐的是使用cgdb来进行调试,在Linux当中使用cgdb要先下载cgdb

sudo sudo yum install -y cgdb

有了cgdb之后我们再来对之前的mytest进行调试,使用对应的指令 cgdb mytest,之后就会进入到cgdb当中

此时进行调试时程序的代码在上方,调试的信息在下方,相比之前的gdb现在的cgdb就更加显著了。

在此要显示出代码使用的还是list

list/l显示源代码,从上次位置开始,每次列出
10行
list/l 函数名列出指定函数的源代码
list/l ⽂件名:行号列出指定文件的源代码

要运行以上的程序就需要使用到run,可以直接使用r在没有设置断点时使用之后就会直接将该程序跑完。

如果要设置断点就需要使用到b在此b的使用有以下的形式

b [文件件名:]行号在指定行号设置断点
b 函数名在函数开头设置断点
b 行号在指定行号设置断点

 

那么再设置了断点之后要查看所有的断点呢?那么此时就需要使用到info

info b查看当前所有断点的信息

只需要使用info b指令就可以查看当前设置的所有断点的信息

在此以上就是使用info b之后显示的结果,在此Num表示的断点编号 。

那么要将创建的断点进行删除又要怎么操作呢?在此就需要使用到d,在此要删除对应的断点不能使用行号来进行删除,而是需要使用对应的断点编号来删除

d n删除序号为n的断点

以上我们将断点1删除之后再在19行创建断点就会发现断点编号变为2了,这是因为在gdb当中不退出断点编号会依次递增

在之前VS当中当我们设置了断点之后接下来F5程序就会跑到断点处就停止,接下来我们就可以使用F10或者F11,F10为逐过程,F11为逐语句。在gdb当中也是可以进行这两个操作的。需要使用到以下的指令。

n/next单步执行,不进入函数内部
s/step单步执行,进入函数内部

以上我们在程序的19行打了断点,接下来使用r就跑到19行时就停止了,接下来要进入到函数内就使用s ,要直接执行Sum函数就使用n。

通过以上就可以看出当gdb是会自动记录最新的一条指令,这样在使用s/n时就不需要一直输入再点击回车,只需要第一次输入之后接下来点击回车即可。

并且当要结束这一次的调试时只需要输入r再输入y就可以重新开始调试

在调试当中当我们进入到函数当中时要结束该函数的调试,直接运行到函数的返回处就需要使用到以下的指令

finish执行到当前函数返回,然后停止

例如以上的程序当中,当我们使用s进入到Sum函数之后接下来如果要快速的使得该函数运行完就可以使用finish来实现,此时就会运行到程序的19行结束 

在调试过程当中要查看指定变量的值就需要使用到以下的指令

p 变量打印指定变量的值

例如在以上我们在调试当中运行完Sum函数之后,此时查看变量n的值就会发现此时的值是随机值,这是因为当前还未将Sum的返回值赋值给n 

只需要再执行一条语句再查看n的值就变为了5050

在gdb当中如果当前有多个断点但是有的断点我们现在不想使用,但是又不想删除此时就需要使用到以下的指令,在此该指令就能实现断点使能

disable 断点编号禁用对应编号的断点

例如在以上的程序当中我们使用q退出cgdb之后重新进入再在16行创建一个断点

此时就可以看到创建断点时默认的Enb是y的,也就是创建断点之后默认是开启的,那么接下来将断点1 使用disable之后再进行r之后就会使得程序运行到断点2处停止

 

那么要将被禁用的断点再重新开启要怎么操作呢?在此就要使用到以下的指令

enable 断点编号启用对应编号的断点

 

以上我们就了解了基本的调试当中的基本操作,接下来我们就要思考调试的本质是什么?

通过之前的经验我们知道,在进行调试时一般是我们写的代码出现了问题,那么接下来就进行调试来找出问题,此时打不同的断点其实就是将代码进行块级别的划分,这样就可以以块单位进行快速的定位出现问题的区域。

那么如果当程序运行起来之后要从一个断点跳转至下一个断点,那么就要使用到以下的指令

continue/c从当前位置开始连续执行程序

 

之前我们了解的finish指令其实作用是确认问题是否出现在对应的函数内部,那么如果在进入函数之后要在函数内部进行局部区域的快速查找呢?

要进行以上的操作就需要使用到以上下的指令

until X行号执⾏到指定行号

例如以下进入到Sum函数内部之后当前在循环内部时要快速的跳出循环就可以使用until 

 

 

那么使用断点以及finish和until指令就可以实现找出问题,那么接下来找出问题之后就要查看出现问题的上下文代码来找出问题出现的位置

假设将以上的代码修改为以下的形式,在此将Sum函数的返回值乘flag变量,但是flag的值为0,这就会使得最后返回的结果为0,那么接下来假设我们不知道该问题,接下来就要通过调试来找出问题

#include 

int Sum(int s, int e)
{
    int result = 0;
    for(int i = s; i <= e; i++)
    {
        result += i;
    }
    return result*flag;
}

int main()
{
    int start = 1;
    int end = 100;
    printf("I will begin
");
    int n = Sum(start, end);
    printf("running done, result is: [%d-%d]=%d
", start, end, n);
   return 0;
}

当我们进行调试时进入到Sum函数内部之后,接下来在使用s时我们就需要查看函数内变量的值变化,但是这是使用p指令就不太方便 ,因此接下来就要再来了解一个指令

display 变量名跟踪显示指定变量的值(每次停止时)

以上使用diaplay之后就可以在使用s的同时显示变量的值 

在此要取消对应变量的显示就可以使用以下的指令

 

undisplay 编号取消对指定编号的变量的跟踪显示

注意:在此使用undisplay之后跟的是编号而不是变量的名称 

我们之前已经了解过了p指令的使用方法,在此对p指令再进行使用的补充,p之后可以跟表达式,使用之后就会输出该表达式的结果

例如以上的代码当中当我们调试到代码的11行时,也就是Sum函数的结尾时就可以发现此时的result还是我们预期的5050,那么此时就可以使用flag*result的表达式来将函数的返回值提前得到,这样就可以判断出是flag出现问题。

 

gdb几个使用技巧

了解以上的指令我们就可以正常的使用gdb了,接下来再来了解几个加餐的指令来提高我们代码调试的效率

1.watch

一般在程序当中会有一些变量,那么这变量的值在程序执行的过程当中是不能出现改变的,那么此时就可以使用watch来监视这些量,只有在变量的值出现变化时才会显示

例如在以上的代码当中如果我们使用watch监视resutl,那么就会出现以下的结果

注:如果你有⼀些变量不应该修改,但是你怀疑它修改导致了问题,你可以watch它,如果变化了,就会通知你

2. set var

在之前使用调试的时候当出现问题之后要进行修改都是要先退出调试,之后再进行一次调试来验证修改之后的代码是否符合我们的要求。这就比较繁琐,那么有什么方法可以在调试期间就进行验证的方法呢?

其实是有的,这就是阶而下了我们要学习的set var

例如在以上的代码当中我们就可以使用set var来验证判断是flag出现问题之后再修改flag的值能否让程序正常的运行

3. 条件断点

如果我们想创建一个断点使得程序在满足对应的条件时停止,在gdb当中要如何操作呢?

其实在此是分为两种情况,第一种是当前要创建一个条件断点,那么和之前创建断点类似,只不过在创建之后再加上对应的条件即可

b 行号 if 条件

例如在以上的代码当中要让在第9行且i等于10时候停下就可以使用到条件断点

此外除了以上的情况外,我们还有可能会先创建了一个普通的断点之后要使其变为条件断点,那么这时就需要使用到如下指令

condition 断点编号 新增条件

例如假设我们在以上的代码当中在第9行创建一个普通的断点,那么此时要使得程序运行到i=10的时候停止就需要使用到condition 

 

4. gdb屏与代码屏切换

当我们要查看文件的代码时就可以点击ESC键,这时就可以进入到代码屏,接下来就可以使用上下键进行代码的翻阅

此时要从代码屏退回gdb屏只需要点击i键

以上就是本篇的全部内容了, 在此我们就了解完了Linux当中的所有基本的开发工具,那么接下来我们就将开始进程的学习,未完待续……

本文地址:https://www.vps345.com/2718.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 javascript 前端 chrome edge python MCP ssh 进程 操作系统 进程控制 Ubuntu ubuntu 数据库 centos oracle 关系型 安全 分布式 阿里云 网络 网络安全 网络协议 llama 算法 opencv 自然语言处理 神经网络 语言模型 deepseek Ollama 模型联网 API CherryStudio RTSP xop RTP RTSPServer 推流 视频 rust http java 开发语言 tcp/ip udp unity harmonyos 华为 typescript 计算机网络 php android 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 vue.js audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 fastapi mcp mcp-proxy mcp-inspector fastapi-mcp agent sse 深度学习 YOLO 目标检测 计算机视觉 人工智能 GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 HCIE 数通 Dell R750XS macos adb numpy ssl 鸿蒙 c# Flask FastAPI Waitress Gunicorn uWSGI Uvicorn 面试 性能优化 jdk intellij-idea 架构 flutter Hyper-V WinRM TrustedHosts 学习 YOLOv8 NPU Atlas800 A300I pro asi_bench c语言 qt stm32项目 单片机 stm32 node.js json html5 firefox c++ debian PVE Qwen2.5-coder 离线部署 ide ai AI编程 物联网 iot github AI Agent pycharm .netcore pip conda 计算机外设 电脑 mac 软件需求 react.js 前端面试题 持续部署 oceanbase rc.local 开机自启 systemd 麒麟 创意 社区 ping++ 运维开发 前端框架 机器学习 深度优先 图论 并集查找 换根法 树上倍增 ollama llm 科技 个人开发 docker 容器 微信 微信分享 Image wxopensdk jmeter 软件测试 DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 WSL2 pytorch jenkins YOLOv12 银河麒麟服务器操作系统 系统激活 开源 transformer sqlserver uni-app 负载均衡 golang ESP32 豆瓣 追剧助手 迅雷 nas gitee spring boot 安装教程 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 后端 LDAP mysql aws googlecloud windows tomcat 笔记 maven intellij idea vscode 代码调试 ipdb asm 实时音视频 智能路由器 外网访问 内网穿透 端口映射 word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 nginx dubbo 监控 自动化运维 chatgpt 大模型 llama3 Chatglm 开源大模型 C 环境变量 进程地址空间 pillow 经验分享 学习方法 嵌入式硬件 ollama下载加速 websocket .net django flask web3.py vim 僵尸进程 自动化 蓝耘科技 元生代平台工作流 ComfyUI DeepSeek-R1 API接口 产品经理 agi microsoft live555 rtsp rtp https WSL win11 无法解析服务器的名称或地址 apache 小程序 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 web安全 Kali Linux 黑客 渗透测试 信息收集 Windsurf vue3 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 redis mybatis cuda cudnn anaconda 微服务 springcloud 大数据 大数据平台 嵌入式 linux驱动开发 arm开发 ffmpeg 音视频 温湿度数据上传到服务器 Arduino HTTP cpu 内存 实时 使用 C语言 html css 设置代理 实用教程 safari Mac 系统 系统架构 Invalid Host allowedHosts vue IPMITOOL BMC 硬件管理 linux 命令 sed 命令 bootstrap RAGFLOW RAG 检索增强生成 文档解析 大模型垂直应用 集成学习 集成测试 web Socket 1024程序员节 博客 Deepseek jupyter 云原生 devops springboot 技能大赛 LLM ecm bpm 压测 ECS dify eNSP 网络规划 VLAN 企业网络 网站搭建 serv00 virtualenv linux环境变量 AIGC ragflow 微信开放平台 微信公众平台 微信公众号配置 远程登录 telnet 压力测试 RAID RAID技术 磁盘 存储 医疗APP开发 app开发 mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 svn mongodb AI大模型 程序员 Anolis nginx安装 环境安装 linux插件下载 鸿蒙系统 系统安全 ESXi ddos k8s webrtc ip命令 新增网卡 新增IP 启动网卡 prometheus k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm 远程工作 spring 课程设计 HarmonyOS Next zotero WebDAV 同步失败 代理模式 spring cloud gpu算力 Docker Compose docker compose docker-compose gitlab DevEco Studio iDRAC R720xd CPU 主板 电源 网卡 3d freebsd 测试工具 信息与通信 zabbix Linux dell服务器 硬件架构 TRAE 企业微信 Linux24.04 deepin 虚拟化 半虚拟化 硬件虚拟化 Hypervisor Playwright 自动化测试 IIS .net core Hosting Bundle .NET Framework vs2022 XFS xfs文件系统损坏 I_O error es jvm 指令 mq rabbitmq rocketmq kafka micropython esp32 mqtt threejs 3D shell 磁盘监控 部署 服务器配置 生物信息学 openEuler Dify postgresql pgpool opensearch helm 大语言模型 田俊楠 搜索引擎 go file server http server web server fpga开发 WebRTC gpt 编辑器 X11 Xming 缓存 灵办AI kvm ux 多线程 elk 交互 图形化界面 Python 网络编程 聊天服务器 套接字 TCP 客户端 Docker Hub docker pull 镜像源 daemon.json DNS minio ceph Trae AI代码编辑器 腾讯云 群晖 文件分享 kubernetes bash wsl2 wsl WebUI DeepSeek V3 DeepSeek NPS 雨云服务器 雨云 能力提升 面试宝典 技术 IT信息化 交换机 硬件 设备 GPU PCI-Express 崖山数据库 YashanDB GCC crosstool-ng W5500 OLED u8g2 TCP服务器 jetty undertow chfs ubuntu 16.04 NFS redhat UOS 统信操作系统 yum java-ee kylin 智能手机 NAS Termux Samba 腾讯云大模型知识引擎 efficientVIT YOLOv8替换主干网络 TOLOv8 远程控制 远程看看 远程协助 银河麒麟操作系统 国产化 多层架构 解耦 音乐服务器 Navidrome 音流 firewalld 远程桌面 华为od OD机试真题 华为OD机试真题 服务器能耗统计 并查集 leetcode ruoyi DeepSeek行业应用 Heroku 网站部署 报错 分析解读 低代码 risc-v ci/cd VMware安装Ubuntu Ubuntu安装k8s 服务器数据恢复 数据恢复 存储数据恢复 北亚数据恢复 oracle数据恢复 计算机 nuxt3 华为云 JAVA Java kind react next.js 部署next.js matlab 微信小程序 XCC Lenovo hadoop Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 统信UOS bonding 链路聚合 其他 繁忙 服务器繁忙 解决办法 替代网站 汇总推荐 AI推理 MacMini 迷你主机 mini Apple dba 小艺 Pura X excel 机器人 宕机切换 服务器宕机 k8s集群资源管理 云原生开发 数据结构 skynet QQ bot Docker ros2 moveit 机器人运动 eureka 游戏服务器 Minecraft selete 高级IO list grafana IPMI okhttp unix wireshark 显示过滤器 安装 ICMP Wireshark安装 pygame 漏洞 安全威胁分析 VR手套 数据手套 动捕手套 动捕数据手套 ansible playbook vscode 1.86 selenium Nuxt.js SSH Xterminal 命名管道 客户端与服务端通信 express 图像处理 av1 电视盒子 机顶盒ROM 魔百盒刷机 unity3d 数学建模 银河麒麟 kylin v10 麒麟 v10 Google pay Apple pay 服务器主板 AI芯片 android studio 远程 命令 执行 sshpass 操作 CORS 跨域 chrome devtools chromedriver 边缘计算 智能硬件 ArcTS 登录 ArcUI GridItem arkUI RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 具身智能 git 职场和发展 code-server Cursor protobuf 序列化和反序列化 MS Materials openssl 密码学 webstorm Erlang OTP gen_server 热代码交换 事务语义 kamailio sip VoIP 强制清理 强制删除 mac废纸篓 ip 政务 分布式系统 监控运维 Prometheus Grafana echarts 信息可视化 数据分析 网页设计 数据库系统 游戏程序 ios minicom 串口调试工具 hibernate sqlite3 MQTT协议 消息服务器 代码 remote-ssh Ark-TS语言 rust腐蚀 统信 国产操作系统 虚拟机安装 hugo 框架搭建 jar 小游戏 五子棋 串口服务器 tcpdump etcd 数据安全 RBAC 测试用例 功能测试 软件工程 金融 数据挖掘 AI写作 AI作画 聊天室 docker命令大全 爬虫 网络用户购物行为分析可视化平台 大数据毕业设计 5G 3GPP 卫星通信 nvidia 思科模拟器 思科 Cisco r语言 数据可视化 孤岛惊魂4 muduo 恒源云 mysql离线安装 ubuntu22.04 mysql8.0 VMware安装mocOS VMware macOS系统安装 SSH 服务 SSH Server OpenSSH Server 程序人生 vSphere vCenter 软件定义数据中心 sddc RTMP 应用层 混合开发 JDK gcc 大模型微调 open webui docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos idm springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 sql KingBase 命令行 基础入门 编程 MQTT 消息队列 传统数据库升级 银行 弹性计算 KVM 计算虚拟化 弹性裸金属 LLMs Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 opcua opcda KEPServer安装 centos-root /dev/mapper yum clean all df -h / du -sh oneapi 数据库架构 数据管理 数据治理 数据编织 数据虚拟化 FTP 服务器 大模型面经 大模型学习 系统开发 binder 车载系统 framework 源码环境 pdf VSCode 华为认证 网络工程师 多线程服务器 Linux网络编程 移动云 springsecurity6 oauth2 授权服务器 token sas 云服务器 裸金属服务器 弹性裸金属服务器 p2p visualstudio 网络穿透 服务器部署ai模型 netty SSL 域名 rsyslog Linux PID 多进程 远程连接 raid5数据恢复 磁盘阵列数据恢复 cnn IDE AI 原生集成开发环境 Trae AI Ubuntu Server Ubuntu 22.04.5 postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 mcu 状态管理的 UDP 服务器 Arduino RTOS 驱动开发 硬件工程 嵌入式实习 ecmascript Netty 即时通信 NIO 飞牛NAS 飞牛OS MacBook Pro 虚拟机 pyqt Kylin-Server 服务器安装 elasticsearch IIS服务器 IIS性能 日志监控 EasyConnect Cline nextjs reactjs Reactor 设计模式 C++ RustDesk自建服务器 rustdesk服务器 docker rustdesk 黑客技术 mariadb 流式接口 ssrf 失效的访问控制 sqlite openwrt Portainer搭建 Portainer使用 Portainer使用详解 Portainer详解 Portainer portainer gateway Clion Nova ResharperC++引擎 Centos7 远程开发 业界资讯 ue4 着色器 ue5 虚幻 模拟退火算法 open Euler dde 目标跟踪 OpenVINO 推理应用 蓝桥杯 mosquitto 数据集 网工 开机自启动 xrdp C# MQTTS 双向认证 emqx string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap TrinityCore 魔兽世界 iftop 网络流量监控 adobe make命令 makefile文件 gradle 环境迁移 Dell HPE 联想 浪潮 源码剖析 rtsp实现步骤 流媒体开发 Ubuntu 24.04.1 轻量级服务器 安卓 Redis Desktop asp.net大文件上传 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 .net mvc断点续传 文件系统 路径解析 rpc 远程过程调用 Windows环境 直播推流 火绒安全 向日葵 毕设 进程信号 CLion 相差8小时 UTC 时间 服务器管理 宝塔面板 配置教程 网站管理 visual studio code 剧本 无桌面 gitea 媒体 ipython curl wget 工业4.0 CH340 串口驱动 CH341 uart 485 多个客户端访问 IO多路复用 回显服务器 TCP相关API 历史版本 下载 Logstash 日志采集 DIFY etl 知识库 RAGFlow 本地知识库部署 DeepSeek R1 模型 软考 VS Code 小智AI服务端 xiaozhi ASR TTS 飞牛 prompt easyui langchain asp.net大文件上传下载 bcompare Beyond Compare 模拟器 教程 AD 域管理 云服务 鲲鹏 c 权限 npm uniapp 矩阵 线性代数 电商平台 自动化任务管理 c/c++ 串口 yum源切换 更换国内yum源 匿名管道 ui 飞牛nas fnos 网络攻击模型 实时互动 log4j mamba zookeeper cursor MCP server C/S nfs windows日志 毕昇JDK 常用命令 文本命令 目录命令 嵌入式Linux IPC 用户缓冲区 模拟实现 我的世界服务器搭建 minecraft 中间件 可信计算技术 安全架构 EMUI 回退 降级 升级 支付 微信支付 开放平台 大模型应用 H3C SWAT 配置文件 服务管理 网络共享 vr OpenSSH linux安装配置 ruby kali 共享文件夹 IPv4 子网掩码 公网IP 私有IP 免费域名 域名解析 分布式训练 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 URL 项目部署到linux服务器 项目部署过程 apt banner nac 802.1 portal SenseVoice 前后端分离 链表 版本 迁移指南 arm Linux的权限 cpp-httplib 单元测试 Kali 渗透 MI300x outlook rdp 实验 网络结构图 yaml Ultralytics 可视化 王者荣耀 Wi-Fi Spring Security edge浏览器 我的世界 我的世界联机 数码 监控k8s 监控kubernetes Linux环境 sysctl.conf vm.nr_hugepages trea idea ISO镜像作为本地源 性能测试 云电竞 云电脑 todesk Cookie tensorflow trae 深度求索 私域 Ubuntu22.04 开发人员主页 glibc rustdesk vpn qemu libvirt frp 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 WebVM 流水线 脚本式流水线 代码托管服务 MNN Qwen DenseNet sentinel AI-native Docker Desktop bug CrewAI Linux的基础指令 swoole dns是什么 如何设置电脑dns dns应该如何设置 三级等保 服务器审计日志备份 ArkTs ArkUI 键盘 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 dns composer pppoe radius arcgis 干货分享 黑客工具 密码爆破 ocr 监控k8s集群 集群内prometheus AI agent Mac内存不够用怎么办 无人机 g++ g++13 昇腾 npu 联想开天P90Z装win10 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP 运维监控 CDN tailscale derp derper 中转 自动化编程 triton 模型分析 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors 宠物 毕业设计 免费学习 宠物领养 宠物平台 互信 Radius C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 pyautogui qt项目 qt项目实战 qt教程 tcp 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 embedding 社交电子 IO模型 代理 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 ai小智 语音助手 ai小智配网 ai小智教程 esp32语音助手 diy语音助手 远程服务 EMQX 通信协议 DOIT 四博智联 lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 Unity Dedicated Server Host Client 无头主机 cd 目录切换 安防软件 直流充电桩 充电桩 端口测试 junit 阿里云ECS 稳定性 看门狗 程序员创富 LORA NLP Typore 同步 备份 建站 n8n 工作流 workflow 阻塞队列 生产者消费者模型 服务器崩坏原因 thingsboard laravel Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 国内源 rime 7z 输入法 实战案例 交叉编译 Jellyfin FunASR 佛山戴尔服务器维修 佛山三水服务器维修 Open WebUI cfssl 银河麒麟桌面操作系统 Kylin OS AD域 camera Arduino 电子信息 keepalived IMX317 MIPI H265 VCU 反向代理 sonoma 自动更新 xshell termius iterm2 游戏机 neo4j 数据仓库 数据库开发 database 超融合 线程 xcode vasp安装 查询数据库服务IP地址 SQL Server 服务网格 istio AutoDL EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 ROS 自动驾驶 聚类 视觉检测 VMware创建虚拟机 游戏开发 tidb GLIBC 语法 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 根服务器 华为机试 策略模式 单例模式 虚拟局域网 xss ukui 麒麟kylinos openeuler 显卡驱动 wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 图形渲染 黑苹果 UDP的API使用 gaussdb sdkman gpt-3 文心一言 xml 做raid 装系统 大模型入门 大模型教程 saltstack CVE-2024-7347 VPS 内网服务器 内网代理 内网通信 人工智能生成内容 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 需求分析 规格说明书 alias unalias 别名 架构与原理 虚拟显示器 DocFlow cmos IM即时通讯 剪切板对通 HTML FORMAT 序列化反序列化 ftp 主从复制 算力 飞书 Ubuntu共享文件夹 共享目录 Linux共享文件夹 重启 排查 系统重启 日志 原因 web3 源码 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 regedit 开机启动 IDEA ros 双系统 GRUB引导 Linux技巧 EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 京东云 iBMC UltraISO lua vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 fd 文件描述符 hive Hive环境搭建 hive3环境 Hive远程模式 P2P HDLC 单一职责原则 webgl clickhouse 显示管理器 lightdm gdm AnythingLLM AnythingLLM安装 spark HistoryServer Spark YARN jobhistory Headless Linux flash-attention 音乐库 less iis uv Claude 小番茄C盘清理 便捷易用C盘清理工具 小番茄C盘清理的优势尽显何处? 教你深度体验小番茄C盘清理 C盘变红?!不知所措? C盘瘦身后电脑会发生什么变化? epoll 僵尸世界大战 游戏服务器搭建 midjourney 软负载 本地部署AI大模型 LInux 自定义客户端 SAS 邮件APP 免费软件 致远OA OA服务器 服务器磁盘扩容 rnn 移动魔百盒 can 线程池 USB转串口 HTTP 服务器控制 ESP32 DeepSeek v10 软件 备选 网站 api 调用 示例 ldap armbian u-boot 本地部署 USB网络共享 技术共享 语音识别 软件构建 seatunnel 影刀 #影刀RPA# linux上传下载 rag ragflow 源码启动 执法记录仪 智能安全帽 smarteye vmware 卡死 SysBench 基准测试 vscode1.86 1.86版本 ssh远程连接 SSE 实习 LLM Web APP Streamlit ssh漏洞 ssh9.9p2 CVE-2025-23419 eclipse Vmamba SRS 流媒体 直播 iphone 开发环境 SSL证书 AISphereButler 银河麒麟高级服务器 外接硬盘 Kylin flink OpenManus python3.11 视频编解码 宝塔 Java Applet URL操作 服务器建立 Socket编程 网络文件读取 GoogLeNet DeepSeek r1 odoo 服务器动作 Server action rclone AList webdav fnOS perf DBeaver kerberos 游戏引擎 自学笔记 小米 澎湃OS Android miniapp 真机调试 调试 debug 断点 网络API请求调试方法 信号处理 matplotlib docker run 数据卷挂载 交互模式 MacOS录屏软件 openstack Xen big data uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 bat 产测工具框架 IMX6ULL 管理框架 FTP服务器 QT 5.12.12 QT开发环境 Ubuntu18.04 docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK 程序 word milvus nlp grub 版本升级 扩容 性能分析 相机 hexo 环境配置 防火墙 NAT转发 NAT Server Qwen2.5-VL vllm 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 大大通 第三代半导体 碳化硅 Windows ai工具 java-rocketmq gnu PX4 Xinference 多端开发 智慧分发 应用生态 鸿蒙OS SSH 密钥生成 SSH 公钥 私钥 生成 iventoy VmWare OpenEuler css3 cocoapods 中兴光猫 换光猫 网络桥接 自己换光猫 健康医疗 互联网医院 李心怡 iperf3 带宽测试 yolov8 perl win服务器架设 windows server 元服务 应用上架 kernel 换源 Debian WLAN ABAP UDP 服务器时间 zip unzip 软链接 硬链接 存储维护 NetApp存储 EMC存储 deekseek 网络爬虫 UOS1070e 大模型推理 wps jina 办公自动化 自动化生成 pdf教程 MacOS 代理服务器 智能音箱 智能家居 kotlin 信号 虚幻引擎 virtualbox 问题解决 ubuntu24 vivado24 网络药理学 生信 gromacs 分子动力学模拟 MD 动力学模拟 嵌入式系统开发 开发 visual studio ranger MySQL8.0 个人博客 物联网开发 ubuntu24.04.1 Linux find grep 烟花代码 烟花 元旦 性能调优 安全代理 onlyoffice wsgiref Web 服务器网关接口 HAProxy dity make SEO x64 SIGSEGV xmm0 su sudo fast ardunio BLE 磁盘清理 大模型部署 powerpoint 查看显卡进程 fuser ArtTS Unity插件 searxng PPI String Cytoscape CytoHubba 知识图谱 firewall 云桌面 微软 AD域控 证书服务器 TrueLicense 抗锯齿 xpath定位元素 浏览器自动化 ShenTong CentOS deep learning 强化学习 带外管理 极限编程 SVN Server tortoise svn db MVS 海康威视相机 合成模型 扩散模型 图像生成 proxy模式 HarmonyOS OpenHarmony 信创 信创终端 中科方德 鸿蒙开发 移动开发 捆绑 链接 谷歌浏览器 youtube google gmail 金仓数据库 2025 征文 数据库平替用金仓 hosts 在线office sequoiaDB 镜像 容器技术 prometheus数据采集 prometheus数据模型 prometheus特点 MDK 嵌入式开发工具 论文笔记 sublime text docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 KylinV10 麒麟操作系统 Vmware autodl seleium 企业网络规划 华为eNSP nvm whistle Deepseek-R1 私有化部署 推理模型 考研 IMM Python基础 Python教程 Python技巧 HarmonyOS NEXT 原生鸿蒙 云耀服务器 对比 工具 meld DiffMerge 本地化部署 aarch64 编译安装 HPC 项目部署 玩机技巧 软件分享 软件图标 域名服务 DHCP 符号链接 配置 推荐算法 fstab chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 wpf 私有化 树莓派 VNC lio-sam SLAM 基础环境 MySql Node-Red 编程工具 流编程 react native 读写锁 AI Agent 字节智能运维 GIS 遥感 WebGIS 端口 查看 ss harmonyOS面试题 deployment daemonset statefulset cronjob ssh远程登录 内网环境 h.264 加解密 Yakit yaklang deepseek r1 流量运营 网卡的名称修改 eth0 ens33 浏览器开发 AI浏览器 figma 钉钉 端口聚合 windows11 粘包问题 抓包工具 System V共享内存 进程通信 dash 正则表达式 llama.cpp docker desktop image navicat Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 top Linux top top命令详解 top命令重点 top常用参数 网络建设与运维 NLP模型 ubuntu20.04 ros1 Noetic 20.04 apt 安装 HiCar CarLife+ CarPlay QT RK3588 软件卸载 系统清理 TCP协议 拓扑图 状态模式 Attention IO yolov5 nosql 解决方案 多路转接 MobaXterm Linux权限 权限命令 特殊权限 docker部署Python yum换源 WSL2 上安装 Ubuntu 增强现实 沉浸式体验 应用场景 技术实现 案例分析 AR 西门子PLC 通讯 风扇控制软件 Sealos 论文阅读 rpa conda配置 conda镜像源 rancher 网络搭建 神州数码 神州数码云平台 云平台 MAVROS 四旋翼无人机 ip协议 热榜 js 安装MySQL 通信工程 毕业 dock 加速 mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 vu大文件秒传跨域报错cors 搭建个人相关服务器 离线部署dify 欧标 OCPP macOS 上传视频文件到服务器 uniApp本地上传视频并预览 uniapp移动端h5网页 uniapp微信小程序上传视频 uniapp app端视频上传 uniapp uview组件库 开机黑屏 沙盒 数字证书 签署证书 CentOS Stream k8s二次开发 集群管理 智能电视 达梦 DM8 计算生物学 生物信息 基因组 英语 搜狗输入法 中文输入法 AI员工 接口优化 服务器正确解析请求体