epoll

网络编程

帅比萌擦擦* 提交于 2020-10-27 08:38:48
网络编程基础 常见问题 Socket API 网络编程一般步骤? TCP: 服务端:socket -> bind -> listen -> accept -> recv/send -> close。 客户端:socket -> connect -> send/recv -> close。 UDP: 服务端:socket -> bind -> recvfrom/sendto -> close。 客户端:socket -> sendto/recvfrom -> close。 send、sendto区别,recv、recvfrom区别? TCP/UDP TCP和UDP区别? TCP面向连接(三次握手),通信前需要先建立连接;UDP面向无连接,通信前不需要连接。 TCP通过序号、重传、流量控制、拥塞控制实现可靠传输;UDP不保障可靠传输,尽最大努力交付。 TCP面向字节流传输,因此可以被分割并在接收端重组;UDP面向数据报传输。 TCP为什么不是两次握手而是三次? 如果仅两次连接可能出现一种情况:客户端发送完连接报文(第一次握手)后由于网络不好,延时很久后报文到达服务端,服务端接收到报文后向客户端发起连接(第二次握手)。此时客户端会认定此报文为失效报文,但在两次握手情况下服务端会认为已经建立起了连接,服务端会一直等待客户端发送数据,但因为客户端会认为服务端第二次握手的回复是对失效请求的回复

网络

断了今生、忘了曾经 提交于 2020-10-27 08:36:24
一.理论 1.应用层 1)http协议与TCP联系? 2) http/1.0和http/1.1的区别 (非持久连接与持久连接、 范围请求(断点续传) 、缓存处理、更多状态码) 3)http1.1和 http2.0 的区别?( 二进制分帧层 、 服务端推送 、 首部压缩 ) 4)http的 请求方法 有哪些? GET和POST的区别 (获取资源与传输数据、额外参数的位置、支持的编码) 5)http的 状态码 6)http和https的区别,由http升级为https需要做哪些操作? 7) https 的具体实现,怎么确保安全性? 8) cookie 和 session 的 区别 ? 9)服务器攻击(DDos攻击) 10) 对称加密 和 非对称加密 11) 数字证书的了解 12)RSA加密算法,MD5原理(MD5不算加密算法) 13) 在浏览器中输入URL后执行的全部过程 ( DHCP 获取主机和网关路由IP, ARP 解析网关路由MAC地址, DNS 解析域名,TCP连接,HTTP请求响应) 14) URL 包括哪些部分?(协议、服务器名称、文件路径、还可能带有参数) 15)http 请求 / 响应报文 构成 16) DNS? ( 查询过程? DNS记录? ) 2.运输层 1)一个机器能够使用的端口号上限是多少,为什么?可以改变吗?那如果想要用的端口超过这个限制怎么办? 2) TCP

黑客与宕机

柔情痞子 提交于 2020-10-26 08:30:00
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 阿里妹导读:造成系统异常宕机(无响应、异常重启)的原因有很多种,最常见的是操作系统内部缺陷和设备驱动缺陷。本文作者将和大家分享内存转储分析的底层逻辑和方法论,并通过一个线上真实案例来展示从分析到得出结论的整个过程,希望对同学们处理此类问题和对系统的理解上有所帮助。 相信凡是与计算机高频亲密接触的人,都遇到过系统无响应,或突然重启的情况。这样的情况如果发生在客户端设备,如手机,或者笔记本电脑上,且不是频繁出现,基本上我们的解法就是鸵鸟算法,即默默重启设备,然后继续使用,当作什么都没发生过。 但是,如果这样的问题发生在服务端,比如运行微信、微博后台程序的虚拟机或者物理机上,那往往会产生相当严重的影响。轻则导致业务中断,重则导致业务长时间无法工作。 大家都知道,驱动这些计算机的是运行在其上的操作系统,如 Windows 或者 Linux 等。系统异常宕机(无响应、异常重启)的原因有很多种,但总体来看,操作系统内部缺陷,或者设备驱动缺陷是最常见的两类原因。 从根本上解决这类问题“唯一正确”的方法,是操作系统内存转储分析(Memory Dump Analysis)。内存转储分析属于高阶的软件调试能力,需要工程师有丰富且全面的系统级别理论知识和大量的疑案破解似的上手实践经验。

阿里秒挂,疯狂复习半个月,拿下美团offer(后台开发JAVA岗)

