8 lishuhuakai

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 2k+

quagga相关代码的阅读

最近的工作涉及到了rip和ospf两个相关的协议,虽然仅仅是修两个bug,但是个人还是对这两个协议是如何实现的产生了很浓厚的兴趣。因此,就抽了一段时间读了一下quagga的源码。相比于我之前读的ovs相关的代码,quagga的代码简单了不少,毕竟可供参考的资料太多了。大致花了一个月的空闲时间读完了rip和ospf的源码(其他协议没用到,也就没有读了)。真的如果静下心来的话,估计10来天就够了。...

2019-10-04 15:46:34

8021x认证以及portal认证的参考资料

最近几个月一直在阅读和认证相关的东西,到如今,也基本上将认证的流程摸得比较清楚了,所以在这里写一篇文章,记录一下自己的心得,同时也给希望了解这些认证的同学一些参考资料。(说实话,在没有别人的帮助下,自己一个人去琢磨各种代码是很痛苦的一件事情,我就是这么过来的。)认证的本质简单一点来说,所谓认证,指的是控制终端(sta)的访问权限,在sta没有通过认证的情况下,不让其访问网络资源,只有当sta通...

2019-07-14 20:00:40

怎么样来读ovsdb的源码?

ovsdb数据库是NOSQL数据库的一种,大部分人应该都没有听说过这个数据库。虽然这个数据库默默无闻,但是它在交换机以及云计算这两个方向上占据了比较重要的地位。本人所在的公司恰好也用到了这个数据库。平时虽然经常使用这个数据库,但是关于这个数据库是如何来实现的,还真是不清楚。所以在工作之余,心里就产生了读一读它的源代码的想法。说干就干,直接从github下载了源代码,放到了机器上,编译出来了程序...

2019-02-02 15:56:59

visio中图形旋转任意角度

这是一个非常简单,但是某些时候又非常有用的技巧。 你可能或说,直接按住旋转按钮即可,如下图: 这个技巧大部分时间可用,但是做不到很高的精度,如果你需要更加精细的控制,有下面的办法。废话不多说,一图胜千言。

2018-01-16 17:17:07

没事,就想瞎写一下

好吧,好长时间没写过总结了,今天可能是一个新的阶段的开始,所以我就记一篇流水帐吧,记录一下这一段时间做的事情.很遗憾,也很惭愧,这两周,真心没干什么有意义的事情,本来想读一下protobuf的源码,但是我没有用过这东西,干读的话,读不动.另外,总体上来说,我放荡了大致有两个星期了,现在想一想,实在不应该,以前沉迷于读书编码的时候,中间总是夹杂了非常多的杂事,老是觉得时间太少,不过反而是那段时间

2018-01-10 16:46:02

numpy的unwrap函数

最近处理相位角的时候用到了这个函数,所以在这里稍稍用一点篇幅来记录一下我的理解.unwrap函数究竟是用来是用来干什么的呢?它是用来解卷绕的.至于什么是卷绕,网上的说法是: 要计算一个系统相频特性,就要用到反正切函数,计算机中反正切函数规定,在一、二象限中的角度为0~pi,三四象限的角度为0~-pi。 若一个角度从0变到2pi,但实际得到的结果是0~pi,再由-pi~0,在w=pi处发生跳

2017-12-15 14:16:46

RedBase点滴

RedBase是斯坦福数据库课程的一个Project,在网上找不到最初的代码,不过在github上有这个project的成品.很多大牛在推荐数据库实现的时候,大抵都会推荐一下这份源码,所以我就将代码clone了下来,准备动手来处理一下这些代码.总而言之,就我得到的代码而言,这份源代码的质量真不敢恭维,看着看着我就坐不住了,忍不住想将这份糟糕的成品重构一遍,所以没有什么废话,直接就动手了.这个Pro...

2017-11-04 21:54:52

lower_bound以及upper_bound

lower_bound以及upper_boundSTL中实现了这两个算法,但是代码看起来非常晦涩,如果要快速写出这两个算法的话,参照STL的实现,恐怕会非常费劲.这里,我提供一种非常简洁的实现.代码仅供参考.lower_bound给定一个有序数组 vals, 寻找 vals 中第一个为 k 的值的下标,没有找到的话,返回 -1. 举个栗子, vals = [0, 1, 1, 1, 2, 3], 那

2017-08-21 23:07:44

如何实现STL中的next_permutation函数?

