- 博客(57)
- 收藏
- 关注
网络技术独立的导火索-SDN和三个问题
网络技术就是电脑技术么?CPU和操作系统已经牢牢占有了PC,服务器的领地,每个PC,服务器上都会有一个或者多个CPU,都会跑一个OS,甚至如今的手持设备也被灌入了PC的影子,实则一个缩小版的PC,当年的类似单片机的射频终端彻底败阵。手持设备向电脑技术投降是有道理的,因此电脑和手持设备都是无穷无尽的应用来推动的,但是如果有一天物联网深入我们的生活,我害怕肉眼看不到的电子灰尘里面也会跑一个精简版的Li...
2013-05-30 21:33:00 156
又一个Linux的双向stateless NAT
如果看一下iproute2的help,就会发现在route section中有一个nat action,其中via的参数给出了转换的地址。具体的配置就不说了,只提出两点,第一,iproute2的stateless nat需要policy routing的参与,第二,它在2.6内核中被去除了;具体信息可以参见文档。在2.6内核中,内核协议栈将一切的扩展都留给了Netfilter来实现,自己只实现标准...
2013-05-30 21:27:00 361
传输网和寻址网-《云时代的信息技术》欢呼与反驳
近期看了《云时代的信息技术》这本相当叛逆的书。指出如今已经接近资源丰盈时代,在资源匮乏年代建立的网络理论必须全部推倒重来!该书犀利地指出目前的很多理论都是一些所谓的“小聪明”,或者说是一种修补,这和我所谓的“小技巧”一致,个人也因此找到了共同的声音。作者认为,网络应该是简单的,仅仅提供一个透明的通道,所有数据流自寻址到达目的地,不再有路由器等增加延迟的中间寻址设备,QoS的概念在资源丰盈时代也不再...
2013-05-27 20:53:00 683
正则表达式 进阶(二)-- 回溯引用、前后查找、嵌入条件
继续讲正则表达式的高级形式的应用,这也是最后一篇正则的文章,希望本博客的3篇正则的文章能够让大多数朋友了解正则的使用规则,并希望各位能够多多练习,提高自己的工作效率。如果不熟悉正则或者不太记得一些基础的东西,那么强烈建议先看一下前面两篇,因为3篇文章是从基础到高级的顺序来整理的。正则表达式入门正则表达式进阶(一)1. 回溯引用回溯引用是指模式的后半部分引用在前半...
2013-05-26 21:00:00 869 1
Lua基础 小结(两个Lua程序示例)
本篇文章作为Lua基础部分的一个小结,演示两个小程序,来表现Lua的不同特性。第一个例子说明Lua如何作为一门数据描述性语言使用。第2个例子,是一个马尔可夫链算法的实现。ps:个人觉得书中的这一章有点莫名其妙,感觉两个例子也没有起到什么总结作用,反而感觉讲得有点云里雾里的。1. 数据描述在Lua的网站上保留了一个数据库,存储了世界上使用Lua的项目的一些示例代码。我们用一个结构体来...
2013-05-26 20:59:00 458
责任链模式(Chain of Responsibility Pattern)
在彼此不了解的情况下,让多于一个对象处理请求,传递请求给责任链直到它被最终被处理完成,称这种模式为责任链模式。责任链模式是属于行为设计模式的类别之一,经典的UML类图如下所示: 使用场景和优势:一个请求需要被不少于一个对象处理。不清楚到底哪个对象会处理请求,可能有多于一个对象制动化地处理它。减少耦合度。弹性地操作请求。 Java Servlet 过滤框架(f...
2013-05-22 23:14:00 66
正则表达式 进阶(一)-- 匹配多连续字符、位置匹配、子表达式使用
之前一篇博文正则表达式 入门讲了下正则表达式的一些基本使用,这次讲一下高级的。还是那句话,要多用,才能够记住并留在你的大脑皮层。1. 匹配一个或多个连续字符用+符号, a+,意思是匹配1个或多个字符a;[0-9]+,意思是匹配一个或多个数字在vim中 + 语法有点不同,要用 '\+',如左示例。note:[\w.] == [\w\.],像. + 这样的元字符,在字符集中可以...
2013-05-22 07:07:00 2171
使用DefaultAdvisorAutoProxyCreator实现spring的自动代理
DefaultAdvisorAutoProxyCreator这个类功能更为强大,这个类的奇妙之处是他实现了BeanProcessor接口,当ApplicationContext读如所有的Bean配置信息后,这个类将扫描上下文,寻找所有的Advistor(一个Advisor是一个切入点和一个通知的组成),将这些Advisor应用到所有符合切入点的Bean中业务接口:packag...
2013-05-22 03:29:00 78
关于路由的递归查询
我们知道,路由查找的过程是寻找数据包下一跳的过程!IP路由逐跳将数据包送往目的地。所谓的下一跳就是和自己直连的某台路由器的对应接口IP地址,这是合乎情理的理解,然而IP路由提供了另外一种方式,即下一跳不必非要和自己直连,它可以忽略当前路由器“附近的拓扑”,直接告知相对较远方的拓扑,如下图所示:到达Server的下一跳是R2,到达R2的下一跳是R1...以此类推。协议栈的路由查找逻辑在查找路由时,如...
2013-05-21 20:21:00 929
Linux实现Cisco风格ACL之空想
本来上周末想实现一个Cisco风格的Linux版本ACL,也就是说将rule绑定在Interface上而不是HOOK点,然而发现net_device的private data非常不好用,就把半拉子工作仍在那里了...其实即使实现了Cisco风格的ACL,还是基于Netfilter实现的,然而FORWARD上的ruleset就简单多了,变成了下面这个样子:static unsigned intip...
2013-05-21 20:15:00 94
什么是历史
什么是历史?历史就是阐述或者证明现在必须就是现在这个样子的过程!这个过程明显就是一个执果索因的过程,即便是关于事件和人物的一般性阐述,言语背后很少不折射出一些时代的特征,该特征和目前的某些理论契合在一起。 因果律告诉我们,由于有殊途同归的存在,执果索因的结果本身就是不确定的!这一点和由因导果完全不同!我指的是同一维度上的因果,因为如果考虑到不同维度,一系列原因可以在不同维度导致结果,注意,在历史上...
2013-05-21 20:13:00 99
IAR 用户关键字高亮
在使用IAR的时候,总是觉得写代码的时候少了点什么。IAR默认中,C语言的关键字均有高亮功能,但是stdint.h中的关键词却没有高亮。例如 uint8_t uint8_16 int8_t int16_t偶然发现IAR支持用户关键字,只要把定义关键字写在一个TXT文件中即可。见图1和图2所示。图1 选择用户关键字文件图2 用户关键字TXT文件内容...
2013-05-20 12:59:00 2881
[APUE]第十二章 线程控制
线程属性:初始化:int pthread_attr_init(pthread_attr_t*attr);int pthread_attr_destory(pthread_attr_t*attr);分离状态属性设置和获取int pthread_attr_getdetachstate(constpthread_attr_t *attr, int * detachstate);i...
2013-05-19 18:12:00 106
[APUE]第十一章 线程
第十一章 线程线程也有线程ID用pthread_t 表示每个系统对pthread_t 的定义不同。int pthread_equal(pthread_t tid1, pthread_ttid2)获得线程的线程IDpthread_t pthread_self()创建线程int pthread_create(pthread_t *tid, const pthread_...
2013-05-19 18:09:00 97
[APUE]第十章 信号
信号概念不存在编号为0的信号。产生信号的方式:1当用户按某些终端键时,引发终端产生信号。2硬件异常产生信号,比如SIGSEGV信号。3进程调用kill函数可将信号发送给另外一个进程或者进程组。4当检测到某种条件发生时,并应将其通知有关进程时也产生信号。比如SIGPIPE信号。应用程序对产生的信号有三种方式进行处理1忽略信号2系统默认3安装信号处理函数,让信号...
2013-05-19 18:04:00 132
[APUE]第九章 进程关系
第九章 进程关系进程组每个进程组都有一个组长进程。组长进程的标识是,其进程ID等于进程组ID组长进程可以创建一个进程组,创建该组中的进程,然后终止。只要在某个进程组中有一个进程存在,则该进程组就存在,这与其组长进程是否终止无关。从进程组创建开始到其中最后一个进程离开为止的时间成为一个进程组的生存期。进程中的最后一个进程可以终止,或者转移到另外一个进程组。pid_t getgpid(...
2013-05-19 18:01:00 131
[APUE]第八章 进程控制
第八章 进程控制引言:如何创建进程?执行程序?进程终止?讲述进程属性的各种ID---实际、有效、保存的用户和ID,他们是如何受到进程控制原语的影响。解释器文件和system函数,进程会计机制。进程标识符每一个进程都有一个非负整数表示的唯一进程ID,这个进程ID是唯一的,他的使用机制和文件描述符是不相同的。文件打开的都是最小的整数(未打开),进程ID是采用延迟重用算法...
2013-05-19 18:00:00 114
短述欧洲早期历史
希腊由于希波战争造就了两个竞争势力,那就是雅典和斯巴达。随后的伯罗奔尼撒战胜彻底耗尽了希腊的精力让马其顿渔翁得利!马其顿由于其交通地缘原因而分崩离析,罗马此时已然统一意大利,统一天下!大历史下何等之壮观,诸如马略,诸如苏拉,诸如凯撒,诸如屋大维等推波助澜!罗马七丘因其地理因素印证了亚里士多德的城邦论的理性!如今,欧盟也好,美国也罢,不正是在付诸实施吗?China也因其地缘原因,法,术,势等抽象概念...
2013-05-18 17:45:00 124
本地地址代理与托管NAT
本文的题目有些可疑,有些不可理解!但是如果我说出一个简单而基本的原则之后,你就不会困惑了,那就是:你的外联路由器外网口的地址并不是分给你的,只有你的外联路由器的内网的地址才是分给你的!熟悉Linux NAT MASQUERADE的人可能对此有些不解,这是显然的,因为MASQUERADE控制下的NAT并不是一个真正的NAT,它只是一个地址代理!这听起来有些不可思议,不可思议的原因是因为大家都在用这种...
2013-05-18 17:31:00 119
Linux NAT优化的校验和问题
我们知道,Linux的NAT是基于ip_conntrack的有状态NAT,其配置类似BSD的keep state的效果!如果看一下Netfilter的PREROUTING,就知道ip_conntrack依赖ip_defrag,也就是凡是分片的IP片必须重组后才可以进入ip_conntrack进而进入NAT,如果我们希望能针对每一个IP分片来做NAT的话,那就需要动一番脑筋了。 下图是一个优化逻辑,...
2013-05-18 16:14:00 372 2
对比Mac OS上的PF与iptables
昨天同事问我怎么在Mac上配置策略路由,其实我也不知道!由于自己的实际需求,一直以来都想玩Mac网络功能,可是目光总被它炫烂的外表炫晕!今日同事这么一问我,顿时产生一种研究其究竟的欲望,还好,家里的电脑都是Mac系统(我非果粉,但老婆是),周末带女儿上完早教课,终于可以闲下来玩一番了... 其实,MacOS绚烂的外表下面,是一辆坦克,其内核是具有学院派高贵血统的BSD UNIX,而我们知道,U...
2013-05-18 15:35:00 398
一种生成排列的简单想法
对于生成n个数的排列,我们大家肯定都知道一种回朔的解法,这种解法就是根据8皇后得来的,当然,需要把冲突条件改一下就行.然而,我们现在要提的是另外一种方法,就是通过定义去写的一种算法. 显然,1的排列就是1;1,2的排列有1,2和2,1两个;现在我们考虑1,2,3这三个数的排列,显然,1,2,3这三个数的排列其实就是分以下三种情况: 1)把1放在第1位,剩下的就是2,3的两...
2013-05-18 12:25:00 67
编程之美 NIM游戏与NIM扩展游戏的讨论及解
编程之美上面有个NIM的游戏,规则如下:有n堆石头,两个人轮流从中取,一次只能在一堆中取,至少取一个,最多把这一堆取完,取得最后一个石头的人胜利,问谁有必胜策略。解: 设这n堆石头的个数分别是X1,X2……Xn,设F(X)= X1 ^X2 ^ X3……^Xn。如果F(X)= 0则后取的获胜,否则,先取的获胜。证明: 如果这剩下的石头的个数的的异或值为0,则无论从一堆中取多少...
2013-05-17 19:13:00 102
编程之美 NIM游戏与NIM扩展游戏的讨论及解
编程之美上面有个NIM的游戏,规则如下:有n堆石头,两个人轮流从中取,一次只能在一堆中取,至少取一个,最多把这一堆取完,取得最后一个石头的人胜利,问谁有必胜策略。解: 设这n堆石头的个数分别是X1,X2……Xn,设F(X)= X1 ^X2 ^ X3……^Xn。如果F(X)= 0则后取的获胜,否则,先取的获胜。证明: 如果这剩下的石头的个数的的异或值为0,则无论从一堆中取多少...
2013-05-17 19:13:00 62
传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 1 (""): 数据类型 0x38 未知。 (...
今天将一个SQL2000备份的bak还原到SQL2005进行连接,抛出异常如下:<wbr><wbr><wbr><span></span>java.sql.SQLException: [Microsoft][<em style="font-style:italic">SQLServer</em&
2013-05-17 16:45:00 216
梦想改变世界
你为梦想而战时,你将拥有战胜一切的力量,记住永不放弃,记住永不放弃,永远不要放弃。如果你没有可以拿出来可以拼爹的,漂亮的脸蛋。。那就fighting!!!!! ...
2013-05-17 03:32:00 100
Cisco与Linux的NAT-Linux实现Cisco风格的NAT
既然看到了Cisco的NAT比较灵活,那么Linux能否实现呢?答案是肯定的!因为Linux的Netfilter是超级灵活的,Linux的NAT不灵活是因为iptables程序的不灵活,xtables-addons的RAWNAT已经朝static nat迈出了重要的一步,是iptables限制了Linux的static nat发展!于是我抛开iptables,先基于Netfilter把内核模块实现...
2013-05-16 20:13:00 161
Cisco与Linux的NAT
Linux一直以来都使用基于连接跟踪的有状态NAT,虽然xtables-addons里面实现了无状态的静态NAT,即RAWNAT,和Cisco的NAT实现相比还是不够灵活,本文给出一个全局意义的解释,虽然这种解释对于实际的配置没有什么帮助,但是可以帮助你更好地理解Linux和Cisco的系统构建。1.Cisco的方案Cisco路由器显式的将inside和outside的概念邦定于物理接口,然后根据...
2013-05-16 20:10:00 129
代理模式(Proxy Pattern)
使用简单的对象来代替一个复杂的对象或者为另一个对象提供一个占位符来控制对它的访问。经典UML类如下: 使用场合和优势:实时或是在内存中创建一个对象代价太高的情况下。延迟创建直到你需要实际的对象。加载大的图像。在网络的高峰时间段加载远程对象。对于一个复杂的系统,必须使用访问权限时,需要使用代理模式。 从JDK 1.3 开始,java 就对实现代理设计模式有直接的支...
2013-05-16 09:42:00 56
[APUE]第七章 进程环境
第七章 进程环境引言:main函数是如何调用的命令行参数是如何传送给执行程序的典型的存储器布局是什么样式如何分配另外的存储空间进程如何使用环境变量各种不同进程的终止方式longjmp和setjmpstart进程的终止正常终止: 从return返回 调用exit 调用_exit、_Exit 最后一个线程从其启动例程返回 最后一个线程...
2013-05-16 00:15:00 90
[APUE]第六章 系统数据文件和信息
第六章 系统数据文件和信息口令文件struct passwd{ char * pw_name; /* Username, POSIX.1 */ char * pw_passwd; /* Password */ __uid_t pw_uid; /* User ID, POSIX.1 */ __gid_t pw...
2013-05-16 00:11:00 106
[APUE]第四章 文件和目录
第四章 文件和目录本章主要围绕stat这个函数来讲的。int stat(const char* pathname, struct stat* buf);int fstat(int fd, struct stat* buf);int lstat(const char* pathname, sttuct stat* buf); //如果是符号链接,返回符号链接的文件信息struct s...
2013-05-16 00:04:00 93
[APUE]第三章:文件I/O
第三章:文件I/OLinux对文件操作有open、read、write、close、lseek,这些api都是不带缓冲的函数,相对于c库,这些可移植的api内部实现是有缓冲区的。int open(char* pathname, int flag, …);int read(int fd, void* buf, size_t size);int write(int fd, void* ...
2013-05-15 23:55:00 82
享元模式(Flyweight Pattern)
高效飞快地生成类的实例以提高性能称为享元模式。它是结构设计模式之一,常常被使用在独特的字符或是屏幕上的图标等。 使用场合和优势:需要实例化大量小型且可以很好颗粒化的类。需要图标来展示对象。一个对象外部的状态能够通过类来共享。享元模式减少了对象的创建,降低了内存的花费和提升了性能。 相关的模式:组合模式支持迭代的结构而一个享元仅仅被应用到一个对象。抽象工厂...
2013-05-15 23:37:00 47
装饰模式(Decorator Pattern)
动态或者静态地为一个对象附加一个职责或者功能,称为装饰模式。它是属于结构设计模式之一,比较常用。 使用场合和优势:为子类提供了一个可选项。在不影响其它对象的前提下,给一个对象添加一个新方法。很容易动态地添加和删除某个职责。比静态继承更具有灵活性。对于对象来说是透明的。 下列UML类图展示了装饰模式的经典实现模型。 我们将要定义一个Shape接口和...
2013-05-15 16:49:00 71
组合模式(Composite Pattern)
像一个树形结构一样使用基本的对象和自己本身构建一个复杂的对象,称为组合模式。这种模式很容易学习以及应用到某个系统中。组合模式属于结构设计模式之一,比较常用。经典的UML图如下: 一个简单的实例程序来说明组合模式是如何实现的。定义一个Employee类,充当组合模式中的表演者,CompositePatternDemo作为测试类。public class Employ...
2013-05-15 15:29:00 57
桥接模式(Bridge Pattern)
从类的实现中分离出抽象或者接口类,以便于这两个类能够互不相干,这种模式称作桥接模式。这种类型模式属于结构设计模式之一, 它通过提供了一个桥结构来分离具体的实现类和抽象类。 适用场合和优势:想永久地分离抽象和实现类。在多个对象中分享一个具体的实现类。想去提高可扩展性。从客户端哪里隐藏具体的实现。 具体分析一个简单的实例,看看它是如何实现桥接模式。 我们有一个...
2013-05-15 13:06:00 63
适配器模式(Adapter Pattern)
转换一个存在的接口到一个新的接口,以完成不相关的类的兼容性和重用性,这种模式叫做适配器模式。这个模式也被称为封装(wrapper)模式,适配器模式是属于结构设计模式之一。 适用场合和优势:尝试去匹配一个接口(WindowAdapter等)使不相关的类工作在一起多兼容性融合提高类的透明性制作可插入的套件(pluggable kit)委托对象更高级类的重用 相...
2013-05-15 10:55:00 71
linux系统新手学习的11点建议
随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起。这里介绍学习Linux的一些建议。一、从基础开始:常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基础的。例如:为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用者的权限等问题,这些问题其...
2013-05-15 04:01:00 83
流量工程与光网路
完全的分组交换网将很难实施流量工程,因为分组交换网的交换节点之间的链路是统计复用的,网络本身在统计上对待传输的分组并不假设任何权值!分组交换网的交换节点,比如IP路由器在寻路上也必然是局部的,不可能建立一条跨越多节点的物理的或者虚拟的通道,否则将会破坏分组交换统计复用的语义!随着互联网业务的扩大,QoS越来越重要,QoS无疑是端到端的,因为IP网络的业务都在端系统处理,对QoS敏感的只有业务本身,...
2013-05-14 21:18:00 140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人