自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 windows下编译安装wireshark出现的问题及解决方法

2015-06-29 18:30:51 7405

转载 TCP拥塞控制和流量控制相关知识点

面向连接l两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接可靠l应用数据被分割成TCP认为最适合发送的数据块。l当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。l当TCP收到发自TCP连接另一端的数据,它将发送一个确认。lTCP将计算首部和数据的检验和。如果收到段的

2015-06-28 21:11:12 1359

转载 wireshark插件开发详细流程(含源码)

原文地址:http://www.cnblogs.com/LittleHann/p/3751595.html                                         IM通信协议逆向分析、Wireshark自定义数据包格式解析插件编程学习相关学习资料http://hi.baidu.com/hucyuansheng/item/bf2b

2015-06-28 11:02:41 17489

原创 linux命令学习

1.find命令在某一目录下执行 find -name 文件名,就会在这个目录下找到所有的相关文件。也可以指定文件夹,这样就会在指定的文件夹下找文件 find 路径名 -name 文件名可以使用-a  -o  !  (与或非)这三个参数将-name参数串起来。2.cp命令cp 源  目的

2015-06-26 09:17:41 294

原创 Ubuntu 自己编译安装wireshark遇到的问题和解决方法

如果仅仅是使用wireshark,我们可以在软件中心直接安装,不必这么麻烦。我在这里主要是因为要编写插件所以要下载源代码自己编译安装。安装方法:1.从wireshark站点http://www.wireshark.org/download.html下载源代码并解压(例如 wireshark-1.6.5.tar.bz2).2.进入源代码的目录,运行configure命令进行编译:

2015-06-24 16:17:43 6078

转载 Wireshark插件的编写

原文地址:http://blog.tianya.cn/blogger/post_show.asp?BlogID=2338564&PostID=19226926所谓插件技术,就是在程序的设计开发过程中,把整个应用程序分成宿主程序和插件两个部分,宿主程序与插件能够相互通信,并且,在宿主程序不变的情况下,可以通过增减插件或修改插件来调整应用程序的功能。运用插件技术可以开发出伸缩性良好、便于维护的应用

2015-06-24 14:07:13 465

转载 Wireshark插件开发

原文地址:http://blog.csdn.net/qgw_2000/article/details/5327519以下是针对Windows平台的插件开发,其它平台非常类似。 1.开发环境准备    1).下载Source code      使用TortoiseSVN,checkout代码(http://anonsvn.wireshark.org/wireshar

2015-06-24 10:57:00 905

转载 面试 TCP3次握手 / 4次挥手

1.为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的连接请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可能未必会马上会关闭SOCKET,也即你可能还需

2015-06-23 15:07:31 484

转载 linux新的API signalfd、timerfd、eventfd使用说明

三种新的fd加入linux内核的的版本:signalfd:2.6.22timerfd:2.6.25eventfd:2.6.22三种fd的意义:signalfd:传统的处理信号的方式是注册信号处理函数;由于信号是异步发生的,要解决数据的并发访问,可重入问题。signalfd可以将信号抽象为一个文件描述符,当有信号发生时可以对其read,这样可以将信号的监听放到se

2015-06-22 08:13:24 383

转载 glibc的几个有用的处理二进制位的内置函数

— Built-in Function: int __builtin_ffs (unsigned int x)Returns one plus the index of the least significant 1-bit of x, or if x is zero, returns zero.返回右起第一个‘1’的位置。— Built-in Function: int

2015-06-18 21:18:12 523

原创 VxWorks的环形缓冲区和linux的环形缓冲区的区别

在VxWorks中,环形缓冲区使用一个数组实现,其大小比我们预申请的大小大1,这个字节永远都是空出来的,也就是缓冲区不会满。当只有一个字节的时候就写不下了。所以在写操作的时候,不会存在写指针和读指针相等的问题。也就是写操作和读操作不会冲突。读操作是正常的读,无论是读还是写,我们要注意读写指针越界要取余的情况,也就是当越界的时候要分片段写。VxWorks中的环形缓冲区不像linux那样,li

2015-06-17 09:30:26 2327

转载 Timing Wheel 时间轮算法 java实现

原文地址:http://blog.csdn.net/mindfloating/article/details/8033340最近自己在写一个网络服务程序时需要管理大量客户端连接的,其中每个客户端连接都需要管理它的 timeout 时间。通常连接的超时管理一般设置为30~60秒不等,并不需要太精确的时间控制。另外由于服务端管理着多达数万到数十万不等的连接数,因此我们没法为每个

2015-06-16 16:49:34 12634 2

转载 嵌入式操作系统VxWorks中网络协议存储池原理及实现

嵌入式操作系统VxWorks中网络协议存储池原理及实现周卫东 蔺妍 刘利强(哈尔滨工程大学自动化学院,黑龙江 哈尔滨,150001) 摘 要  本文讨论了网络协议存储池的基本原理和在嵌入式操作系统中的实现方法。为在嵌入式系统中实现TCP/IP协议栈,提供了一种有效、简洁、可靠的缓冲区管理。关键词 VxWorks; mBlk; clBlk; 网络协议存储池 VxWorks

