http keep-alive
http头部Connection: Keep-Alive
代表连接请求保持长连接
如果是http代理,必须处理Proxy-Connection: Keep-Alive
为Connection: Keep-Alive
,如果代理没有实现Keep-Alive
就不变或者将Connection设为close.
优点:减少握手次数,如下图(图来源文章最下面)
http头部Connection: Keep-Alive
代表连接请求保持长连接
如果是http代理,必须处理Proxy-Connection: Keep-Alive
为Connection: Keep-Alive
,如果代理没有实现Keep-Alive
就不变或者将Connection设为close.
优点:减少握手次数,如下图(图来源文章最下面)
如果以下的表格及图像出现格式问题,请将你的浏览器中文字体的等宽字体设置好
1 | Human created algorithm: 人想到的算法 |
超参数优化参考:贝叶斯最优化
权重的初始值:不应该设置为0/1(设置为0或1,可能造成梯度消失),应选择随机生成初始值
其他权重初始值: He初始值
输出层的神经数量需要根据待解决的问题来决定,如:对于分类问题,输出层的神经元数量一般设定为类别的数量.
最近想了解一下c是如何编译为汇编语言的
首先写了一个相当简单的c
1 | #include "stdio.h" |
使用gcc -S
编译为汇编语言:
1 | .file "hello.c" |
以”点”做为前缀的指令都是用来指导汇编器的命令。
精简一下差不多这样:
研究了一下javascript的异步回调函数,本来想像golang那样使用chan可以返回原始值,不过貌似无法做到,最后止步async/await,差不多就是用Promise的resolve返回值然后用await调用,不过await必须使用在async的函数里,局限还是有的.
如果使用非async的函数调用,返回的依旧是Promise类型,需要使用.then.
1 | async function test() { |
详细安装教程请参考arch wiki Installation guide (简体中文),此处只记录安装后遇到的问题.
暗影精灵2 PRO 静音LED不起作用和左边耳机会有噼里啪啦声:
具体解决方法我已经写到archwiki里了,请看: Laptop/HP#HP_Omen_15_ax210TX
grub更新菜单
1 | grub-mkconfig -o /boot/grub/grub.cfg |
安装os-prober让grub检测到其他系统并自动创建引导
1 | pacman -S os-prober |
使用system-boot(就是直接使用linux内核引导系统,不再需要grub,如果有多系统不推荐,会把efi分区搞得很乱):
1 | pacman -S efibootmgr dosfstools |
所有完整实现代码:match
我们知道cidr对ip匹配时,只要cidr的mask长度的前几位与要匹配的ip相同,则可以说匹配成功.
1 | 假设有一个cidr为128.0.0.1/24 |
域名就比较简单了,直接按点分割就行了
通过上述规则 我们可以使用前缀树实现CIDR对ip的匹配
1 | root |
域名的前缀树相同,只不过域名不再是只有0和1,而且在匹配的时候还需要跳过前面的那些前缀.
1 | +---------+ |
trie树类似上述结构
trie树节点 我们可以这样写
1 | linux下的进程机制,当父进程被杀死之后,子进程就被系统接管 |
创建efi分区:
创建efi分区要设置boot flag,而不是纯FAT32文件系统
使用gdisk
1 | gdisk /dev/sd** |
使用parted
1 | parted /dev/sd** |
之后再格式化为fat32
1 | mkfs.vfat -F 32 /dev/sd** |
更新bios中的启动项应该在将启动文件安装到efi分区时还要向bios中的nvram存储器上写入相应的路径,在linux中可以使用efibootmgr完成相应的操作,当然如果你是安装grub,安装grub时会自动向nvram中写入内容,比如在bios更新后,会清除nvram中的内容,所有还要重新安装grub,或是使用efibootmgr写入引导文件路径.可参考Unified_Extensible_Firmware_Interface#efibootmgr,windows中也有相应的工具,具体操作方式可在网路上搜索.
如果是u盘的话,uefi 会查看所有 fat 分区,看看里面有没有 EFI/boot/bootx64.efi(目前还没有找到相应的文档表示是这个,这只是我个人的猜想,因为在我试过的无论是windows还是linux的iso镜像的efi文件都是这个地方) 引导文件,然后只要是 FAT32 文件系统就行,所以可以把 windows 或 ubuntu 的 iso 直接解压到一个 fat 分区(比如 fat 的 u 盘或移动硬盘)然后引导
有些UEFI系统只会识别 efi分区下的EFI/boot文件夹内的efi文件,有的甚至只会识别EFI/boot/bootx64.efi
感知器的一个公式:
当 wx+b>0 , f(x)=1,否则f(x)=0
对权重的调整公式,此处使用了梯度下降的方法: w=w+i*(t-count)*x
对偏置调整的公式: b=b+i(t-count)*
这次我们使用python来实现与和或
完整实现代码:
socks5 client
socks5 server
http server
此处已socks5client为例,大致流程都相同,只是协议不同:
socks5运行流程如下:
tcp:
- 本机和代理服务端协商和建立连接;
- 本机告诉代理服务端目标服务的地址;
- 代理服务端去连接目标服务,成功后告诉本机;
- 本机开始发送原本应发送到目标服务的数据给代理服务端,由代理服务端完成数据转发。
udp:
- udp因为是无连接的,所以所以数据一次只用一个udp包
- socks5是通过tcp先确认socks5 server支持udp,然后再通过udp发送请求
golang实现(这里的地址我是本地socks5服务端)
1 | conn,err := net.Dial("tcp","127.0.0.1:1080") |
验证字段:
VER | NMETHODS | METHODS |
---|---|---|
1字节 | 1字节 | 1-255字节 |