最新资讯

  • Linux《进程概念(上)》

Linux《进程概念(上)》

2025-05-07 02:00:52 0 阅读

在之前的Linux学习当中我们已经了解了基本的Linux指令以及基础的开发工具的使用,那么接下来我们就要开始Linux当中一个非常重要的部分的学习——进程,在此进程是我们之后Linux学习的基础,并且通过进程的学习会让我们了解更多的操作系统的相关知识以及基本的底层原理。在本篇当中我们会先了解冯诺依曼体系、进一步了解操作系统概念、了解进程的概念。那么接下来就开始本篇的学习吧!!!


 1.冯诺依曼体系

在了解进程的相关概念之前我们需要先来了解在计算机当中一个非常重要的体系——冯诺依曼体系。

冯诺依曼体系的结构示意图如下所示:

其实在当前我们常见的计算机,如笔记本等都是遵循冯诺依曼体系的。通过以上图示就可以看出当中的中央处理器其实就是CPU,而存储器就是内存

在此就可以发现CUP=运算器+控制器,存储器其实就是内存。

注:在此内存不是日常当中说的内存,日常当中我们提到的512GB/1TB等其实都是外存,而像16GB/32GB等才是内存。


 

 

在以上的图示当中的输入设备以及输出设备其实就是外设,而其中的输入设备就是键盘、鼠标、网卡、摄像头、话筒等;输出设备就是显示器、磁盘、网卡、打印机等。

注:以上的磁盘其实就是外存。

那么在了解了冯诺依曼体系的基本结构之后接下来就来了解在计算机当中按照该体系进行运转时会有什么特点?

通过以上的图示就看到在CUP当中处理的数据都是内存给他的,在这之前是需要输入设备将数据输入到内存当中的,之后CPU处理完之后再将对应的数据传输给内存之后再从内存将数据传输给输出设备。那么通过该过程就可以看出CPU在获取、写入等操作时只能从内存当中来进行。

那么此时问题就来了,为什么在冯诺依曼体系当中要这么设计呢?

这其实是因为当代的计算机其实是性价比的产物,接下来来看以下的图

通过以上的图示就可以看出存储设备的进行存取的速度其实是和设备的成本程正比的,这时也是有什么相同大小的内存会比磁盘要贵的多。

那么此时就可以思考如果在计算机当中直接将CPU和磁盘等输入设备打交道会有什么问题?

这时如果像以上这样直接将CUP从输入设备当中进行数据的读取再将处理之后的数据输出给输出设备,这时其实就会出现一个问题了,那就是CPU进行数据的处理的速度相比从磁盘等设备进行读写的速度是要快非常多的,这也就使得在这种情况下会出现CPU已经早已经将读取的数据处理之后接下来就会进入到等待数据的过程当中,这时磁盘已经使出了全力还是无法匹配CPU的处理速度,那么这就会造成程序运行的效率十分的低下,即使CPU的性能非常的高也无法正常的发挥其的性能;处理数据的效率转而由更慢的磁盘决定了,这是非常不合理的。

那么此时你可能就会想那么直接数据的存储放在内存当中不就好了,这样不就不会出现以上的问题了?

话是这么说,但是大内存太贵了啊,即使现在16GB的内存基本也是不便宜的,如果都使用内存来进行数据的存储那么计算机就不会像现在这样成为普通人也能使用的科技产物。

因此为了平衡效率和价格就出现了冯诺依曼体系,在该体系下内存进行外部设备的数据的读写,之后再将得到的数据给CPU进行处理,那么这样就不会出现CPU大量时间在闲置的问题。

总的来说在冯诺依曼体系当中CPU在数据层面,只和内存打交道。外设只和内存打交道。

接下来我们就通过一个实际的例子来了解在当你登录上qq开始和某位朋友聊天开始,数据的流动过程。

其实大致的过程就如下所示,在此你在键盘输入对应的信息之后就会先传输到内存当中,之后再由内存将数据信息转至CPU进行处理之后再将处理完的数据传输给网卡,网卡再通过网络的传输将你的数据信息传输到指定用户下,由该用户的网卡接收数据之后再传输到内存当中再由CPU处理后传输到显示器上,最终就可以在该用户的显示器上显示出你发的信息。

