Linux、网络、操作系统
一颗程序媛0915想上岸
越努力,越幸运……
展开
-
linux总结(一)—>linux基础操作
一、目录结构/文件系统linux 多用户Windows 单用户/bin 可执行程序/命令/boot 内核、与系统启动有关的文件/home 普通用户的家目录/etc 系统配置文件/lib 库文件/proc 虚拟目录,进程在内存中的一个映像/usr 系统运行过程中不常改变的文件/var 系统运行过程中常改变的文件/root 系统管路员的家目录/dev 设备文件/mnt 临时挂...原创 2019-01-06 20:56:39 · 177 阅读 · 0 评论 -
从浏览器输入一个URL(www.baidu.com)的全过程
1.根据域名到DNS中找到IP2.根据IP建立TCP连接(三次握手)3.连接建立成功发起http请求4.服务器响应...转载 2019-07-27 14:15:06 · 2285 阅读 · 0 评论 -
一次请求涉及的网络协议(详解)
1.发请求域名(网址) ,DNS域名解析协议,通过域名获得ip地址 ,http协议,https协议,浏览器打包请求,DNS、http处于应用层,经过应用层封装后,浏览器会将数据包交给下一层传输层去传输,对于http请求一般会使用tcp协议,经过传输层的封装后,数据包会到网络层,使用ip协议进行封装,数据包会变为ip包,里面包含 目标服务器的Ip地址,当前浏览器所在机器的ip地址,操作系统会将这个...原创 2019-07-29 14:10:32 · 2203 阅读 · 0 评论 -
linux下的守护进程
一、概念精灵进程,是linux中的后台服务进程,生存周期较长的进程,通常独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。二、 模型1.1 为什么有守护进程的存在?守护进程是脱离于控制终端并且在后台周期性地执行某种任务或等待处理某些事件的进程,脱离终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的中断信息所终止。若守护进程没有和控制终端脱...原创 2019-08-09 09:37:42 · 251 阅读 · 0 评论 -
理解Linux系统负载
一、查看系统负荷uptime命令查看(w命令和top命令也行)。(另外,它们在苹果公司的Mac电脑上也适用。)你在终端窗口键入uptime,系统会返回一行信息。“load average”:系统的平均负荷",里面有三个数字,我们可以从中判断系统负荷是大还是小。它们的意思分别是1分钟、5分钟、15分钟内系统的平均负荷。当CPU完全空闲的时候,平均负荷为0;当CPU工作量饱和的时候,平均负荷为...原创 2019-08-09 10:10:56 · 851 阅读 · 0 评论 -
HTTP 、HTTPS 与 三次握手 四次挥手
一、概述HTTP:超文本传输协议,基于TCP/IP通信协议来传输数据。工作原理:客户端-服务端架构,客户端通过URL向http服务端发送请求,服务端接收到请求后,向客户端发送相应消息。http默认端口:80。二、http三个特点http是无连接的,限制每次连接只处理一个请求,服务端处理完客户端请求,并受到客户端的应答后,断开连接,节省传输时间;http是媒体独立的,客户端和服务...原创 2019-08-19 11:31:22 · 1798 阅读 · 1 评论 -
安全通信----对称加密、非对称加密、SSL
一、问题由来:数据在传输过程中会出现:被伪造、被修改、被监听的问题二、加密算法:对称加密算法:DES算法和AES算法AES算法:psk(pre Shared key 预共享秘钥)A0+psk=A1;A1-psk=A0;局限:对方必须提前知道psk 否则无法进行通信非对称加密算法:RSA生成一对秘钥对(一个秘钥 公开了一部分)公钥加密私钥解 私钥加密公钥解...原创 2019-08-19 15:53:54 · 686 阅读 · 0 评论 -
分布式事务,两阶段提交和三阶提交
一、什么是分布式事务在分布式系统中,为了保证数据的高可用,通常我们会将数据保留多个副本,同时这些副本会存储到不同的物理机器上,这就是分布式。为了保证数据的一致性,需要用到分布式事务1.1 什么是事务?事务是指对数据的一系列操作要么全部执行要么全部不执行1.2事务的实现步骤1.数据库将一系列要执行的操作全部记录成日志2.逐条执行这一系列操作3.如果这一系列操作全部执行...原创 2019-08-10 09:36:37 · 1134 阅读 · 0 评论 -
死锁避免——>银行家算法
一、安全序列所谓安全序列,就是指如果系统按照这种序列分配资源,则每个进程都能顺利完成。只要能找到出一个安全序列,系统就是安全状态。当然,安全序列可能有多个。如果分配了资源之后,系统中找不到任何一个安全序列,系统就进入不安全状态。这就意味着之后可能所有进程都无法顺利的执行下去。当然,如果有进程提前归还了一些资源,那系统也有可能重新回到安全状态,不过在分配资源之前总是要考虑到最坏的情况。如...原创 2019-08-10 13:16:23 · 6762 阅读 · 2 评论 -
哲学家就餐问题
1 .问题描述由Dijkstra提出并解决的哲学家就餐问题是典型的同步问题。该问题描述的是五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五只筷子,他们的生活方式是交替的进行思考和进餐。平时,一个哲学家进行思考,饥饿时便试图取用其左右最靠近他的筷子,只有在他拿到两只筷子时才能进餐。进餐完毕,放下筷子继续思考。2.解题思路因为是五位哲学家,并且每位哲学家的各自做自己的...原创 2019-08-10 16:59:33 · 1662 阅读 · 0 评论 -
生产者消费者模式
★简介 生产者消费者模式并不是GOF提出的23种设计模式之一,23种设计模式都是建...转载 2019-08-20 12:09:20 · 428 阅读 · 0 评论 -
Linux总结(三) ----进程间通讯与线程
目录一、库函数系统调用和库函数的区别?二、进程间通讯1.管道2.信号量 红绿灯3.共享内存同步和异步的方式?阻塞与非阻塞4.消息队列线程于进程的区别?三、线程同步的方法:信号量和互斥锁的区别?线程的实现?Linux线程的实现线程安全一、库函数系统调用和库函数的区别?库函数的实现在库里,运行在用户态系统调用的实现在内核...原创 2019-07-23 10:06:19 · 288 阅读 · 0 评论 -
TCP的拥塞控制(详解)
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做网络拥塞。在计算机网络中数位链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。当输入的负载到达一定程度 吞吐量不会增加,即一部分网络资源会丢失掉,网络的吞吐量维持在其所能控制的最大值,转发节点的缓存不够大这造成分...原创 2019-07-31 19:15:01 · 198022 阅读 · 70 评论 -
深入理解select、poll和epoll
I/o复用函数:Select,poll&epoll 能同时监听多个文件描述符多进程,多线程每一个执行序列在同一个时刻只能处理一个sockfd(监听,链接)select、poll和epoll能同时监听多个文件描述符,他们等待指定时间后,直到一个或多个文件描述符上有事件发生返回,返回值是就绪的文件描述负数量,返回0表示没有事件发生。I/O复用:同一进程或线程,同时监听多个socket,当...原创 2019-01-17 14:19:10 · 593 阅读 · 0 评论 -
进程地址空间
进程地址空间:系统中每个每个用户空间进程所看到的内存linux采用虚拟内存技术,所有进程之间以虚拟方式共享内存,即对于每个进程来说,可以访问整个系统的所有物理内存即使一个单独进程,所拥有的地址空间远远大于系统物理内存内存区域:代码段:可执行文件代码的内存映射数据段:可执行的已初始化全局变量的内存映射bass段:未初始化的全局变量一、内存描述符:内核使用描述符结构体表示进程的地址空...原创 2019-01-12 12:37:47 · 1262 阅读 · 2 评论 -
静态库和共享库(动态库)的区别
静态库和共享库(动态库)的区别根据链接时期不同,分为静态库和共享库,静态库是在程序编译时链接的,共享库是在程序运行时链接的。库是预先编译好的方法的集合,命名一般为libxx.a(静态库)libxx.so(动态库),库文件常存放的地点为/lib或/usr/lib,库对应的头文件一般存放在/usr/include中add.cInt add(int a,int b){return a+b;...原创 2019-01-15 15:32:51 · 1796 阅读 · 0 评论 -
系统调用
系统调用:用户程序只能在用户态下运行,有时需要访问系统的核心功能,这时通过系统调用接口实现系统调用。内核态: 控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态: 上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源。系统调用: 为了使上层应用能够访问到这些资源,内核为上层应用提供访问的接口。三者的关系如下:系统调用与上层应用程序的关系:如果将系统调用比作是一个“...原创 2019-01-15 19:22:15 · 1345 阅读 · 0 评论 -
TCP三次握手和四次挥手
TCP三次握手Tcp是面向连接的,可靠的流式服务,三次握手,指建立一个TCP连接时,需要客户端和服务器总共发送3个包。三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号seq和确认号ack并交换 TCP 窗口大小信息,在socket编程中,客户端执行connect()时。将触发三次握手。connect()返回成功表示三次握手以及完成SYN:请求建立连接,带SYN...原创 2019-03-02 20:49:52 · 265 阅读 · 0 评论 -
进程与线程
一、概念:线程是进程内部的一条执行路径,进程是一个正在运行的程序二、区别:1)进程是cpu资源分配的最小单位,线程是cpu调度的最小单位。 2)进程有独立的系统资源,而同一进程内的线程共享进程的大部分系统资源,包括堆、代码段、数据段,每个线程只拥有一些在运行中必不可少的私有属性,比如tcb,线程Id,栈、寄存器。 3)一个进程崩溃,不会对其他进程产生影响;而一个线程崩溃,会让同一进...原创 2019-07-21 19:30:34 · 422 阅读 · 0 评论 -
Linux总结(二)虚拟地址空间、fork、信号
1.4G虚拟地址空间的内存分配空指针有指向,小整数值 《C专家编程》系统运行时,从0x0804800开始装载,代码段开始 malloc 堆2. fork()进程复制的流程当fork()函数被调用时,内核就会为新进程创建各种数据结构,并分配给该进程一个唯一的pid。子进程和父进程用的是相同的内存空间,也就是说子进程的代码段,数据段,堆栈都是指向父进程的物理空间,两者...原创 2019-07-21 20:02:47 · 332 阅读 · 0 评论 -
三种页面置换算法(详解)
一、先进先出(FIFO)1)思想:把内存中驻留时间最久的页面置换算法予以淘汰2)例:在分页中,采用FIFO页面置换算法,序列 4,3,2,1,4,5,4,3,2,1,5,当物理块为3时,计算缺页次数和缺页率?...原创 2019-08-03 14:06:23 · 54723 阅读 · 26 评论 -
linux 总结(四) — — 网络
一、线程安全线程安全:多线程环境中可以正确的执行 有同步控制-》线程安全 没有同步-》非线程安全非线程安全 ,一般由于在函数中使用了静态变量,全局变量引起的线程安全的函数 可重入函数strtok_r函数是strtok函数的可重入版本。strtok_r实际上就是将strtok内部隐式保存的this指针,以参数的形式与函数外部进行交互。由调用者进行传递、保存甚至是修改。需要调...原创 2019-07-26 13:03:48 · 131 阅读 · 0 评论 -
I/O多路复用 —— fcntl()、select()的实现
前言:recv(),send(),read()和write函数都是阻塞性函数,若资源没有准备好,则调用该函数的过程将进入阻塞状态,则有以下两种I/O多路复用的解决方案:1)fcntl函数的实现(非阻塞模式)2)select函数的实现服务器端可以采用多进程模型和多线程模型解决客户端并发的场合,不管服务器端采用的是多进程还是多线程,服务器端采用子进程或者子线程和客户端进行双向通信,即调用sen...原创 2019-08-04 16:37:25 · 274 阅读 · 0 评论 -
Nagle算法和延迟确认
TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据。(一个连接会设置MSS参数,因此,TCP/IP希望每次都能够以MSS尺寸的数据块来发送数据)。Nagle算法就是为了尽可能发送大块数据,避免网络中充斥着许多小数据块。一、Nagle算法的基本定义任意时刻,最多只能...原创 2019-09-05 10:59:16 · 616 阅读 · 0 评论