
Linux
文章平均质量分 93
Linux系统
炫酷的伊莉娜
C/C++领域新星创作者、阿里云专家博主、入围2023年博客之星。大学本科在读,计算机科学与技术专业,致力于C/C++方向的学习。一步一个脚印,查漏补缺,努力提升自己,记录学习过程。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Linux 网络】高级 IO -- 详解
Reactor反应器模式,也被称为分发者模式或通知者模式,是一种将就绪事件派发给对应服务处理程序的事件设计模式。基于多路转接方案,当事件就绪的时候,采用回调的方式,进行业务处理的模式就被称为反应堆模式(Reactor)。上述代码中的 TcpServer 就是一个反应堆,其中一个个 Connection 对象就称为事件。文件描述符独立的缓冲区回调方法回指向反应堆的指针反应堆中有一个事件派发函数,当epoll中的某个事件就绪,事件派发函数回调用此事件的回调函数。原创 2024-06-03 09:09:49 · 1915 阅读 · 4 评论 -
【Linux 网络】网络基础(三)(其他重要协议或技术:DNS、ICMP、NAT)
主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称,例如:。域名使用 . 来连接com一级域名,表示这是一个企业域名。同级的还有.net(网络提供商),.org开源组织或非盈利组织)等。baidu二级域名,公司名。www:只是一种习惯用法。之前人们在使用域名时,往往命名成类似于 ftp.xxx.xxx/www.xxx.xxx 这样的格式来表示主机支持的协议。原创 2024-06-01 09:20:40 · 1887 阅读 · 14 评论 -
【Linux 网络】网络基础(三)(数据链路层协议:以太网协议、ARP 协议)
两个不同局域网的主机传递数据并不是直接传递的,而是通过路由器 “一跳一跳” 的传递过去。跨网络传输的本质:由无数个局域网(子网)转发的结果。所以,要理解数据跨网络转发原理就要先理解一个局域网中数据是如何转发的,它就是。在同一个内的两太主机是可以的。举例:在局域网通信就好比如,老师上课的时候喊张三的名字,所有人都能听到,只不过分析发现老师喊的不是自己就忽略掉,而只有张三会处理这个老师发出来的这个消息,那么老师和张三的通信就可以看作是 1 对 1 的直接通信。原创 2024-05-27 21:21:22 · 2193 阅读 · 7 评论 -
【Linux 网络】网络基础(三)(网络层协议:IP 协议)
遍历路由表。目的 IP & 子网掩码,找到要去的目标网络,没找到就走默认网关。通过 Iface 发送。注意:IP 没有解决设备转发的具体功能,IP 提供的是转发的策略,核心不是转发,而是路径选择。原创 2024-05-23 16:25:26 · 2094 阅读 · 10 评论 -
【Linux 网络】网络基础(二)(传输层协议:UDP、TCP)
当出现丢包情况的时候,发送方是不会知道究竟是数据段发送的时候丢包了,还是确认应答的时候丢包,所以发送方只能进行超时重传。如果是第二种丢包情况,接收方就可能会收到一份同样的数据。因为重复的报文也是不可靠的一种,所以主机 B 需要进行去重(通过序号)。因为需要超时重传,所以数据发送出去后不会立即清除,而是保留一段时间,直到收到该数据的响应报文后,发送缓冲区中的这部分数据才可以被删除或覆盖。原创 2024-05-17 19:06:39 · 1582 阅读 · 0 评论 -
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
网络版计算器例如,我们需要实现一个服务器版的加法器。我们需要客户端把要计算的两个加数发过去,然后由服务器进行计算,最后再把结果返回给客户端。(1)约定方案A. 约定方案一客户端发送一个形如 "1+1" 的字符串。这个字符串中有两个操作数,都是整形。两个数字之间会有一个字符是运算符,运算符只能是 +。数字和运算符之间没有空格。... ...B. 约定方案二定义结构体来表示我们需要交互的信息。原创 2024-05-15 20:00:19 · 1502 阅读 · 9 评论 -
【Linux 系统】多线程(生产者消费者模型、线程池、STL+智能指针与线程安全、读者写者问题)-- 详解
如图,在生活中,学生就是消费者角色,工厂是真正的生产者角色,那么超市是什么呢?为什么需要超市?超市是交易场所。原创 2024-05-13 18:37:39 · 1390 阅读 · 7 评论 -
【Linux】轻量级应用服务器如何开放端口 -- 详解
telnet [云服务器的公网ip] [port]Windows - cmd 窗口。再次重复步骤一进行测试。原创 2024-05-12 20:57:49 · 608 阅读 · 3 评论 -
【Linux 网络】网络编程套接字 -- 详解
对比 UDP 服务器,TCP 服务器多了获取新链接和监听的操作,而因为 TCP 是面向字节流的,所以接收和发送数据都是 IO 操作,也就是文件操作。1、TCP和UDP对比可靠传输 VS 不可靠传输有连接 VS 无连接字节流 VS 数据报。原创 2024-05-12 20:57:21 · 2085 阅读 · 9 评论 -
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解
在计算机网络通信中,报头(Header)是一部分数据包的固定结构,它包含了关于该数据包的元信息和控制信息。报头位于数据包的前部,用于标识和管理数据包的传输。报头通常由多个字段组成,每个字段用于存储特定类型的信息。下面是一些常见的报头字段及其功能:目标地址字段:指示接收数据包的目标设备或主机的地址。这个地址可以是物理地址(如:MAC 地址)或逻辑地址(如:IP 地址)。源地址字段:标识发送数据包的源设备或主机的地址。原创 2024-05-05 17:23:42 · 2493 阅读 · 9 评论 -
【Linux 系统】多线程(线程控制、线程互斥与同步、互斥量与条件变量)-- 详解
输出型参数,返回线程 ID。attr:设置线程的属性,attr为NULL表示使用默认属性。想让线程执行的任务,它是一个返回值 void*,参数 void* 的一个函数指针。回调函数的参数,若线程创建成功,在执行 start_routine 时,会把 arg 传入 start_routine。thread:线程ID。value_ptr:它指向一个指针,后者指向线程的返回值。调用该函数的线程将挂起等待,直到id为thread的线程终止。thread线程以不同的方法终止。原创 2024-05-01 11:39:03 · 1849 阅读 · 12 评论 -
【Linux 系统】进程信号 -- 详解
kill 命令是一个系统接口,它是调用kill 函数实现的,可以给一个指定的进程发送指定的信号。可以给当前进程发送指定的信号(自己给自己发信号)。kill 和 raise 两个函数都是成功返回 0,错误返回-1。(3)abort 函数使当前进程接收到信号而异常终止,通常用来终止进程,就像 exit函数一样,abort函数总是会成功的,所以没有返回值。注意。原创 2024-04-28 11:43:43 · 1473 阅读 · 9 评论 -
【Linux 系统】进程间通信(共享内存、消息队列、信号量)
共享内存的生命周期随 OS。共享内存不提供任何同步与互斥的操作,双方彼此独立。共享内存是进程间通信中速度最快的。相比之下,管道就很慢了,它需要写端把数据写到管道,读端再从管道读,和管道的交互至少需要两次拷贝。还不包括如果写端的数据是从 stdin 中来的,那么就要先写到用户层缓冲区。共享内存没有进行同步与互斥。为什么创建共享内存的 SIZE 要设置成 4kb 的倍数?原创 2024-04-26 17:36:11 · 2790 阅读 · 5 评论 -
【Linux 系统】进程间通信(匿名管道 & 命名管道)-- 详解
也可以说是 cat 从管道中把数据读取出来,这就完成了两个进程之间的通信。原创 2024-04-19 13:31:17 · 2200 阅读 · 6 评论 -
【Linux 系统】进程控制 -- 详解
如果子进程已经退出,调用 wait / waitpid 时,wait / waitpid 会立即返回,并且释放资源,获得子进程退出信息。如果在任意时刻调用 wait / waitpid,子进程存在且正常运行,则进程可能阻塞。如果不存在该子进程,则立即出错返回。思考:什么是进程替换?通过 exec* 函数,把磁盘中的其它程序(代码+数据)加载到内存中,替换当前进程的代码和数据,让页表重新构建映射关系,这期间不会创建新的进程。思考:为什么要进程替换?原创 2024-03-21 12:50:18 · 2052 阅读 · 7 评论 -
【Linux 系统】基础 IO(动静态库)-- 详解
主要是为了提高程序开发的效率和程序的健壮性。当别人把功能都实现了,然后我们再基于别人的代码去做二次开发,那么效率当然就提高了。其次,这里基于的别人当然不是随便找的一个人,而特指的是顶尖的工程师,也就是说如果我们的代码出了问题,一般不会去怀疑是别人的库的问题,这也就增加了代码的健壮性。原创 2024-03-20 08:11:06 · 1428 阅读 · 9 评论 -
【Linux 系统】基础 IO(文件系统 & inode & 软硬链接)-- 详解
我们一直都在说打开的文件,磁盘中包含了上百万个文件,肯定不可能都是以打开的方式存在。其实文件包含打开的文件和普通的未打开的文件,下面重点谈谈未打开的文件。我们知道打开的文件是通过操作系统被进程打开,一旦打开,操作系统就要维护多个文件,所以它是需要被操作系统管理的。也就是说这种方式,磁盘上和内存上都有这个文件,它们不是完全一样的,更强调的是更强调的是,它们是通过缓冲区关联的;而普通的未打开的文件在磁盘上,未被加载到内存中,它当然也要被管理;其中。原创 2024-03-18 11:57:08 · 1858 阅读 · 10 评论 -
【Linux】基础 IO(文件描述符)-- 详解
oldfd。原创 2024-03-17 19:44:16 · 2607 阅读 · 10 评论 -
【Linux】程序地址空间 -- 详解 & Linux 2.6 内核进程调度队列 -- 了解
地址空间究竟是什么?地址空间的本质:操作系统让进程看待物理内存的方式,这是抽象出来的一个概念。地址空间是内核中的一种数据结构,即结构体。由 OS 给每个进程创建,这样每个进程都认为自己独占系统内存资源。划分区域的本质:把线性的地址空间划分成了一个个的区域,通过设置结构体内的 start 和 end 的值来表示区域的起始和结束。(比如栈区和堆区的增长)为什么要进行区域划分呢?可以通过 [start, end] 进行初步判断访问某个虚拟地址时,是否越界访问了。原创 2024-02-17 16:32:14 · 1571 阅读 · 6 评论 -
【Linux】环境变量及相关指令
name:环境变量的名称。返回值:环境变量的内容。// 获取环境变量// 更改或添加环境变量命令行参数可以让同一个命令,通过带上不同的选项表现出不同的功能和作用。比如:ls -l、ls -l -a、ls -l -a -i。这就是命令行参数的意义。我们平常在 VS 中写代码,都知道程序是从 main 函数开始执行,那是谁调用的 main 函数呢?原创 2024-02-15 14:38:30 · 1528 阅读 · 6 评论 -
【Linux】进程概念(冯诺依曼体系结构、操作系统、进程)-- 详解
操作系统能不能一次运行多个程序呢?可以。因为运行的程序有很多,所以 OS 需要将这些运行的程序管理起来。这些正在运行的程序称之为进程。如何管理进程呢?先描述,再组织。操作系统会创建一个描述和控制该进程的结构体。这个结构体称之为进程控制块PCB,Processing Control Block),里面包含了该进程几乎所有的属性信息,同时通过进程控制块也可以找到该进程的代码和数据。在 Linux 中,进程控制块就是 struct task_struct 结构体。原创 2024-02-13 13:15:31 · 2026 阅读 · 7 评论 -
【Linux】Linux开发工具(yum、gdb、git)详解
在 Linux 下安装软件,通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。但这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成在 Windows 上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装。软件包和软件包管理器,就好比 "App" 和 “应用商店” 这样的关系。yum(Yellow dog Updater, Modified) 是 Linux 下非常常用的一种包管理器。主要应用在 Fedora,RedHat,原创 2024-02-08 11:40:08 · 2379 阅读 · 3 评论 -
【Linux】Linux 开发工具(vim、gcc/g++、make/Makefile)+【小程序:进度条】-- 详解
以后当遇到的项目变复杂了,文件多了,不用直接写 gcc 命令了,而是用 make/makefile 自动化构建项目。原创 2024-02-03 23:51:44 · 1894 阅读 · 6 评论 -
【Linux】Linux权限的概念 -- 详解
Linux 下有两种用户:超级用户(root):可以在 Linux 系统下做任何事情,不受限制。普通用户:在 Linux 下做有限的事情。的命令提示符是的命令提示符是。原创 2024-01-29 12:49:35 · 1875 阅读 · 12 评论 -
【Linux】Shell 命令以及运行原理
张三得知了这个消息,非常不甘心,就让王婆帮他继续去说,王婆又去了,但是当王婆要进如花家的门时,她看到了小花竟和李四正手拉手,双方家长也见了面,王婆看到这就知道张三的事铁定成不了了,为了防止张三做出过激行为,王婆就直接拒绝了张三的请求。张三看上了她,但是又不好意思直接去向她表白,于是张三就让家人找媒婆去帮他提亲,所有的事情张三都直接跟媒婆沟通,由媒婆(Shell)转达他的意思给如花,而家人找到的媒婆她姓王,所以大家都叫它王婆(bash),王婆就对应我们常使用的 bash。同时,将核心的处理结果翻译给使用者。原创 2024-01-22 11:49:26 · 2062 阅读 · 15 评论 -
【Linux 系统】Linux 下基本指令 -- 详解
l指令无论是什么命令,用于什么用途,在 Linux 中,命令有其通用的格式:command:命令本身。-options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节。parameter[可选,非必填]命令的参数,多数用于命令的指向目标等。语法中的[ ],表示可选的意思。原创 2024-01-01 08:59:46 · 6879 阅读 · 9 评论 -
【Linux】初识云服务器 -- 使用 XShell 远程登录 Linux
是一款企业级后台操作系统,命令行方式交互,开源。搭建属于自己的 Linux 服务器:我是直接选择购买的腾讯云轻量级服务器(CentOS 7.6),不贵又相对方便,可以直接上手使用,不需要去安装虚拟机。原创 2023-12-04 19:50:33 · 2687 阅读 · 16 评论