以上就可以看出你的键盘在你的体系当就是输入设备,网卡就是输出设备,在另一个用户下输入设备就是网卡,输出设备就是显示器。 

2.操作系统(Operator System)

在之前的Linux《权限》当中我们就初步了解了Shell命令以及运行原理,我们知道了操作系统与shell外壳之间的关系,但是在之前我们是感性的了解,这还是不够的,在此接下来我们就将理性的理解。

2.1 概念

任何计算机系统都包含⼀个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:
• 内核(进程管理,内存管理,⽂件管理,驱动管理)
• 其他程序(例如函数库,shell程序等等)

 在此之前我们就提到了安卓的底层是基于Linux的,在此其实就是安卓的·底层结构是基于的是Linux的内核。之后再设计适合手机的外壳程序就形成的安卓。

2.2 设计OS的目的

在此要通过是什么、为什么、怎么办三步来了解操作系统,以上我们已经了解了是什么,那么接下来就来了解为什么要有OS

以上就是操作系统与硬件以及用户之间的关系图,通过之前的学习我们知道在计算机当中硬件部分是符合冯诺依曼体系的,此时再看以下的关系图就可以看出在操作系统和硬件之间其实是存在驱动。

那么驱动存在的作用是什么呢?

首先要了解的是不同的硬件设备是拥有不同的读取方式的,例如网卡和磁盘进行读取的方式就完全不同。因此为了能让操作系统能对相关的硬件进行管理就需要驱动的辅助,当外设物理链接计算机之后还要将对应的驱动也安装才能使得硬件能正常的运行,就例如在我们是使用鼠标的适合,只有在电脑当中也安装了鼠标相应的驱动才能使得鼠标能正常的使用。

那么通过以上的驱动以及硬件和操作系统之间的关系就可以看出在操作系统其实对下,是要进行硬件的交互的,管理所有的软硬件资源

但是其实操作系统在将底层的硬件进行管理不是目的而是手段,真正的目的是为了给用户提供一个稳定的环境。就例如在我们使用电脑的时候操作系统对屏幕进行管理的目的就是为了让我们能从屏幕当中看到想要的信息,而不能出现蓝屏等异常德情况。

因此总的来说在计算机当中操作系统的作用就分为两个方面:

• 对下,与硬件交互,管理所有的软硬件资源
• 对上,为用户程序(应用程序)提供⼀个良好的执行环境

 

接下来在了解了为什么要有操作系统之后接下来就来了解几个补充的知识点

1.在计算机当中软硬件的体系结构其实是层状结构的

通过以上的图示其实就可以看出计算机当中体系结构是分层的,有用户、操作系统、驱动、硬件等

那么此时我们就要思考为什么在计算机的体系当中要设计为以上的层状结构呢?

这其实是在软件工程当中有一个非常重要的理念——高内聚低耦合。其实在之前C语言的学习当中我们就已经初步了解了这一基本的理念,在刚学习C语言的时候我们写的代码都是直接在main函数内的,到了之后学习了函数之后就开始逐渐将实现不同的功能使用函数进行划分。并且之后在C++当中还了解了面向对象的三大特点:封装、继承、多态。其实这些设计的根本目的就是为了增强代码的可维护性,这些其实就是高内聚低耦合的体现。

因此以上提到的是在软件上的设计,而在硬件上设计成为层状的结构也可以使得某一层次出现问题时只需要修复对应的层次即可其他的层次不需要进行修改,就例如当你的计算机网卡出现问题时只需要更换新的网卡即可、当计算机的网卡驱动出现问题时只需要再重新下载对应的网卡驱动即可。

2.访问操作系统,必须使用系统调用,在此我们使用的函数就是封装系统调用的

3.我们的出现,只要你判断出了它访问了硬件,那么它必须贯穿整个软硬件体系结构

4.库底层可能封装了系统调用

