摘要: 题意:给定一组数字,如0, 1, 2, 4, 6, 7,用这些数字组成两个数,并使这两个数之差最小。求这个最小差。在这个例子上,就是204和176,差为28。分析:首先可以想到,这两个数必定是用各一半数量的数字组成的数,如给出6个数,把这6个数分为两组,每组3个,这样组成的数字的差必定比其他方式小。接下来的任务就是穷举所有可能出现的组合,并求出最小差。在这里可以使用STL的next_permutation函数来求给定这组数字的所有排列,并将其分为两组组成数字,然后记录最小差。需要注意第一个数位不能为0。 1 /* 2 input: 3 1 4 0 1 2 4 6 7 5 output: 6 2 阅读全文
posted @ 2014-03-14 10:11 7hat 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 在学习的过程,由于很多命令平时都用不着,因此做这个索引方便需要时查找。这包括了前两部分。主要是按页码顺序。P118 date:显示日期与时间 cal:显示日历 bc:计算器P121 [Tab]:命令补全或文件补全 [Ctrl]-c:强制中断 [Ctrl]-d:EOF或exitP123 man:操作说明P127 info:与man类似,但显示方式不同P130 nanp:简单文本编辑器P132 sync:数据同步写入硬盘 shutdown:关机 halt:关机 poweroff:关机 reboot:重启 init:切换执行等级P144 chgrp:改变文件所属用... 阅读全文
posted @ 2014-03-13 16:05 7hat 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 近期尝试将一些东西写成博文发出来,新的旧的也写写,整理一下思路。另外,将不会再更新《SDN核心技术剖析和实战指南》的读书笔记,基础部分也写得差不多了。 大三下学期了,努力做点事情。 阅读全文
posted @ 2014-03-13 09:27 7hat 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 这一节主要是介绍几种开源的SDN控制器。 NOX/POX。最初的NOX混合了C++和Python两种编程语言,现在演变为两个版本。NOX版本主要面向Linux平台,利用C++开发,目标是提供快速的控制平台;POX版本面向Windows、Mac OS、Linux等多种平台,利用Python开发,目标是提供控制器部署的便利性。两者可以看作是同一种控制器。 NOX采用了组件化的架构,可分为核心组件和应用组件。核心组件是用于和网络直接打交道的底层接口;应用组件既包括NOX本身提供的组件,也包括第三方扩展的组件(包括用户)。与SDN相关的组件包括以下几种:Discovery组件:用于链路发现;T... 阅读全文
posted @ 2014-03-13 09:23 7hat 阅读(539) 评论(0) 推荐(0) 编辑
摘要: 题意:7数码问题。在2×4的棋盘上,摆有7个棋子,每个棋子上标有1至7的某一数字,不同棋子上标的数字不相同。棋盘上还有一个空格(用0表示),与空格相邻(上下左右)的棋子可以移到空格中,该棋子原先位置成为空格。给出一个初始状态(保证可以转移到最终状态),找出一种从初始状态转变成给定最终状态的移动棋子步数最少的移动步骤。输入:多组输入,每组8个数,表示初始状态前四个数为第一行从左到右,后四个数为第二行从左到右。输出:至少需要多少步可以从输入状态到达最终状态(0 1 2 3 4 5 6 7)(题意翻译参考自http://bbs.byr.cn/#!article/ACM_ICPC/73337 阅读全文
posted @ 2014-03-13 08:33 7hat 阅读(686) 评论(0) 推荐(0) 编辑
摘要: 在SDN的架构中,控制器可以说是SDN的核心,它负责对底层转发设备的控制以及向上层应用提供可编程性的北向接口。从实现上看,主要分三个层面来考虑,南向接口技术,北向接口技术以及东西向的可扩展性能力。下面逐一描述。 南向网络控制技术主要包括通过南向接口协议进行链路发现、拓扑管理、策略制定、表项下发等。链路发现和拓扑管理主要是控制器利用交换机上报的信息进行同一管理(上行),而策略制定和表项下发则是控制器向交换机发送控制信息从而实施同一控制(上行)。 SDN控制器主要使用LLDP(Link Layer Discovery Protocol,链路层发现协议)作为链路发现协议。该协议可将设备的能力... 阅读全文
posted @ 2014-03-12 11:18 7hat 阅读(1595) 评论(0) 推荐(1) 编辑
摘要: 题意:巨大流星雨即将袭来。每个流星会对击中的地方以及周围(上下左右四格)造成破坏。Bessie开始时位于(0, 0)位置,并希望逃到一处不会被袭击到的地方(在第一象限内)。已知每移动一格需要1个时间单位,被流星破坏后的地方不能再进入。给出M个流星在T时刻击中的地方(X, Y),问Bessie能否逃到安全的地方,若能输出最短时间,否则输出-1。分析:依旧是迷宫问题。不同的是,需要自己构建出迷宫。首先将maze的所有格初始化为INF,表示这个格子被袭击的时间为INF(即永远不会被袭击)。对于每一个流星,将其影响反映到maze上,如果破坏范围由重叠,那么格子显示的是较早的破坏时间(因为一旦破坏了就不 阅读全文
posted @ 2014-03-12 09:37 7hat 阅读(1988) 评论(0) 推荐(0) 编辑
摘要: Open vSwitch(OVS)是一款基于软件实现的开源交换机。它能够支持多种标准的管理接口和协议以及跨多个物理服务器的分布式环境。特别地,OVS提供了对OpenFlow协议的支持,并且能够与众多开源的虚拟化平台相整合。 (参考Open vSwitch官网:http://openvswitch.org/) 如上图所示。OVS两端连接着一块物理网卡和多块虚拟网卡(虚拟机中的网卡),在OVS的维护一个映射表,根据MAC地址来映射到对应的VM链路从而完成数据的转发,从某个角度上看,这可能有点像NAT的功能。值得注意的是,提供OpenFlow支持的OVS是根据自身保存的流表来对数据包进行匹配... 阅读全文
posted @ 2014-03-11 16:33 7hat 阅读(1192) 评论(1) 推荐(1) 编辑
摘要: OpenFlow协议定义了交换机和控制器交换数据的方式和规范,但并没有定义如何配置和管理必需的网络参数和网络资源,OF-CONFIG的提出就是为了对OpenFlow提供配置管理支持。如下图所示,OF-CONFIG在OpenFlow原来的框架上,新增了OpenFlow配置点对交换机进行配置和管理。(图摘自《SDN核心技术剖析和实战指南》) OF-CONFIG对一些交换机的基本功能进行了配置,如控制器的IP地址,设备的队列与端口等资源以及支持远程修改设备的端口状态等。另外,还有其他一些可配置的参数,但我认为在学习理论的时候并不需要强记这些东西,到了实践的时候真正用到就会记得。现在只需要记得,... 阅读全文
posted @ 2014-03-11 16:07 7hat 阅读(568) 评论(0) 推荐(0) 编辑
摘要: 题意:在 H * W 的地图里有 N 个工厂,每个工厂分别生产硬度为1-N 的奶酪,有一只老鼠准备把所有奶酪都吃完。老鼠的初始体力值为1,每吃一个奶酪体力值加 1。已知老鼠不能吃硬度大于当前体力值的奶酪,老鼠只能向上下左右四个方向走,求吃完所有奶酪老鼠需要经过的最小步数。分析:简单迷宫问题。不同的是,老鼠需要按1-N 的顺序把奶酪吃完。用广度优先搜索很容易求出起点到终点的最小步数。初始时,求起点到硬度值为 1 的奶酪的最小步数;接着将起点重置为此位置,继续求此位置到达硬度值为 2 的奶酪;如此类推。因此这里只需做N 次广度优先搜索,并累计其值即可。C++代码: 1 #include 2 #i. 阅读全文
posted @ 2014-03-11 15:37 7hat 阅读(329) 评论(0) 推荐(0) 编辑