
Linux
文章平均质量分 90
翼蛇湖-纪宁
大二在读,目标腾讯后端开发,攻克乃还!
展开
-
使用模板方法设计模式封装 socket 套接字并实现Tcp服务器和客户端 简单工厂模式设计
模抽象类定了一个模板方法,这个方法通常包含对具体方法的调用,抽象类还定义了一些抽象方法,这些方法会在模板方法中被调用,但具体的实现由子类来提供(抽象类,也就是父类中,将这些方法都设置为纯虚函数,子类要重写纯虚函数),子类通过继承抽象类并提供抽象方法的实现,从而可以自定义模板方法中的某些步骤,当模板方法被调用时,它会按照定义的顺序依次调用抽象类中的抽象方法和具体方法。模板方法(Template Method)设计模式是一种行为设计模式,它在一个方法中定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。原创 2024-06-24 23:23:22 · 1222 阅读 · 0 评论 -
C++ 网络套接字编程 tcp udp
UDP(用户数据报协议)和TCP(传输控制协议)是两种常用的套接字编程方式。UDP是一种无连接的、不可靠的传输协议。在UDP套接字编程中,数据被分割成数据报,并以尽力而为的方式发送。UDP套接字适用于需要快速传输数据,但对数据传输的可靠性要求不高的场景,如音频、视频、实时游戏等。UDP套接字编程简单,不需要建立连接,能够快速发送和接收数据,但无法保证数据的完整性和顺序性。TCP是一种面向连接的、可靠的传输协议。在TCP套接字编程中,客户端和服务器之间需要建立连接,并通过可靠的字节流传输数据。原创 2024-06-19 11:36:46 · 1229 阅读 · 0 评论 -
【Linux】线程概念及线程互斥
本文介绍了线程的概念、优缺点及异常分析。创建线程、终止线程、等待线程、封装线程库。线程互斥及系统接口,封装线程互斥,实现自动化加锁解锁。 线程安全、死锁原创 2024-04-05 23:09:49 · 1192 阅读 · 2 评论 -
【Linux】信号量与信号
信号量与信号没有任何关系,它们是两个完全不同的概念!信号量维护一个计数器,表示可用资源的数量。信号是一种向目标进程发送通知进程的一种消息机制,本质就是软件,用来模拟中断的行为!信号是进程之间异步通知的一种方式原创 2024-03-25 23:11:45 · 1401 阅读 · 11 评论 -
进程间通信 之 共享内存
共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再,一个进程通过系统调用 shmget 在物理内存中开辟一块空间,并通过页表映射到进程地址空间中,其他的进程也通过调用 shmget,并设置不同参数,就可以实现在物理内存中找到进程 A开辟的空间,并将这块空间通过页表映射到自己的进程地址空间中。自此,这多个进程通过访问自己的进程地址空间,就可以访问这块物理内存中的空间,也就实现了让不同的进程看到同一份代码!那么其他进程是如何做到可以找到进程 A 创建的共享内存的呢?原创 2024-03-19 22:25:35 · 925 阅读 · 1 评论 -
进程间通信 之 管道
管道是Unix中最古老的进程间通信的形式。它是一种基于文件的通信形式,我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”。管道文件是一种纯内存文件,不需要刷新到磁盘。管道只允许单向通信,如果要双向通信的话,需要建立两个管道,“互相读写”!原创 2024-03-19 20:21:29 · 1367 阅读 · 0 评论 -
【Linux】文件系统扩展——软硬链接
Windows 系统中的软件快捷方式就相当于一个软链接 硬链接和原文件都与这个 inode 相对应,删除其中的一个并不会使 inode 变得无效,在 inode 内部设引用计数,表明有几个映射关系,只有当没有文件名和 inode 映射时,才会真正的删除这个文件!从这张图中,可以看出软链接的 inode 和被链接文件的 inode 是不相同的,而硬链接的 inode 与被链接的文件 inode 是相同的。硬链接的 inode 与原文件的 inode 相同,说明硬链接并不是一个独立的文件。原创 2024-03-10 23:12:53 · 431 阅读 · 0 评论 -
【Linux】基础IO
每个操作系统级别的概念,都必须有操作系统级别的数据结构与之对应。我们常说的文件,一般指的是磁盘中的文件,要对文件进行操作,首先应该先将它加载到内存中,文件内容和文件属性都是文件的数据,操作文件,包括对文件内容做操作和对文件属性做操作!当我们要访问一个文件的时候,一般都是通过进程去访问,而文件是存在磁盘中的,所以肯定是进程通过操作次用来打开文件,那么操作系统一定要给进程提供调用文件的接口。原创 2024-03-04 22:31:29 · 1181 阅读 · 0 评论 -
设计一个 shell 命令行程序
自己设计一个 Shell 命令行程序。因为我们在执行的时候是让myshell 产生的子进程在执行命令,而像 cd、export、echo 这种,只有让父进程 bash 自己执行才有效的,这种命令叫内建命令。内建命令就是 bash 自己执行的,类似于自己内部的一个函数,所以需要在进行进程替换前先判断用户输入的命令是否是内建命令,穷举出内建命令并以此比较,如果是某一内建命令就直接执行,如果不是内建命令就进行程序替换!附:进程替换(函数)接口。3、实现进程替换功能。原创 2024-02-24 21:15:29 · 1372 阅读 · 0 评论 -
进程终止与进程等待
Linux 进程终止和进程等待 通过 wait/waitpid 的方式,让父进程对子进程进行资源回收的等待过程。那为什么要进行等待呢?第一,可以解决子进程僵尸问题带来的内存泄漏问题(进程僵尸只有父进程回收才能解决,且不能被杀掉,所以这是目前必须使用进程等待解决的问题);第二,父进程创建子进程的目的,就是让子进程来完成任务,而父进程需要知道子进程任务到底完成的如何,就必须通过等待的方式来获取子进程退出的信息(两个数字:退出码和信号)这个退出信息也许并不是必须的,但是系统需要提供这样的基础功能!原创 2024-02-19 21:29:06 · 1115 阅读 · 0 评论 -
进程地址空间
每一个进程运行之后,都会有一个自己的进程地址空间的存在,即都要在系统层面有自己的页表映射结构。子进程会自动继承父进程的页表,直接浅拷贝继承父进程的页表,当子进程或父进程要改变数据时,操作系统会在物理内存中进行写时拷贝,修改改变数据的进程的页表中虚拟地址对应的物理地址,虚拟地址不受改变!1、一个进程在运行过程中,进程进行各种转换,各种访问,这个进程一定在运行,那么让进程以统一的视角看内存,所以任意一个进程,可以通过地址空间 + 页表的方式,将乱序的内存数据变成有序,分门别类的规划好。,那它到底是什么样的呢?原创 2024-02-18 14:01:03 · 438 阅读 · 1 评论 -
命令行参数和环境变量
环境变量和命令行参数 命令行参数是在用户在命令行中输入命令时,跟随命令一起输入的一些附加信息。这些参数可以用来配置命令的行为或传递一些数据给命令。让同样的程序在不同的命令行参数下运行出不同的结果!写一个程序,在 main 函数中打印出这些参数argc 为参数个数,argv 为命令参数列表。打印结果及分析如下:命令行参数,可以支持各种指令级别的命令行选项的设置。这样,我们就可以理解了,曾经学习的指令和选项之间的关系。原创 2024-02-15 21:37:11 · 839 阅读 · 0 评论 -
进程优先级与进程调度
进程优先级:进程要访问某种资源,每个进程享受资源的先后顺序,那么为什么进程要有优先级呢?在计算机中的CPU资源过少,而进程过多,每个进程都需要通过优先级和排队,进而形成一个公平、有序的环境。在Linux中,有进程有进程优先级(),PRI 是一个数字,范围在,数字越小表示进程的优先级越高!Linux 中默认一个普通进程的优先级是80,并且进程的优先级可以被修改:只能改变进程的 nice 值,而不是直接改变进程的 PRI 进行优先级的调整。那为什么进程优先级的范围只是在 [60,99) 之间呢?原创 2023-12-18 23:27:03 · 1167 阅读 · 0 评论 -
进程概念【linux】
几乎所有的指令,都是程序,加载到内存运行起来后也要变成进程。CPU的主要工作就是在内存中。原创 2023-12-13 20:47:59 · 289 阅读 · 0 评论 -
操作系统(Linux)外壳程序shell 、用户、权限
无论是什么权限,在root账号下都是形同虚设!原创 2023-10-30 20:54:07 · 718 阅读 · 13 评论 -
Linux 基本指令及 Xshell 常用热键操作
大家好,我是纪宁。这篇文章将向大家介绍Linux基本指令及 Xshell 常用的热键操作,文件操作(压缩/解压文件),最后将描述如何在Linux 和Windows之间互传文件。原创 2023-10-11 10:05:50 · 420 阅读 · 2 评论 -
如何在windows电脑上搭建Linux环境(手把手教安装虚拟机软件和使用云服务器)
手把手教学如何搭建Linux环境原创 2023-09-18 22:50:19 · 11635 阅读 · 1 评论