操作系统其实是不允许用户直接访问文件、内存;读取进程,在此必须要通过相应的系统调用来访问对应的进程等。但是这样不就说明要了解对应的系统调用才能实现对相关硬件的操作呢?那这不是要了解操作系统相关的知识吗?但是这样对应用户来说使用系统调用的学习成本太高了,因此语言就封装了系统调用。就例如之前我们C语言当中使用的printf是将你的数据写到硬件显示器上,但其实printf不是直接将对应的信息直接输出到显示器上的,而是调用了相应的系统调用,之后系统调用再将对应的数据输出的显示器上的。

2.3 核心功能

在此在整个计算机软硬件架构中,操作系统的定位是:⼀款纯正的“搞管理”的软件

那么接下来我们就来理解管理

那么接下来我们就通过一个校长-辅导员-学生的例子来理解管理

在学校当中其实是有很多的角色的,但是在此假设我们就只有学生、辅导员、校长三种角色。

以下是这三种角色的关系图

在此校长就作为决策者要对被管理的学生进行管理的时候那么接下来就可以通过执行者辅导员来将学生的信息通过表格的方式编辑好之后给到校长,之后校长就可以通过这些表格来得到学生的信息。在此过程当中校长是没有见到学生的,但是还是实现了对学生的管理,因此要管理,管理者和被管理者之间其实是可以不需要见面的

当管理者要对被管理者进行管理时就只需要根据“数据”就可以进行进行

就例如当校长要选拔出学校的篮球队时就只需要通过辅导员统计的信息来进行

并且当有了表格之后,校长对学生管理就转化为了对表格的管理!可以对表格进行增删查改

但是校长是程序员出生的,还是觉得表格的方式进行管理不太好,此时他就想到可以使用链表来进行管理啊!链表每个节点就是一个学生的信息,在此使用一个结构体表示。

以上有了链表校长对学生的管理就转化为了对链表的增删查改

以上校长的管理过程就是建模的过程,其最本质就是先描述再组织,这也是对任何“管理”场景进行建模的过程。这也就可以解释为什么在C++、Java、php等面向对象的语言当中要提供类以及标准模板库就例如C++当中的STL。

在此类就是解决了先描述,而STL就是实现再组织

那么在此也就能理解为什么有人说当前面向对象语言已经成为主流,这就是因为我们世界的特点就是先描述再组织形成的。因此在计算机当中舍友的软硬件其实也是先描述再组织的。

2.4理解系统调用

以上已经提到了系统调用,那么系统调用实际上要如何去理解呢?

在此我们就通过银行的例子来理解。在银行当中银行要给用户提供存款取款等的服务,但是银行又不能直接将银行内不能完全信任用户,具体的表现就是用户在存款取款时不能直接进入到银行的保险库当中,但是银行还要给用户提供存款取款的服务啊,因此这就有了柜台

 在柜台上用户就可以将需求告知,之后柜台就可以将用户的需求进行解决。那么在此还有一种情况就是如果用户完全对存取款不了解,此时就需要银行的大堂经理来协助用户进行操作;此时用户将自己的需求转至大堂经理,之后大堂经理再将用户的需求转至柜台。

其实系统调用就和银行当中的柜台类似,普通的开发者是无法自己使用系统调用的,那么此时就有了库函数,在此库函数就和银行当中的大堂经理类似。用户只需要使用库函数,库函数就可以自主的调用系统调用


 

3. 进程

3.1 进程概念

以上我们了解了操作系统的基本知识之后接下来我们就来了解进程的基本概念,不过和课本当中不同不会一开始就直接引入一些概念的名称,就像以下一样

• 课本概念:程序的⼀个执⾏实例,正在执行的程序等
• 内核观点:担当分配系统资源(CPU时间,内存)的实体。

在此是通过实际的情况以及图示来了解

在此我们知道当形成可执行程序之后是存储在磁盘当中的,当我们调用对应的可执行程序之后就会将磁盘当中对应的可执行程序的代码和数据传输到内存当中, 那么是否这些代码和数据就是进程呢?

