Java知识框架 - Linux

  • 内存淘汰算法
    • FIFO - 先进入缓存的会先被淘汰
    • LRU - 最近最少使用 - LinkedHashMap - removeEldestEntry
    • LFU - 存储成本&尾部易淘汰
    • W-Tiny-LFU - Caffine - 布隆过滤器
  • 网络IO模型
    • 阻塞IO - 单次recvfrom - 尝试一次,阻塞直到数据准备好,拷贝数据
    • 非阻塞IO - 多次recvfrom - 尝试多次,直到数据准备好,拷贝数据
    • 多路复用IO - select阻塞 - 进程等待多个socket,直到socket变为可读,拷贝数据
    • 信号驱动IO - 发送信号,立即返回,数据准备好,信号通知,拷贝数据
    • 异步IO - aio_read调用后立即返回,数据准备好,后台完成复制
  • select、poll、epoll
    • select/epoll核心是可以同时处理多个connection,而不是更快,所以连接数不高的话,性能不一定比多线程+阻塞IO好
    • 异步I/O(POSIX的aio_系列函数) - Future-Listener机制
    • select - 阻塞、轮询、单个进程打开的FD有限制,默认1024
    • poll - 和select一样,但是没有最大文件描述符限制
    • epoll - 回调机制、没有FD限制、内核和用户空间mmap同一块内存实现
  • epoll原理
    • 三个epoll相关的系统调用
      • int epoll_create(int size) - 建立一个epoll对象。size是保证能够正确处理的最大句柄数
      • int epoll_ctl(int epfd, int op, int fd, struct epoll_event event) - 操作epoll对象,将socket句柄加入到epoll中让其监控,或者把epoll正在监控的某个socket句柄移出epoll
      • int epoll_wait(int epfd, struct epoll_event event, int maxevents, int timeout) - 在给定timeout的时间内,所监控的句柄中有时间发生时,就返回用户态的进程
    • 内部实现 - 文件系统(file节点) -> 红黑树(socket句柄) -> list链表(准备就绪的event)
      • epoll初始化时,会向内核注册一个文件系统,用于存储被监控的句柄文件
      • 调用epoll_create时,会在这个文件系统中创建一个file节点
      • epoll会开辟自己的内核高速缓存区,以红黑树的结构保存句柄,以支持快速的查找、插入、删除
      • 还会再建立一个list链表,用于存储准备就绪的事件
      • 执行epoll_ctl时,把socket句柄放到epoll文件系统里file对象对应的红黑树上
      • 给内核中断处理程序注册一个回调函数,告诉内核,如果这个句柄的中断到了,就把它放到准备就绪list链表里
      • 当一个socket上有数据到了,内核在把网卡上的数据copy到内核中后,就把socket插入到就绪链表里
      • 当epoll_wait调用时,仅仅观察就绪链表里有没有数据,有数据就返回,没有就sleep,超时立即返回
  • 常用命令
    • netstat - netstat -ap | grep ssh
    • awk - awk '{pattern + action}' {filenames}
      • 列出早上10点访问量最多的20个url地址? - grep "07/May/2018:10:" /usr/local/var/log/nginx/access.log|awk '{print $12}'|sort -rn|uniq -c|head -20
    • sed - 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等
  • TCP粘包拆包
    • 拆包 - 完整的包被TCP拆分为多个包进行发送
    • 粘包 - 多个小的包封装成一个大的数据包发送,Client发送的若干数据包,Server接收时粘成一个包
    • 发送方会使用Nagle算法,接收方会产生拆包粘包的问题,应用层解决半包读写的方法
  • TCP三次握手&四次挥手
    • 三次握手


      image.png
      • 三次握手详解
        • A -> B:seq信号x
        • B -> A:seq信号y,ack信号x+1
        • A -> B:seq信号x+1,ack信号y+1
      • 为啥会有三次握手
        • A给B发送的两端报文,第一段报文因为网络抖动还未到B,第二段报文先到了,就会造成报文错乱。
        • A给B的连接请求其实是过期的,如果没有三次握手,过期的连接请求到达B,连接就建立,B一直在等A发数据,A一直不发,这样B的许多资源就白白浪费了。
    • 四次挥手


      image.png
      • A -> B:seq信号u
      • B -> A:seq信号v,ack信号u+1
      • B -> A:seq信号w,ack信号u+1
      • A -> B:seq信号u+1,ack信号w+1
  • 网络传输数据链路
    • 输入域名->浏览器内核调度->本地DNS解析->远程DNS解析->ip->路由多层跳转->目的服务器->服务器内核->代理服务器Nginx/网关/负载均衡设备->目的服务器->服务器内核->应用程序(SpringBoot)->Redis->Mysql
  • HTTP
    • 状态码
      • 200 请求已成功,请求所希望的响应头或数据体将随此响应返回。
      • 301 被请求的资源已永久移动到新位置。
      • 302 请求的资源现在临时从不同的 URI 响应请求。
      • 400 1、语义有误,当前请求无法被服务器理解。2、请求参数有误。
      • 401 当前请求需要用户验证。
      • 403 服务器已经理解请求,但是拒绝执行它。
      • 404 请求失败,请求所希望得到的资源未被在服务器上发现。
      • 500 服务器遇到了一个未曾预料的状况,无法完成对请求的处理,会在程序码出错时出现。
      • 501 服务器不支持当前请求所需要的某个功能。无法识别请求的方法。
      • 502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
      • 503 由于临时的服务器维护或者过载,服务器当前无法处理请求。
    • HTTP2.0
    • HTTP报文
      • 请求报文 - 请求行(Request Line)、请求头部(Header)、空行(Blank)、请求数据(Request Body)
      • 响应报文 - 状态行、消息报头、响应正文
    • 幂等性 - GET是幂等的,POST是非幂等的
  • 网络攻击
    • CSRF - 跨站请求伪造、判断来源、加 Token
    • XSS - 跨站脚本攻击、内容转义、过滤、CSP
    • SQL注入 - SQL有问题、预编译
  • ISO七层模型
    • 1、物理层 - 建立、维护、断开物理连接
    • 2、数据链路层 - 在链路上误差错一帧一帧传送信息
    • 3、网络层 - 分组传输和路由选择 - 协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
    • 4、传输层 - 经端到端从网络透明的传输报文 - 协议有: TCP/UDP
    • 5、会话层 - 建立、管理、终止会话
    • 6、表示层 - 数据格式的转换 - 格式有,JPEG、ASCll、DECOIC、加密格式等
    • 7、应用层 - 网络服务与最终用户的一个接口 - 协议有:HTTP FTP TFTP SMTP SNMP DNS
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容

  • 本文摘抄自linux基础编程 IO概念 Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设...
    VD2012阅读 1,020评论 0 2
  • 2018-11-06 这一块操作系统主要分为两个部分,一个部分是书本上操作系统的知识,还有一部门是linux的相关...
    zuoerfeng阅读 2,215评论 0 1
  • 必备的理论基础 1.操作系统作用: 隐藏丑陋复杂的硬件接口,提供良好的抽象接口。 管理调度进程,并将多个进程对硬件...
    drfung阅读 3,531评论 0 5
  • 作者:黄湘龙 IO在计算机世界中地位举足轻重,IO效率一直是码农们孜孜不倦最求的目标。本文我们一起来研究下Linu...
    楚骧阅读 1,239评论 0 2
  • 今天早晨一醒来,朋友圈得到的消息就是,平度也有疫情了,而且离我们很近,太可怕了。大喇叭也一直在播报,平度开发区发现...
    相晓雨妈妈阅读 119评论 0 0