BY Blog

Thinking will not overcome fear but action will.

order优化

数据库

1. 现象 select * from example_table where userId=1 and date=20240108 order by time limit 100 offset 2 数据库查询某个用户在某天的记录超时,该用户的总记录在几十万条 已存在索引query –(userId) 2. 该条数据执行过程 从索引query找到第一满足userId...

tcp连接失败

协议栈

拓扑图 内核版本 v3.16 现象 内部环境集群拓扑下,本地终端浏览器访问web服务,偶尔浏览器报”网络访问拒绝”错误 分析 本地终端上抓包发现,tcp三次握手失败,终端的第一个syn包未能得到回复。 从主机进入ingress-nginx的网络命名空间,可发现nginx已经接受到syn。 分别对k8s_node1与k8s_node2的主机抓包,发现syn包是在node节...

mtu引发访问视频网站失败

协议栈

现象 网关wan2 pppoe拨号上网,所有经网关wan2口上网的设备,访问抖音、斗鱼等视频网站均出现获取视频失败情况。 拓扑 分析 通过抓包可以看到,客户端与服务端的https握手未能成功,从服务端回复的一个包一直处于丢失状态。分析tcp流,ip头部已被设置上“禁止分片”标记。 从wan1口出发正常,那么对比从wan1口出去包的,发现从wan2口出去的tcp第一个包的mss...

2023 todo

2023待完成项

技术类书籍 《代码整洁之道》 《Go Web编程》 《mysql实战45将》 《设计模式之美》 《linux性能优化实践》 《Go语言实践》 《go学习笔记》 《linux多线程服务器编程》 《深入理解linux网络》 《深入理解linux网络技术内幕》 《linux环境编程: 从应用到内核》 非技术类书籍 《蛤蟆先生去看心理医生》 《疗愈的饮食与断食:新时代的个人营...

Red-Black-Tree 2020

算法

红黑树 红黑树是平衡二叉树的一种实现,它追求局部平衡,插入、删除复杂度都为 O(Logn),它在插入和删除操作上比AVL树更优秀。它具有以下性质: 每个节点颜色为红色或者黑色。 根节点为黑色 整棵树中不存在相邻的红色节点 从树中的每个节点到它的任意叶子节点经过的黑色节点数量相同。 插入操作 红黑树中采用两方法来平衡树,分别为:染色、旋转。 假设新插入的节点为X ...

git基础 2020

git

git基本用法 git简单分为三个区:工作区、暂存区、仓库,由下图可简单了解它们关系。 命令 作用 git push origin master 将本地master分支已提交代码同步到服务器上 git clone url 下载远端代码 ...

avl tree 2020

算法

平衡二叉树 AVL树是最早提出的平衡二叉树,它基本性质就是:左右子树的高度差不超过1,且左右子树都是一颗平衡二叉树。 旋转 AVL树通过旋转平衡左右子树高度,它有四种基本的旋转方式,分别为:左旋转,右旋转,左右转载,右左旋转。 右旋转 右旋:即用左儿子取代根,假设我们要旋转以X为根,LR分别为X的左右儿子,那么我们只需要把L的右儿子取代X的左儿子,然后把更新后的X赋值为L的右儿子,就...

认证 2019

网络

HTTP认证 对于http认证,使用http302重定向到用户认证页面。通常是在内核中检查到未通过认证的用户有http请求时,设备在内核中构造一个http302返回给用户。一般的,由于设备IP地址不确定,会在302中返回一个URL。浏览器根据URL查询DNS,设备上做DNS重定向,考虑浏览器上会做DNS缓存,该DNS不会直接返回设备的IP,该DNS重定向URL到一个“虚拟”IP地址上,由设备...

dhcp 2019

网络

前言 DHCP简单整理 DHCP过程 discovery阶段:客户端以广播的形式请求IP。如果没有DHCP回应,最长间隔65s重新发送,直到有响应。discovery可以携带dhcp option50用来请求上一次的IP地址。 offer阶段:DHCP服务器以单播或广播的形式回复一个IP地址。 request阶段:客户端以广播的形式通知所有的DHCP服务器请求使用该IP。 ...

一致性hash 2019

算法

传统hash缺陷 分布式应用的缓存放在N台机器中,通过hash(key)%N找到机器请求缓存服务。但是某一个机器宕机,N的大小发生改变,下一次的请求机器为hash(key)%(N-1),请求机器改变,缓存失效。所以我们希望在删除某台机器节点的时候,其他机器节点缓存仍然有效。 一致性hash基础 一致性hash不在采用取模的方式,而是把整个 [0, 2^32-1] 按照服务的hash值分...