![](https://img-blog.csdnimg.cn/20210725172817396.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
《Linux基础知识》
对于linux的初始总结以及理解
小羊教你来编程
有山川草木,纵横纸上,虫鱼鸟兽,飞动毫端。水到渠成,风来帆速,廿四中书考不难。
展开
-
HTTPS
HTTPS协议详解目录一.什么是HTTPS协议?二.实现安全传输的条件1.身份验证(防止伪装)1)介绍CA证书2)如何查找CA证书2.数据加密(防止监听)1)对称加密2)非对称加密3)混合加密三.HTTPS协议的加密流程目录一.什么是HTTPS协议?HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP.原创 2021-07-06 15:13:33 · 127 阅读 · 1 评论 -
从零开始理解HTTP协议,看完绝对能让你理解 !
HTTP协议解析目录:一.认识HTTP1.HTTP理解2.引入二.HTTP的格式三.首行--http1.请求行(1)请求方法(2)URI(3)URL1> 协议名称2>用户名:密码3>域名4>端口5>资源路径6>查询字符串7>标识(4)协议版本2.响应行(1)协议版本(2)响应状态码(3)状态码描述四.头部--http五.空行--http六.正文--http七.HTTP的优点&缺点八.搭建一个http服务器目录:一.认识HTTP1.HTTP理解 .原创 2021-06-08 17:21:00 · 368 阅读 · 7 评论 -
tcp通信
tcp通信详解目录:一.tcp概念二.通信流程&原理三.接口理解1.创建套接字 socket2.绑定地址 bind3.开始监听 listen4.客户端发送连接请求 connect5.服务端获取新建连接 accept6.收发数据 send&recv7.关闭套接字 close四.代码封装tcp结构体目录:一.tcp概念 tcp也是一种通讯协议, 也是实现客户端和服务端通信的一种协议,只不过这个协议对于安全性的要求高. 二.通信流程&原理三.接口理解1.创建套接字.原创 2021-06-04 20:55:04 · 513 阅读 · 2 评论 -
udp通信
udp通信详解目录:目录:原创 2021-06-03 23:25:13 · 498 阅读 · 4 评论 -
socket (套接字)
socket编程目录:一.socket概念二.udp协议三.tcp协议四.网络通信流程目录:一.socket概念 套接字(socket):就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象.两个网络各自通信连接中的端点是应用程序与网络协议根进行交互的。 二.udp协议 UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供面向事务的简单不可靠信息传送服务。.原创 2021-06-02 20:55:25 · 159 阅读 · 3 评论 -
什么是网络?
网络认识目录:一.网络认识二.IP地址三.端口四.协议1.协议概念2.OSI七层模型 & TCP/IP五层模型五.网络字节序1.种类2.对网络通信的影响1)影响:2)解决办法:3)查看主机是哪种字节序目录:一.网络认识网络就是将几部计算机的主机或网络打印机之类的接口通过网络线或者无线网络技术来实现数据的传输.网络覆盖的范围分为: 局域网.城域网.广域网二.IP地址IP地址是每一台主机的唯一标识,例如:192.168.1.1在网络通信的每一条数据都会含有两个信息=源端IP地.原创 2021-05-09 18:30:50 · 1423 阅读 · 8 评论 -
单例模式--线程安全
单例模式目录:一.概念二.应用场景三.分类1.饿汉模式2.懒汉模式目录:一.概念单例模式属于创建型模式----一种非常典型的设计模式二.应用场景 1.一个类只能实例化一个对象 (单一的访问方式) 2.一份资源只能被加载一次 (类似于计数器,只可加载一次)三.分类(我们这里只对于懒汉模式和饿汉模式进行理解,后期理解到后面三个再对于单例模式补充)1.饿汉模式2.懒汉模式...原创 2021-04-28 17:31:50 · 113 阅读 · 1 评论 -
线程池
线程池目录:一.概念二.原理三.优势四.如何实现工作线程对不同的任务进行不同的处理?五.框架理解六.代码实现目录:一.概念二.原理三.优势线程池中的线程创建之后就不销毁,而是循环取出任务进行处理----1. 避免了频繁进行线程的创建与销毁带来的时间成本 ----2. 线程池中的线程,缓冲区有最大数量限制,避免了峰值压力的风险 四.如何实现工作线程对不同的任务进行不同的处理?答:----1.线程入口函数中,分辨任务类型,调用不同的处理接口----2.其他线程在通过任务队原创 2021-04-23 18:33:55 · 66 阅读 · 0 评论 -
信号量(linux下的操作流程)
信号量目录:一.本质二.接口实现1.定义信号量2.初始化信号量3.P操作4.V操作5.销毁信号量目录:一.本质对于信号量的理解我在之前已经明确的讲解过了,在这里我只是来对于其接口和代码的实现进行详细的讲解!如何简单的理解信号量二.接口实现1.定义信号量2.初始化信号量3.P操作4.V操作5.销毁信号量对于比较简单的接口我就没有仔细的解释,后续会补充相关的代码理解和解释....原创 2021-04-21 20:20:04 · 191 阅读 · 0 评论 -
生产者与消费者模型 (详细理解)
都为原创 2021-04-21 18:20:56 · 139 阅读 · 0 评论 -
线程安全--同步的实现(必看干货!)
同步的实现目录:一.概念二.原理三.接口1.定义条件变量2.初始化条件变量3.让线程阻塞4.唤醒阻塞的线程5.销毁条件变量四.代码实现目录:一.概念通过条件判断实现对资源获取的合理性–也就是利用条件变量 条件变量: pcb等待队列+能够是线程阻塞以及唤醒线程阻塞的接口二.原理三.接口1.定义条件变量2.初始化条件变量3.让线程阻塞4.唤醒阻塞的线程5.销毁条件变量四.代码实现...原创 2021-04-21 11:55:15 · 87 阅读 · 0 评论 -
死锁
死锁目录:一.概述二.死锁产生的原因1.互斥条件2.不可剥夺条件3.请求和保持条件4.环路等待条件三.如何预防死锁四.如何避免死锁目录:一.概述程序运行流程因为某种原因卡死无法在继续运行叫做死锁.二.死锁产生的原因1.互斥条件一个资源同一时间只有一个进程/线程能够访问到 2.不可剥夺条件对于这个线程加的锁,只能这个线程来进行解锁,其他的不行 3.请求和保持条件线程加了A锁后请求B锁,B请求不到,A锁也无法释放 4.环路等待条件线程1加了A锁,请求B锁,线程2加了B锁,请求A锁. .原创 2021-04-17 17:44:59 · 108 阅读 · 0 评论 -
线程安全--互斥的实现(简单的理解互斥锁 ! !)
互斥的实现目录:一.概念二.原理三.接口1.定义互斥锁变量2.初始化互斥锁变量3.在访问临界资源的之前加锁4.在访问临界资源之后解锁5.销毁互斥锁四.代码实现目录:一.概念互斥其实就是线程安全的一部分,主要还是对于线程访问临界资源安全的保护. 互斥: 通过对于临界资源同一时间的唯一访问来保证访问操作的安全性二.原理对于互斥的实现其实底层就是对于互斥锁的使用三.接口1.定义互斥锁变量2.初始化互斥锁变量3.在访问临界资源的之前加锁4.在访问临界资源之后解锁5.销毁互.原创 2021-04-17 17:20:41 · 486 阅读 · 0 评论 -
怎样理解线程的等待和分离 ? ? ? (详细 ! !)
线程的等待和分离目录:一.线程的等待1.概念2.接口3.代码实现二.线程的分离1.线程的分离属性2.接口目录:一.线程的等待1.概念 关于等待的理解,就是等待一个指定的线程退出,获取线程的返回值,回收线程的资源,线程退出后,不会主动释放资源,需要被等待!! 2.接口利用这个接口就完成了对于线程等待的实现.3.代码实现通过这个接口获取到函数的返回值,并切让线程进行等待.二.线程的分离1.线程的分离属性 应用场景: 不关心线程的退出返回值,也不想等待一个线程的退出.2原创 2021-04-17 15:54:44 · 120 阅读 · 0 评论 -
理解每个线程的pcb内部的pid和tgid ? ?
pid/tgid的理解目录:1.概述2.实现代码3.运行结果4.对于tgid的理解目录:1.概述2.实现代码3.运行结果4.对于tgid的理解这篇博客中主要理解tgid的存储方式,以及为什么打印出来的是一个地址.原创 2021-04-15 15:08:04 · 419 阅读 · 0 评论 -
如何创建和退出一个线程 ? ? ? ?(详细 ! ! ! )
创建/退出线程目录:一.创建线程1.原理2.接口3.代码实现二.退出线程目录:一.创建线程1.原理因为在linux中并没有提供创建线程的接口,所以对系统调用接口实现了库函数的封装,才实现了用户态线程控制接口!2.接口3.代码实现可能出现的错误:正常运行:二.退出线程关于退出线程比较简单,我就不做过多的解释,具体的实现在上面的代码也有体现,大家看看就好了....原创 2021-04-14 18:43:46 · 114 阅读 · 0 评论 -
多进程和多线程的差别(优缺点)
多进程/多线程目录:一.多线程的优点二.多进程的优点目录:对于问多进程和多线程之间的差别的问题,其实我们只要表明我们所知道的多进程和多线程各自的优点就可以了.一.多线程的优点1. 线程间通信会更加灵活 (包括进程间通信在内还可以使用全变量和函数传参来实现)这里主要因为的是关于线程具体的虚拟空间地址的指向是同一块的,线程的创建并不是像创建进程一样全部复制,并且开辟对应的虚拟地址空间,线程是依赖于第一个开辟的虚拟地址,自己没有单独在创建虚拟地址空间的.2. 线程的创建和销毁成本比较低 .原创 2021-04-14 16:29:29 · 3584 阅读 · 0 评论 -
怎样才能简单的理解线程 ? ? ?(干货 ! ! ! !)
什么才是线程?一.线程的引入(重点 ! ! !)知识点:线程间的共享或独有对于多线程的理解我们下面分为四个方面来进行引入一.线程的引入(重点 ! ! !) 我们怎样来理解线程?? 在之前我们将pcb理解为了一个进程,而在这一步,我们会将最原始的这个理论进行打破,更新我们对进程和线程的理解,我通过下面一个简单的问题进行引入:知识点:线程间的共享或独有...原创 2021-04-14 16:06:23 · 85 阅读 · 0 评论 -
怎样理解SIGCHLD和SIGPIPE两种信号 ? ? ?
SIGCHLD&SIGPIPE两种信号:SIGCHLD信号SIGPIPE信号两种信号:SIGCHLD信号----一个子进程退出后,父进程发送的子进程状态改变信号重点理解:因为我们在写代码的时候,如果子进程一直都没有运行结束的话,如果按照我们之前说的让父进程一直等待子进程退出,那等待的时间有点长,而且会影响其他进程的运行,所以我们就将进程等待封装在另外一个函数的内部,当发现有子进程退出的时候,调用函数进行退出就可以了SIGPIPE信号----管道的所有读端发生了关闭,则write触发.原创 2021-04-10 20:06:00 · 195 阅读 · 0 评论 -
教你简单理解进程信号的阻塞 ! ! !
进程信号的阻塞目录:一.原理二.具体操作三.运行步骤四.对应接口目录:一.原理 信号的阻塞----阻止信号被递达当一个信号被阻塞的时候,依然会收到这个信号会注册,但是暂时不会被处理二.具体操作三.运行步骤四.对应接口对于下面的接口比较简单,大家直接在shell中进行运用就可以理解了....原创 2021-04-10 18:50:00 · 170 阅读 · 0 评论 -
怎样理解进程信号的处理 ? ?(超详细! ! !)
进程信号的处理目录:一.信号处理的概念二.信号的处理方式1.默认处理方式2.忽略处理方式3.自定义处理方式目录:一.信号处理的概念信号的处理也叫作信号的递达,实际上就是打断了进程当前的操作,去执行进程的对应信号处理函数二.信号的处理方式在处理完后会将位图上的数据抹去.1.默认处理方式----按照默认的方式处理,不添加其他的数据2.忽略处理方式----大多数信号都可使用这种方式进行处理,但是SIGKILL和SIGSTOP这两个信号不能被忽略,按照默认的方式进行处理.3.自定义处理方式-.原创 2021-04-10 17:03:16 · 255 阅读 · 0 评论 -
如何实现一个进程信号的注册和注销??
进程信号/注册/注销目录:一.进程信号的注册二.进程信号的注销目录:一.进程信号的注册在进程中注册一个信号让进程知道自己收到了某个信号----修改pending位图的,添加一个信号信息节点让所在的进程信号进入到对应的位图就是对于进程信号的的注册二.进程信号的注销注销: 将信号信息进程从pcb中移除 ----修改位图,删除节点...原创 2021-04-10 16:14:28 · 135 阅读 · 0 评论 -
进程信号的产生如何实现 ? ?(具体 ! ! !)
信号的产生目录:硬件产生软件产生目录:硬件产生就像我们平时对于电脑内部直接通过键盘输入的这三个指令:软件产生原创 2021-04-10 14:25:52 · 89 阅读 · 0 评论 -
什么是进程信号 ? ?(概述 ! ! !)
进程信号简介目录:一.概念二.种类目录:一.概念信号就相当于一个软件的中断----通知进程发生某个事情打断进程的当前操作,去处理这件事情二.种类通过指令 kill -l 打印出所有的信号:这就是进程信号的一些基础的概念理解,关于声明周期/阻塞之类的后续单独在博客内部介绍....原创 2021-04-09 11:30:30 · 130 阅读 · 0 评论 -
教你简单的来理解信号量 ! ! !
信号量目录一.信号量作用1.互斥2.同步二.信号量本质三.信号量的操作1.同步的实现2.互斥的实现知识点:ipc资源管理器目录一.信号量作用用于实现进程间的同步和互斥1.互斥通过保证对临界资源(就是内核中用于进程间通信的结构)同意时间的唯一访问保证访问操作的安全性.2.同步通过条件判断的方式来实现对于资源访问的有序及合理.这里类似于内核中利用pcb对多个进程的同时运行的操作,记录对应的位置来实现点击此处理解pcb二.信号量本质内核中的(system V标准信号量) 的计数器+pcb等待原创 2021-04-08 15:39:13 · 257 阅读 · 0 评论 -
怎样理解linux中的消息队列 ? ?(详细 ! ! !)
消息队列理解本质原理及步骤特性本质内核中的一个优先级队列原理及步骤特性1.自带同步和互斥2.生命周期随内核对于消息队列的理解我们只要理解其中的基本原理就可以,因为消息队列的实现完全可以用共享内存来实现....原创 2021-04-08 14:30:19 · 138 阅读 · 0 评论 -
怎样实现共享内存--进程间通信? ?干货 ! ! ! !
内存共享目录:一.概念二.原理三.操作步骤1.创建或打开共享内存2.在进程中与共享内存建立映射关系3.相关内存得操作4.解除进程与共享内存的映射关系5.释放共享内存目录:一.概念 内存共享是效率最高的进程间通信方式 怎样解释内存共享是最有效率的??举例,在管道的操作中始终都要将对应的数据写入的内核中的缓冲区部分,我们都要从其中发生两次拷贝,而对于内存共享只要找到对应在物理地址中的标识符就可以进行访问,不需要反复的拷贝,节省了两个步骤,所以内存共享被称为最高效率的进程间通信方式.二.原理原创 2021-04-02 16:55:35 · 349 阅读 · 0 评论 -
对于管道相关知识的总结/匿名/命名
管道总结目录:本质分类1.匿名管道2.命名管道特性1.半双工通信2.提供字节流传输服务3.自带同步与互斥4.管道生命周期随进程目录:本质内核中的缓冲区( 管道就是缓冲区,用来连接的是文件描述符 )分类1.匿名管道只能用于亲缘关系的进程间通信:----详细解释连接2.命名管道可用于同一个主机任意进程间通信:----详细解释连接特性1.半双工通信可以选择方向的单向通信2.提供字节流传输服务可靠的.有序的.基于连接的一种流式传输基于连接的:----1.所有的读端关闭,write原创 2021-04-02 13:32:36 · 211 阅读 · 2 评论 -
怎样理解命名管道 ? ? ?-进程间通信(干货 ! ! !)
命名管道目录:一.概念二.操作命令三.代码操作四.特性五.代码具体实现目录:一.概念命名管道的缓冲区具有标识符,能够被其他的进程找到,因此可以用于同一个主机的任意间进程的通信!二.操作命令三.代码操作四.特性1.如果命名管道以只读的方式打开,会堵塞直到这个管道被写的方式打开2.如果命名空间以只写的方式打开,会堵塞到直到这个管道被读的方式打开缺一不可!!!五.代码具体实现对于命名管道的理解,我们要写两个代码才能对其进行运行,否则它就会堵塞,直到另外一个方式开始运行.只有这两个原创 2021-04-02 12:52:44 · 123 阅读 · 0 评论 -
怎样理解僵尸进程/孤儿进程/守护进程? ? ?(一定要看 ! !)
特殊的三种进程I僵尸进程II孤儿进程III精灵进程/守护进程对于进程有三种比较特别的形式,下面具体讲解:I僵尸进程子进程先于父进程退出,但是父进程没有关注到其退出,因此系统不会完全释放子进程的资源,故而子进程进入僵尸状态如下图代码:运行代码进入进程然后我们可以详细的挑选输出有关这个文件的进程危害:资源泄露—pcb所占的内存无法收回—用户创建是有限的解决方案:处理:退出父程序避免:进程等待II孤儿进程父进程先于子进程退出,子进程成为孤儿进程,运行在后台,父进程变为1号进程.原创 2021-04-01 18:44:08 · 174 阅读 · 0 评论 -
匿名管道在进程间通信是怎样实现的??(详细 ! ! !)
进程间通信-管道目录:1.特性2.本质3.分类1)匿名管道2)命名管道目录:1.特性管道是用于传输数据的 属于半双工通信–可以选择方向的单向通信 2.本质管道就是内核中的一块缓冲区3.分类管道分为匿名管道和命名管道1)匿名管道2)命名管道...原创 2021-04-01 18:34:20 · 612 阅读 · 0 评论 -
什么是进程间通信?
什么是进程间通信?附:进程访问方式链接:点击此处通信方式有下面四种方法:进程间通信的方式:其实进程间通信就是调用了第三方内存进程处理的.大家理解就好.原创 2021-04-01 14:41:05 · 107 阅读 · 0 评论 -
什么是动态库?什么又是静态库?(如何生成/如何使用 ! ! !)
动态库/静态库目录gcc/g++的链接方式1.动态链接2.静态链接库的优缺点1.动态库的优点:2. 静态库的优点:库的生成库的使用目录gcc/g++的链接方式对于我们编译一段程序经常会需要调用一个函数库(就是存放了很多很多的代码),我们需要将自己写的代码和库进行连接,这样的链接有两种:动态和静态链接(默认动态)下面我们来详细的介绍1.动态链接2.静态链接既然我们大概的简述了两个库,下面我们来总结一下优缺点.库的优缺点1.动态库的优点: 1.共享2.代码冗余小3.便于代码模块的.原创 2021-04-01 12:59:25 · 1771 阅读 · 1 评论 -
怎样在自己写的shell中添加重定向原理 ?(详细 ! ! ! ! !)
shell实现重定向原理前提:代码的实现:实现步骤1. 在步骤键盘输入的时候查看是否有重定向的符号2.对子进程标准输出进行重定向或文件的信息不会随着程序的替换被消失前提:之前我写了一篇博客简单介绍了重定向的基本原理,大家先了解重定向的基本概念:重定义基本概念只要你理解了重定向的基本原理,剩下的就好解决多了,只要将之前写好的xshell中加上重定向的操作就好了.实现简单xshell链接代码的实现:我先将代码给出,然后对于代码的内容进行解释,这样比较直观一点.#include <stdio.h原创 2021-03-31 19:23:34 · 201 阅读 · 0 评论 -
什么是缓冲区?(详细!!!!!干货!!!!!)
缓冲区原创 2021-03-27 21:53:14 · 3611 阅读 · 0 评论 -
文件流指针和文件描述符之间的关系(干货!!!!!)
文件描述符的文件流指针的具体区别主要理解两者之间的区别,其实就是和封装有关的,大家具体看其中的内容.原创 2021-03-27 20:46:38 · 149 阅读 · 0 评论 -
对于文件描述符的理解(简单易懂!!!)
文件描述符我们在之前的时候讲过什么是进程,讲到pcb哪里的时候算是对于文件描述符的一个引入,让我们来具体的解释一下,要看之前的点击此处 这里的对应的0 1 2 3 这个结构体里面的下标就叫做文件描述符 ...原创 2021-03-27 19:57:11 · 155 阅读 · 0 评论 -
教你简单的理解-重定向原理(详细!!!!!干货!!!!!)
重定向原理一.我们来先介绍程序的空间内运行的加载方式:二. 函数介绍三.重定向实现四.具体语句解释总结看到这个概念,很多人都不明白重定向原理到底是什么?一.我们来先介绍程序的空间内运行的加载方式:二. 函数介绍dup2函数:将其中对应的程序文件进行交换 int dup2(int oldfd, int newfd); int oldfd : 需要替换的对应下标int newfd : 被替换的对应下标三.重定向实现既然我们已经介绍了这个函数,下面我们就通过代码看一看.四.具体语句.原创 2021-03-27 15:13:50 · 1359 阅读 · 0 评论 -
对于系统调用IO接口的具体理解(详细!!!!!)
系统调用IO接口目录:1.open2.write3.read4.lseek5.close目录:1.open这里是一个打开文件的操作,且对于被flags的操作我们可以通过或的方式对多个操作进行叠加 int open(const char* pathname,int flags,mode_t mode); 举例:int fd=int open("./test";O_RDWR;0777); 2.write ssize_t write(int fd,const void *buf,.原创 2021-03-26 11:52:19 · 170 阅读 · 0 评论 -
关于IO库函数接口的讲解(详细!!!)
这里写目录标题原创 2021-03-24 22:51:34 · 210 阅读 · 0 评论