
Linux
am brother
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
互联网中的安全性攻击XSS,DDOS,ARP欺骗
互联网中的安全性攻击XSS攻击:缓冲区溢出:DDos 分布式拒绝服务SYN泛洪攻击:XSS攻击:XSS攻击叫做跨站脚本攻击,是一种web应用中的计算机安全的漏洞。这种攻击允许恶意的web用户将代码移植入web用户为其它用户提供的页面当中。概念这样说是有一点笼统,举个现实中的例子,就比如朋友给你发送一个恶意的链接,你只要点击之后就会跳转到它的恶意界面,按照它的指令来,甚至有时候还要重启设备。常见的几种XSS攻击:反射性的XSS攻击反射性的XSS攻击多出现在电子邮件中,或者URL中,攻击者通过一些原创 2020-07-11 22:37:51 · 1119 阅读 · 0 评论 -
【Linux】图解五种IO模型(阻塞,非阻塞,信号驱动,异步,多路转接)
五种IO模型在讲五种IO模型之前,我们先来看一下阻塞,非阻塞,同步和异步的区别:阻塞:发起调用之后,若条件不满足,则一直等待直到条件满足非阻塞:发起调用之后,若条件不满足,则报错返回。区别:发起调用的时候不具备完成条件的情况下是否会立即返回同步:处理流程中,顺序处理,一个完成之后再完成下一个,因为并且所有的功能都由进程自身完成异步:处理流程中个,顺序不定,因为功能都由操作系统完成,完成的顺序不一定。区别:功能是否由进程自己完成,完成的顺序是否是确定的。异步阻塞:功能由别人完成,等着别人完成(原创 2020-06-09 23:26:15 · 336 阅读 · 0 评论 -
【Linux】多路转接之select、poll、epoll模型
多路转接之select、poll、epoll模型多路转接模型select模型select模型的操作流程select模型的代码操作select模型的优缺点分析:POLL模型poll模型的操作流程:poll模型的代码操作poll模型优缺点分析:epoll模型epoll模型的操作流程:epoll模型的代码操作epoll的监控流程: 异步阻塞操作epoll 模型优缺点分析:多路转接模型与多线程/多进程的不同之处多路转接模型多路转接IO:对大量的描述符进行就绪事件监控–让进程能够仅仅对就绪的描述符执行操作 不仅仅原创 2020-06-09 22:21:28 · 573 阅读 · 0 评论 -
Linux命令高频指令操作
如何查看linux硬盘使用情况:1. df命令(disk free)df命令以磁盘分区为单位查看文件系统中磁盘的使用情况常用命令:1. df -h 查看详细的,以方便阅读形式查看磁盘情况(比df加上了单位M,G等)总结:已用+可用 不一定等于容量,因为系统会保留一部分留作他用。还有就是比df查看的时候多了单位,让我们查阅起来更加清楚。2. df -i 查看各个分区的inode的使用情况总结: 一般,我们通过df -i的方式查看每个分区的inode节点号的使用情况。2.du原创 2020-06-06 15:43:05 · 435 阅读 · 0 评论 -
【Linux】多线程 之 信号量
信号量信号量的同步与互斥实现作用:实现线程或进程之间的同步与互斥本质:计数器+等待队列+等待与唤醒的功能接口信号量实现同步:通过自身的计数器进行资源计数,对临界资源访问之前先访问信号量,通过计数判断是否有资源能够访问,若不能访问( 计数<=0 没有资源),则等待,并且计数-1,(如果没有资源了,资源为0,等待并且计数-1,变成-1),当信号量计数器为负值,就说明有多少线程正在等待;若可以访问-计数>0,则计数-1,直接访问;其它线程生产资源促使条件满足后,则判断若计数>0,计数+1原创 2020-06-03 09:45:27 · 548 阅读 · 0 评论 -
【Linux】多线程 之 生产者与消费者模型
生产者与消费者模型产生原因: 生产者生产的数据过快,消费者处理数据,但是生产者和消费者的速度并不均衡,导致生产的速度或者数据处理的速度根本提不起来。举个栗子:一个线程从网卡上抓取数据流量,一个线程进行流量分析,分析肯定特别慢,如果你从网卡上抓取的数据流量很慢的话,不代表流量产生的就慢,抓的特别慢就说明丢包了,意味着你抓取流量数据的时候抓取的不完整,不完整说明你的数据分析没有任何意义。你只能将数据丢掉,那么就遗失数据。生产者与消费者模型的介绍:生产者与消费者模型:(不管什么模型都是针对于特定场景下的解决原创 2020-06-03 08:59:17 · 735 阅读 · 0 评论 -
【Linux】线程池以及不同场景下的线程池的设计
线程池线程池:在设计线程池上的存在的问题以及解决:线程池的实现框架:基于IO密集型和CPU密集型的线程池如何设计对于CPU密集型程序的线程池设计:对于IO密集型程序的线程池设计:线程池的实现:线程池:概念:线程的池子,有很多的池子,但是数量不会超过池子的限制。需要用到多执行流进行多任务处理的时候,就从池子中取出一个线程去处理优点有大量的数据处理请求,需要多执行流并发/并行处理。若是一个数据请求的到来伴随着一个线程的创建去处理,则会产生一些风险以及不必要的消耗:线程若不限制数量的创建,在峰值压力原创 2020-06-03 08:24:21 · 459 阅读 · 0 评论 -
【Linux】session和cookie的底层原理
session 和 cookie 的底层原理session和cookie的简单介绍cookie 的出现是因为 HTTP 是无状态的一种协议,也就说,服务器记不住你,可能你每刷新一次网页,就要重新输入一次账号密码进行登录。这显然是让人无法接受的,cookie 的作用就好比服务器给你贴个标签,然后你每次向服务器再发请求时,服务器就能够 cookie 认出你。抽象地概括一下:一个 cookie 可以认为是一个「变量」,形如 name=value,存储在浏览器;一个 session 可以理解为一种数据结构,多原创 2020-05-31 13:38:22 · 493 阅读 · 0 评论 -
【Linux】TCP的拥塞控制
TCP的拥塞控制拥塞控制原理TCP拥塞控制的方法TCP拥塞控制算法慢开始拥塞避免算法快重传算法快恢复算法:四种算法的实现举例拥塞控制原理拥塞: 在某段时间,若对网络中资源(带宽、交换节点缓存,处理机)的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这种现象就称为拥塞。拥塞的危害:若网络中的许多资源同时产生拥塞,网络的性能就明显会变坏,整个网络的吞吐量将下降的严重。出现拥塞的原因:对资源的需求和 大于 可用资源增加资源能解决拥塞吗?不能。网络拥塞是一个非常复杂的问题,很多情况下,不能解原创 2020-05-13 20:57:41 · 1346 阅读 · 0 评论 -
【Linux】进程与线程的联系与区别
线程与进程:线程是资源调度的基本单位,而进程是操作系统资源分配的基本单位。每一个进程都有自己独立的虚拟地址空间和程序上下文,程序之间的切换会有较大的的开销。而linux下的线程,是轻量化的,因为多个线程共用进程的虚拟自治空间,实现数据的共享。当然每一个线程也都有自己独立的栈空间 等等,线程之间的切换开销小在操作系统中同时可以运行多个进程,而在同一个进程中有多个线程同时执行(通过CPU的调度,...原创 2020-05-13 00:21:39 · 327 阅读 · 0 评论 -
【Linux】死锁的产生与预防
死锁:死锁的概念:多个线程对锁资源争抢访问,但是因为推进顺序不当,导致相互等待,造成程序无法继续,这就是死锁。死锁的产生原因系统资源不足:系统中所拥有的资源数量不满足多个线程的需要,使得在锁哥线程运行的过程中,因争夺资源而陷入僵局。线程间推进顺序不当死锁产生的四个必要条件:互斥条件 — 同一时间锁只能有一个线程能够获取不可剥夺条件 — 线程A加的锁只有线程A能解释放请求与保持条件 — 线程A拿着A锁去请求B锁,若请求不到,则线程A一直保持A的锁不释放环路等待条原创 2020-05-12 23:50:08 · 225 阅读 · 0 评论 -
【Linux】输入一个网址按下回车后会发生什么过程
输入一个网址后,按下回车后的过程当你在浏览器输入一个网址,如http://www…baidu.com,按回车之后发生了什么?1.DNS解析DNS解析的过程就是寻找哪台机器上有你需要资源的过程,寻找的过程遵循就近原则。输入一个网址并按回车的时候浏览器会根据输入的URL去查找对应的IP,具体过程如下:(1)首先是查找浏览器缓存,浏览器会保存一段时间内访问过的一些网址的DNS信息,不同浏览器保存的时常不等。(2)如果没有找到对应的记录,这个时候浏览器会尝试调用操作系统缓存来继续查找这个网址的对应DNS原创 2020-05-12 23:06:25 · 575 阅读 · 0 评论 -
【Linux】进程的地址空间
进程的虚拟地址空间进程虚拟地址空间的含义:进程的虚拟地址空间的作用:进程之间为什么能通过虚拟地址空间空间实现数据独有?三种内存管理方式再讲进程的虚拟地址空间之前,我们先来了解一下程序的地址空间是什么?程序的地址空间:这是程序地址空间。而程序是一个个死的代码,所以叫做程序地址空间不合适。程序运行起来之后,才会占用内存。所以我们称为进程地址空间。那么我们思考一下,进程地址空间每一个进程都有一...原创 2020-05-07 21:57:19 · 1905 阅读 · 0 评论 -
【计算机网络】ICMP协议
网际控制报文协议ICMP为了更有效地转发IP数据报和提高交付成功的机会,使用了网际控制报文协议ICMPICMP是互联网的标准协议ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告虽然ICMP报文封装在IP数据报的数据部分,但是ICMP是IP层的协议ICMP报文的种类有两种,ICMP差错报文 和 ICMP询问报文ICMP报文的格式:前四个字节是统一的格式, 类型(0-...原创 2020-04-22 00:01:22 · 913 阅读 · 0 评论 -
【Linux】线程安全--互斥锁和死锁
线程安全概念:多个执行流对同一临界资源进行争抢访问,但是不会造成数据二义实现:同步: 通过条件判断实现对临界资源访问的时序合理互斥:同一时间只能一个执行流(线程)能够访问临界资源,实现数据操作安全我们这片讲述的就是 互斥的实现- 互斥锁。互斥锁就是实现临界资源只被一个线程访问。互斥锁原理:本质:互斥锁本质就是一个计数器,只有两种状态标记的计数器0/1原理:访问临界资源之前,先访问...原创 2020-03-31 18:15:02 · 384 阅读 · 0 评论 -
【Linux】线程控制
线程线程概念:linux下的线程是一个轻量级的进程,是通过进程pcb描述实现的(在传统的操作系统来说pcb就是一个进程,进程就是一个pcb, 描述一个程序的运行)。并且同一个线程组(进程)中的线程共用同一块虚拟地址空间,因此这个linux下的pcb相较于传统的pcb更加的轻量化,因此linux下的pcb就叫做轻量级进程线程的独有和共享:独有栈:每个线程都有自己的栈,防止调用栈混乱寄存...原创 2020-03-31 16:13:15 · 165 阅读 · 0 评论 -
【Linux】进程间通信之 共享内存,消息队列,信号量
进程间通信进程间通信:IPC —操作系统为用户提供的几种进程间通信的方式为什么要给用户提供进程间通信的方式呢?因为进程之间具有独立性,每个进程只能访问自己的虚拟地址,进程之间无法直接沟通共享内存特性:最快的进程间通信方式实现原理:在物理内存中开辟一块空间(在内核具有标识,能够被其它进程找到)将这块空间通过页表映射到自己的虚拟地址空间(根据虚拟地址来进行访问操作了)通过虚拟地址进...原创 2020-03-25 20:12:40 · 331 阅读 · 1 评论 -
【Linux】ip地址子网掩码的计算,子网的划分
子网掩码的计算,子网的划分ip地址划分,以C型网络为例 介绍 子网掩码的计算与子网的划分。我们先来看一下C型网络的相关信息: 192.168.1.* 网络 192.168.1 网络号 子网数 1 最大容纳的主机数 256 (最后一个字节) 可用的主机数 ...原创 2020-03-05 22:25:27 · 1792 阅读 · 0 评论 -
【Linux】HTTP 头部属性信息 (请求头部和响应头部)
HTTP Request Header 请求头Header解释示例Accept指定客户端能够接收的内容类型Accept: text/plain, text/htmlAccept-Charset浏览器可以接受的字符编码集。Accept-Charset: iso-8859-5Accept-Encoding指定浏览器可以支持的web服务器返回内容压缩编码类型...原创 2020-03-05 20:54:09 · 1559 阅读 · 0 评论 -
【Linux】TCP可靠传输的机制
在linux网络编程中面试官问到最多的问题也离不开TCP和UDP了,那么我也由于某个契机也被问到了这么一个问题,没有完全回答上来,或者说最主要的没有回答上来,在这里专门总结一下TCP可靠传输的机制TCP可靠传输的机制TCP连接管理中的保活机制确认应答机制超时重传机制协议字段中的序号/确认序号协议字段中的校验和面向连接(三次握手建立连接)(重点)滑动窗口机制(重点) —也可以说是...原创 2020-02-18 20:55:04 · 279 阅读 · 0 评论 -
【Linux】TCP三次握手,四次挥手
TCP三次握手,四次挥手这是一个非常重要的知识点,我也来总结一下。关于面试最经常问的问题无非就是:握手为什么是3次? 2次可以吗? 为什么不是4次呢?你能不能详细的介绍一下TCP三次握手的详细过程?能不能说一下服务端和客户端在三次握手建立连接中的状态和行为?挥手为什么是4次? 3次可以吗 ? (因为分开总比在一起难,哈哈)TIME_WAIT的作用? TIME_WAIT这个...原创 2020-02-18 20:43:56 · 332 阅读 · 0 评论 -
【Linux、C++】字节序转换函数 ntohs()、ntohl()、htons()、htons()和inet_addr、inet_pton()的解析(cpp编程 ip地址)
字节序转换接口unsigned short htons(unsigned short);unsigned short ntohs(unsigned short);unsigned long htonl(unsigned long);unsigned long ntohl(unsigned long);/*注释:h代表主机字节序,n代表网络字节序,s代表short,l代表long(lin...原创 2020-02-18 14:45:08 · 2871 阅读 · 0 评论 -
【Linux】HTTP状态码大全
HTTP状态码当浏览者访问一个网页时,浏览者的浏览器会向网页所在的服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以相应浏览器的请求。常见的HTTP状态码:200 -请求成功301 -资源(网页等)被永久转移到其它URL404 -请求的资源(网页等)不存在500 -内部服务器错误HTTP状态码...原创 2019-12-14 14:58:38 · 565 阅读 · 0 评论 -
【调研】HTTP协议版本之间的区别和差异
超文本传输协议(HTTP,HyperText Transfer Protocol) 是一种无状态的协议,它位于OSI七层模型的传输层。HTTP客户端会根据需要构建合适的原创 2019-12-14 13:37:36 · 313 阅读 · 0 评论 -
【Linux】HTTP数据加密的详解
HTTP与HTTPS的区别:加密传输的详细过程加密分为对称加密和非对称加密对称加密(一直使用同一种加密方式)很容易被破解可以动态协商非对称加密算法(但是被劫持后会被获悉加密算法)因此可以采用非对称加密(公钥加密数据,使用私钥才能进行解密,通信时服务端先将公钥传递给客户端,客户端使用公钥进行加密发送给服务端)但是非对称加密效率比较低因此使用非对称加密的算法给对方来协商加密算法,这样就...原创 2019-12-11 22:38:12 · 915 阅读 · 0 评论 -
【调研】HTTP协议的请求方法
HTTP协议获取资源的请求方法GETget方法是请求指定的页面信息,返回实体主体。该请求是向服务器请求信息,请求参数会跟在url后面,因此,对传参长度是有限制的,而且不同的浏览器的上限是不同的(1-4k,4-8k等)。由于get请求是直接将参数暴露在url中,因此对于一些带有重要信息的请求可能并不完全合适。POSTpost请求是向指定资源提交数据进行处理的请求,例如提交表单或上传文...原创 2019-12-10 17:37:16 · 342 阅读 · 0 评论 -
【Linux】多线程与多进程进行多任务处理的优缺点
多线程与多进程进行多任务处理的优缺点我们都知道Linux下的pcb相较于传统的pcb更加轻量化,所以叫做轻量级进程。而且线程是cpu调度的基本单位,进程是资源分配的基本单位。因为cpu调度一个程序的运行是cpu调度的,资源分配是以线程组为单位分配给整个线程组的。那么多任务是多进程处理好还是多线程处理好?让我们先来了解一下多进程/多线程进行多任务处理的优缺点多线程:优点:线程间共用同一...原创 2019-11-24 20:59:00 · 1546 阅读 · 0 评论 -
【Linux】静态库和动态库的生成与使用
静态库动态库的生成与使用 :本节课重要的原因:以后的使用大多数都是使用现成的动态库和静态库,在本文章我们以加法add()函数建一个动态库和静态库,分过程讲解动态库和静态库的生成与动态库使用。,使用动态库讲述链接与运行加载库的过程(静态库的链接与动态库一样,不一样的是静态库运行时不需加载静态库)库文件: 把所用到的所有代码的实现打包成一个文件。库中的代码没有main函数(和可执行程序的区别)动...原创 2019-11-24 19:38:38 · 1955 阅读 · 1 评论 -
【Linux】网络字节序
网络字节序:我们知道,内存中的多字节数据相对于内存地址有大端和小端之分,磁盘文件中的多字节数据相对于文件中的偏移也有大端与小端之分,网络数据同样有大端小端之分。我们在讲述之前,先弄清楚如何定义网络数据流的地址。(总概)发送主机(源主机)通常将发送缓冲区中的数据按内存地址从低到高的顺序发出接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存因此网络数据流的地...原创 2019-11-23 13:20:12 · 360 阅读 · 0 评论 -
【Linux】OSI七层网络模型和TCP/IP五层网络模型
OSI七层模型OSI七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范把网络从逻辑上分了7层,每一层都有相关、相对应的物理设备,比如路由器,交换机OSI七层模型是一种框架性的设计方法,其最主要的功能就是帮助不同类型的主机实现数据传输分层名称功能7应用层针对特定应用的协议6表示层设定固有数据格式和网络标准格式的转换5会话层通信管...原创 2019-11-22 23:49:23 · 494 阅读 · 0 评论 -
【Linux】网络基础1
这一篇我们讲述网络的发展史,通过不同的问题与方案提出再到方案修改来了解网络在历史的发展过程网络的基本认识:刚开始的时候都是拿着u盘拷贝数据,计算机不能直接交流数据,交换机(固定主机沟通数据)就应运而生,做到数据交换的功能,做到通信。缺乏灵活性,因为交换机指定了发送的和接收的计算机。随着网络发展,路由器也产生了,路由选择功能,通过内置配置判断选择,发送数据发送到自身局域网的网络当中,还是发送到别...原创 2019-11-22 22:28:39 · 175 阅读 · 0 评论 -
【Linux】线程池
线程池:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。线程池的应用场景:需要大量的线程来完成任务,并且完成任务的时间比较...原创 2019-11-14 00:23:33 · 201 阅读 · 0 评论 -
【Linux】读写锁
读者写者模型—读写锁读者写者模型:大量的读者线程只对临界资源进行读操作,由少量的写者线程对临界资源进行修改。特性:读者可以同时读; 但是写者写的时候,其他写者不能写,其它的读者不能读。总结起来就是:读共享,写互斥思考:那我们为什么不能用互斥锁实现呢?因为互斥锁的特性决定互斥锁只能实现互斥,而互斥的特性是(对于读者线程来说)是一个线程读的时候,其他线程不能访问。读写锁的实现的条件:读写锁...原创 2019-11-13 23:15:36 · 117 阅读 · 0 评论 -
Linux线程与多线程的概念与讲解
什么是线程?在一个程序中一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程线程在进程内部运行,在CPU看来,PCB都要比传统的进程更加轻量化透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流线程的概念:linux下的线程是一个轻量级进程,是通过进程pcb描述实现的,并且...原创 2019-11-09 15:09:40 · 586 阅读 · 0 评论 -
【Linux】生产者与消费者模型以及代码实现
生产者消费者模型为什么要使用生产者消费者模型??生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取数据,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的。关...原创 2019-11-09 13:59:06 · 806 阅读 · 0 评论 -
线程安全以及线程安全的实现(同步与互斥的实现)
线程安全:多个线程(执行流)间对临界资源进行争抢访问而不会造成数据二义或逻辑混乱线程安全的实现:互斥:同一时间,只有一个线程能够访问临界资源来保证操作安全性同步:通过条件的判断,实现对临界资源访问的时序合理性互斥的实现:互斥锁 //下面通过黄牛抢票的例子认识互斥锁互斥锁变量类型:pthread_mutex_t 它其实是一个结构体,互斥锁里面不仅仅是一个计数器,还要有等待队列,因为要唤...原创 2019-11-09 12:31:44 · 302 阅读 · 0 评论 -
Linux下基本指令详解(文件相关指令)
文件相关指令:文件的创建与显示(touch、cat、more、less、head、tail)touch语法: touch【选项】 文件功能:1 若文件存在时,刷新文件的时间属性2 若文件不存在时, 创建一个空文件 常用选项:(通常情况下,用touch新建文件较多,选项不用强行记忆)-a 只更改存取时间-d 使用指定的日期时间,非现在的时间cat语法:cat【选项】文件功...原创 2019-10-12 21:07:48 · 197 阅读 · 0 评论 -
Linux下的重要目录及其放置内容
Linux 目标配置的依据–FHS因为利用Linux来开发产品或distributions的社群/公司与个人太多了,如果每个人都用自己的想法来配置档案放置的目录,那么就会带来好多管理上的困扰。 假设一种情况:公司中接触的Linux目录的操作配置与你所学的不一样,那样目录中的所有配置都不一样,都得重新学习一遍。 所以就有所谓的Filesystem Hierarchy Standard(FHS)标准...原创 2019-10-07 15:55:47 · 350 阅读 · 0 评论 -
【Linux】重要指令df和du
磁盘与目录的容量:我们知道磁盘的整体数据是在 superblock 区块中,但是每个各别档案的容量则在 inode 当中记载的。那么在文字接口底下该如何叫出这几个数据呢? 底下就让我们看看这两个指令 :df : 列出文件系统的整体磁盘使用量du : 评估文件系统的磁盘使用量(常用在推估所占用量)df[root@www ~]$ df [-ahikHTm] 目录或文件名选项与参...原创 2019-10-07 23:27:14 · 428 阅读 · 0 评论 -
除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.
虽说除了vim外 的编辑器,那么我们先来简单介绍一下vim吧 ^ _ ^vimvim使用者大部分对于linux有很强的感情,当然不是说windows不能使用vim,vim的前身是vi,基本上使用vim的开发者,更喜欢在纯的命令行界面进行代码编写和调试,而且在快捷键使用非常迅速的情况下,编程的效率极高,更有甚者基本上用全简单搞定所有的动作主要特性:执行效率高丰富的快捷键支持高度的定...原创 2019-10-11 00:42:32 · 1514 阅读 · 0 评论