2015-06-16 16:16:40 2233

转载 正则表达式入门

原文地址:http://blog.csdn.net/sq_zhuyi/article/details/12848509写程序7年,从我身边接触到的人来看,相当多的程序员把正则表达式看得很高深,甚至觉得是一道不可跨越的鸿沟。有此想法的原因很简单:只是因为你没有花上几个小时的时间去学习一下正则的基础。对,只需要几个小时,你就能编写出自己需要的正则表达式。为了引导这些不敢触碰正则的朋友,我特别写了这

2015-06-16 15:21:53 286

转载 VxWorks三元组资料

网址:http://www.vxdev.com/docs/vx55man/vxworks/ref/netBufLib.html#netBufLibInitnetBufLibNAMEnetBufLib - network buffer libraryROUTINESnetBufLibInit( ) - initialize netBufLibnetPo

2015-06-16 15:19:43 1423

转载 DMA

转载来源:http://blog.csdn.net/absurdDMA控制器硬件结构DMA允许外围设备和主内存之间直接传输 I/O 数据, DMA 依赖于系统。每一种体系结构DMA传输不同,编程接口也不同。数据传输可以以两种方式触发:一种软件请求数据,另一种由硬件异步传输。在第一种情况下,调用的步骤可以概括如下(以read为例):(1)在进程

2015-06-15 21:23:28 471

转载 linux系统中交换区间(swap file)的解释

Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。这里的swap空间其实就是操作系统里面所说的虚拟存储空间,用于放置临时被交换出来的页面。那些被释放的空间可能来自一些很长时间没有什么操作的程序,

2015-06-14 08:21:25 3040 1

原创 C语言知识点2

1.typedeftypedef void (*TEST_FUNC)(void);这样便定义了

2015-06-13 15:43:47 307

转载 程序员技术练级攻略

原文地址:http://coolshell.cn/articles/4990.html转自:酷壳  陈皓月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《An open letter to those who want to start programming》,我的朋友(他在本站的id是Mailper)告诉我,他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编

2015-06-13 15:07:29 210

转载 写给新手程序员的一封信

原文地址:http://www.williamlong.info/archives/2700.html首先,欢迎来到程序员的世界。在这个世界上,不是有很多人想创造软件并解决问题。你是一名hacker,属于那些愿意做一些有挑战性的事情的人。  “当你不创造东西时,你只会根据自己的感觉而不是能力去看待问题。” – WhyTheLuckyStiff  对于下面的文字你不必完全

2015-06-13 15:05:38 307

转载 linux线程池设计讲解

linux高级编程综合应用:线程池  原文地址:http://blog.163.com/jimking_2010/blog/static/171601535201311113245917/线程池:在处理较复杂的任务的时候,可以采用多线程的方式。一般都是有一个任务,交给一个线程去处理。但是线程的创建需要一定的时间,且线程也不能无限制创建,那样CPU执行效率会更低。因此出现了线程池

2015-06-13 10:54:18 495

转载 GCC分步编译和编译动态链接库和静态链接库

棒棒棒

2015-06-13 09:40:39 359

转载 gcc编译静态库和动态库

今天要用到静态库和动态库,于是写了几个例子来巩固一下基础。hello1.c ————————————————————#include void print1(int i) { int j; for(j=0;jhello2.c _________________________________________________#include void print2(c

2015-06-12 18:53:34 268

转载 Linux GCC常用命令

1简介GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Co

2015-06-12 18:20:15 162

转载 const在c/c++中的区别

原文地址:C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中.所以,以下代码:#include using namespace std;int main(){ const int a = 1; const int b = 2; int array[ a + b ] = {

2015-06-12 16:52:52 198

转载 #pragma pack,__attribute__选项和结构体对齐相关问题详解

自己编程测试时,#pragma pack(show)这个老是提示unknown action ‘show’ for ‘#pragma pack’ - ignored [-Wpragmas]程序编译器对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也带来了一些麻烦,我们也屏蔽掉变量默认的对齐方式,自己可以设定变量的对齐方式。编译器中提供了#pragma pack(n)来

2015-06-12 10:38:26 1476 1

转载 线程知识总结

linux高级编程基础系列:线程和线程属性  原文地址:http://blog.163.com/jimking_2010/blog/static/1716015352013102104330579/线程可以解决进程中的问题:fork子进程存在的问题:1】开销大,内存映像要从父进程拷贝到子进程,所有的描述字要在子进程中复制等。尽管采用了写时复制技术,但总体来说还是太过昂贵

2015-06-12 10:26:38 392

转载 高效定时器:时间轮和时间堆

游戏后台之高效定时器-时间轮原文地址:http://blog.csdn.net/soft2967/article/details/9274691高性能定时器定时器的结构有多种,比如链表式,最小堆,时间轮的 ,在不同应用场景下使用哪种需要考虑效率和复杂度这次我么那先先讲讲时间轮定时器,在linux内核里这种结构的定时器大量使用。1.升序链表定时器   时间轮定时器

2015-06-12 09:47:06 8347

原创 多线程通信的注意问题

