自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(133)
  • 资源 (2)
  • 收藏
  • 关注

原创 SPF的最短路径算法

常见的路由协议比如RIP、IGRP、BGP是距离矢量协议,OSPF和ISIS是数据链路状态协议。矢量协议路由器只知道本身和与自身相连的接口路由信息,矢量图只是一张方向图,在路由传播的过程中,容易造成环路。RIP路由器采用扁平化设计规避环路,BGP则采用As-path规避环路。OSPF是数据链路状态路由协议,采用的SPF算法,即最小生成树算法(Dijkstar),ospf内不存在路由环路,但是OSPF间传递路由信息的时候,却是矢量路由协议,也就是说OSPF之间传递路由信息的时候,会产生路由环路。 ...

2020-11-20 21:37:36 1519

转载 图文详解Radix树

基数树对于长整型数据的映射,如何解决Hash冲突和Hash表大小的设计是一个很头疼的问题。radix树就是针对这种稀疏的长整型数据查找,能快速且节省空间地完成映射。借助于Radix树,我们可以实现对于长整型数据类型的路由。利用radix树可以根据一个长整型(比如一个长ID)快速查找到其对应的对象指针。这比用hash映射来的简单,也更节省空间,使用hash映射hash函数难以设计,不

2016-11-23 22:49:55 12102

原创 工作几年的感悟

12年毕业之后,到现在刚好满4年,期间在两个公司待过。第一家是安防的龙头老大,刚毕业什么都不懂,各种看书学习、做任务、加班。慢慢的对linux、网络技术有了入门,安防行业也慢慢熟悉。不知不觉三年过去了,经历了憧憬期、倦怠期、适应期。由于对第一家薪资的不满,果断跳槽了。由于在第一家做网络方面,找第二份工作的时候一门心思想去专业做网络的公司,就去了H公司,现在在这家公司工作刚好满一年。  两家公司

2016-06-15 22:24:42 1532 2

原创 epoll详解和使用

什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 epoll的相关

2016-01-31 15:42:27 3392

原创 #pragma pack(n) 的作用

