- 博客(69)
- 收藏
- 关注
原创 安全的网络通道
一、网络准入 1. 二层准入 二层准入就是用户在获取三层IP地址之前必须通过的认证。当用户在接入网络之初,需要同网络侧通过二层连接进行认证数据交互,只有成功通过认证才能向DHCP服务器中申请IP地址,从而收发数据。 IETF首先定义了EAP(Extensible Authentication Protocol), 进行数据链路层进行验证,然后IETE给出了在以太网上运
2014-01-03 20:06:06
3975
原创 SDN基础理解
1. 何为SDN 1) 为什么需要一个全新的网络架构,比如SDN? 在传统的架构中,交换机和路由器不得不在操作6000种分布式协议的控制下实施整个网络的智能。这就意味着,即使只有一个网元增加了一种新的协议,也需要所有其他网元做出相应的结构变更。事实上,在网络中增加一种新的协议往往需要数年时间,才能最终完成标准化到实际部署的过程。 SDN使得网络可编程化,这就使
2013-11-21 23:37:00
20981
原创 《TC/IP详解:卷I》读书笔记--第四章 ARP 地址解析协议
4.1 引言 ARP为IP地址到对应的硬件地址之间提供动态映射。之所以用动态这个词是因为这个过程是自动完成的,也就是ARP广播。ARP广播的数据帧中包含目的主机的IP地址,其意思是“如果你是个这个IP地址的拥有者,请回答你的硬件地址”。
2013-11-16 10:55:43
2791
原创 Vxlan基础理解
一 . 为什么需要Vxlan1. vlan的数量限制 4096个vlan远不能满足大规模云计算数据中心的需求2. 物理网络基础设施的限制 基于IP子网的区域划分限制了需要二层网络连通性的应用负载的部署3. TOR交换机MAC表耗尽 虚拟化以及东西向流量导致更多的MAC表项4. 多租户场景 IP地址重叠?二.
2013-11-16 10:43:41
170040
7
原创 求素数算法
1. 最笨的方法: 挨个循环用n除以2到n-1的所有整数,如果期间有一个能整除,那么n是合数(不是素数)。2. 利用一个定理:如果一个数是合数,那么它的最小质因数肯定小于等于他的平方根。反证法: 设a = bq,因为a是合数,则b和q都是大于1的整数.又设q是a的最小质因数,即b>=q. 如果q根号a,此时更有b > 根号a,于是 a =
2013-11-05 22:56:12
5030
原创 《TC/IP详解:卷I》读书笔记--第三章 IP 网际协议
3.1 引言(1) IP在传输服务时出现错误(如,路由器的缓冲区用完了),直接丢弃该数据报,然后通过ICMP消息给信源端。(2) 无连接,意思中IP不维护任何关于后续数据报的状态信息,每个数据报的处理都是独立的。不同的数据报都 要独立地进行路由选择,可能选择不同的路线。3.2 IP首部1. 网络字节序 4个字节32位按一下顺序传输:
2013-10-30 23:26:10
1113
原创 《TC/IP详解:卷I》读书笔记--第一章 概述
1.1 引言1.2 分层目标:分为哪几层,每层的作用是什么?TCP/IP协议族是一组不同的协议组合在一起构成的协议族。(1) 链路层:设备驱动程序和网络接口卡(2) 网络层:处理分组在网络中的活动。IP,ICMP(Internet 控制报文协议),IGMP(Internet组管理协议)(3) 运输层:主要是为两台主机上的应用程序提
2013-10-30 23:22:25
1535
转载 CopyOnWriteArrayList
除了加锁外,其实还有一种方式可以防止并发修改异常,这就是将读写分离技术(不是数据库上的)。先回顾一下一个常识:1、JAVA中“=”操作只是将引用和某个对象关联,假如同时有一个线程将引用指向另外一个对象,一个线程获取这个引用指向的对象,那么他们之间不会发生Concu
2011-09-28 23:14:13
566
原创 算法——错排问题
<br />错排问题<br />错排问题 就是一种递推式,不过它比较著名且常用,所以要熟记!<br /><br />方法一: <br />n各有序的元素应有n!种不同的排列。如若一个排列式的所有的元素都不在原来的位置上,则称这个排列为错排。任给一个n,求出1,2,……,n的错排个数Dn共有多少个。<br />递归关系式为:D(n)=(n-1)(D(n-1)+D(n-2))<br />D(1)=0,D(2)=1<br />可以得到:<br />错排公式为 f(n) = n![1-1/1!+1/2!-1/3!+
2010-11-05 13:41:00
3114
1
原创 C++模板
<br />#include <iostream>using namespace std;/*函数模板//template <typename T>template <class T>T max(T x,T y){ return (x < y)? y: x;}int main(){ int n1 = 2,n2 = 3; double d1 = 4.6,d2 = 6.8; cout << "较小的整数"<<max(n1,n2)<< endl; cou
2010-10-29 19:41:00
606
转载 C++/STL Bitset (转)
构造函数bitset b; b有n位,每位都为0.参数n可以为一个表达式.如bitset b0;则"b0"为"00000"; bitset b(unsigned long u); b有n位,并用u赋值;如果u超过n位,则顶端被截除如:bitsetb0(5);则"b0"为"00101"; bitset b(string s); b是string对象s中含有的位串的副本string bitval ( "10011" );bitset b0 ( bitval4 );
2010-10-27 19:48:00
824
转载 堆与优先级队列的研究
<br /> <br />堆,是一个很有意思的数据结构。逻辑结构是树,一般为二叉树,每个节点的值都大于(小于)其子树中的任意节点。也就是说,使用堆结构的数组中,元素 是部分有序的。而正是这个特点,使得在堆上,得到最大值(最小值)的时间复杂度为O(1),移除最大值(最小值)、插入元素、改变元素值(或者是删除位置 已知的元素)的时间复杂度为O(lgn)。另外,用堆结构的排序是一种原地的、时间复杂度为O(nlgn)的排序算法。<br />在优先级队列前先说一下堆排序。<br />堆排序和归并排序都是时间复杂度为O
2010-09-26 21:15:00
990
转载 Nginx负载均衡和LVS负载均衡的比较分析
<br />from:http://hi.baidu.com/yuhongchun027/blog/item/c707a54393158a1b9213c656.html<br /> <br /><br />lvs和nginx都可以用作多机负载的方案,它们各有优缺,在生产环境中需要好好分析实际情况并加以利用。<br /><br />首先提醒,做技术切不可人云亦云,我云即你云;同时也不可太趋向保守,过于相信旧有方式而等别人来帮你做垫被测试。把所有即时听说到的好东西加以钻研,从而提高自己对技术的认知和水平,乃是一
2010-09-17 11:07:00
630
原创 应聘时可能的问题
<br />1、请你自我介绍一下你自己?<br />回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有。其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。企业很重视一个人的礼貌,求职者要尊重考官,在回答每个问题之后都说一句“谢谢”,企业喜欢有礼貌的求职者。<br /><br /><br />
2010-09-12 23:41:00
1195
转载 如何提高自己的编程能力
1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序.人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。 2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的
2010-08-23 23:12:00
879
转载 大数据量,海量数据 处理方法总结
<br />from:http://i.yoho.cn/473260/logview/1816730.html<br /> <br />大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到。 <br /><br />下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更
2010-08-20 11:09:00
730
原创 二分查找算法
int bSearch(int array[],int n,int v){ int left,right,middle; left = -1, right = n; while((left + 1) != right) { middle = left + (right - left)/2; if(array[middle] = n || array[right]!= v) right = -1; return right;} 想写好二分查找算法还真是不容易阿!~
2010-08-18 21:19:00
2418
原创 C语言操作mysql数据 常用函数
<br /><br />C语言操作mysql数据 常用函数<br /> <br />所需头文件: #include <mysql/mysql.h><br />功能: 获得或初始化一个MYSQL结构<br />函数原型: MYSQL *mysql_init(MYSQL *mysql)<br />函数返回值: 一个被始化的MYSQL*句柄<br />备注: 在内存不足的情况下,返回NULL<br /> <br />所需头文件: #include <mysql/mysql.h><br />函数功能: 关闭
2010-08-06 22:26:00
4491
原创 linux 串口编程
<br />在嵌入式Linux中,串口是一个字设备,访问具体的串行端口的编程与读/写文件的操作类似,只需打开相应的设备文件即可操作。串口编程特殊在于串口通信时相关参数与属性的设置。嵌入式Linux的串口编程时应注意,若在根文件中没有串口设备文件,应使用mknod命令创建,这这里假设串口设备是/dev/ttyS0,介绍一下串口的编程过程。<br />#mknod /dev/ttyS0 c 4 64<br />1、打开串口<br /> 打开串口设备文件的操作与普通文件的操作类似,都采用标准的I/O操
2010-08-04 22:54:00
6839
1
转载 消息中间件原理
<br /><br />消息中间件原理及JMS简介之一<br /> <br />作者:orangelizq<br />摘要:<br /> 现今,越来越多的企业面临着各种各样的数据集成和系统整合,CORBA、DCOM、RMI等RPC中间件技术也应运而生,但由于采用RPC同步处理技术,在性能、健壮性、可扩展性上都存在着诸多缺点。而基于消息的异步处理模型采用非阻塞的调用特性,发送者将消息发送给消息服务器,消息服务器在合适的时候再将消息转发给接收者;发送和接收是异步的,发送者无需等待,二者的生命周期也可
2010-07-28 17:40:00
8936
原创 POSIX多线程——基本线程管理函数介绍
<br />POSIX基本的几个线程管理函数见下表:------------------------------------------------------------------------------------------ POSIX函数 描述-----------------------------------------------------
2010-07-22 00:04:00
1363
1
转载 Memcached 结构分析
<br />Memcached 结构分析<br /><br /> Memcached是一个分布式的内存缓存库,正好自己想写个cache的模块,那么就偷偷师吧。<br /> 功能库看的是实现原理和思路,性能库看的是实现细节,memcahed是属于一个看性能的库(实现cache功能的模块很多,但是性能就有高低了) <br /><br />1、memcached的数据交互协议<br /> memcached是分布式的内存缓存服务器,它是通过socket(tcp/udp/unixsock)与其
2010-07-19 17:52:00
1868
原创 dup()和dup2()解惑
<br /><br />1. 文件描述符在内核中数据结构<br /> 在具体说dup/dup2之前, 我认为有必要先了解一下文件描述符在内核中的形态。<br />一个进程在此存在期间,会有一些文件被打开,从而会返回一些文件描述符,从shell<br />中运行一个进程,默认会有3个文件描述符存在(0、1、2), 0与进程的标准输入相关联,<br />1与进程的标准输出相关联,2与进程的标准错误输出相关联,一个进程当前有哪些打开<br />的文件描述符可以通过/proc/进程ID/fd目录查看。 下图可
2010-07-17 21:30:00
702
转载 Linux Epoll介绍和程序实例
<br />装载自:http://blog.csdn.net/sparkliang/archive/2009/11/05/4770655.aspx<br /> <br /> <br /> <br />Linux Epoll介绍和程序实例<br />1. Epoll 是何方神圣?<br />Epoll 可是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入,和 select 相似,其实都 I/O 多路复用技术而已 ,并没有什么神秘的。<br />其实在
2010-07-14 15:12:00
788
原创 用libevent进行网络编程(fork,thread,event_based)
<br /><br />用libevent进行网络编程(fork,thread,event_based)<br /> <br />1、我们知道处理多用户时有几种方法:<br />(1)、fork():一个新的connection()进来,用fork()产生一个process处理。<br />(2)、pthread_create()产生一个新的thread处理。<br />(3)、把新的connection丢入Event-based Array,然后由Main Process以Nonblocking方式处理所
2010-07-09 15:42:00
7040
转载 信号集与屏蔽字
<br /><br />1.信号集和信号集处理函数<br />信号集是一个位向量,其中每一位对应着linux系统的一个信号。可使用如下函数对信号集进行处理:1#include <signal.h>2 3int sigemptyset(sigset_t * set);4 5int sigfillset(sigset_t * set);6 7int sigaddset(sigset_t * set);8 9int sigdelset(sigset_t * set);<br />sigemptyset将一个信号集
2010-06-30 20:59:00
899
转载 杭电ACM 题目分类
<br /><br />1001 这个就不用说了吧 <br />1002 简单的大数 <br />1003 DP经典问题,最大连续子段和 <br />1004 简单题 <br />1005 找规律(循环点) <br />1006 感觉有点BT的题,我到现在还没过 <br />1007 经典问题,最近点对问题,用分治 <br />1008 简单题 <br />1009 贪心 <br />1010
2010-06-27 02:48:00
960
原创 linux下时间time()
<br />#include <time.h> <br />time_t time(time_t *calptr) <br />这是time函数基本框架 指针指向的一串数字达不到毫秒极的信息。 <br /><br />然后使用以下两个函数将其进行标准时间转换 <br />#include <time.h> <br />struct tm *gmtime(const time_t *calptr) /*将其转换为国际标准时间*/ <br />struct
2010-06-13 03:28:00
6071
原创 HTTP协议格式
<br />HTTP协议:<br />h t t p协议使We b服务器和浏览器可以通过We b交换数据。它是一种请求/响应协议,即服务<br />器等待并响应客户方请求。H T T P不维护与客户方的连接,它使用可靠的T C P连接,通常采用<br />TCP 80端口。客户/服务器传输过程可分为四个基一步骤: 1) 浏览器与服务器建立连接; 2) 浏<br />览器向服务器请求文档; 3) 服务器响应浏览器请求; 4) 断开连接。H T T P是一种无状态协议,<br />它不维护连接的状态信息。<br
2010-06-12 11:04:00
1648
转载 Linux中send()函数和recv()函数
<br /><br />int send( SOCKET s, const char FAR *buf, int len, int flags );<br /> 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。<br /> 该函数的第一个参数指定发送端套接字描述符;<br /> 第二个参数指明一个存放应用程序要发送数据的缓冲区;<br /> 第三个参数指明实际要发
2010-06-09 14:33:00
1838
转载 fd_set 用法
<br /><br />select()函数主要是建立在fd_set类型的基础上的。fd_set(它比较重要所以先介绍一下)是一组文件描述字(fd)的集合,它用一位来表示一个fd(下面会仔细介绍),对于fd_set类型通过下面四个宏来操作: <br /> <br /> <br /> fd_set set;<br /> <br /> <br /> FD_ZERO(&set); /* 将set清零使集合中不含任何fd*/<br /> <br /> <br /> FD_SET(fd,
2010-06-07 14:44:00
774
原创 Linux下select函数实现的聊天服务器
<br /><br />消息缓冲区类MessageBuffer,接收线程将受到的消息放入缓冲区,发送线程从缓冲区中取出消息<br />MessageBuffer.h<br /> //MessageBuffer.h #ifndef _MESSAGE_BUF_INCLUDE_ #define _MESSAGE_BUF_INCLUDE_ #include <pthread.h> #define MESSAGE_COUNT 16 #define MESSAGE_LENGTH 2048 class Mes
2010-06-04 16:07:00
915
原创 信号处理——sigaction
sigaction是POSIX中的信号处理时的设置函数,一个接收到多个消息的进程,如何响应多个信号?需要解决以下四个问题(比前文的多两个) (1)处理函数每次使用之后都要被禁用吗? (2)如果SIGY消息再进程处理SIGX消息时,到达会发生什么情况? (3)如果进程再处理前一个SIGX消息时,另一个SIGX又来到会发生什么情况? (4)如果消息来到时,程序正在处理read类
2010-05-29 16:12:00
864
原创 linux下测试多个信号
在linux中测试多个信号,我觉得有俩个问题必须要搞清楚: (1)如果进程还在处理一个SIGX时候,第二个信号SIGY又到来了,会发生什么呢? (2)如果消息到来时,程序正在处理read()之类的输入而阻塞,那会如何呢? 先来看断程序: /* ================================================
2010-05-29 00:08:00
806
原创 sleep()的实现原理
sleep()的实现分为三步: 1.注册一个信号signal(SIGALRM,handler)。接收内核给出的一个信号。 2.调用alarm()函数。 3.pause()挂起进程。 实例代码:#include #include #include #include ///时
2010-05-28 22:44:00
9890
2
原创 栈与堆的比较
1 申请方式 栈: 由系统自动分配。 例如,声明在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间 堆: 需要程序员自己申请,并指明大小,在c中malloc函数:如p1 = (char *)malloc(10); 在C++中用new运算符 如p2 = (char *)malloc(10); 但是注意p1、p2本身是在栈中的。 2 申请后系统的响应 栈:只要栈的剩余空间大于所申请空间,系
2010-05-23 13:29:00
660
转载 消息队列的设计与实现
简介消息驱动机制是 GUI 系统的基础,消息驱动的底层基础设施之一是消息队列, 它是整个 GUI 系统运转中枢,本文介绍了一个基于环形队列的消息队列实现方 法,给出了它的数据结构、主要操作流程和核心代码。环形队列环行队列是一种首尾相连的队列数据结构,遵循先进先出原则,如下图所示:ring buffer 示意图 在环形队列中用一组连续地
2010-05-22 21:44:00
1243
转载 C++ 中的static静态变量
1. static 变量静态变量的类型 说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态 存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。2. 静态局部变量静态局部变量属于静态存储方式,它具有以下特点:(1)静态局部变量在函数内定义 它的生存期为整个源程序,但是其作用域仍
2010-05-22 14:46:00
2106
原创 wait() 和 waitpid() 的区别
父进程可能比子进程早结束,如果父进程要阻塞以等待子进程,可以使用wait或waitpid函数,wait函数只是waitpid函数的简化版。 #include #pid_t wait (int * statloc); #pid_t waitpid (pid_t pid, int * statloc, int optins); 区别: 在
2010-05-19 20:13:00
1520
转载 Java开源 J2EE框架
Spring Framework 【Java开源 J2EE框架】 Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的 Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建
2010-05-19 19:29:00
1771
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人