自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 Linux进程间通信

管道是Unix中最古老的进程间通信的形式。我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”统计我们当前使用云服务器上的登录用户个数who命令用于查看当前云服务器的登录用户(一行显示一个用户),wc -l用于统计当前的行数。

2023-09-11 13:40:00 175

原创 Linux软硬链接/动静态库

inode编号,其实就是一个“指针”的概念,本质就是该文件inode属性中的一个计数器(count),标识有几个文件名和我的inode建立了映射关系。总而言之,就是有几个文件名指向我的inode(文件本身)。为什么创建普通文件,硬链接数默认是1?因为普通文件名本身就和自己的inode存在映射关系,只有1个。为什么目录硬链接数是2?除了自身之外,目录中有一个隐藏的“·”指向当前目录。

2023-08-24 13:08:03 479 1

原创 Linux缓冲区/磁盘/inode

解耦合是指将两个或多个系统、组件或模块之间的紧密关联度降低,使它们能够独立演进,互不影响。在软件开发中,解耦合是一种设计原则,旨在减少系统各组件之间的依赖关系,从而提高系统的可维护性、灵活性和扩展性。解耦合的目的是降低系统中各组件之间的相互依赖程度,使其能够独立进行修改、更新或替换,而不会对其他组件产生影响。当系统中的组件高度耦合时,对一个组件的修改可能会引发对其他组件的连锁反应,导致系统的不稳定和难以维护。而解耦合的设计可以使各组件更加独立,降低系统的复杂性,提高系统的灵活性和可扩展性。

2023-08-22 15:57:20 286 1

原创 Linux基础IO

/用于处理文件已经存在的情况//用于处理文件比存在的情况pathname: 要打开或创建的目标文件flags: 打开文件时,可以传入多个参数选项,用下面的一个或者多个常量进行“或”运算,构成flags。//宏标记位参数:O_RDONLY: 只读打开 O_WRONLY: 只写打开 O_RDWR : 读,写打开//这三个常量,必须指定一个且只能指定一个O_CREAT : 若文件不存在,则创建它。需要使用mode选项,来指明新文件的访问权限。

2023-08-17 15:28:56 125 1

原创 Linux进程控制(进程创建、进程终止、进程等待、进程替换)

变成z状态之后呢,然后20秒过后,父进程一醒来,父进程会立马执行这里的位置,它就会把对应的子进程回收掉,所以我们就又会看到z状态就变没了。那么成功的时候,我也可以看一下它等待成功时的返回值。是因为子进程的内核数据结构基本没变,只是重新建立了一下虚拟到物理地址之间的一种映射关系,那么它的内核对应的数据结构没有发生任何变化,包括子进程的pid都不变,子进程的pid不变,那么也就意味着它压根就没有创建新的子进程或者新的进程,它依旧是老的进程,只不过让新的程序执行了不同的让新的进程执行了不同的程序,这就叫做。

2023-08-09 10:43:19 489 1

原创 Linux进程地址空间

内存会分为几个区域:栈区、堆区、全局/静态区、代码区、字符常量区 …如下空间布局图,请问这是物理内存吗?—— 不是,是进程地址空间。进程地址空间不是物理内存!进程地址空间,会在进程的整个生命周期内一直存在,直到进程退出!这也就解释了为什么全局/静态变量的生命周期是整个程序,因为全局/静态变量是随着进程一直存在的。

2023-08-03 14:20:00 52

原创 Linux中的环境变量

getenv函数同样可以来获取环境变量的内容,如果想要获取某一个环境变量的内容的话应该使用getenv函数,而env数组是给子进程使用的子进程是一个笼统的概念,我们可能会在子进程中使用各种各样的功能,所以环境变量的每个值可能都要得到,所以就会有这个数组方便子进程使用环境变量,我们之前说环境变量具有全局属性在任意的进程中都能使用,它之所以有全局属性的原因是在创建子进程的时候会继承环境变量,那子进程是如何继承环境变量的呢?这样定制后,就可以避免频繁的启动位于shell搜索的路径之外的程序了。

2023-07-29 21:29:19 4752

原创 Linux进程概念(二)

僵尸进程的退出结果会写在PCB中,一个进程退出了,它的代码和数据会被释放,但是它的PCB是不会被释放,如果父进程不回收这块资源,那么会造成系统的内存泄漏。在该状态下的进程,无法被操作系统杀掉,只能通过断电或者进程自己醒来的方式中断深度睡眠状态。硬件的速度较慢,但是大量的进程需要访问硬件,势必会产生较多的阻塞进程,这些阻塞进程的代码和数据在短期内不会被执行,如果全部存在于内存中将会导致内存占用。因为进程在退出的时候,不会立即释放该进程对应的资源,会保存一段时间,让父进程或操作系统来读取子进程的返回代码。

2023-07-24 21:53:46 62

原创 Linux进程概念(一)

fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:   1)在父进程中,fork返回新创建子进程的进程ID;fork只拷贝下一个要执行的代码到新的进程。其实就相当于链表,进程形成了链表,父进程的fork函数返回的值指向子进程的进程id, 因为子进程没有子进程,所以其fork函数返回的值为0 .系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

2023-07-18 18:55:35 95 1

原创 Linux权限

user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群 体(group)-c : 若该档案拥有者确实已经更改,才显示其更改动作-f : 若该档案拥有者无法被更改也不要显示错误讯息-h : 只对于连结 (link)进行变更,而非该 link 真正指向的档案-v : 显示拥有者变更的详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者 变更(即以递回的方式逐个变更)–help : 显示辅助说明–version : 显示版本。文件内容,是否可以查看,由文件自己的权限决定)

2023-07-04 19:34:29 54

原创 算法基础(2)

大数运算(加减乘除)

2023-03-25 21:34:39 45

原创 基础算法(3)

/存储所有带离散化的值。先把第k位移到最后一位 n>>k。一. n的二进制表示中第k位是几。代码模板:求二进制中1的个数。二分求出x对应离散化的值。将所有存在交集的区间合并。看个位是几 x&1。

2023-03-25 21:28:08 48

原创 基础算法(1)

每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边,然后在递归。(1)确定分界点 取q[L] 或者q[(L+R)/2]或者q[R]或随机。如果q[i] > x, 把x放到b[];如果q[i]

2023-03-14 22:59:56 82 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除