在主线程和子线程通信时,经常采用每个子线程一个内存的方式进行父子线程的通信。这样做的原因就是防止父子线程竞争带来的问题。以下是实例:

2015-06-11 19:42:56 935

原创 线程函数 pthread_detach()

在任何一个时间点上,线程石可结合的(joinable)或者是可分离的(detached)。一个可结合的线程能够被其他线程回收资源和杀死。在被其他线程回收之前,他的存储器资源(例如栈)是没有释放的。相反,一个分离的线程是不能被其他线程回收或杀死的。他的存储器资源在他终止时由系统自动释放。默认情况下系统被创建为可结合的,为了避免内存泄露,每个可结合线程都应该要么被其他线程显示回收,要么通过调用pt

2015-06-11 14:15:01 325

转载 阻塞IO,非阻塞IO,同步IO,异步IO详细讲解

原文地址:http://blog.csdn.net/historyasamirror/article/details/5778378当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《 IO - 同步,异步,阻塞,非阻塞 》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的那篇link 。写完之后发现很多人都很喜欢,我还是非常开

2015-06-11 09:31:59 280

转载 IO多路复用总结:select pool epoll

IO多路复用之select总结1、基本概念  IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:  (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。  (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。  (3)如果一个TCP服务器既要处理监听套接口

2015-06-11 08:16:08 565

转载 进程休眠函数

由于sleep函数可能被信号打断,所以其可能没有睡够,当没有睡够时,其返回剩余的时间

2015-06-10 20:46:41 526

原创 回收子进程函数waitpid详解

这里我们可以看出:当已经有SIGCHLD信号时,我们调用waitpid是可以立即返回的。所以经常在SIGCHLD处理程序中调用waitpid函数,这样就可以期望他总能立即返回,但是如果在执行SIGCHLD处理程序期间又有子进程终止,因为unix不对信号排队,如果多于一个子进程终止,则会导致信号丢失,在这种情况下,如果只调用一次waitpid就会导致僵死进程的产生,可以采取while(waitpid

2015-06-10 20:34:27 2550

原创 文件共享

注意这里的文件表和v-node表示所有进程共享的,在文件表中主要是当前文件位置和引用计数。引用计数说明可以有多个进程指向同一个文件表项。一下介绍了三种不同的文件打开方式:首先是最普通的形式,一个进程打开两个不同的文件;然后是一个进程已同一个文件名打开一个文件两次;最后是调用fork函数产生的文件共享方式。

2015-06-10 20:01:37 303

原创 linux RTAI模块编程遇到的问题

1.官网上的makefile是将用户态程序和内核模块一其编译,用官网的总是出现问题,提示头文件找不到。将用户程序和内核模块非开编译,用户态程序没有问题,但是内核态有问题,当碰到找不到rtai的头文件时,将/usr/realtime/include文件夹下面的文件拷贝到linux的目录下,这样编译模块的时候就能编译通过。

2015-06-10 19:56:01 706

原创 段错误与总线错误

总线错误:引起原因: 几乎总是由于对未对齐的读或写引起的。它之所以称为总线错误是因为对未对齐的内存访问时,被阻塞的组件就是地址总线。对齐(alignment)数据项只能存储在地址是数据项大小的整数倍的内存位置上,这样可以加速内存访问。如:访问一个8字节的double的数据时,地址只能是8的整数倍,所以存储一个double的地址只能是24,8008,但不能存储于地址1006因为它不能被8整除

2015-06-09 16:09:19 840

原创 内存碎片讲解

内部碎片是在一个已分配块比有效载荷大时的现象。例如,一个分配器的实现可能对已分配块强加一个最小的大小值,而这个大小要比某个请求的有效载荷大。或者分配器增加块大小以满足对齐约束条件。内部碎片的量化很简单,就是已分配块大小和他们的有效载荷之间差的和。因此,在任意时刻,内部碎片的数量只取决于以前请求的模式和分配器是实现方式。外部碎片是当空闲存储器合计起来足够满足一个分配要求,但是没有一个

2015-06-09 09:00:44 344

转载 linux内核树的建立

原文地址:http://blog.chinaunix.net/uid-20769166-id-599141.html本文是参考了网上多篇帖子而写的算不上什么原创。唯一值得欣慰的只不过在本机上实现罢了。因为毕竟失败了几次。也因为本人是初学驱动编程 很多简单的问题在我来说是相当的困难的。望有识之士不要笑话。最后,希望本文能给刚学驱动而还没开头的人提供一些帮助。 刚看 O'REILLY 写的

2015-06-08 19:03:35 348

转载 C语言头文件、库文件的查找路径

原文地址:http://blog.chinaunix.net/uid-25544300-id-3310491.html在程序设计中,文件包含是很有用的。一个大的程序可以分为多个模块,由多个程序员分别编程。有        些公    用的符号常量或宏定义等可单独组成一个文件,在其它文件的开头用包含命令包含该文件即可使用。这样,可避免在每个文件开头都去书写那些公用量,从而节省时间

2015-06-08 18:11:57 12266 2

谷歌C++代码规范

这个是谷歌关与C++编程的代码规范。对我们养成好的代码规范有很好的帮助

2015-06-05

空空如也

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

TA关注的人

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