此时我们就要思考在一些情况下是会出现多个可执行程序同时运行的,那么这时就会有多份的代码额和数据在内存当中,那么此时操作系统要怎么分辨出不同的进程呢?

因此在此为了对不同的进程进行管理,就给每个进程都形成了一个对应的内核数据结构对象,在该数据结构对象当中存储着进程的信息。在此之后再将每个进程的数据结构对象使用链表连接起来对这些进程的管理就转化为了对链表的管理,这符合之前提到的先描述再组织

在操作系统当中将这些存储进程信息的数据结构对象叫做进程控制块,可以理解为进程属性的集合。在操作系统当中称为PBC(process control block)。在Linux当中将该结构体对象称为task_struct

其实进程就是由内核数据结构对象PBC再加自己的代码和数据构成的,而不是之前认为的是进程只是代码和数据。

进程=PBC(task_struct)+自己的代码和数据 

那么以上提到的task_struct内会存储哪些的信息呢?

其实会存储的信息非常的多,会有以下的数据等,在这当中有一些是想要我们了解的,只不过这要之后再慢慢的了解

• 标示符: 描述本进程的唯⼀标⽰符,⽤来区别其他进程。
• 状态: 任务状态,退出代码,退出信号等。
• 优先级: 相对于其他进程的优先级。
• 程序计数器: 程序中即将被执⾏的下⼀条指令的地址。
• 内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
• 上下文数据: 进程执⾏时处理器的寄存器中的数据[休学例⼦,要加图CPU,寄存器]。
• I / O状态信息: 包括显⽰的I/O请求,分配给进程的I∕O设备和被进程使⽤的⽂件列表。
• 记账信息: 可能包括处理器时间总和,使⽤的时钟数总和,时间限制,记账号等。
• 其他信息

3.2 查看进程

在以上我们了解了进程的基本概念,那么接下就来学习如何查看进程

其实我们之前执行的所有的指令、工具、自己的程序,只要运行起来就都是进程。

并且当每个进程在运行起来之后都会有自己的ID,在Linux当中要查看当前进程的ID就想要使用到以下的系统调用

在此getpid的返回值其实就是当前进程的pid,在此返回值的类型为pid_t,其实类型就是int

 

在此接下我们就使用以下的代码来查看一个进程的pid

#include     
#include    
#include    
    
