Linux
鐽
这个作者很懒,什么都没留下…
展开
-
xshell中的主机怎么填
1.首先打开虚拟机,登录到操作系统,鼠标右键打开终端,输入命令:ifconfig,注意查看 eth0 这一栏中的inet 即为虚拟机的ip地址2.打开xshell软件—>新建—>连接–>名称,主机填你的虚拟机ip地址再用户身份验证—>一次输入你在linux中的账户密码—>连接即可...原创 2020-05-21 14:56:07 · 7919 阅读 · 1 评论 -
poll、epoll(流程、接口、优缺点、代码)
poll:操作流程:1.定义监控的描述符时间结构体数组,将需要监控的描述符以及事件标识信息,添加到数组的各个节点中。2.发起调用开始监控,将描述符事件结构体数组,拷贝到内核中进行轮询遍历判断。若有就绪/等待超时则调用返回,并且在每个描述符对应的事件结构体中,标识当前就绪的事件。3.进程轮询遍历数组,判断数组中的每个节点中的就绪事件是哪个事件,决定是否就绪了以及如何对描述符进行操作。接口认识:int poll(struct pollfd *array_fds, nfds_t nfds, int原创 2020-05-17 09:42:05 · 775 阅读 · 0 评论 -
四种典型IO模型、阻塞非阻塞、同步异步、多路转接IO模型(select)
高级IO高级IO:四种典型的IO模型+多路转接模型典型的几种IO模型中各自的优缺点,让我们在以后进行IO的时候能够根据场景选择合适的IO模型。四种IO模型:阻塞IO/非阻塞IO/信号驱动IO/异步IOIO的过程:发起IO调用,等待I条件就绪,然后将数据拷贝到缓冲区中进行处理。五种典型的IO模型阻塞IO:为了完成IO,发起调用。若当前不具备IO条件,则一直等待。流程非常简单,清晰明了。一个IO完毕后才能进行下一个。对于资源没有充分利用,大部分的时间都在等待。非阻塞IO:为了完成IO,发原创 2020-05-16 09:27:34 · 348 阅读 · 0 评论 -
域名解析、URL回车、相邻设备、ARP协议、MTU、DNS/ICMP/NAT/NAPT、代理
链路层链路层:负责相邻设备之间的数据传输。相邻设备:连接起来的两个设备就是相邻设备。一个路由器有可能连接了很多设备,也就是说一个设备可能有很多相邻设备。那么如何识别相邻设备呢?相邻设备的识别通过物理网卡的硬件地址进行识别。物理地址:MAC地址 unit8_mac[6]–无符号6个字节的整数以太网协议格式:6字节源mac地址/6字节目的mac地址:标识从哪个设备传输到哪个设备proto:上层网络层协议类型,用于数据分用data:网络层的报文数据CRC:校验和数据帧尾一块网卡封装了以原创 2020-05-09 18:58:08 · 301 阅读 · 0 评论 -
IP地址、路由器、数据分片、地址管理、子网掩码、路由选择、公网与私网
网络层负责地址管理与路由选择。IP地址、路由器4位协议版本:IPV4/IPV64位头部长度:IP报头也是不定长的。最长60字节,最短20字节。有40字节的选项数据,以4字节为单位。8位TOS字段:3位优先权弃用,4位服务类型(最小延时、最大吞吐量、最高可靠性、最小成本),1位保留。16位数据大小:包含IP报头在内的一个IP报文的大小。最大65535–意味着一个IP报文的最大长度不能超...原创 2020-04-25 15:17:41 · 682 阅读 · 0 评论 -
SYN泛洪攻击、可靠传输(两个机制、一个校验和)、面向连接(五个机制)、面向字节流、粘包、保活机制
握手失败后服务端如何处理:若服务端回复ACK+SYN后,迟迟无法得到恢复,则服务端会发送RST重置连接报文。然后销毁socket。SYN泛洪攻击:恶意主机,不断的发送SYN请求给服务器,但是不进行最后一次ACK回复。TIME_WAIT状态有什么用:保护主动关闭方,避免立即使用相同地址信息通信。保护客户端,服务端就算重启,也必须使用与以前相同的地址信息(没有TIME_WAIT最好,否则重启还需...原创 2020-04-19 19:50:15 · 994 阅读 · 0 评论 -
HTTPS、UDP/TCP、三次握手、四次挥手
HTTPS协议:其实就是加密后的HTTP协议–自定制协议/HTTP协议。https到底是如何进行加密传输的:通过ssl加密实现–非对称加密算法/对称加密算法+签名证书数据直接在网络中传输,很容易被劫持,有很大的安全隐患。—对传输过程进行加密对称加密算法:如何加密就如何解密–加密算法和解密算法是一样的。优点:加密解密效率比较高。缺点:容易被破解,使用时间稍长就会被中间劫持,根据数据...原创 2020-04-18 15:51:36 · 271 阅读 · 0 评论 -
Linux小测03-HTTP专题
HTTP1.文件传输协议是:FTP协议。SMTP是简单邮件传送协议(Simple Mail Transfer Protocol)FTP是文件传输协议(File Transfer Protocol)UDP是用户数据报协议(User Datagram Protocol)TELNET是远程终端访问协议 (Telecommunication Network)2.以下关于HTTP协议叙述正确的是...原创 2020-04-04 18:20:18 · 2567 阅读 · 0 评论 -
MariaDB安装+mysql基本操作
MariaDB和MySQL在Linux上基本是相同的。以下操作都以 root 用户进行操作安装安装 mariadb 服务# yum install -y mariadb-server安装 mariadb 命令行客户端# yum install -y mariadb安装 mariadb C library# yum install -y mariadb-libs安装 mari...原创 2020-04-02 19:34:07 · 402 阅读 · 0 评论 -
请求和响应报文、 Cookie、session及其区别、HTTP服务器搭建
头部:一个个key:value形式的键值对,键值对之间以\r\n作为间隔。每个键值对以==\r\n作为结尾==。Connection:描述当前连接是否是长连接 close/keep-aliveContent-Length:描述当前正文有多长。通过这个描述信息可以告诉对端本次请求应该接受多长的数据。first\r\nkey:val\r\nkey:val\r\nkey:val\r\n\r\n...原创 2020-03-27 11:53:34 · 969 阅读 · 0 评论 -
Linux小测02
1.进程和线程是操作系统中最基本的概念,下列有关描述错误的是 (D)A.进程是程序的一次执行,而线程可以理解为程序中运行的一个片段B.由于线程没有独立的地址空间,因此同一个进程的一组线程可以访问该进程资源,这些线程之间的通信也很高效C.线程之间的通信简单(共享内存即可,但须注意互斥访问的问题),而不同进程之间的通信更为复杂,通常需要调用内核实现D.线程有独立的虚拟地址空间,但是拥有的资源相...原创 2020-03-24 14:49:04 · 1748 阅读 · 0 评论 -
应用层协议、HTTP协议及格式、URL包含要素(首行、响应首行)
应用层协议:负责应用程序之间的数据沟通–而应用程序是程序员写的,因此应用层协议实际也是程序员自己定的。自定制协议–自己定义的协议,私有协议。这里是一个网络版计算器的例子:客户端向服务端传递两个数字以及一个运算符,服务端收到数据进行解析得到数字与运算符,然后进行运算,最终将结果返回给客户端。int num1=10;int num2=20;char op='+';客户端需要将多个数据...原创 2020-03-21 17:38:02 · 753 阅读 · 0 评论 -
HTTP请求方式、状态码、POST和GET区别
8种请求方式序号方法描述1.GET请求指定的页面信息,并返回实体主体2.HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头3.POST向指定资源提交数据进行处理请求,数据被包含在请求体中。POST请求可能会导致新的资源的建立和已有资源的修改4.PUT从客户端向服务器传送的数据取代指定的文档的内容5.DELETE...原创 2020-03-21 17:33:28 · 739 阅读 · 0 评论 -
HTTP协议版本之间的区别和差异
HTTP各个版本的特点:HTTP/0.9: 协议的最初版本,功能简陋,仅支持请求方式GET,并且仅能请求访问HTML格式的资源。HTTP/1.0: 在0.9版本上做了进步,增加了请求方式POST和HEAD;不再局限于0.9版本的HTML格式,根据Content-Type可以支持多种数据格式,但是每次TCP连接只能发送一个请求。HTTP/1.1: 就是引入了持久连接,即TCP连接默认不关闭,可...原创 2020-03-21 17:10:07 · 623 阅读 · 0 评论 -
Linux-常用指令(ls、pwd、cd、touch、mkdir、rmdir、rm、man、cp、mv、cat、less、tar)
01.ls指令语法: ls [选项][目录或文件]功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。常用选项:-a 列出目录下的所有文件,包括以 . 开头的隐含文件。-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件-k 以 k 字节的形式表示文件的大小...原创 2019-11-17 15:03:20 · 393 阅读 · 0 评论 -
Linux代码编译(模式切换、gdb、编译器之间的对比、彩色进度条、rpm与yum区别)
常用工具:软件包管理工具:yum编程相关工具:vim、gcc/g++、gdb项目相关工具:make/Makefile、git查看软件包:yum list/grep key安装软件包:yum install package_name删除软件包:yum remove package_name编译器:vimvim中的操作模式共12种,常用的有3种。普通模式:主要是指用命令进行文件内容操...原创 2019-11-24 17:58:44 · 309 阅读 · 0 评论 -
Linux基础命令练习
将之前所创建的目录和文件全部清理掉$ rm -rf在家目录下创建 ~/workspace/cmd 目录以及 ~/workspace/tmp/test 目录$ mkdir -p ./workspace/cmd//-p(递归创建目录)$ mkdir -p ./workspace/tmp/test进入 ~/workspace/cmd 目录,创建一个空文件my.txt$ cd worksp...原创 2019-11-24 20:28:30 · 196 阅读 · 0 评论 -
初识Linux
linux初识+基本命令操作:linux的发展史:multics–linux发行版:linux操作系统的组成:操作系统内核 + 外部应用linux发行版:定制化开发了操作系统内核,再加上自己的外部应用RedHat DebianCentOs Ubuntu工具vmware — 虚拟硬件环境 - 在虚拟的硬件环境中安装操作系统虚拟机 — VMware中安装的...原创 2019-11-25 15:23:03 · 67 阅读 · 0 评论 -
进程(创建、僵尸进程、孤儿进程、优先级、环境变量、分段/页式)
系统编程阶段进程概念、进程控制、基础IO、进程间通信、进程信号、多线程进程概念冯诺依曼体系结构、操作系统、进程概念、进程状态、环境变量、程序地址空间冯诺依曼体系结构现代计算机的硬件体系结构计算机输入设备:键盘输出设备:显示器储存器:内存运算器:CPU控制器:CPU所有的设备都是围绕内存工作的硬件结构决定了软件行为操作系统操作系统:统筹管理计算机上的软硬件资源的软件...原创 2019-12-03 17:23:45 · 240 阅读 · 0 评论 -
Linux进程控制(创建:fork/vfork、终止、等待:wait/pidwait、替换:execve区别、简易shell)
进程控制:进程创建/进程终止/进程等待/程序替换进程创建:fork函数pid_t fork(void)返回值:子进程中返回0,父进程返回子进程pid,出错返回-1流程:clone()1.创建pcb2.复制信息3.内存数据发生改变的时候为子进程重新开辟空间,拷贝数据(写时拷贝技术)pid_t vfork(void)创建一个子进程,父子进程共用同一个虚拟地址空间。共同同一块虚拟地...原创 2019-12-08 20:47:08 · 310 阅读 · 0 评论 -
基础IO(标准库、文件描述符和重定向、动态库与静态库)
基础IO基础IO:a.标准库的回顾b.系统调用接口c.文件描述符d.文件系统e.动态库与静态库的打包与使用a.标准库的接口回顾:FILE *fopen(char *filename,char *mode);mode:r:只读r+:可读可写(文件不存在就会出错)w:只写w+:可读可写(文件不存在创建新文件,文件存在清空文件)a:追加只写(打开文件后将数据直接写入到文件末尾...原创 2020-02-15 17:33:13 · 359 阅读 · 0 评论 -
进程与程序的区别与联系
进程的定义进程是允许某个并发执行的程序在某个数据集合上的运行过程。进程是由正文段、用户数据段及进程控制块共同组成的执行环境。正文段存放被执行的机器指令。用户数据段存放进程在执行时直接进行操作的用户数据。进程控制块存放程序的运行环境,操作系统通过这些数据描述和管理进程。进程的特征进程是操作系统管理的实体,对应了程序的执行过程,具有以下几个特征。并发性。 多个进程实体能在一段时间间隔...原创 2020-02-15 17:52:33 · 5275 阅读 · 0 评论 -
进程间通信目的、方式+管道(匿名与命名)
进程通信目的:a.数据传输:一个进程需要将它的数据发送给另一个进程。b.资源共享:多个进程之间共享同样的资源。c.通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。d.进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。进程通信方式:...原创 2020-02-16 16:20:33 · 368 阅读 · 0 评论 -
Linux权限详解
在学习Linux的时候,经常能看到比如说:0777或者775等权限。所以对Linux中的权限进行一个辨析。这里就以0777为例子:Linux下文件权限分为所属用户权限、所属组权限和其他权限。每一个又分为r(读)w(写)x(可执行)。怎么样查看这个文件是可读可写还是可执行呢?输入ls -l就会显示权限:-rwxr-xr-x 1 root root 20 02-16 16:27 test....原创 2020-02-16 16:47:07 · 406 阅读 · 0 评论 -
共享内存、消息队列+信号量(同步、互斥的实现)
共享内存开辟一块物理内存,让所有的进程都能访问到,就可以实现数据共享。也就是将同一块物理地址内存映射到进程各自的虚拟地址空间中就可以实现数据共享,因为都可以通过自己的虚拟地址进行访问。特性:1.最快的进程间通信方式与管道进行对比:因为共享内存直接通过虚拟地址访问物理内存,进行数据拷贝而其他通信方式,需要先将数据拷贝入内核,再从内核拷贝出来,才能实现通信因此共享内存的通信相较于其他...原创 2020-02-18 16:01:20 · 1359 阅读 · 0 评论 -
进程信号01(未决信号)
信号量不是信号,信号不是信号量进程信号:1.作用:通知别人,发生了某件事情,尽快的去处理这件事(操作系统通知进程发生了某个时间,打断进程当前操作,去处理这个事件)2.是什么:软件中断信号想要成为一个中断,首先我们必须认识这个信号,并且知道如何去处理它。事件多种多样,因此信号也是多种多样。3.查看操作系统中定义好的信号:使用kill -l命令可以查看信号种类。root@1204nSt...原创 2020-02-18 16:23:18 · 367 阅读 · 0 评论 -
信号与信号量的区别
信号:(signal)是一种处理异步事件的方式。信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程外,还可以发送信号给进程本身。是由用户、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。信号量:(Semaphore)进程间通信处理同步互斥的机制。是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。...原创 2020-02-18 16:26:29 · 757 阅读 · 0 评论 -
ipcs命令与ipcrm命令
ipcs用法ipcs -a 是默认的输出信息 打印出当前系统中所有的进程间通信方式的信息ipcs -m 打印出使用共享内存进行进程间通信的信息ipcs -q 打印出使用消息队列进行进程间通信的信息ipcs -s 打印出使用信号进行进程间通信的信息ipcs -t 输出信息的详细变化时间ipcs -p 输出ipc方式的进程ID**ipcs -c ** 输出ipc方式的创建...原创 2020-02-19 09:58:30 · 728 阅读 · 0 评论 -
进程信号02(修改、切换、阻塞、定义、重入、SIGCHLD信号)
信号处理方式的修改:sighandler_t signal(int sugnum,sighandler_t handler);//修改一个信号的处理动作中的回调函数signum:信号量hander:指针函数 sighandler_t–函数指针类型typedef void(*sighandler_t)(int signo)SIG_IGN:信号进行忽略处理SIG_DFL:信号的默认处理...原创 2020-02-19 17:36:27 · 252 阅读 · 0 评论 -
多线程(线程概念、控制、创建、终止、线程/轻量级进程与进程)
线程概念:多线程其实就是实现多任务并发、并行处理的。多进程是完成多任务的。多线程的处理思路:一个运行中的程序中,具有多个执行流,各自完成一个功能模块的实现。Linux的操作系统:认为一个pcb就是一个执行流。pcb是操作系统调用一段程序运行的实体。描述了程序的执行过程。Linux下的线程就是一个pcb。pcb是一个进程。多个pcb可以共用同一个虚拟地址空间,这些pcb共用了一个运...原创 2020-02-20 17:27:11 · 201 阅读 · 0 评论 -
线程等待、分类、安全(信号量、条件变量、互斥)
线程等待:等待一个指定线程的退出,获取这个退出线程的返回值,并且允许系统回收这个线程占用的资源。但是,并不是所有的线程都需要被等待,因此线程有一个属性,默认为joinable。处于这个属性的线程,退出后不会自动回收资源。需要其他线程进行等待处理。如何等待:int pthread_join(pthread_t tid, void **retval);tid:用于指定要等待的线程retva...原创 2020-02-21 17:10:32 · 238 阅读 · 0 评论 -
死锁、同步、条件变量
死锁多个执行流对锁资源进行争抢访问,但是因为推进顺序不当,而导致互相等待。最终造成程序流程无法继续的情况。举一个日常生活中的例子来说明:有两个人一起吃饭,只有拿到两只筷子才能吃饭。但是一人只抢到一根筷子,两个人都不愿意放手,都想拿到对方的筷子,结果两个人都吃不了饭。造成死锁。死锁产生的必要条件:必须具备的条件,如果不具备就无法造成死锁。知道了必要条件,我们就可以预防以及避免。1.互斥...原创 2020-02-22 17:42:18 · 178 阅读 · 0 评论 -
生产者、消费者+信号量
生产者与消费者模式:一种设计模式–针对典型场景设计的解决方案。生产者与消费者模型所解决的问题:a.解耦合b.支持并发c.支持忙闲不均生产者与消费者模型的实现:生产者与消费者只是不同角色的执行流。只需要中间实现线程安全的队列,然后再各自创建不同角色的执行流就可以实现这个模型。线程安全阻塞队列的实现:用C++封装实现一个阻塞队列类::stl中我们学习了队列容器 std::queu...原创 2020-02-23 17:00:51 · 859 阅读 · 0 评论 -
线程池
线程池–大量线程的池子这里通过一个场景来介绍:淘宝双十一的时候,很多消费者都会买东西,消费者向淘宝发出购物请求。a.淘宝服务器就要针对这些请求进行处理。此时服务器上肯定是多执行流并行、并非处理。b.服务器网卡产生数据请求(从网络上获取数据的执行流),并且要对请求进行处理(对请求进行处理的执行流)。c.将请求获取到之后都放到缓冲区队列中,创建消费者线程,进行任务处理。1.若请求很多,有...原创 2020-02-27 21:38:43 · 113 阅读 · 0 评论 -
Linux网络基础IP、端口、协议
网络发展史独立模式:计算机之间相互独立。网络互联: 多台计算机连接在一起,完成数据共享。局域网LAN:计算机数量更多了, 通过交换机和路由器连接在一起。广域网WAN:将远隔千里的计算机都连在一起。所谓 “局域网” 和 “广域网” 只是一个相对的概念。IPIP地址:网络中一个主机的编号。唯一标识一台主机。类型:uint32_t (无符号4个字节的一个数字)IP地址的数量是有限的。不...原创 2020-02-29 15:38:03 · 297 阅读 · 0 评论 -
socket套接字、socket接口、udp网络通信、字节序转换接口
socket套接字编程:socket是一套网络编程接口。类似于中间件。上层用户可以通过这些接口简单的完成网络通信传输。而不需要过于关心内部的实现过程。套接字编程讲的就是使用socket接口实现网络通信。socket编程:tcp/udp传输层有两个协议:tcp/udp。这两个协议特性各有不同,因此实现流程也有差别。udp:用户数据报协议。无连接,不可靠,面向数据报。面向数据报:无连接...原创 2020-03-07 16:59:18 · 526 阅读 · 0 评论 -
udp和tcp服务器的C语言实现
编写一个udp服务端的C语言程序 1. 创建套接字2. 为套接字绑定地址信息3. 接收数据4. 发送数据5. 关闭套接字#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <netinet/in.h> ...原创 2020-03-07 17:00:26 · 1522 阅读 · 0 评论 -
tcp编程socket接口
tcp编程流程:面向对象、可靠传输、面向字节流客户端:创建套接字描述地址信息发起连接请求连接建立成功收发数据关闭服务端:创建套接字描述地址信息开始监听接收连接请求新建套接字获取新建套接字描述符通过这个描述符与客户端通信关闭tcp编程socket接口1.创建套接字int socket(int domian, int type, int protoco...原创 2020-03-14 12:25:54 · 224 阅读 · 0 评论 -
bash中 2>&1 & 的详细解释
1、首先,bash中0,1,2三个数字分别代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即标准输入(一般是键盘),标准输出(一般是显示屏,准确的说是用户终端控制台),标准错误(出错信息输出)。012标准输入标准输出标准错误2、输入输出可以重定向,所谓重定向输入就是在命令中指定具体的输入来源,譬如 cat < test....原创 2020-03-14 15:33:31 · 1773 阅读 · 0 评论 -
grep常用参数说明及常用用法
grep常用参数说明grep [OPTIONS]OPTIONS:-e: 使用正则搜索-i: 不区分大小写-v: 查找不包含指定内容的行-w: 按单词搜索-c: 统计匹配到的次数-n: 显示行号-r: 逐层遍历目录查找-A: 显示匹配行及前面多少行, 如: -A3, 则表示显示匹配行及前3行-B: 显示匹配行及后面多少行, 如: -B3, 则表示显示匹配行及后3行-C: 显示...原创 2020-03-14 15:37:04 · 561 阅读 · 0 评论