在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。例如,下面的结构各成员空间分配情况: struct test {

2015-06-30 21:41:00 563

原创 代码常见的错误

1.返回值没有判断,尤其是返回指针是否为NULL2.入参没有检查3.入参检查之前先对其进行赋值了4.入参检查出错之后,打印该值5.入参检查出错之后,没有返回错误,继续执行6.复制的时候自己复制给自己了7.数组越界8.调用snprintf函数的时候,对应长度没有给对,没有减去已经赋值的长度9.拷贝字符串的时候,没有预留结束符10.参数没有初始化11.内存、句柄

2015-05-19 15:59:42 634

原创 两个数据库文件对比

如下图所示,函数首先打开两个数据库,然后获取两个数据库的版本信息。根据数据库各个表名称来打开相应的表,然后判断两个表的具体内容是否相同,如果不同的话则打印出该表名,如果用户选择打印具体内容的话,则分别打印两个表的具体内容(由于表的内容可能会比较多,且查看单个表内容的话使用SQLite软件看更直观,所以这个功能默认关闭)。   #include #include #inclu

2015-05-06 14:00:49 2432

原创 内存空间分几部分:代码段、数据段,栈,堆

转自:http://blog.csdn.net/yeyuangen/article/details/67665671.函数代码存放在代码段。声明的类如果从未使用,则在编译时,会优化掉,其成员函数不占代码段空间。全局变量或静态变量,放在数据段,局部变量放在栈中,用new产生的对象放在堆中,内存分为4段,栈区,堆区,代码区,全局变量区BSS段:BSS段(bss se

2015-04-22 17:44:55 2498

原创 TCP的状态迁移

TCP正常建立和关闭的状态变化TCP连接的建立可以简单的称为三次握手,而连接的中止则可以叫做 四次握手。建立连接在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn

2015-04-17 09:18:31 1153

原创 大数的阶乘算法

用data数组来存放阶乘的每一位数字,首先令第一位的数值为1,位数为1,然后将每次相乘的乘积存回数组,并循环处理每个数组中超过10的数,若数值超过10,则需要进位,将位数加1,原来的数除以10,商数加前一位数的数值后存回前一位数的数组中,再将余数存回原来位数的数组中。例如求5!的值步骤一:1!=1位数1数组内容0      0      0      1步骤二:2!=2

2015-04-16 09:08:24 6185

原创 冒泡法排序和选择法排序

冒泡法排序每次比较i前面的数组,一次比较两个元素,如果他们的顺序错误就把他们交换过来,这样i前面的数组经过一次次相邻交换,顺序就变成从小到大或从大到小排列。#include /*冒泡法排序*/void sort1(int *digits, int nums){ int i = 0, j = 0, k = 0; int tmp_digit = 0; if(NULL ==

2015-04-12 16:17:30 1315

原创 插入法排序(含二分法)

插入法排序和冒泡法排序类似,只不过冒泡法排序是每次循环获取i之后最小(大)的值到数组前排,而插入法排序算法是每次对i前面的数组进行从小到大(从大到小)排序。1.插入排序, 从第二个数开始,先将第二个数做一个副本放在一旁(变量中)。2.第二个数同前一个数比较,小于则用前一个数覆盖第二个数, 然后将副本放在前一个数前面3.再将第三个数做一个副本取出,第三个数同前一个数比较,小于则用前一

2015-04-12 15:55:00 887

原创 快速排序法

快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速排序

2015-04-12 15:34:30 556

原创 串操作

#include #include #include #include "string_lib.h"/*拷贝src到dst,dst[0]为src长度*/int str_assign(STRING *dst, char *src){ int i = 0;  if(NULL == src) {  return -1; } if(dst.string

2015-04-10 14:47:23 438

原创 双向链表

#include #include struct data{ int link_value;};struct link_node{ struct link_node *p_pre_link; struct link_node *p_next_link; struct data value;};struct link_node *create_node(struct d

2015-04-10 14:46:25 486

原创 时间复杂度和空间复杂度

算法的时间复杂度和空间复杂度合称为算法的复杂度。1.时间复杂度(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或

2015-04-10 09:33:42 404

原创 <学会提问——批判性思维指南>总结笔记

0.前言    我们不希望自己的行为仅仅建立在别人的评价的基础上,不希望自己是公众的傀儡。(所以我们应当学习掌握批判性思维)    1.提出正确问题的益处    1.1 批判性思维涉及:1)意识到一些彼此相关的批判性问题;2)能够在适当的时机提出和回答批判性问题;3)愿意主动运用批判性问题。  1.2 思维的两种风格:1)海绵式思维(强调知识的获得);2)淘金式思维(强

2015-04-08 10:25:48 1864

原创 KMP算法

转载于:http://blog.csdn.net/v_july_v/article/details/7041827作者:July时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进。1. 引言    本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱。所以一直想找机会重新写下

2015-04-07 14:23:41 488

原创 RTP协议全解(H264码流和PS流)

写在前面:RTP的解析,网上找了很多资料,但是都不全,所以我力图整理出一个比较全面的解析,其中借鉴了很多文章,我都列在了文章最后,在此表示感谢。互联网的发展离不开大家的无私奉献,我决定从我做起,希望大家支持。原创不易,转载请附上链接,谢谢http://blog.csdn.net/chen495810242/article/details/392073051、RT

2015-02-09 15:57:25 1904

原创 简单实现traceroute功能

摘要 本文描述RTP(real-time transport protocol),实时传输协议。RTP在多点传送(多播)或单点传送(单播)的网络服务上,提供端对端的网络传输功能,适合应用程序传输实时数据,如:音频,视频或者仿真数据。RTP没有为实时服务提供资源预留的功能,也不能保证QoS(服务质量)。数据传输功能由一个控制协议(RTCP)来扩展,通过扩展,可以用一种方式对数据传输进行监测控

2015-02-05 15:57:19 4252

原创 ortp库入门

我们知道, RTP(Real-timeTransportProtocol)是用于Internet上针对多媒体数据流的一种传输协议,做流媒体传输方面的应用离不开RTP协议的实现及使用,为了更加快速地在项目中应用RTP协议实现流媒体的传输,我们一般会选择使用一些RTP库,例如使用c++语言编写的JRTPLIB库,网上关于RTP协议以及JRTPLIB库的介绍已经很多了,在此我也不再赘述,文本主要介绍实现

2015-02-04 15:06:08 554

原创 TIME_WAIT/CLOSE_WAIT状态区别

在TCP断开的过程中会有四个状态变化过程,如下图所示:常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭。TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证

2015-01-23 09:27:51 819

原创 多媒体文件格式分析

参考自:http://blog.csdn.net/taniya001/article/details/7962864mp3        MP3文件结构及编解码流程aacAAC文件解析及解码流程amrAMR文件解析及编解码流程AMR音频编码器概述及文件格式分析AMR音频编解码awbAMR-N

2014-12-15 15:55:42 693

原创 ICMP重定向

ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。路由器也会把初始数据报向它的目的地转发ICMP应用分析-ICMP重定向    ICMP虽然不是路由协议,但是有时它也可以指导数据包的流向(使数据流向正确的网关)。ICMP协议通过ICMP重定向数据包(类型5、代码0:

2014-11-24 19:21:17 5859

原创 MP3帧头格式(CBR,VBR)

1.介绍这篇文章的目的是讲解MPEG音频帧头的结构(包括XING和VBRI)。并能尽快和精确地计算一个MPEG文件的播放时长。因此不会涉及到关于音频数据的编解码的相关知识。MPEG音频文件构建于layer。最常见的是MPEG-1 Layer III (既MP3),它应用了比较成熟的压缩技术。2.MPEG音频帧一个MPEG音频文件是由很多帧数据组成。每一帧包含了一个帧

2014-11-18 09:01:24 6389 1

原创 堆空间和栈空间大小

我们知道,程序运行时在内存中主要有代码段、数据段、堆栈段(堆空间和栈空间)、进程头、动态链接库等区域。 其中数据使用到的:数据段:静态内存空间,其中数据的总大小和初始值在编译时确定,数据在整个程序运行时一直存在。栈空间:自动内存空间,其中数据的大小在编译时确定,数据的分配和释放也由编译器在函数进入和退出时插入指令完成,数据生命周期和函数一样。堆空间:动态(手动)内存空间,其中数

2014-10-24 11:01:46 1084

原创 sQLite问题:Error cannot start a transaction within a transaction

SQLite3事务模式问题?我用SQLite3在同一个数据库里面同时操作三个表单table,使用事务模式插入数据,提示2个错误“Errorcannotstartatransactionwithin a transaction”。当我只操作一个table的时候,没有报错,请问这是怎么回事,改怎么解决,非常感谢!------解决方案-------------------

2014-08-27 09:16:42 11968

原创 数组名和数组名取地址的区别

以下代码会打印出什么样的日志呢?[cpp] view plaincopyprint?#include    int a[2] = {1,2};  int main(){          printf("a = %p\n", a);// I          printf("&a = %p\n", &a); // II          printf("

2014-05-22 14:21:47 557

原创 字符串数组初始化0 与memset 0 效率的分析

转自http://hi.baidu.com/yangyangye2008/blog/item/cec4da0e3007c7366159f3c1.html最近要分析程序的性能,所以上网查了查资料,的处理下面结论:#defineARRAYSIZE 2048voidmain() {    chararrayA[ARRAYSIZE]={0};    chararrayB[ARRAY

2014-03-04 09:13:43 3058

原创 char *c和char c[]区别

问题引入:在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内容程序是会崩溃的,而后者完全正确。程序演示:测试环境Devc++代码运行结果2293628 4199056 abc2293624 2293624 abc2293620 4199056 abc #include using name

2014-02-28 19:54:02 774

原创 linux、windows路由设置

一:使用 route 命令添加使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了,方法://添加到主机的路由# route add –host 192.168.1.11 dev eth0# route add –host 192.168.1.12 gw 192.168.1.1//添加到网络的路由# route add –net 192.168.1.11  n

2014-02-20 11:13:50 990

原创 Linux 网络编程之ioctl函数

1.介绍Linux网络程序与内核交互的方法是通过ioctl来实现的,ioctl与网络协议栈进行交互,可得到网络接口的信息,网卡设备的映射属性和配置网络接口.并且还能够查看,修改,删除ARP高速缓存的信息,所以,我们有必要了解一下ioctl函数的具体实现.2.相关结构体与相关函数#include int ioctl(int d,int request,....);参数:d

2014-01-21 16:54:41 802

原创 libpcap的一些主要函数和结构介绍

一)数据结构•1) typedef struct _ADAPTER ADAPTER //描述一个网络适配器;•2) typedef struct _PACKET PACKET //描述一组网络数据报的结构;•3) typedef struct NetType NetType //描述网络类型的数据结构;•4) typedef struct npf_if_addr npf_if_