问题,实现 STL 中的 next_permutation() .回答来自stackoverflow:先让我们来看一些排列:1 2 3 41 2 4 31 3 2 41 3 4 21 4 2 31 4 3 22 1 3 4...我们如何从一个排列转移到下一个排列呢?首先,让我们用另外一个角度来看待这个问题.如果将排列中每个元素视作一个数字(当然这里就是数字,但是元素是’a’, ‘b’的

2017-08-13 17:40:01

二叉树的遍历

二叉树的遍历二叉树是一种常见的数据结构,对于这种结构的操纵一定要烂熟于心,这篇文章想记录一下的,是二叉树的遍历操作.实现的方式二叉树的遍历,事实上有两种是实现方法,一种是递归,这种方法过分简单,所以这里不会讲,第二种方式是非递归,你可能会问,既然递归实现这么简单,我们为什么还要非递归版本的实现,这个问题很好,这个实际上和递归的内存开销有关,每一次递归,程序便要堆栈,每次堆栈,便会占用比非递归昂贵得多

2017-08-13 17:37:00

leetcode -- Single number

Single number I给定一个整数数组, 数组中的每个数都出现了 2 次,除了一个数, 它只出现了 1 次,请将它找出来.思路位操作 ^ 有着非常漂亮的性质,首先,它支持交换律:A ^ B = B ^ A其次,它还支持结合率:A ^ B ^ C = A ^ (B ^ C) = (A ^ B) ^ C然后, ^ 本身具有这样的语义:A ^ A = 0, A ^ 0 = A我们可以很清楚地知道:

2017-08-05 02:53:06

子集生成算法

子集生成算法属于暴力法中一类非常重要的算法.题目描述给定一个集合,请写一个算法,得到其所有的子集.这里假定该集合不存在重复的元素.举个栗子,给定集合[1, 2, 3], 你返回这样一堆子集:[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]如果我们将集合中每个数对应的位置对应到所在位向量法根据离散数学的知识,我们可以知道,一个长度为 n 的集合的

2017-07-09 01:03:07

leetcode -- Combination Sum

这是一套非常有意思的套题,我想在这里总结一下个人的心得.一. Combination Sum给定一组没有重复的,候选的数字 C ,以及一个目标数字 T ,找到在 C 中所有的组合,使得该组合的和为 T.在 C 中的每一个数字可以重复无数多次.注意:所有的数字,包括 T, 都为正数.最终输出的方案中不应该包含重复的组合.举个栗子,给定 C 为 [2, 3, 6, 7] , 以及 T 7.可以得到

2017-06-23 00:42:59

leetcode -- Word Break

题目描述给定一个非空的字符串s以及一个包含了很多非空词语的字典,判断s是否能够拆解为一个以及多个词典词语,你可以假定,字典中不会包含重复的词语.下面是一个例子:s = "leetcode",dict = ["leet", "code"]这个例子应该返回true,因为leetcode可以被拆解成为leet code.题目扩展给定一个非空的字符串s和一个包含了很多非空词语的字典,在s中添加空格来构建一

2017-06-19 00:37:08

leetcode -- Unique Binary Search Trees

题目描述给定一个n,我们可以构建多少棵二叉搜索树呢?使用值1~n填充树的节点.举个例子,如果n=3,那么一共会存在5棵这样的树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \

2017-06-17 23:00:25

tcpdump抓包命令

我并没有写这些东西,我做的事情仅仅是将网上的一些东西整合了起来,然后删掉了一些不常用的命令,仅此而已.tcpdump抓包命令tcpdump是一个用于截取网络分组,并输出分组内容的工具。tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdu

2017-06-12 21:50:57

TUN/TAP设备浅析(三) -- TUN/TAP设备的应用

上一篇文章主要讲述了TUN/TAP设备的一些原理,你可能会好奇,TUN/TAP设备究竟有什么用处呢?所以这篇文章,我想用一些实际的例子来回答这个问题。例子源自陈硕老师的博客,博文中关于TUN/TAP设备的使用非常典型,对原文感兴趣的同学可以查看这里:http://blog.csdn.net/solstice/article/details/6579232背景:在一台 PC 机上模拟 TCP 客户端程

2017-06-12 21:41:14

TUN/TAP设备浅析(二) -- TUN/TAP的编程

这篇文章想详细阐述一下有关于 TUN/TAP 设备的编程。其实关于这两种设备的编程,基本上属于八股文,大家一般都这么干。启动设备之前有的linux 并没有将tun 模块编译到内核之中,所以,我们要做的第一件事情就是检查我们的系统是否支持 TUN/TAP 。具体如何检查和解决,请查看这里http://blog.csdn.net/lishuhuakai/article/details/70305543,

2017-06-12 21:37:27

TUN/TAP设备浅析(一) -- 原理浅析

TUN/TAP设备浅析TUN设备TUN设备是一种虚拟网络设备,通过此设备,程序可以方便地模拟网络行为。TUN模拟的是一个二层设备,也就是说,通过它可以处理来自网络层的数据,更通俗一点的说,通过它,我们可以处理IP数据包。先来看看物理设备是如何工作的:上图中的eth0表示我们主机已有的真实的网卡接口(interface)。网卡接口eth0所代表的真实网卡通过网线(wire)和外部网络

2017-06-12 21:34:56

一个简易的基于tun/tap设备的协议栈

从上一次准备开坑开干,到现在初步完成,已经过了一个半月了,造一个轮子确实是非常耗时耗力的一件事情,但是不管怎样,我终究还是做完了,完成了当初的目标,虽然代码还有非常多值得改进的地方,但是现在已经不是很着急了,一步一步慢慢来吧,接下来的一段时间里,我会将这个协议栈背后涉及到的一些知识贴成博文,但是我不会去讲实现,没有任何意义.自己去读吧,代码非常简洁.接下来一直到毕业,估计都很难像这个学期一样,花上这

2017-05-27 13:49:30

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!