专注PHP Golang开发
MTU与IP分片 MTU与IP分片
MTU的作用Maximum Transmission Unit(MTU):最大传输单元 一个标准的以太网数据帧最大为1518,其中源MAC 6字节,目的MAC 6个字节,Type 2个字节,FCS 4个字节(前导码不算在内,在物理层就已经去
2022-06-17
通过 openvpn 分析 tun 实现隧道的数据流程 通过 openvpn 分析 tun 实现隧道的数据流程
本文转载自 骏马金龙 提醒: 网上大多文章在这方面的分析都是错的,认为是 openvpn 对数据进行额外的封装和解封。 但实际上,在不绕过内核的情况下,网络数据的封装和解封由内核负责,用户空间的程序无法对数据进行封装和解封。 以 O
2022-05-23
OpenSSL生成自签名证书 OpenSSL生成自签名证书
第一种方式(使用命令)生成私钥 openssl genrsa -out server.key 1024 使用私钥生成自签名的cert证书文件,以下是通过参数只定证书需要的信息 openssl req -new -x509 -days 36
2022-05-08
Linux 虚拟网卡设备 tun/tap Linux 虚拟网卡设备 tun/tap
本文转载自 骏马金龙 物理网卡收发数据的流程物理网卡可以接收和发送数据: 收:外界向该物理网卡发送数据时,外界发送到网卡的数据最终会传输到内核空间的网络协议栈中 发:本机要从物理网卡发送数据时,数据将从内核的网络协议栈传输到网卡,网卡负责
2022-04-18
布隆过滤器 布隆过滤器
简介布隆过滤器(Bloom Filter)是1970年由布隆(Burton Howard Bloom)提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都
2022-04-16
标准差和方差 标准差和方差
标准差 标准差是数值分散的测量 标准差的符号是 σ (希腊语字母 西格马,英语 sigma) 公式很简单:方差的平方根 方差 离平均的平方距离的平均 按照以下的步骤来计算方差: 求数值的 平均 从每一个数值减去平均,然后求差的平方 求
2022-04-01
物理网卡、网卡接口、内核、IP属性的关系 物理网卡、网卡接口、内核、IP属性的关系
本文转载自 骏马金龙 我想很多人都对它们产生过迷惑,物理网卡明明是一块小板子,为什么和eth0 (或 Windows 下的本地连接) 是对应的呢,为什么还可以给物理网卡配置 IP 地址呢,为什么还有那么多属性呢,等等谜之问题。 一个类比
2022-03-17
HTTP协议 HTTP协议
HTTP1HTTP1.0 浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接(TCP连接的新建成本很高,因为需要客户端和服务器三次握手),服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去
2022-03-06
QUIC协议 QUIC协议
简介 QUIC(Quick UDP Internet Connection)是谷歌制定的一种互联网传输层协议,它基于UDP传输层协议,同时兼具TCP、TLS、HTTP/2等协议的可靠性与安全性,可以有效减少连接与传输延迟,更好地应对当前传输
2022-03-05
IPVS IPVS
简介 要了解 IPVS,不得不谈到 Linux 虚拟服务器项目(Linux Virtual Server, LVS)。Linux 虚拟服务器技术是为了解决服务器承受的日益增长的访问压力,它通过部署虚拟服务器,使真实服务器集群使用同一个地址对
2022-02-19
RAID RAID
RAID 磁盘阵列(Redundant Arrays of Independent Drives,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加
2022-02-11
Redis LFU算法 Redis LFU算法
Redis LFU算法LRU有一个缺陷,一个访问不频繁的数据,恰好在淘汰前访问,导致没有被淘汰,而访问比它频繁的,反而因为访问时间在前面一点而被淘汰 Redis作者曾想改进LRU算法,但发现Redis的LRU算法受制于随机采样数maxmem
2022-02-02
Redis LRU淘汰策略 Redis LRU淘汰策略
Redis LRU淘汰策略Redis会删除过期键以释放空间,过期键的删除策略有两种: 惰性删除:每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键 定期删除:每隔一段时间,程序就对数据库进行
2022-02-01
RabbitMQ 学习 RabbitMQ 学习
RabbitMQ 高级消息队列(Advanced Message Queuing)模型,RabbitMQ 实现了 AMQP 协议 RabbitMQ概念Broker机节点,中文翻译是代理/中介,因为 MQ 服务器帮助我们做的事 情就是存储
2022-01-10
Golang Patch 实现Golang单元测试 Mock Golang Patch 实现Golang单元测试 Mock
本文转自https://bou.ke/blog/monkey-patching-in-go/ 前提使用go build -gcflags=-l来构建,禁用内联。对于本文,假设架构是 64 位,并且使用的是基于 Unix 的操作系统,如 Ma
2022-01-05
P2P技术与NAT穿越 P2P技术与NAT穿越
P2P技术与NAT穿越 P2P即点对点通信,或称为对等联网,与传统的服务器客户端模式有着明显的区别,在即时通讯方案中应用广泛(比如IM应用中的实时音视频通信、实时文件传输甚至文字聊天等) NAT技术和P2P技术作为经典的两项网络技术,在现
2021-12-27
Redis 数据结构底层实现 Redis 数据结构底层实现
Redis 数据结构底层实现 String 如果一个字符串对象保存的是整数值,并且这个整数值可以用long类型来表示,那么字符串对象会将整数值保存在字符串对象结构的ptr属性里面(将 void* 转换成 long ),并将字符串对象的编
2021-12-23
linux Uboot linux Uboot
简介 Uboot 属于bootloader的一种,是用来引导启动内核的,它的最终目的就是,从flash中读出内核,放到内存中,启动内核,需要具有读写flash的能力 Flash flash是存储芯片的一种,通过特定的程序可以修改里面
2021-11-21
3 / 11