2014-01-02 15:59:35 6401

原创 proc文件系统

Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。基于/proc文件系统如上所述的特殊性,其内的文件也常被称作虚拟文件,并具有一些独特的特点。

2013-12-05 11:30:13 693

原创 常见端口号一览(详细)

TCP端口(静态端口)TCP 0= ReservedTCP 1=TCP Port Service MultiplexerTCP 2=DeathTCP 5=Remote Job Entry,yoyoTCP 7=EchoTCP 11=SkunTCP 12=BomberTCP 16=SkunTCP 17=SkunTCP 18=消息传输协议,skunTCP 19

2013-11-27 11:02:40 33254 1

原创 SOCKS5中的UDP穿透

无论是TCP还是UDP通过代理,首先要同代理取得联系。为了能够确保在第一阶段顺利确保数据传输,协议规定客户端采用TCP方式连接联系代理服务器。     一旦客户同代理的1080端口连接上,客户首先要发送一个版本标识/方法选择的TCP报文给代理服务器,具体格式为:    版本号(1字节) |可供选择的认证方法(1字节) |方法序列(1-255个字节长度)    如果是so

2013-08-13 13:36:15 2689 1

原创 使用linux配置dhcp v6服务器

aptitude install -y wide-dhcpv6-server## 配置文件 /etc/wide-dhcpv6/dhcp6s.conf ## sample 配置文件/usr/share/doc/wide-dhcpv6-server/examples ## 启动初始化脚本/etc/default/wide-dhcpv6-server ## 服务程

