BY Blog

Thinking will not overcome fear but action will.

判断点在矩形内 2019

算法

题意 平面坐标系中,给定一矩形四点和一点的坐标,如何该点是否在矩形内。 叉乘 叉乘又称为外积,它的运算结果是一个向量而不是一个标量,向量的叉乘有有以下性质。 a^b = -b^a |c| = |a^b| = |a|*|b|*sin<a,b> 叉乘的结果a^b是a和b所在平面的法向量,它的方向是垂直a和b所在的平面,并且按照a、b和a^b的次序构成右手法则,所以...

goahead 2019

http

前言 最近在想一个https强制重定向的问题,阅读了goaehad相关代码,顺便记录。 基本I/O循环 websServiceEvents实现对socket的循环事件检测处理。socketSelect检测出事件类型。socketProcess对应调用事件对应处理回调函数处理。websRunEvents实现对定时器函数检测是否到期执行。值得一提的是,select所用的delay时间是所有的注...

TCP笔记整理 2019

tcp

前言 整理下tcp相关笔记。 TCP三次握手 tcp三次握手过程大致过为: clinet -> server : SYN=1, seq=0 server -> client : SYN=1 ACK=1, seq=0 client -> server : seq=1, ACK=1 握手过程抓包如下。其中Len=0,有效数据负荷为0. 握手三次的原因 先看下两次握手缺...

linux内存屏障 2019

内存屏障

指令重排 cpu执行程序期间,访问内存非常快, 为了提高cpu性能,只要程序依赖关系保持一致,cpu可能会以任意顺序执行内存操作。 编译期间,编译器也会以任意顺序编排编译指令,只要不影响程序的表面执行结果。 为了保证代码能够有序执行,需要在代码中加入内存屏障。 例如,考虑以下序列的执行事件。 CPU 1 CPU 2 =============== ============...

linux链表 2019

链表

链表基本结构和一般链表基本结构比较 一般的数据链表结构定义如下,链表的基本增删改减功能都依赖struct type, 对于种类型的链表,都得实现一遍功能。 struct type{ int number; struct type* next; } Linux下的链表结构只带指针域,基本的增删改减功能都通过struct list_head来完成,而不涉及链表结构数据域,所以...

linux网桥 2019

协议栈

网桥概念 网桥设备:网桥工作于数据链路层,用于端口于端口之间的数据转发,不对数据帧进行修改,数据帧一般是进过L2层被转发出去,不会入协议栈。 路由设备:路由设备工作于网络层,用于数据帧的路由转发,数据帧进入协议帧。 linux下的桥接 Bridge是linux下的虚拟设备,工作于L2层,功能与网桥设备类似。被添加到Bridge的从设备同样工作在L2,处于混杂模式,接收所有数据包, 处于...