ALOVN

志当存高远

IPv4地址分类

IP v4 address classification

IPv4组成 IPv4是个32位的地址,它被分成4个8位的分组,每个8位写成十进制,中间用点分隔。例如: 1 192.168.0.1 二进制为: 1 11000000 10101000 00000000 00000001 IPv4地址其实两部分组成:网络地址(Network ID)和主机地址(Host ID)。即 1 IP地址=网络地址+主机地址 网络地址标识的是Inte...

ESXI 主机显卡和USB设备直通

ESXI GPU and USB device passthrough

对于一台ESXI上的虚拟机,如果想要直接通过显示器输出、连接USB键盘鼠标或蓝牙使用其它外设,那么可以通过设备直通实现。 显卡直通 显卡直通的配置比较简单,步骤如下: 在设备管理里找到显卡,点击【切换为直通】,然后需要重启ESXI主机。 在虚拟机配置里添加PCI设备,并选择你要直通的显卡。 在虚拟机高级选项中配置参数 hypervisor.cpuid.v0 = FALSE...

CPU分支预测

cpu branch prediction

CPU为了加速程序的运行,它可以预取、缓存指令和数据。对于静态函数的调用,CPU会预知即将执行的分支,然后预取对应的指令。当使用动态调度的时候,CPU就无法预知程序的执行分支了。不过CPU会运用各种算法来猜测程序的下一步执行分支,这就是分支预测。如果CPU猜对了,就可以快速的执行,因为即将执行的指令已经被预取到了处理器的缓存中了。 下面的两个函数有什么区别吗?可以看出它们执行的总数都是10...

HTTP协议multipart/form-data文件上传

HTTP multipart/form-data file upload

x-www-form-urlencoded x-www-form-urlencoded会将表单里的数据转为使用&作为分隔符的键值对传输, 比如下面提交的name和age两个参数: 1 2 3 4 5 6 POST /upload HTTP/1.1 Host: localhost:8080 Content-Type: application/x-www-form-urlencode...

SD卡和Micro SD卡引脚定义

SD card and Micro SD card pin definitions

SD卡 普通的SD卡有9个引脚,引脚面朝上,最左侧为9号引脚,然后依次是1~8号引脚。 驱动SD卡有两种模式:SDIO模式和SPI(Serial Peripheral Interface)模式。它们所使用的接口信号是不同的。 SDIO模式 下面表格是SD卡在SDIO模式下的引脚定义: PIN Name Description...

Homebrew更换国内镜像

Homebrew replace mirrors

使用Homebrew下载程序的时候,会经常遇到因为网络问题而卡死的情况。于是查了下是否有国内镜像可以使用。找到了清华和阿里云两个相对比较好用的Homebrew镜像。 1 2 https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git https://mirrors.aliyun.com/homebrew/brew.git 不过阿...

前端缓存简介

HTTP Cache

现在的前端缓存技术方案中,主要有HTTP缓存和浏览器缓存。 HTTP缓存 HTTP缓存是服务端通过输出响应头,然后浏览器通过请求头询问服务器是否有内容更新的方式进行工作的。主要用到的HTTP头有以下几种: Expires Expires是HTTP1.0协议中的内容,服务端通过输出Expires头信息来告诉浏览器可以使用当前缓存的副本直到指定的过期时间为止。Expires的缺点就是使用...

P2P NAT类型

P2P NAT

说到P2P(点对点)的分布式网络通信自然逃不开NAT网络穿透,由于NAT外部的主机无法主动与内部的主机通信,因此内部主机若想要和外部主机通信就必须要主动和外部主机的公网IP通信。路由器会创建外部IP端口到内部IP端口的映射, 并转发数据,这就是NAT的基本工作原理。 因路由器不同的安全策略、不同的限制,也就是说会存在不同的NAT类型。 NAT 类型 NAT一般可以分为两大类: ...

Golang之抽象语法树(ast)

Golang Abstract Syntax Tree

AST 抽象语法树是将编程语言的源代码进行抽象语法的树状表示。树中每个节点都表示源码中的一个组成结构。大多数的编程语言都使用了AST作为源码的表示方式。 那么源码是怎么转换成AST的呢? graph LR A[Source Code] --Lexer--> B[Tokens] B --Parser--> C[AST] 首先,词法分析器(Lexer)对源码(Sou...

Golang并发编程之singleflight

Golang singleflight

singleflight 业务中在查询缓存的时候,并发场景下会存在多个请求同时获取一个缓存key数据的情况,如下图所示:3个Client分别请求到WebServer获取缓存,WebServer同样会处理3个请求到CacheServer获取数据。 graph LR Client1 --> WebServer Client2 --> WebServer Client3...