
LINUX
文章平均质量分 94
从基础概念到高级技巧,涵盖系统管理、网络配置、性能调优、开发工具等多个领域。
谁在夜里看海.
丢掉幻想,准备斗争!
展开
-
【Linux-网络】从逻辑寻址到物理传输:解构IP协议与ARP协议的跨层协作
上一篇文章我们详细介绍了TCP/UDP协议。当数据在应用层完成编写后,传输层会接收到这些数据并进行进一步封装,添加源端口号、目的端口号等信息,以确保数据包能够正确地交付给目标主机上的相应进程进行处理。今天,我们要介绍的IP协议,主要解决的是数据包如何从一台主机传输到另一台主机的问题。理解IP协议之前,我们需要清楚一个基础概念:什么是IP地址。IP地址(Internet Protocol Address,互联网协议地址)是分配给网络中每一台设备的唯一标识符,用于计算机在网络中定位和识别设备。原创 2025-02-24 22:43:27 · 3369 阅读 · 86 评论 -
【Linux-网络】深入拆解TCP核心机制与UDP的无状态设计
在之前的一篇文章中,我们详细介绍了 socket网络编程(基于 TCP 和 UDP),并且在应用层,我们已经能够熟练地调用API来编写简单的服务器和客户端应用。然而,要更好地理解网络编程,我们必须深入了解这两种协议的传输机制和它们的工作原理。今天,我们将通过对 TCP 和 UDP协议的进一步剖析,探索它们在实际传输中的差异、优势和局限性。原创 2025-02-21 01:52:12 · 5937 阅读 · 59 评论 -
【Linux-网络】HTTP的清风与HTTPS的密语
HTTP是一种用于客户端(通常是浏览器)与服务器之间传输超文本(主要是网页)的协议。它是Web通信的基础协议,用于支持浏览器与Web服务器之间的请求和响应。我们使用HTTP协议来请求Web服务器上的资源。当你输入一个网址(如www.example.com)并按下回车时,浏览器实际上向服务器发送一个HTTP请求服务器返回相应的HTTP响应,其中包含网页内容。HTTP并不仅限于浏览器,其他应用程序(如移动应用桌面应用API接口等)也可以通过HTTP协议与服务器进行数据交换原创 2025-02-18 23:37:00 · 4985 阅读 · 69 评论 -
【Linux-网络】初识计算机网络 & Socket套接字 & TCP/UDP协议(包含Socket编程实战)
Socket(套接字) 是计算机网络中进程间通信的接口,它提供了一种在网络中不同主机上的进程之间进行数据收发的机制。在网络通信过程中,Socket充当了应用层与传输层之间的桥梁,帮助应用程序与底层网络协议进行交互,使开发者无需关心底层的复杂细节,只需通过Socket提供的接口进行数据传输。原创 2025-01-25 04:21:40 · 6449 阅读 · 80 评论 -
【Linux】线程全解:概念、操作、互斥与同步机制、线程池实现
如果说进程是操作系统资源分配的基本单元,那么线程就是资源调度的基本单元,也是程序执行的基本单元。我们可以把进程看作工厂,资源就是工厂内部的原材料与各种机械设备,而线程就是工厂里的工人。因此如果进程只有一个执行流,那它也是一个线程,称之为主线程,我们在进程中创建线程其实就是在主线程下创建其他线程,线程与进程的关系如下图:说完了线程的概念,我们下面来说一下线程的操作。1.线程池的初始化:线程池通过PoolInit创建多个工作线程,这些线程通过执行thr_start来不断地获取并处理任务。2.任务队列。原创 2025-01-18 15:11:34 · 4641 阅读 · 71 评论 -
【Linux】深入理解进程信号机制:信号的产生、捕获与阻塞
上一章我们谈论了进程间的通信机制,由于不同进程之间有时需要相互协作,所以引入了进程间通信的概念,使得不同的进程可以共享同一份资源,完成数据的传输。进程间通信时是用户层面的通信,为什么这么说呢,因为在这个过程中,用户空间的进程通过特定的通信机制来传递数据或信息,而这些操作并不涉及操作系统的内核执行逻辑,通信的内容也是由用户自定义的。然而系统层面也需要通信,比如一个进程执行异常时,操作系统必须对异常进程进行处理,那么有哪些处理方式呢?原创 2024-12-18 23:52:11 · 4285 阅读 · 140 评论 -
【Linux】进程间通信的秘密通道:IPC机制详解
进程间通信(IPC)是操作系统中不同进程之间交换数据和信息的方式。由于每个进程都有独立的内存空间,无法直接访问其他进程的资源,因此需要通过IPC机制实现数据共享。原创 2024-12-13 23:29:42 · 4272 阅读 · 121 评论 -
【Linux】动态库与静态库:代码复用的利器
在程序开发中,库是代码复用的重要工具,无论是标准的C/C++库,还是为特定功能编写的自定义库,程序员都依赖这些库来节省时间,提高开发效率。在库的实现上,有两种常见的形式——动态库与静态库。这两种形式在代码管理、性能、可维护行等方面都有所区别,本篇文章会一一介绍这两种库的实现方式以及各自的特点。原创 2024-12-07 17:34:58 · 3317 阅读 · 110 评论 -
【Linux】文件操作的艺术——从基础到精通
在 C 语言中,标准库函数提供了较高层次的抽象,使得文件操作变得简便易用。我们通过 fopen() 打开文件,利用 fread() 和 fwrite() 进行读写操作,并通过 fclose() 关闭文件。这些操作的实现背后,实际上是依赖于操作系统提供的低级系统调用,如 open()、read()、write() 和 close()。这些系统调用直接与操作系统内核进行交互,提供了更精细的控制。原创 2024-12-02 14:31:28 · 6679 阅读 · 127 评论 -
【Linux】剧幕中的灵魂更迭:探索Shell下的程序替换
上一篇博客我们讲到了进程的诞生过程:父进程调用fork创建子进程,子进程执行父进程相同的程序。但是很多时候我们希望子进程执行另一个程序,此时就要用到exec函数调用,子进程中调用exec函数之后,该程序就会被调用的程序代替,这就是程序替换:原创 2024-11-28 14:55:30 · 5123 阅读 · 120 评论 -
【Linux】进程的生命之旅——诞生、消逝与守候(fork/exit/wait)
特性wait()waitpid()等待目标等待任意子进程的结束可以指定特定的子进程(通过pid参数)阻塞与非阻塞总是阻塞,直到至少有一个子进程结束可以通过WNOHANG使其非阻塞灵活性较少灵活性,只能等待任何一个子进程更灵活,可以等待指定的子进程或进程组选项没有额外选项支持更多控制选项,如WNOHANG返回值返回一个子进程的 PID返回指定子进程的 PID,或者-1错误错误处理如果没有子进程,返回-1如果没有子进程,返回-1。原创 2024-11-24 14:16:06 · 5671 阅读 · 114 评论 -
【Linux】进程字段、环境变量与进程地址空间
在Linux下,可以使用ps指令显示当前系统运行的进程信息,包含进程状态、资源使用情况等内容ps的-l选项可以显示长格式信息,包括F(标志)、S(状态)、UID、PID等详细字段:原创 2024-11-17 16:29:07 · 3867 阅读 · 85 评论 -
【Linux】详解僵尸进程与孤儿进程(Z僵死状态引发的内存泄漏与处理办法)
本篇篇博客详细讲解了僵尸进程和孤儿进程的产生过程与处理办法。僵尸进程产生于子进程退出后,父进程未调用wait()收集其退出状态,导致进程表中的信息未被清理,从而造成资源泄漏。孤儿进程则是父进程提前结束,子进程在没有父进程的情况下继续执行,操作系统将其交给init进程处理,以确保资源的正常回收。以上就是【详解僵尸进程与孤儿进程】的全部内容,欢迎指正~码文不易,还请多多关注支持,这是我持续创作的最大动力!原创 2024-11-16 21:12:40 · 3633 阅读 · 40 评论 -
【Linux】进程状态(R运行状态、S睡眠状态、D磁盘休眠状态、T停止状态、X死亡状态)
进程的状态会随着操作系统的调度和外部事件的发生而不断地。例如,一个新创建的进程经过初始化后会进入,等待被调度执行;当调度器分配处理器资源给进程时,进程进入;如果进程发起了I/O操作,它可能会进入等待I/O完成;当I/O完成后,它重新回到等待再次执行;当进程执行完毕或被终止时,进程进入。进程状态的合理转换是操作系统正常运行的基础,也是实现多任务并发的关键。下面我们来理解进程的各个运行状态。原创 2024-03-27 22:07:39 · 4498 阅读 · 0 评论 -
【Linux】理解父子进程(系统调用创建进程,fork函数,写时拷贝)
父子进程是操作系统一个重要的概念,特别是在多任务处理和并发编程中,在Linux中,每个进程都有一个唯一的进程ID,并且每个进程都有可能。当一个进程创建了一个新的进程时,新创建的进程就成为了原始进程的子进程。同样用生活中的例子来理解。在一个家庭中(类比一个操作系统中),父母决定做晚饭(做饭就是一个进程),他们分配给孩子一个任务,让大儿子洗菜,小儿子烧水(洗菜和烧水就是两个子进程),父母和孩子之间相互协作,共同完成了这一顿晚饭,这就是父子进程之间和任务的特性。原创 2024-03-27 19:14:54 · 1234 阅读 · 0 评论 -
【Linux】进程的基本概念(进程控制块,ps命令,top命令查看进程)
程序就像是一本菜谱,描述了如何准备一道菜的步骤、所需的食材以及烹饪方法,但它本身并不会做任何事情;而进程则是根据菜谱准备食物的实际过程,它是程序在执行过程中的动态实例。就像你可以同时烹饪多道菜一样,操作系统可以同时执行多个进程,每个进程都在独立地执行它们的指令,拥有自己的资源和状态。原创 2024-03-25 17:57:38 · 1768 阅读 · 0 评论 -
【Linux】调试器-gdb的使用说明(调试器的配置,指令说明,调试过程说明)
在软件开发中,通常会为程序构建两种不同的版本:Debug模式和Release模式。它们之间的区别主要在于优化级别、调试信息、错误检查等方面原创 2024-03-21 11:47:48 · 2375 阅读 · 0 评论 -
【Linux】如何使用git命令行与远程仓库建立连接(以Gitee为例)
私有仓库是指代码仓库的访问权限受到限制,只有授权的用户才能访问其中的代码。私有仓库的所有权和访问权限由仓库的所有者控制,可以决定谁可以访问、修改和管理仓库,以确保代码的安全和保密性。添加该文件的主要目的是避免将不必要的文件提交到代码仓库中,从而保持仓库的清洁和安全。在软件开发中,设置模版指的是创建预定义的文本模版,用于规范化和简化团队成员在创建新的文档、问题等操作。开源仓库是指存放在公共平台上的代码仓库,其代码是公开可见的,任何人都可以查看复制修改仓库中的代码,也可以向仓库提交贡献。此时直接输入":q!原创 2024-03-20 17:29:06 · 2364 阅读 · 1 评论 -
【Linux】项目自动化构建工具-makefile/make
是一个特殊的目标名称,表示后续声明的目标都是伪目标,而不是实际文件。main是目标文件,就是使用make指令所生成的文件,main.o,utils.o是依赖文件,目标文件的形成依赖于这两个文件,通过指定的命令实现构建。text.c是我们想编译运行的源文件,我们在Makefile中已经定义好了构建规则和依赖关系,此时输入。此外,在Makefile中,可以使用‘$@’来表示目标文件,使用‘$^’来表示依赖文件。这里执行指令后,指令是会显示在终端的,如果想隐藏指令,可以在前面加上‘@’原创 2024-03-19 20:11:57 · 1427 阅读 · 0 评论 -
【Linux】编译器-gcc/g++的使用(预处理、编译、汇编、连接)
gcc [选项] 要编译的文件 [选项] [目标文件]原创 2024-03-19 19:10:24 · 1662 阅读 · 0 评论 -
【Linux】文本编辑器Vim(Vim的操作方法、命令集,Vim插件安装配置)
Vim(Vi IMproved)是一款强大的文本编辑器,是Unix系统中经典的Vi编辑器的增强版本。它在功能和灵活性方面超越了传统的Vi,并成为了许多开发者和系统管理员首选的编辑器。:Vim具有不同的工作模式,包括Normal模式、Insert模式、Visual模式等。每个模式下,按键的功能和行为都不相同。这种设计使得编辑过程更高效。:Vim可以通过编辑配置文件(.vimrc)来定制各种行为和快捷键。用户可以根据自己的喜好和需求进行个性化设置,以满足自己的工作习惯。原创 2024-03-09 17:29:18 · 2496 阅读 · 0 评论 -
【Linux】软件包管理器yum(命令行工具rz,sz)
我们手机电脑上的各种软件应用其实就是一个个的可执行程序(及其相关文件和资源的集合),打开应用的过程其实就是执行程序的过程,在执行程序之前,肯定要先对程序进行编译,但是如果每次打开应用都需要进行编译太麻烦了,所以就有了软件包。:rz 是用于接收文件(receive)的命令,当在终端上输入 rz 命令后,会弹出一个文件选择对话框,用于从本地计算机选择要传输的文件。最后一列, base 表示的是 "软件源" 的名称, 类似于 "小米应用商店", "华为应用商店" 这样的概念.整理。原创 2024-03-09 15:29:08 · 3053 阅读 · 1 评论 -
【Linux】权限管理(文件的访问者、类型和访问权限,chmod、chown、chgrp、umask,粘滞位)
在生活中,所有的个人财产都有它们各自的所有权人,非所有权人想要使用其个人财产需要征得所有权人的同意,就好比小时候我们借同桌的一块橡皮,需要征得他的同意才行,不然可能就会产生矛盾[doge]。linux下面的一切文件也是如此,所有文件都有各自的权限,其权限由访问者和访问权限构成。root 就是文件的访问者,访问者有不同类型,所以这里显示了两类访问者。-rw-r--r-- 就是文件的访问权限,下面会解释。目录的可执行权限 (x) 决定了用户是否可以在该目录下执行命令或者进入该目录。原创 2024-03-07 21:15:49 · 2315 阅读 · 0 评论 -
【Linux】常见指令2(more指令、less指令、head指令、tail指令、date指令、cal指令、find指令、grep指令、zip/unzip指令、tar指令、bc指令、uname -r)
more是一个用于逐页显示文本文件内容的命令行工具。它允许用户逐页浏览大型文本文件,以便更容易地查看和阅读文件内容。原创 2024-03-07 10:59:26 · 2195 阅读 · 0 评论 -
【Linux】常见指令1(ls指令、pwd指令、cd指令、touch指令、mkdir指令、rmdir指令、man指令、cp指令、mv指令、cat指令)
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命 令,经常用来备份文件或者目录。2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它 将所给的源文件或目录重命名为给定的目标文件名。:递归处理,将指定目录下的文件与子目录一并处理。原创 2024-03-05 19:44:01 · 1820 阅读 · 0 评论 -
【LINUX】环境搭建(以云服务器为例)
打开链接之后,拉到下面,在姓名邮箱那一栏填写完正确信息之后,选择 “只需xshell” 点击下载之后会在你的邮箱收到下载链接点击之后会自动下载,结束后会自动打开xshell界面。原创 2023-04-17 20:24:09 · 507 阅读 · 4 评论