- 博客(31)
- 收藏
- 关注
原创 TCP服务器的几种实现方式
1.简介2.TCP客户端#include <iostream>#include <sys/socket.h>#include <arpa/inet.h>#include <cstdlib>#include <cstdio>#include <cstring>#include <unistd.h&g
2018-03-05 14:30:02
1221
原创 二叉树三种遍历的非递归实现
1. 简介 二叉树的遍历方式有多种,最常见的四种为前序遍历(深度优先遍历),中序遍历,后序遍历,以及宽度优先遍历。其中前三种遍历方式都是递归定义的,它们三种遍历对空树都不做任何事情。 前序遍历要求先访问根结点,然后前序遍历左子树,然后再前序遍历右子树,简称”根左右”。 中序遍历要求先中序遍历左子树,然后访问根结点,然后中序遍历右子树,简称”左根右”。 后序遍历则要求先后序遍...
2018-02-13 01:38:45
539
原创 用Python的pulp解决线性规划问题
1. 简介 线性规划是研究线性约束条件下线性目标函数的极值问题的数学理论和方法。Python中有许多第三方的工具可以解决这类问题,这里介绍常用的pulp工具包。 关于pulp工具包的详细介绍,请参见pulp官网。2. 安装 在Ubuntu14.04上安装非常简单,使用pip工具直接安装就可以使用了。pip install pulp3. 使用流程 我们解决线性
2017-05-17 02:44:02
26548
12
原创 P,NP,NPC,NP-HARD的关系
1. 简介 算法的时间复杂度用来衡量一个算法运行需要的计算量,并且反映了在输入规模非常大的时候算法的运行速度。多项式时间算法亦称为有效算法,是因为其的计算量随着输入规模的变化速度对于计算机而言相对可以接受,而超多项式时间的算法(如指数时间算法)在输入规模较大的时候,算法的计算量会增加的非常恐怖。 因此,一个问题是否存在多项式时间的算法来解决是一个非常值得探讨的问题。2. 定义 P,NP,
2017-04-16 20:16:53
1135
原创 在路由器上进行基于OpenVswitch的openflow实验
1.简介 本篇文章主要是在刷写了OpenWRT的路由器上的OpenVswitch进行openflow流表的测试,实际部署的测试过程会遇到许多仿真所碰不见的问题。2.实验环境两台Ubuntu14.0.4系统的PC一台刷写了OpenWRT15.05的路由器Netgear WNDR4300 v1,并在其上安装了OpenVswitch.两条网线3.划分VLAN 我将Lan对应的网卡eth0划分出
2017-04-13 16:06:20
3996
1
原创 堆排序
1. 简介 堆排序是建立在堆这种数据结构基础上的选择排序,是原址排序,时间复杂度O(nlogn),堆排序并不是一种稳定的排序方式。堆排序中通常使用的堆为最大堆。 2. 堆的定义 堆是一种数据结构,是一颗特殊的完全二叉树,通常分为最大堆和最小堆。最大堆的定义为根结点最大,且根结点左右子树都是最大堆;同样,最小堆的定义为根结点最小,且根结点左右子树均为最小堆。 最大堆满...
2017-04-12 11:46:11
490
原创 网络嗅探函数库Libpcap
1.简介 libpcap即Packet Capture Library,是一个Linux常用的数据包捕获函数库。该库全部由C语言编写,为不同的系统提供了统一的编程接口,一共提供了20多个API函数。使用libpcap的API能够轻易地捕获数据包,并且能够进行自定义的过滤,存储以分析等。2. 工作原理 libpcap由两部分组成,分别是网络分接口和数据过滤器。网络分接口负责从监听网络设备驱动程序,
2017-03-31 02:34:43
955
原创 802.11协议基础知识
1. 简介 IEEE 802.11是现今无线局域网通用的标准,它是由国际电机电子工程学会(IEEE)所定义的无线网络通信的标准。最早的802.11协议。由于其伴随扩展协议的发展和普及导致其已经被淘汰,802.11常见的四个扩展协议abgn的各个参数如下。 协议 发布年份 标准频带 标准速度 最大速度 室内半径范围 室外半径范围 备注 802.11b 1999
2017-02-15 01:12:01
5688
1
原创 用OpenWRT编译软件安装包
1.简介 OpenWrt是一个用于嵌入式设备的GNU/Linux发行版,具有强大的扩展性。不同于其他许多用于路由器的发行版,OpenWrt是一个从零开始编写的、功能齐全的、容易修改的路由器操作系统。 在本篇文章中,我将编译出三个ipk包,分别是用来测试的helloworld,以及port-mirroring,capsulator,并安装它们进行测试使用.2.环境Ubuntu 14.04N
2017-01-20 18:43:20
11342
原创 用Hostapd创建可用的软AP
1. 介绍 hostapd是一款运行在用户态软件,能够为认证服务器提供管理接入点。在本篇文章中,我们将使用hostapd让我们计算机的无线网卡工作在AP模式,这样我们的计算机就能够成为一个接入点。2. 安装配置Ubuntu 14.04hostapd v2.6isc-dhcp-serverhostapd可通过一下命令安装,获取到的是最新版本2.6。sudo ap
2017-01-08 15:09:32
19032
3
原创 对路由器进行Openflow1.3配置
1.概述 本篇文章要配置的路由器是已经刷了支持openflow1.3协议的OpenWRT系统的,具体刷机过程可参考http://blog.youkuaiyun.com/qq_20448859/article/details/53742730 。本文要配置的路由器是TL-MR3420 ver1.1。2.配置需知 要配置的文件有三个,分别是network,openflow,以及wireless,它们都位于路由器
2016-12-23 01:36:02
3266
2
原创 利用OpenWRT使路由器支持openflow1.3协议
1.刷机环境Ubuntu 14.04(64bit)一台Openwrt支持的设备一条网线2.下载Openwrt源码 首先到https://wiki.openwrt.org/toh/start#supported.hardware.-.router.type查看准备的路由器是否被Openwrt所支持,我刷过的型号有TL-MR3420ver1.1和TL-WR740Nver3,分别对应着15.05
2016-12-19 17:47:14
4889
原创 Python装饰器
1. 简介 装饰器本质上是一个函数,该函数的返回值也是一个函数对象。装饰器能够在其他函数不改变其代码和执行方式的前提下增加其功能,这样我们可以抽离出大量的与特定函数无关的代码放到装饰器中以重用。2. 无参装饰器 首先要说的是这里的无参指的是修饰器本身没有参数,要修饰的函数有没有参数都可以,先看下面这个例子。def a(): print "do something here"a()
2016-11-22 18:52:16
332
原创 经典排序算法
1. 快速排序void quicksort(int array[],int start,int end) { if (end-start <= 0) { return; } int left = start + 1; int right = end; int reference = array[start]; bool find_rig
2016-09-16 15:02:47
687
原创 Ionic 列表
1.简介 列表是常用的组织信息的方式,在ionic中,使用ion-list指令声明列表元素,使用ion-item指令声明成员元素。 ion-list和ion-item可选的样式如下。 2.ion-list样式1)边框 我们可以为ion-list添加list-boderless类来实现无边框的列表。<ion-list> <ion-item class="item-divider
2016-08-19 23:07:11
1261
原创 Ionic控件 Button
1.简介 按钮是Ionic最重要的CSS组件之一,在移动APP开发中按钮的使用非常频繁。在Ionic中,我们无需像传统html那样使用input或button标签来创建一个按钮。我们可以用任何标签来创建一个按钮,只要我们为其指定一个名为button的类,Ionic自带的CSS将会将其渲染成一个按钮。<any class="button">...这里是button的内容...</any> 不仅如此
2016-08-17 00:27:49
8751
1
原创 AngularJS 表单验证
本篇文章出自AngularJS基础教程1. 简介 能够验证用户在表单中输入的内容是否合理与正确是十分重要的,而这个验证不能仅仅基于后端,因为对其中的内容实时反馈是很重要的,我们也必须在前端尽可能的保护后端。 AngularJS能够将HTML5表单验证同它自己的验证指令结合起来使用。 2.如何实时响应AngularJS在处理表单时,会根据表单的状态自动添加一些CSS类。我们可以利用这
2016-08-11 17:31:18
4639
原创 CSS动画
1.简介 CSS动画的两大组成部分是transition(CSS过渡)和animation。其中animation是为了解决transition某些问题而出现的。在CSS3引入过渡这个概念之前,CSS是没有时间轴的,所有的变化都会在一瞬间完成。2.CSS过渡 在选择器中增加transition属性,其作用在于,指定状态变化所需的时间。其完整形式如下。img { transition-pr
2016-08-10 17:27:29
402
原创 AngularJS 过滤器
本篇文章参考自AngularJS基础教程。1.简介 AngularJS过滤器能够用来格式化数据,过滤器能够用在表达式和指令中,也能够注入到其他地方进行使用。AngularJS提供了9种常用的内置过滤器,我们还可以创建自定义过滤器来格式数据,以完成更多个性化的要求。2.使用方式 下面是过滤器的三种使用方式,形式如下。在表达式中使用{{ text | uppercase }} //将字符串te
2016-08-09 17:27:05
2703
1
原创 JavaScript闭包
1.简介 用一句话来解释闭包的话,闭包就是能够读取其他函数内部变量的函数。在JavaScript只有函数内部的子函数才能读取局部变量,因此可以简单的把闭包理解成是定义在函数内部的函数。2.实例
2016-08-07 21:41:34
308
5
原创 CSS选择器
1.语法 CSS规则由两个主要部分构成:选择器,以及一条或多条声明。每条声明由一个属性和一个值组成。selector {declaration1; declaration2; ... declarationN } 使用逗号可以将任意多个选择器分组在一起,这些选择器会共用同一个样式。下面是一个选择器分组的例子。h1,h2,h3,h4,h5,h6 {color:purple;}/* 等价于h1
2016-08-07 17:40:03
287
3
原创 AngularJS 依赖注入
本篇文章参考自AngularJS权威教程。1.简介 一个对象通常有三种方式可以获得对其依赖的控制权。依赖注入是通过第三种方式实现的,其优点在于去除对依赖关系的硬编码,可以在运行时改变甚至移除依赖关系。第一种方法和第二种,调用者和被调用者或和生产被调用者的工厂耦合在一起,第二种还会污染全局作用域。在内部创建依赖。当你需要斧子来砍木头时,你自己造一把斧子或是去购买一把斧子。造一把斧子相当于调用者创
2016-08-05 17:31:16
885
原创 JavaScript prototype
本篇文章参考了http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html 本篇文章参考了http://www.cnblogs.com/dolphinX/p/3286177.html1.简介 prototype是原型的意思,JavaScript中没有“类”和“实例”的概念,更没有“父
2016-08-05 15:26:14
277
原创 AngularJS 服务
本篇文章参考自AngularJS权威教程。1.简介 服务提供了一种能在应用的整个生命周期内保持数据的方法,它能在控制器之间进行通信,并且能保证数据的一致性。 服务是一个单例对象,在每个应用中只会被实例化一次,即被$injector实例化,并且是延迟加载的,服务提供了把与特定功能相关联的方法集中在一起的接口。2.注册一个服务 使用angluar.module的factory API来创建服
2016-07-29 14:31:22
650
原创 AngularJS 事件
本篇文章参考自AngularJS权威教程。1.简介 事件是解耦的好工具,Angular应用提供了很好的事件响应机制,让我们能够在应用中嵌套的各组件之间进行通信。2.事件传播 由于作用域是有层次的,所以我们可以在作用域链上传递事件,也正因为此,各作用域接收事件是有次序的。Angular提供了两个方法, $emit()和$broadcast方法,分别能够向上和向下传播事件。注意,$emit()方法
2016-07-28 21:37:50
1589
原创 AngularJS 模块
本篇文章参考AngularJS权威教程。1.简介 在JavaScript中,将函数代码全部定义在全局命名空间非常容易引起错误,而且调试也会变得异常困难。在AngularJS中,我们为代码提供了一个称为模块的独立环境。 使用模块的好处主要包括以下几个方面。保持全局命名空间的清洁。容易在不同应用之间复用代码。使应用能够以任意顺序加载代码的各个部分。编写测试代码更加容易,并能保持清洁。
2016-07-28 15:58:47
334
原创 AngularJS digest循环
本篇文章参考了AngularJS权威教程。 本篇文章参考了http://blog.youkuaiyun.com/dm_vincent/article/details/387050991.简介 AngularJS只用几行代码就实现了数据绑定,并能实时进行视图的更新,这里面digest循环功不可没。digest循环会进行检查scope模型的数据是否发生变化从而执行相应的动作,其中最重要的两个组成部分是$w
2016-07-26 15:03:59
2007
原创 AngularJS 作用域
本篇文章参考引用了AngluarJS权威教程。 本篇文章参考引用的博客http://www.lovelucy.info/understanding-scopes-in-angularjs.html。1.简介 作用域是构成AngularJS应用的核心,它与应用的数据模型相关联,同时也是表达式执行的上下文。作用域包含了渲染视图所需的功能和数据,它是所有视图的唯一源头,可以将作用域理解成视图模型
2016-07-25 15:16:47
2280
1
原创 Ionic 表单输入
1. 简介 ionic封装了一组指令用于表单输入,包括ion-checkbox(复选框),ion-radio(单选框),ion-toggle(开关)。2. ion-checkbox ionic的复选按钮与Html的复选按钮并无太多差异,除了样式美观以外,它的优点主要在于能够用ng-model进行绑定,可以用ng-checked方便地控制其是否选中,可以用ng-change监听其选中状态执行相应的
2016-07-24 16:46:28
2640
原创 Ionic幻灯片
1. 简介ionic的幻灯片主要由ionic-slide-box指令完成,使用幻灯片,我们可以做启动App时的滑动画面,也可实现页面的左右滑动切换。在ionic中,我们使用ion-slide-box指令来声明幻灯片元素,使用ion-slide指令声明幻灯页元素。2. ion-slide-box属性does-continue 值为布尔值,设置是否循环播放,即到最后一页幻灯页的时候可以向左滑动到
2016-07-23 11:33:03
1656
原创 AngularJS 路由
1.简介AngularJS 路由机制是由ngRoute模块提供,它允许我们将视图分解成布局和模板视图,根据url变化动态的将模板视图加载到布局中,从而实现单页面应用的页面跳转功能。2.AngularJS中的url在单页WEB应用的url中添加了#号,#号代表着网页的一个位置 ,其右边的所有内容,就是用来标示该位置的标识符。#号及后面的内容称为url中的hash片段,它们都不会发送到服务端,下面三个u
2016-07-22 14:19:48
4636
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人