- 博客(636)
- 资源 (9)
- 收藏
- 关注
转载 什么是网关,网关的作用是什么?
网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关...
2018-09-28 17:26:23 88683 7
转载 P2P原理以及如何实现(整理)
前言 这几天看了p2p的原理以及实现的demo,整理一下。一共分为三部分,第一是概念原理,第二是demo实现,第三是p2p协议相关以及分类。 一、概念原理 比较全面的理解: https://zhuanlan.zhihu.com/p/30351943 http://www.cnblogs.com/pannen...
2018-09-28 17:10:26 6687
转载 P2P技术原理及应用
P2P技术原理及应用作 者:金海 廖小飞摘要:对等网络(P2P)有3种主要的组织结构:分布式哈希表(DHT)结构、树形结构、网状结构。P2P技术已经延伸到几乎所有的网络应用领域,如分布式科学计算、文件共享、流媒体直播与点播、语音通信及在线游戏支撑平台等方面。现在人们已经开始将重心转入到覆盖层网络的节点延时聚集研究、覆盖网之间(Inter-Overlay)优化研究、P2P支撑平台研究以及P2...
2018-09-28 11:52:51 3531
转载 带你吃透RTMP
RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。随着VR技术的发展,视频直播等领域逐渐活跃起来,RTMP作为业内广泛使用的协议也重新被相关开发者重视起来。正好最近在从事这方面的工作,在此记录下自己对RTMP的...
2018-09-28 10:53:03 231
转载 readelf命令
readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。这里的elf-file(s)就表示那些被检查的文件。可以支持32位,64位的elf格式文件,也支持包含elf文件的文档(这里一般指的是使用ar命令将一些elf文件打包之后生成的例如lib*.a之类的“静态库”文件)。 这个程序和objdump提供的功能类似,但是它显示的信息更为具体,并且它不依...
2018-09-18 15:50:18 612
转载 Linux readelf命令的使用
readelf命令是Linux下的分析ELF文件的命令,这个命令在分析ELF文件格式时非常有用,下面以ELF格式可执行文件test为例详细介绍:readelf -h a.out显示a.out的ELF Header的文件头信息。[root@robot ~]# vim main.c[root@robot ~]# gcc main.c[root@robot ~]# readelf -h...
2018-09-18 15:35:36 510
转载 动态链接库中的.symtab和.dynsym
shared library (.so)"Program Library Howto-Shared Libraries"是很好的材料, 下面的内容多是据此整理的.定义:Shared libraries are libraries that are loaded by programs when they start.使用shared library(共享库)会有很多好处, 比如软件升级...
2018-09-13 21:59:59 2255
转载 linux中的strip命令简介------给文件脱衣服
作为一名linux开发人员, 如果没有听说过strip命令, 那是很不应该的。 strip这个单词, 大家应该早就学过了, 你就记住是脱衣服就行了, 别的不要多想。 在linux中, strip也有脱衣服的含义, 具体就是从特定文件中剥掉一些符号信息和调试信息。 我们来看main.c文件:#include <stdio.h> int add(int x, ...
2018-09-13 21:03:13 1108
转载 bss段不占据磁盘空间的理解
elf文件中.bss段: 存放未初始化的全局变量,将.data和.bss分开的理由是为了节约磁盘空间,.bss不占实际的磁盘空间。这句话该怎么理解呢? 可以看下面的例子:#include <stdio.h>int a[1000];int b[1000] = {1};int main(){ printf("123\n"); return 0;}这里编...
2018-09-12 14:51:44 500
转载 关于BSS段的大小
1.BSS段中的内容先明确 BSS 段“存放”的是未初始化的全局变量与局部静态变量,此处指的存放是指为其预留空间(占位符)。但BSS段在磁盘上不是真的占用变量大小的空间,它仅是在该段中记录了所有未初始化全局变量与局部静态变量的大小总和,至于每个变量的大小则存储在符号表的size属性中。即: BSS段内容:无内容,它将在段表中占一个段描述符,该段描述符的size属性将记录未初始化的全局变量...
2018-09-12 14:35:43 690
转载 流媒体网络性能指标——抖动
有时候我们开发一个流媒体系统,做完了却不知道如何在数字上描述我们的系统,体现我们的优势,作为客户来说,可以描述这套系统的数字指标是最直观的。网络性能是最重要的,在流媒体网络中,影响流媒体服务器质量QOS的因素有很多,而这些因素可以作为我们衡量流媒体网络性能的指标。衡量流媒体网络性能的指标主要有:带宽 吞吐量 延时 抖动 丢包率本篇文章主要讲下抖动(jitter),以及如何处...
2018-08-23 11:14:25 3595
转载 TCP/IP详解--TIME_WAIT状态的必要性
1 TCP关闭时的四次握手Tcp连接在关闭的的时候,执行的是一个四次握手的过程,下图是客户端发起的关闭时客户端和服务器的状态转换图具体过程如下:1、 客户端发送FIN报文段,进入FIN_WAIT_1状态。2、 服务器端收到FIN报文段,发送ACK表示确认,进入CLOSE_WAIT状态。3、 客户端收到FIN的确认报文段,进入FIN_WAIT_2状态。4、 服务器端发送FIN报文端,...
2018-08-21 16:29:40 221
转载 TCP keepalive的机理及使用
TCP 是面向连接的 , 在实际应用中通常都需要检测对端是否还处于连接中。如果已断开连接,主要分为以下几种情况:1.连接的对端正常关闭,即使用 closesocket 关闭连接。2.连接的对端非正常关闭,包括对端异常关闭,网络断开等情况。对于第一种情况,很好判断,但是对于第二种情况,可能会要麻烦一些。在网上找到了一些文章,大致有以下两种解决方法: 自己编写心跳包程序简单的说也...
2018-08-21 15:20:22 4081
转载 GET和POST两种基本请求方法的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。 当你在面试中被问到这个问题,你的内心充满了自信和喜悦。你轻...
2018-08-21 11:26:54 165 1
转载 二叉查找树和二叉堆
A. 二叉查找树(Binary Search Tree),又称为有序二叉树,排序二叉树,满足以下性质:1)没有键值相等的节点。2)若左子树不为空,左子树上节点值均小于根节点的值。3)若右子树不为空,右子树上节点值均大于根节点的值。 二叉查找树中对于目标节点的查找过程类似与有序数组的二分查找,并且查找次数不会超过树的深度。设节点数目为n,树的深度为h,假设树的每层都被塞满(第L层有...
2018-08-20 21:33:02 972
转载 红黑树(RB-tree)比AVL树的优势在哪?
今天看了STL源码剖析中关于红黑树的原理和实现,看完复杂的节点插入、节点颜色变换后不禁想:这些功能经典的AVL树也能实现,为什么要提出红黑树?查了些资料,并且加上自己理解,感叹红黑树的巧妙。首先红黑树是不符合AVL树的平衡条件的,即每个节点的左子树和右子树的高度最多差1的二叉查找树。但是提出了为节点增加颜色,红黑是用非严格的平衡来换取增删节点时候旋转次数的降低,任何不平衡都会在三次旋转之内解决...
2018-08-20 21:18:04 117
转载 彻底搞懂红黑树(三)
从红黑树上删除一个节点,可以先用普通二叉搜索树的方法,将节点从红黑树上删除掉,然后再将被破坏的红黑性质进行恢复。 我们回忆一下普通二叉树的节点删除方法:Z指向需要删除的节点,Y指向实质结构上被删除的结点,如果Z节点只有一个子节点或没有子节点,那么Y就是指向Z指向的节点。如果Z节点有两个子节点,那么Y指向Z节点的后继节点(其实前趋也是一样的),而Z的后继节点绝对不可能有左子树。因此,仅...
2018-08-20 20:42:43 1159 1
转载 彻底搞懂红黑树(二)
其实关于红黑树,STL源码剖析---红黑树原理详解 已经写得非常好了。但套用新警察故事里的谢霆锋说的一句话:自己查,印象深一点。这里也是一样,在自己写,印象深一点。如果你要看正宗的STL源码剖析---红黑树原理详解,那请你点击这个。这里的是D版的o(╯□╰)o 当然,我也会加一些我自己的理解,因为大神写文章都比较精简,而我这是写给我自己看的,有一点口水话加深点印象。三 红黑树的插入 ...
2018-08-20 20:41:47 516
转载 字符串转换成整数
#include<iostream> #include<string> #include<limits> using namespace std; Bool Input = FALSE; /************************************************ /* 将数字字符串转...
2018-08-20 10:50:19 1093
转载 linux编译动态库之fPIC
在生成动态库时,常常习惯性的加上fPIC选项,fPIC有什么作用和意义,加不加有什么区别,这里做下小结:fPIC的全称是 Position Independent Code, 用于生成位置无关代码。什么是位置无关代码,个人理解是代码无绝对跳转,跳转都为相对跳转。1、不加fPIC选项即使不加fPIC也可以生成.so文件,但是对于源文件有要求,例如因为不加fPIC编译的so必须要在加载...
2018-08-17 10:39:05 483
转载 使用 __declspec(dllimport) 导入函数调用
下面的代码示例显示如何使用 _declspec(dllimport) 将函数调用从 DLL 导入到应用程序中。 假定 func1 是驻留在某个 DLL 中的函数,而此 DLL 与包含“主”函数的 .exe 文件是分开的。不使用 __declspec(dllimport),给出此代码:int main(void) { func1();}编译器生成类似下面的代码:cal...
2018-08-16 21:38:43 13884
转载 __declspec(dllexport)与__declspec(dllimport)
区别 他们都是DLL内的关键字,即导出与导入。他们是将DLL内部的类与函数以及数据导出与导入时使用的。 dllexport是在这些类、函数以及数据的申明的时候使用。用他表明这些东西可以被外部函数使用,即(dllexport)是把 DLL中的相关代码(类,函数,数据)暴露出来为其他应用程序使用。使用了(dllexport)关键字,相当于声明了紧接在(dllexport)...
2018-08-16 21:33:21 50411 8
转载 Linux TCP Finwait2/Timewait状态要义浅析
我讨厌TCP。但是我的工作中总是要接触TCP! 近期三四个礼拜,接连碰到三三两两TCP的问题,这些都无关拥塞控制,这些都是状态机方面的问题,但无论怎样,我是非常讨厌的,以至于恶心,我释放大量的感情色彩在TCP协议…但这不能否认我对TCP的理解以及对其性情的掌握已经超出了大多数人,我在咒骂中成长。我咒骂着TCP,同时也可能被别人鄙视着…那就来吧。本周本来不想写技术文章的,很多的pendin...
2018-08-15 19:20:49 187
转载 awk练习1
1. sed和awk有什么区别?(1)awk:按列(域)操作;sed:按行操作(2)awk:文本处理语言,适合对文本进行抽取处理;sed:非交互式的编辑器,适合对文本进行编辑2. awk要处理域的时候,以哪个参数作为分割参数?-F 3. 请打印出/etc/passwd 第一个域,并且在第一个域所有的内容前面加上“用户帐号:”# cat /etc/passwd |awk -F:...
2018-08-15 09:16:59 401
转载 awk常用的内置变量
对于awk来说“变量”又分为“内置变量”和“自定义变量”,“输入分隔符FS”和“输出分隔符OFS”都属于内置变量。内置变量就是awk预定义好的,内置在awk内部的变量,而自定义变量就是用户定义的变量。 我们先看看awk常用的一些内置变量及其作用:FS:输入字符风隔符,默认为空白字符OFS:输出字段分隔符,默认为空白 字符RS:输入记录分隔符(输入换行符),指定输入时的额换行...
2018-08-14 17:16:17 6695
转载 浅谈数据结构-二叉树
二叉树是树的特殊一种,具有如下特点:1、每个结点最多有两颗子树,结点的度最大为2。2、左子树和右子树是有顺序的,次序不能颠倒。3、即使某结点只有一个子树,也要区分左右子树。一、特殊的二叉树及特点 1、斜树所有的结点都只有左子树(左斜树),或者只有右子树(右斜树)。这就是斜树,应用较少2、满二叉树所有的分支结点都存在左子树和右子树,并且所有的叶子结点都在同一层上,这样就是...
2018-08-13 13:23:19 447
转载 深入理解红黑树
第一篇:教你透彻了解红黑树:http://blog.csdn.net/v_JULY_v/archive/2010/12/29/6105630.aspx第二篇:红黑树算法的层层剖析与逐步实现http://blog.csdn.net/v_JULY_v/archive/2010/12/31/6109153.aspx第三篇:教你彻底实现红黑树:红黑树的c源码实现与剖析http://blog.csdn....
2018-08-12 21:44:11 812
转载 彻底搞懂红黑树(一)
红黑树和c++ 虚拟继承内存分布 几乎成了我的死敌,因为完全没用过,所以导致每次看懂了之后都忘了(也许不是真的看懂了,有些关键性的东西没理解透),这次准备把这两个难题(其实也不难)仔细看懂,然后再写一份比较详细的文档作为备忘。 首先是红黑树零 八卦起源 1972年,鲁道夫贝尔最先发明,但是他称之为“对称二叉B树”,真正的称之为“红黑树”是在1978年Leo J. Gu...
2018-08-12 21:41:52 5030 7
转载 epoll源码分析
在create后会创建eventpoll对象保存在一个匿名fd的file struct的private指针中,然后进程睡在等待队列上面。对于等待的fd,通过poll机制在准备好之后会调用相应的call_back函数。在函数中将当前fd加入对应eventpoll的队列中。然后唤醒等待队列上面的进程,进程执行相应的函数返回一个就绪队列即可。进程被唤醒后,调用相应的call_back函数,将fd加...
2018-08-11 21:02:45 147
转载 C++常见面试题—内存管理GetMemory()
1.关于动态申请内存的问题 出现率极高 程序的局部变量存在于(栈)中程序的全局变量存在于(静态存储区)中程序动态申请的数据存在于(堆)中<1>void GetMemory(char *p){ p = (char *)malloc(100);} void Test1(void){ char *str = NULL; GetMemor...
2018-08-10 18:15:45 920
转载 C++中explicit的用法
C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生,声明为explicit的构造函数不能在隐式转换中使用。C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造;2 是个默认且隐含的类型转换操作符。所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX的类型...
2018-08-10 10:47:46 111
转载 最小/大堆的操作及堆排序
摘自:《啊哈算法》我们要用1, 2, 5, 12, 7, 17, 25, 19, 36, 99, 22, 28, 46, 92来建立最小堆,并且删除最小的数,并增加一个数23如何建立这个堆://建堆n = 0;for (int i = 1; i <= m; i++) { n++; h[n] = a[n]; shiftup(n);}我们还有更快的...
2018-08-08 20:37:54 355
转载 详解c/c++中volatile关键字
一、volatile介绍volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序...
2018-08-08 13:34:25 131
转载 time_wait状态产生的原因,危害,如何避免
前言 请说说你对TCP连接中time_wait状态的理解解答:先上TCP的状态变迁图这幅图来自《TCP IP详解卷1:协议 原书第2版中文》13.5 TCP状态转换图这幅图来自《UNIX网络编程,卷1:套接字联网API》2.6.4 TCP状态转换图1. time_wait状态如何产生? 由上面的变迁图,首先调用close()发起主动关闭的一方,在发送最后一个A...
2018-08-08 11:42:54 88490 6
转载 CLOSE_WAIT状态的原因与解决方法
这个问题之前没有怎么留意过,是最近在面试过程中遇到的一个问题,面了两家公司,两家公司竟然都面到到了这个问题,不得不使我开始关注这个问题。说起CLOSE_WAIT状态,如果不知道的话,还是先瞧一下TCP的状态转移图吧。关闭socket分为主动关闭(Active closure)和被动关闭(Passive closure)两种情况。前者是指有本地主机主动发起的关闭;而后者则是指本地主机检测到远...
2018-08-08 11:39:14 577
转载 TCP常见的网络通信问题
本次 Live 主要包括以下内容 • TCP/IP协议栈层次与三次握手、四次挥手需要知道的细节 • TCP与UDP适用场景 • linux网络模型 • epoll_event结构中epoll_data_t的fd与ptr使用场景 •Windows网络模型 •异步connect •select可以检测网络异常吗 •epoll的水平模式和边缘模式 •阻塞与非阻塞socket的设置与区别 •send/re...
2018-08-08 11:00:46 7671
转载 C/C++ pthread_cond_timedwait()函数使用心得
由于工作上的事情,要用到线程之间的同步,而且有超时处理,在网上看到了使用pthread_cond_timedwait()函数和pthread_cond_wait()函数,其实2个函数都差不多,我主要是要用pthread_cond_timedwait()函数。 pthread_cond_timedwait()函数有三个入口参数:(1)pthread_cond_t __cond:条件变量(...
2018-08-07 20:28:13 640
转载 归并排序
归并排序的原理如下。递归的将数组两两分开直到最多包含两个元素,然后将数组排序合并,最终合并为排序好的数组。假设我有一组数组 [3, 1, 2, 8, 9, 7, 6],中间数索引是 3,先排序数组 [3, 1, 2, 8] 。在这个左边数组上,继续拆分直到变成数组包含两个元素(如果数组长度是奇数的话,会有一个拆分数组只包含一个元素)。然后排序数组 [3, 1] 和 [2, 8] ,然后再排序数组 ...
2018-08-06 21:01:24 122
转载 C++设计模式——访问者模式
前言这是23+1(简单工厂模式)之中的最后一个了——访问者模式。访问者模式也是一个比较麻烦的设计模式。我也没有实战经验,对于访问者模式的理解完全来自GOF的《设计模式:可复用面向对象软件的基础》,而这篇文章就是根据对这本书的理解而写出来的。在读《设计模式:可复用面向对象软件的基础》的时候,让我想起自己做过的一个项目,该项目虽然没有使用访问者模式,但是,今天理解了该模式,如果使用该模式对之前做过...
2018-08-05 23:16:44 137
转载 C++设计模式——模板方法模式
前言离开了自己工作了将近两年的公司,日子不再有了忙碌,可以闲下来,躺在家里的床上,想着以后的路怎么走,说实话,真的很迷茫,从2012年毕业到现在,时间不长,但是学到的东西真的是非常有限,一直从事于Windows平台上的开发。说到Windows平台的开发,大家都肯定知道的HOOK的,即使不知道HOOK,对于COM应该也是知道的,我的系列博文中也对COM进行过全面的总结。说白了,HOOK就是在执行...
2018-08-05 22:56:05 212
微服务设计(中文完整版)
2018-05-30
重构:改善既有代码的设计
2018-05-24
effective c++(第3版)
2018-05-24
第一本Docker书带书签目录(完整版)
2018-05-22
[精通正则表达式(第三版)].(美)佛瑞德.扫描版
2018-05-22
The_AWK_Programming_Language中文
2018-05-22
sed与awk(第二版)
2018-05-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人