golang开发
工具安装
https://studygolang.com/dl下载最新版本。
1 | yum install epel-release |
https://studygolang.com/dl下载最新版本。
1 | yum install epel-release |
npx的全称是Node Package Runner,是一个命令行工具,它可以在不安装包的情况下直接运行Node.js包中的命令。npx的作用类似于npm全局安装包,然后在命令行中执行安装包里的命令,但npx不需要提前安装,它会自动下载所需的包并执行命令。因此,npx被称为“npm 5.2.0+附带的一个功能”。
在 npx 命令后加上 ts-node 命令 tsx,表示使用 ts-node 解析并运行 TypeScript 文件。这种方式可以避免在本地全局安装 ts-node,而且方便在多个项目中使用不同版本的 ts-node。
在 TypeScript 中,?. 表示可选链操作符,它用于访问可能不存在的属性或方法。
在旧版的 JavaScript 中,当试图访问一个不存在的属性或方法时,程序会抛出一个类型为“undefined”的错误。在 TypeScript 中,可以使用可选链操作符?. 来避免这种错误,当访问的对象或属性不存在时,表达式会直接返回 undefined,而不会抛出错误。
XHR 有 5 种状态:XMLHttpRequest.readyState
怎么处理epoll的事件?基于reactor反应堆模型,基于事件进行处理,不要基于fd去做判断,基于事件处理的代码逻辑更加清晰!做到百万并发并没有那么难!
tcp和udp怎么用来进行服务器开发?kill的过程发生了什么?io多路复用的内核源码剖析!
/proc/sys/net/ipv4/tcp_mem
确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)。第一个值是内存使用的下限;第二个值是内存压力模式开始对缓冲区使用应用压力的上限;第三个值是内存使用的上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的BDP可以增大这些值(注意,其单位是内存页而不是字节)。
tcp_mem(3个INTEGER变量):low, pressure, high
1 | static void tcp_init_mem(void) |
sndbuf是根据什么定的?业务
在实际的过程中发送数据和接收数据量比较大,可以设置socket缓冲区,而避免了send()、recv()不断的循环收发。
深入解析UPnP协议的工作原理与实践应用,包括SSDP发现机制、SOAP控制协议、端口映射配置等核心技术。详细介绍WANIPConnection和WANIPv6FirewallControl服务的使用方法,以及如何利用miniupnp库实现NAT穿透,为P2P应用和远程访问提供完整的解决方案。
安全不足和性能不高。
HTTP/2 借用了哈夫曼编码对于Header进行高效压缩,提高传输效率。
HTTP1.X中最大的问题是队头阻塞,HTTP1.X中浏览器对于同一域名的并发连接访问此时是有限的,所以常常会导致只有个位数的连接可以正常工作,后续的连接都会被阻塞。
HTTP1.1支持请求管道化(pipelining)。基于HTTP1.1的长连接,使得请求管线化成为可能。管线化使得请求能够“并行”传输。
注意:这里的“并行”并不是真正意义上的并行传输,需要注意的是,服务器必须按照客户端请求的先后顺序依次回送相应的结果,以保证客户端能够区分出每次请求的响应内容。
也就是说,HTTP管道化可以让我们把先进先出队列从客户端(请求队列)迁移到服务端(响应队列)。
HTTP/2 解决队头阻塞是以 HTTP1.X 管道化的为基础拓展,它使用了二进制流和帧概念解决应用层队头阻塞。应用层的阻塞被解决便是实现流并发传输。
为了控制资源的资源的获取顺序,HTTP在并发传输的基础上实现请求优先级以及流量控制,流的流量控制是考虑接收方是否具备接收能力。
二进制帧保留Header+Body传输结构,但是打散了内部的传输格式,把内容拆分为二进制帧的格式,HTTP/2把报文的基本传输单位叫做帧,而帧分为两个大类 HEADERS(首部) 和 DATA(消息负载),一个消息划分为两类帧传输同时采用二进制编码。
这种做法类似Chunked化整数据的方式,把Header+body等同的帧数据,同时内部通过类型判断进行标记。
费曼学习法有四个关键词:concept「概念」、teach「教授」、review「回顾」、simplify「简化」。如果你不能用简洁的语言把一个概念说明白,说明你没有真正的掌握它。