|▌冷眼眸甩不掉的悲伤 提交于 2020-10-22 14:22:03
美团后台开发JAVA岗:三面技术+HR面试 本来以为阿里面试至少能撑到二面,结果却秒挂了,呜呜伤心~回来后发愤图强,疯狂复习刷题半月( 小小提示一下:文末有分享我的 复习刷题资料 ,可免费分享~ ),又重新投了美团,四面半个月,终于在昨天收到了offer~一起来看下我的美团四面吧 一面(一个半小时) 首先自我介绍 了解Web层开发?数据库索引了解么?聚簇索引,非聚簇索引?索引分类? 了解数据库都由哪些引擎?分别有什么区别和使用场景? 了解分布式?高可用?如何保证节点集群的同步?Nginx了解过么? 什么是事务,数据库的隔离级别,Mysql默认的隔离级别。 JVM的内存模型,GC算法 非递归实现青蛙跳台阶(非递归斐波拉契数列) 判断链表是否有环,若有则返回环的入口节点 对象的重写和重载? 设计模式里面,单例模式?实现单例模式的双重校验。 epoll函数怎么理解?epoll函数在别的哪些地方有用到? 手撕:两个链表的重合第一个节点。 二面(一个小时) 自我介绍吧 项目介绍 进程与线程的区别 进程通信的方式 信号量是怎么实现的 URL分为哪些部分 浏览器输入URL发生了什么 DNS如何解析域名的 TCP的三次握手和四次挥手及其原因 手撕:有时间区间,判断昨天送外卖的峰值。(这个题做了快三十分钟,主要是外卖订单可能是前天的,昨天的或者今天的)。 死锁的原因及如何解决 常见的I/O模式

.NET 异步详解

*爱你&永不变心* 提交于 2020-10-15 21:34:35
前言 博客园中有很多关于 .NET async / await 的介绍,但是很遗憾,很少有正确的,甚至说大多都是“从现象编原理”都不过分。 最典型的比如通过前后线程 ID 来推断其工作方式、在 async 方法中用 Thread.Sleep 来解释 Task 机制而导出多线程模型的结论、在 Task.Run 中包含 IO bound 任务来推出这是开了一个多线程在执行任务的结论等等。 看上去似乎可以解释的通,可是很遗憾,无论是从原理还是结论上看都是错误的。 要了解 .NET 中的 async / await 机制,首先需要有操作系统原理的基础,否则的话是很难理解清楚的,如果没有这些基础而试图向他人解释,大多也只是基于现象得到的错误猜想。 初看异步 说到异步大家应该都很熟悉了,2012 年 C# 5 引入了新的异步机制: Task ,并且还有两个新的关键字 await 和 async ,这已经不是什么新鲜事了,而且如今这个异步机制已经被各大语言借鉴,如 JavaScript、TypeScript、Rust、C++ 等等。 下面给出一个简单的对照: 语言 调度单位 关键字/方法 C# Task<> 、 ValueTask<> async 、 await C++ std::future<> co_await Rust std::future::Future<> .await

Nginx基础入门2

ぐ巨炮叔叔 提交于 2020-10-09 18:48:37
一、Nginx部署-yum 1、官网链接 http://www.nginx.org 2、Nginx版本类型 Mainline version: 主线版,即开发版 Stable version: 最新稳定版,生产环境上建议使用的版本 Legacy versions: 遗留的老版本的稳定版 3、配置yum源 4、安装 测试: 二、nginx配置文件 这个在前面的文章里面已经介绍过,这里不再重复介绍。 三、nginx编译参数 同上。 四、nginx基本参数 1、观察主配置文件 ① 分类 CoreModule 核心模块(进程数等) EventsModule 事件驱动模块(工作模式等) HttpCoreModule http内核模块 (文档程序类型,配置文件等) ② 模块功能 1、全局/核心块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。 2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。 3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义

Nginx原理

