
Linux操作系统
文章平均质量分 90
包括Linux指令,Linux操作系统和基础网络
ice_玖闻于世丶
寻求一份C/C++/iOS 研发offer
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
IO模型(阻塞IO,非阻塞IO,信号驱动IO,异步IO,多路转接IO)
一、五种典型的IO模型阻塞IO、非阻塞IO、信号驱动IO、异步IO、多路转接模型。IO的过程:发起IO调用,等待IO条件就绪,然后将数据拷贝到缓冲区中进行处理——等待/拷贝。1. 阻塞IO:为了完成IO,发起IO调用,此时若不具备调用条件,则一直等待,直到条件满足,完成IO调用。流程很简单,一个IO完毕后才能进行下一个IO调用,对于资源未能完全充分利用,大部分时间处于等待状态。2.非堵塞IO:为了完成IO,发起调用,若当前不具备IO条件,则立即报错返回。(通常返回进行其他操作后再原创 2020-08-05 18:03:34 · 367 阅读 · 0 评论 -
DNS域名解析流程及ICMP、NAT技术。
一、DNS域名解析(一)DNS域名介绍:DNS:域名系统–用于进行域名解析,通过域名获取IP地址的系统。域名:www.baidu.com—服务器名称。域名解析服务器:采用分布式存储,域名解析服务器遍布世界各地并且进行了层级划分,增加了容灾能力,提高了性能。域名层级划分:根域名服务器(向权威机构授权)---->顶级域名服务器(.com,.org,.gov,.cn,.jp…)---->二级域名服务器(.baidu.com/.qq.com)---->三级域名服务器(.news.bai原创 2020-07-28 11:30:44 · 550 阅读 · 0 评论 -
网络—其他常见协议(以太网协议,ARP协议)
一、链路层协议:负责相邻设备间的数据传输;相邻设备:连接起来的两个设备就是相邻设备。一个路由器可能连接很多设备,也就是说一个设备有很多相邻设备,如何使被指定的相邻设备呢?相邻设备的识别通过物理网卡的硬件设备进行识别:MAC地址识别。IP地址描述的是路途总体的 起点 和 终点;MAC地址描述的是路途上的每一个区间的起点和终点。1. 以太网帧协议格式:(1)目的地址/源地址–6字节:指网卡的硬件地址,表示从哪个地址到那个地址;(2)类型–2字节:上层网络层协议类型,用于数据的分用;(IP,原创 2020-07-27 23:21:45 · 593 阅读 · 0 评论 -
网络—网络层协议(IP协议)
一、IP协议:IP协议是TCP/IP协议族中最核心的协议。所有的TCP、UDP、ICMP、IGMP数据都以IP数据报的格式传输;二、IP协议头格式:4位版本协议:ipv4和ipv6;4位首部长度:ip协议不定长,最长60字节,最短20字节;(40字节的选项数据)8位协议类型(TOS):3位优先权弃用,4位服务类型(最小延迟,最大吞吐量,最高可靠性,最小成本);1位保留字;16位总长度:包括IP报文头部的一个IP报文大小;最大长度不得大于64k;tcp在传输层会选择合适的mss大小数据传输原创 2020-07-27 12:53:57 · 715 阅读 · 0 评论 -
网络—传输层协议(tcp和udp)
一、udp协议:原创 2020-07-26 14:12:32 · 577 阅读 · 0 评论 -
HTTPS的加密方式(对称加密、非对称加密、签名证书)
一、https介绍:https协议就是加密后的http协议。https经常使用的端口:443;http:80。二、https的加密方式:数据在网络中传输是容易被劫持的,因此需要对传输的数据进行加密,同时接收端在对数据进行解密。从而保持数据传输的安全性。1. 对称加密算法:(1)加密算法与解密算法想同。(2)加密算法的优点:加密解密的效率很高;(3)加密算法的缺点:容易被劫持,使用时间稍长就会被中间劫持,根据数据规率找破解出加密算法。(3)解决方案:可以每次通信都动态协商一个加密算法原创 2020-07-24 00:12:51 · 2728 阅读 · 0 评论 -
实现一个简单的HTTP
实现简单HTTP服务器,在页面显示“hello world”:socket套接字编程中服务端代码改编:#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <stdio.h>#include <string.h>#include <stdlib.h>void Usage(原创 2020-07-23 00:12:22 · 289 阅读 · 0 评论 -
网络—HTTP协议(应用层协议)
一、应用层协议:1. 概念:负责应用程序之间数据的沟通,而应用程序是程序员自己写的,因此应用层协议也是程序员自己定义的协议。2. 自定义协议:自己定义的协议,私有协议;3. 序列化和反序列化:(1)网络版计数器:客户端向服务器传送两个数字和一个运算符,服务器进行运算,最后将结果进行返回。例如: int num1 = 1, int num2 = 2, char op = ‘+’;①将三个数据对象进行格式组织,然后通过网络数据传输,传递给服务端;②先将三个数据对象组成一个字符串,例原创 2020-07-22 22:40:17 · 1259 阅读 · 0 评论 -
TCP连接通信握手为什么三次,挥手为什么四次
TCP三次握手四次挥手的一些问题:(1)握手为什么三次,挥手为什么四次?握手三次:①TCP双向通信需要双方同时保持在现状态,因此客户端,服务端都会向彼此发送SYN请求,防止延迟SYN或是发送了SYN后退出。服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。②例如:假如说是两次握手,客服端会向服务端发送连接请求SYN,但是在服务器滞留了,此时客户端变为了closed状态,而服务器认为client想要建立一个新的连接,于是向客户端发送确认报文段,而客户原创 2020-07-20 16:35:33 · 199 阅读 · 0 评论 -
TCP协议通信中的三次握手,四次挥手
TCP协议通信建立连接:—三次握手:TCP协议通信断开连接:—四次挥手:原创 2020-07-19 15:36:08 · 362 阅读 · 1 评论 -
网络—套接字编程socket(编写UDP与TCP)
一.socket编程:(一)TCP/UDP介绍:UDP:用户数据报协议。=>无连接,不可靠传输,面向数据报。面向数据报:无连接的不可靠的,无序的,有最大长度限制的数据传输服务。例如:(视频传输),实时性>安全性。TCP:传输控制协议。面向连接,可靠传输,面向字节流。面向字节流:连接的,可靠的,有序的,双向的字节流传输:以字节为单位,不限制上层传输大小的传输方式。例如:(文件传输)(二)网络通信:网络通信:网络两端口主机进程之间的通信。两端:客户端与服务端。客户端发送请求,服原创 2020-07-16 01:06:35 · 335 阅读 · 0 评论 -
网络初步认识(TCP/IP五层模型及网络字节序)
一、主要概念。二、原创 2020-07-14 15:42:49 · 318 阅读 · 0 评论 -
线程池的理解与实现
线程池的代码实现:线程池 = 大量的线程+线程安全的对列线程池:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。线程池的实现:①线程安全的任务队列:...原创 2020-07-14 00:10:15 · 179 阅读 · 0 评论 -
生产者、消费者问题模型
一、模型简介:生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的。...原创 2020-07-11 01:16:44 · 346 阅读 · 0 评论 -
Linux下的线程安全
一、互斥锁原创 2020-07-04 02:43:29 · 313 阅读 · 0 评论 -
Linux操作系统—多线程解析。
一、线程与进程。线程与进程的区别和联系:原创 2020-07-02 01:55:27 · 218 阅读 · 0 评论 -
进程间的通信方式(管道,消息队列,共享内存,信号量)
进程间通信目的:数据传输:两个进程之间及进行数据交互;资源共享:两个进程之间共享同一块资源;通知事件:一个进程需要向另一个进程通知某件事(比如说进程终止时要通知父进程)进程控制:有些进程希望完全控制另一个进程的执行。一、管道:(一).匿名管道:没有名字的管道 #include <unistd.h> 功能:创建一无名管道 原型 int pipe(int fd[2]); 参数 fd:文件描述符数组,其中fd[0]表示读端, fd[1]表示写端 返回.原创 2020-06-22 01:20:51 · 366 阅读 · 0 评论 -
文件的存储与获取、软链接、硬链接
一、文件的获取与存储。1.文件的存储流程:文件系统:磁盘中文件的存储管理,ext2文件系统。ext2文件系统:文件的存储过程:通过超级块获取到databitmap地址,通过databitmap找到空闲的磁盘号,将文件数据写入指定的磁盘号;通过超级块获取到inodebitmap的地址,通过inodebitmap获取一个空闲的inode节点,将文件的源信息写入其中;将文件的文件名,以及inode节点号的对应信息写入到这个文件所在目录中。2.文件的获取:文件的获取流程:通过文件名,原创 2020-06-19 23:06:41 · 517 阅读 · 0 评论 -
IO的简单基础
一、C中文件接口。c中文件接口又称标准IO接口。fopen(): FILE * fopen ( const char * filename, const char * mode ); int fclose ( FILE * stream );原创 2020-06-18 00:47:44 · 295 阅读 · 0 评论 -
简易shell的实现
编写一个简易shell,需要循环以下流程:获取命令行解析命令行建立一个子进程(fork)替换子进程(execvp)父进程等待子进程退出(wait)代码实现:#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <sys/wait.h>int main(){原创 2020-06-07 23:29:31 · 361 阅读 · 0 评论 -
Linux中进程的控制(进程创建,进程等待,进程终止,程序替换)
一.进程创建。1.fork()函数:(1)fork()函数用于在一段**运行中的程序(进程)**中创建一个新的进程。 #include <unistd.h> pid_t fork(void); 返回值:子进程中返回0, 父进程返回子进程id,出错返回-1(2)原进程称为父进程,新创建的fork()函数称为子进程,父子进程代码共享,数据独有。(3)进程调用fork,当控制转移到内核中的fork代码后,内核做:分配新的内存块和内核数据结构给子进程。将父进程部分原创 2020-06-07 22:55:24 · 297 阅读 · 0 评论 -
Linux下的环境变量以及虚拟地址内存管理。
一. 环境变量:环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数;如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性。常见环境变量:PATH : 指定命令的搜索路径HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)SHELL : 当前Shell,它的值通常是/bin/b原创 2020-05-29 15:26:52 · 219 阅读 · 0 评论 -
Linux操作系统进程初识
一.进程概念进程是执行中的一个程序,即:程序的一个执行实例,正在执行的程序等。内核观点:担当分配系统资源(CPU时间,内存)的实体。进程实际就是对运行中程序的描述,称作pcb程序控制块。(一)Linux下描述进程的结构体:struct task_struct{…};task_struct 描述的信息:标示符: 描述本进程的唯一标示符,用来区别其他进程。状态: 任务状态,退出代码,退出信号等。优先级: 相对于其他进程的优先级。程序计数器: 程序中即将被执行的下一条指令的地址。内存指针原创 2020-05-19 01:10:51 · 177 阅读 · 0 评论 -
Linux常用开发软件vim,gcc/g++,gdb,make/Makefile,git使用
一. Linux软件包管理yum。1.查看软件包:通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目可能非常之多, 这里我们需要使用 grep 命令只筛选出我们关注的包。例如: yum list | grep install2.安装软件:yum, 我们可以通过很简单的一条命令完成 gcc 的安装。 yum install gcc3.删除软件: yum remove gcc二.Linux开发工具:(一)Linux编辑器vi原创 2020-05-18 01:43:16 · 472 阅读 · 0 评论 -
小型点餐系统实现
一.项目简介。编写一个点餐系统服务器,能够支持顾客能够在浏览器上面查阅菜单并进行下单,并且支持管理员在后台对菜单和订单进行处理。二.项目设计。(一)概要设计MVC设计框架:model—view—controller(二).功能设计浏览访问一个餐管页面:顾客:点击查看所有菜单:勾选菜品,进行下单。商家:上传菜品,修改菜品,查看菜品,查看订单,修改订单。(三).详细...原创 2020-05-05 00:37:12 · 581 阅读 · 0 评论 -
Linux下的操作指令
一.目录指令1.ls指令:语法:ls [选项][目录或文件]功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。常用选项:-a 列出目录下的所有文件,包括以 . 开头的隐含文件。-l 列出文件的详细信息。-r 对目录反向排序。-t 以时间排序。-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)-R 列出所有子目录下...原创 2020-04-16 13:27:42 · 161 阅读 · 0 评论