2013-07-24 13:39:24 11555

原创 文件后缀名大全

.??_ Files ending in "_" are often compressed install files of the same    name (e.g., .EX_ expands to .EXE, .DL_ expands to .DLL, etc.).A  UNIX Library [UNIX]   ADA Program.A01 ARJ Multi-volu

2013-07-06 14:18:17 107776 1

原创 转载的socks4 socks5 rfc1928一大堆

除了这个意译版rfc1928外,其他人写的好像也有错误,都是一知半解。☆ RFC 1928意译版(非直译版)http://www.ietf.org/rfc/rfc1928.txthttp://www.sczgroup.org/network/200503311423.txtSOCKS协议位于传输层(TCP/UDP等)与应用层之间,因而显然地位于网络层(IP)之上。诸

2013-06-26 14:21:09 2036

原创 SOCKS代理的实现

网络编程中,对于数据传输实时性要求较高的场合,大家都会选择UDP来作为数据传输协议,在TCP/IP协议族中UDP协议较TCP协议需要的网络系统资源更少。然而在企业应用中,由于网络安全原因等会导致除了特定端口以外的IP数据无法通过专用的路由或网关。为了支持这类应用,制定了专门的支持Socks连接的socks4/socsk5协议。Socks协议允许实现此类功能的代理软件可以允许防火墙(本文以下内容中防

2013-06-22 19:25:14 3377

Windows 7 Folder Background Changer(W7FBC)

Windows 7 Folder Background Changer(W7FBC)一款针对Windows7文件夹背景修改的小工具。W7FBC你只需要选择需要改变背景的文件夹,然后选择你需要替换白色的背景图片,就可以实现文件夹背景更换的目的。 W7FBC不仅能修改文件夹背景,还可以修改文件夹文本颜色,还可以应用到所有子文件夹相同的背景!

2013-03-22

更改文件夹背景颜色

Windows 7 Folder Background Changer(W7FBC)一款针对Windows7文件夹背景修改的小工具。W7FBC你只需要选择需要改变背景的文件夹,然后选择你需要替换白色的背景图片,就可以实现文件夹背景更换的目的。 W7FBC不仅能修改文件夹背景,还可以修改文件夹文本颜色,还可以应用到所有子文件夹相同的背景!

2012-12-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除