孤街醉人 提交于 2020-10-08 03:30:21
什么是Nginx? Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器 为什么要用Nginx? 优点: 跨平台、配置简单 非阻塞、高并发连接:处理2-3万并发连接数,官方监测能支持5万并发 内存消耗小 :开启10个nginx才占150M内存 成本低廉:开源 内置的健康检查功能 :如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上。 节省宽带:支持GZIP压缩,可以添加浏览器本地缓存 稳定性高:宕机的概率非常小 master/worker结构 :一个master进程,生成一个或者多个worker进程 接收用户请求是异步的:浏览器将请求发送到nginx服务器,它先将用户请求全部接收下来,再一次性发送给后端web服务器,极大减轻了web服务器的压力 一边接收web服务器的返回数据,一边发送给浏览器客户端 网络依赖性比较低,只要ping通就可以负载均衡 可以有多台nginx服务器 事件驱动:通信机制采用epoll模型 Nginx是如何处理一个请求的呢? 首先,nginx在启动时,会解析配置文件,得到需要监听的端口与ip地址,然后在nginx的master进程里面 先初始化好这个监控的socket

IO积累02

爷,独闯天下 提交于 2020-10-08 00:59:07
BIO模型 获取socket连接返回一个文件描述符fd3,bind(fd3,8090)fd3绑定端口,listen(fd3)fd3监听端口【阻塞状态】 accept(fd3,client)获取客户端连接返回文件描述符fd5 【阻塞状态】 public static void main(String[] args) throws Exception { ServerSocket server = new ServerSocket(9090,20); System.out.println("step1: new ServerSocket(9090) "); while (true) { Socket client = server.accept(); //阻塞1 System.out.println("step2:client\t" + client.getPort()); new Thread(() -> { InputStream in = null; try { in = client.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); while(true){ String dataline = reader.readLine(); //阻塞2 if

最牛啤的java,没有之一~

纵饮孤独 提交于 2020-10-07 07:08:16
Netty easy of use! 面试官 不不不,咱得跟我聊聊BIO、NIO、SELECT、EPOLL Netty quick and easy development of network applications! 面试官 不不不,咱得跟我聊聊Bytebuffer、selector、channel、pipeline Netty Netty is a NIO client server framework! 面试官 不不不,咱得跟我聊聊Reactor、eventloop、eventloopgroup、TCP/IP 敲黑板: 高并发会对服务器产生多少连接负载? 服务器连接数如何突破百万? 长连接,短连接的场景和优缺点? 分布式,微服务中RPC,restful的实现细节? Netty中的拆包粘包和TCP什么关系? 发送数据为什么会收不到? 如何占用更少的资源完成更多的并发连接和请求处理? 中间件开发中对IO及netty的设计? BIO,NIO,EPOLL,同步,异步,阻塞,非阻塞 是一直围绕程序员的问题,虽然优秀的框架,工具将这些点隐藏,但是,高素质,进大厂,突破薪资瓶颈都是需要对这些点准确理解。 netty很好很强大,也很灵活,框架中间件等都有它的影子,但是,很难有自己动手实现的机会,其实,netty也只不过是个io框架,io通信是分布式微服务中的基础环节

了解红黑树的起源,理解红黑树的本质

末鹿安然 提交于 2020-10-06 06:38:04
前言 > 本文收录于专辑: http://dwz.win/HjK ,点击解锁更多数据结构与算法的知识。 你好,我是彤哥。 前面两节,我们一起学习了关于跳表的理论知识,并手写了两种完全不同的实现,我们放一张图来简单地回顾一下: 实现跳表的关键之处是在有序链表的基础上加上各层索引,通过这些索引可以做到O(log n)的时间复杂度快速地插入、删除、查找元素。 说起跳表,我们就不得不提另一种非常经典的数据结构——红黑树,红黑树相对于跳表来说,虽然时间复杂度都是O(log n),但是红黑树的使用场景相对更广泛一些,在早期的Linux内核中就一直存在红黑树的实现,也运用在了更高效的多路复用器Epoll中。 所以,红黑树是每一个程序员不得不会的知识点,甚至有些变态的面试官,还会让你手写红黑树的一部分实现,比如左旋、右旋、插入平衡的过程、删除平衡的过程,这些内容非常复杂,靠死记硬背往往很难彻底掌握。 彤哥也是一直在寻找一种红黑树的记忆法,总算让我找到了那么一种还算不错的方式,从红黑树的起源出发,理解红黑树的本质,再从本质出发,彻底掌握不用死记硬背的方法,最后再把它手写出来。 从本节开始,我也将把这种方法传递给你,因此,红黑树的部分,我会分成三个小节来讲解: 从红黑树的起源,到红黑树的本质 从红黑树的本质,找到不用死记硬背的方法 不靠死记硬背,手写红黑树 好了,下面我们就进入第一小节。 红黑树的起源