int main()    
{    
    printf("pid:%d
",getpid());                                                                                                                                                             
   return 0;    
}    

我们将以上代码的.c文件编译链接之后形成mytest的可执行程序,运行该程序就可以看出该程序的pid如下所示

以上我们了解了getpid这个系统调用,但是在使用man手册查询getpid还看到有另一个系统调用getppid,那么这个又是什么作用的呢? 

接下来我们就来了解,其实每个进程都是存在父进程的,而getppid这个系统调用就是用来获取父进程的id的。接下来在以上的代码当中加上getppid的使用。

#include     
#include    
#include    
    
int main()    
{   
    while(1)
    {
        printf("ppid:%d
",getppid());    
        printf("pid:%d
",getpid());                                                                                                                                                             
    }
                                                                                                                                                            
   return 0;    
}    

以上这样确实能获取到当前进程的ID,但是一般情况下我们是想要查看当中系统当中所有运行的进程的,那么就需要了解以下的指令

ps ajx

在此ps指令就可以查看所有的进程,之后的选项作用如下所示:

• a:显示⼀个终端所有的进程,包括其用户的进程。
• x:显示没有控制终端的进程,例如后台运⾏的守护进程。
• j:显示进程归属的进程组ID、会话ID、父进程ID,以及与作业控制相关的信息

但是以上使用了该指令之后会将当前系统当中的所有进程信息都显示在屏幕上

如果我们只是要获取一个进程的信息呢?此时就需要使用到管道外加grep

grep ajx | grep 程序名

以上我们启动mytest之后接下来再使用ps来获取该进程的信息

但是此时问题就是以上虽然显示出了对应的信息,但是我们无法分辨各个信息表示的是什么,那么还需要对使用ps指令时进行修改,在此我们就需要使用以下的指令

ps ajx | head -1;ps ajx | grep 程序名

以上你这时就会发现此时的./mytest进程的id和之前不一样了,这是为什么呢?

其实只不过是我将之前的进程停止了,重新再运行一次,这时系统就会重新为该进程分配pid

此时你可能还有还有问题就是为什么在查询mytest的进程信息时会有两个进程的信息,在此我们知道第一行表示的是进程的信息,那么第二行又表示的是什么呢?

其实在查询的时候会出现第二行是因为grep指令也是进程,那么在ps指令之后使用grep就会再形成一个进程。此时如果要忽略grep进程就可以在以上的指令之后加上以下的指令

ps axj | head -1;ps axj | grep 程序名 | grep -v grep 

以上我们的mytest可执行程序运行起来就不会停止,之前我们就知道要使得一个进程停止就需要使用CTRL+c,那么将进程停止之后再使用ps指令就可以看到对应进程也消失了

其实除了以上的方式可以杀掉进程之外还可以使用kill指令来杀掉进程,在此只需要使用以下指令即可

kill -9 进程ID

在此kill指令为什么能将进程结束以及是如何实现的具体要等到之后我们学习Linux信号时再了解

以上我们要查看当前系统内的进程除了可以使用ps指令外其实还可以通过系统内的一个目录进行查看,在此该目录路径如下所示:

/proc

此时使用ls指令就可以将当中系统内所有进程显示出来 ,在此每个目录就表示一个进程,每个命令内会存储进程对应的信息

以上我们将mytest再运行起来之后使用进程的pid进行查询就可以看到再pro目录下是存在对应的目录的

那么对应进程内的信息接下来就来补充两个小知识点

我们使用ls -l就可以看到在进程当中是存在许多的信息的,在此有两个是需要我们了解的分别是cwd和exe,在这其中cwd存储的就是当前进行所在的路径,而exe存储的就是进程对应的可执行文件所在的路径。

了解了以上的知识也就可以解释了为什么之前在C语言当中使用fopen打开一个文件时,当使用w方式打开时如果要打开的文件不存在时就会在当前路径下创建对应的文件,其实此时fopen会根据当前进程路径下创建对应的文件,在此路径就是从当前进程PCB内获取的。

此时在运行mytest程序的时候就会发现每次父进程的ID都是一样的,这又是为什么呢?

那么这时就使用ps来查询pid为27763的进程是什么

此时就可以看到其实我们创建的进程的父进程就是bash,bash不就是之前我们提到的命令行解释器吗?

因此我们执行可执行程序的时候系统新创建的进程的父进程就是bash进程,也就是进行命令行解释的时候创建的进程都是bash进程的子进程,这就和之前我们提到的王婆——实习生的模式吻合了。

其实只要我们登入上了Linux操作系统就会给我们分配一个bash进程

在此我们可以使用以下的指令来实现每隔一秒来将系统当中的所有的bash信息打印出来

while :;do ps axj | head -1;ps axj | grep  bash | grep -v grep ; sleep 1; done

此时再打开一个Xshell在大于时就会发现当前操作系统内存在三个bash,之后退出一个Xshell就会方向bash的数量会减少一个

3.3 创建子进程

以上我们了解了进程的基本概念之后接下来就来了解如何创建子进程

创建子进程需要使用到以下的系统调用

那么在程序内使用fork之后会出现什样的现象呢?接下来就来看以下的代码

#include       
#include      
#include      
      
int main()      
{      
    printf("父进程开始运行,pid:%d
",getpid());    
    fork();    
    printf("进程开始运行,pid:%d
",getpid());                                                                                                                                               
   return 0;    
}      

运行编译以上的代码形成可执行程序之后就会看到输出结构如下所示:

此时就可以看到以上的代码在调用fork之前是只有父进程在执行,调用了fork之后就会让父进程和子进程都执行之后的代码

以上就了解了使用了fork之后程序会如何运行,fork的返回值又是什么呢?接下来继续看看

通过使用man手册内fork函数的返回值的说明就可以看出fork的返回值有两个当返回值为0时表示子进程,返回值大于0时表示父进程。当返回值为-1时表示子进程创建失败 。

接下来先来看以下的代码 

#include     
#include    
#include    
#include    
int main()    
{    
    printf("父进程开始运行,pid:%d
",getpid());    
    pid_t id=fork();    
    if(id<0)    
    {    
        perror("fork");    
        return 1;                                                                                                                                                                            
    }    
    else if(id==0)    
    {    
        while(1)    
        {    
            sleep(1);    
            printf("我是一个子进程,我pid是%d,我的父进程是:%d
",getpid(),getppid());    
    
        }    
    }    
    else    
    {    
        while(1)    
        {    
            sleep(1);    
            printf("我是一个父进程,我pid是%d,我的父进程是:%d
",getpid(),getppid());    
        }    
    
    }    
   return 0;    
}    

运行以上代码形成的可执行程序就会输出以下的内容

这时就可以看出确实我们通过父进程创建了子进程,并且在子进程内可以得到父进程的pid

那么此时一系列的问题就来了

1.为什么fork给父子进程各自不同的返回值?

在此其实这个问题很显而易见,我们创建子进程一般都是需要让子进程去完成一些工作的,那么也个父进程其实可能会创建多个子进程的,那么要在查询各个子进程是否将对应的任务完成就需要有对应子进程的pid,这也是为什么在是使用fork之后给父进程返回的是子进程的pid。其实根本的原因也就是父进程:子进程是1对多的

2.为什么一个fork函数会有两个返回值?

不管是在学习C原因还是在学习C++的时候我们都知道一个函数的返回值不管怎么样都只能有一个的,那么在fork函数当中为什么返回值能有两个呢?

其实在fork函数当中在函数的内部实际上会进行申请新的pcb、拷贝父pcb给子进程、子进程pcb放在进程list甚至调度队列当中等操作,在进行了这些操作之后就会调用return语句,但其实在fork函数内调用return之前子进程就已经被创建,并且由于return也是语句那么这时return就会被执行两遍。

 

3. 为什么一个变量,即==0,又大于0?为什么在if……else语句当中两个分支能同时成立?

在此我们现在的知识还无法解释这个问题,要等到之后了解了虚拟地址空间相关的知识之后再进行解答

以上的问题3我们现在还无法解释,不过在此可以先了解一下写时拷贝

其实在我们通过父进程创建子进程之后子进程是先不会将父进程的代码和数据进行拷贝的,而是要等到数据原本的数据出现修改才会将父进程的代码和数据重新拷贝一份给子进程

 来看以下的代码:

#include 
#include
#include
#include


int cnt=100;
int main()
{
    printf("父进程开始运行,pid:%d
",getpid());
    pid_t id=fork();
    if(id<0)
    {    
        perror("fork");    
        return 1;    
    }    
    else if(id==0)    
    {    
    
        printf("我是一个子进程,我pid是%d,我的父进程是%dcnt:%d,
",getpid(),getppid(),cnt);    
        while(1)    
        {    
            sleep(5);    
            cnt+=10;    
        printf("我是一个子进程,我pid是%d,我的父进程是%d,cnt:%d
",getpid(),getppid(),cnt);    
    
        }    
    }    
    else    
    {    
        while(1)                                                                                                                                                                             
        {    
            sleep(1);    
        printf("我是一个父进程,我pid是%d,我的父进程是%d,cnt:%d
",getpid(),getppid(),cnt);
        }    
    
    }
   return 0;
}

以上代码的结构输出如下所示: 这时就可以发现父进程内的cnt变量的值是没有发生变化的,这也说明了在子进程内cnt发生变化时进行了写时拷贝

其实以上子进程进行写时拷贝的目的就是为了保持进程的独立性 

以就是本篇的全部内容了,接下来在《进程(中)》当中将继续带来进程的相关知识,未完待续……

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

搜索文章

Tags

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