自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

转载 【重要通知】本人所有技术文章转移至zzqcn.github.io及yuque.com/zzqcn

本人所有技术文章转移至- github:https://zzqcn.github.io(国内有可能无法访问)- 语雀:https://www.yuque.com/zzqcn转载于:https://www.cnblogs.com/zzqcn/p/7805561.html...

2017-11-08 18:36:00 292

转载 【文档】使用Sphinx + reST编写文档

0 前言写文档是开发人员日常工作中的一项重要内容,除了word之外,我更偏爱使用标记语言(Markup Language)。使用标记语言,可以利用简单、免费的文本编辑器(记事本,vim, emacs...)编写文档并设置格式,再生成html或pdf等格式,或者直接把编辑好的文件传到github或wiki上面 ,通过浏览器可以直接查看带有格式的文档。目前标记语言主要有两种,Mark...

2016-01-03 18:21:00 747

转载 【ReviewBoard】安装与配置

0. 引言环境:Ubuntu 14.04 Server(虚拟机)这篇文章里说的是review board官方的安装方式,bitnami出了针对win/linux的集成安装包,用它可能简单点,没有尝试,可以到这里下载:https://bitnami.com/stack/reviewboard/installer1. 安装步骤参考:官方安装指南安装apache和...

2015-12-11 18:09:00 333

转载 【hyperscan】示例解读 pcapscan

示例位置: <hyperscan source>/examples/pcapscan.cc参考:http://01org.github.io/hyperscan/dev-reference/api_files.html1. 概述此示例实现一个简单的数据包匹配性能测量程序。pcapscan使用libpcap从pcap文件中读取数据包,并根据一个规则文件中指定的...

2015-10-23 17:37:00 507

转载 【hyperscan】示例解读 simplegrep

示例位置: <hyperscan source>/examples/simplegrep.c参考:http://01org.github.io/hyperscan/dev-reference/api_files.html1. 概述此示例实现一个grep的简化版本:指定一个正则表达式和文件,执行后依次输出匹配位置。但这个简单示例并不支持从stdin读取数据,也...

2015-10-23 13:35:00 485

转载 【dpdk】使用libpcap-PMD驱动收发包

ref:Dpdk programmer’s guide1. 概述 dpdk不仅提供针对物理和虚拟网卡的pmd驱动(Poll Mode Drivers),还提供两个纯软件的pmd驱动,libpcap pmd就是其中之一。Libpcap pmd使用libpcap库读写报文,读写的源可以是文件,也可以是使用Linux内核驱动的物理网卡。 在没有或不方便配置物...

2015-10-22 18:32:00 746

转载 Linux Shell命令行快捷键

1. 命令行编辑<Ctrl>+a移动光标到行首<Ctrl>+e..........行尾<Alt>+f光标右移一个词<Alt>+b....左移......<Ctrl>+f光标右移一个字符<Ctrl>+b....左移......

2015-10-22 18:06:00 85

转载 【hyperscan】编译hyperscan 4.0.0

ref:http://01org.github.io/hyperscan/dev-reference/getting_started.html1. 硬件需求intel x86处理器 64-bit或32-bit模式2. 软件需求2.1 操作系统Linux: Ubuntu 14.04 LTS or newer RedHat/CentOS 7 or newe...

2015-10-22 13:31:00 576

转载 【hyperscan】hyperscan开源了!

hyperscan开源了!官网:https://01.org/zh/hyperscan1. 新闻背景 当地时间10月19日,intel将它的高速正则表达式匹配引擎hyperscan开源了,版本4.0,基于BSD许可。这个基于自动机(Automata)的引擎经过了多年开发(2008年起),经过不断优化与完善,效率非常之高,虽然没有pcre等对正则语法支持全面,但非常适用于...

2015-10-21 18:20:00 318

转载 【wireshark】插件开发(五):C插件

1. Wireshark对C插件的支持每个解析器解码自己的协议部分, 然后把封装协议的解码传递给后续协议。因此它可能总是从一个Frame解析器开始, Frame解析器解析捕获文件自己的数据包细节(如:时间戳), 将数据交给一个解码Ethernet头部的Ethernet frame解析器, 然后将载荷交给下一个解析器(如:IP), 如此等等. 在每一步, 数据包的细节会被解码并显示...

2015-09-29 17:35:00 727

转载 【wireshark】插件开发(四):Lua插件Post-dissector和Listener

1. Post-dissectorpost-dissector和dissector不同,它会在所有dissectors都执行过后再被执行,这也就post前缀的由来。post-dissector的构建方式和dissector差不多,主要一个区别是注册的方式,post-dissector调用的是register_postdissetor接口。下面给出两个示例。1.1 最简单的Post...

2015-09-29 16:58:00 453

转载 【wireshark】插件开发(三):Lua插件 Dissector

// TODO: 部分内容需要修改1. 骨架首先新建一个文件,命名为foo.lua,注意此文件的编码方式不能是带BOM的UTF8,否则wireshark加载它时会出错(不识别BOM):-- @brief Foo Protocol dissector plugin-- @author zzq-- @date 2015.08.12-- create a new...

2015-09-26 12:21:00 266

转载 【wireshark】插件开发(二):Lua插件开发介绍

1. Wireshark对Lua的支持本节相关内容可参考Wireshark开发指南第10章”Lua Support in Wireshark”。Wireshark集成了Lua解释器,以支持Lua脚本(自己编译的话根据编译配置决定是否支持Lua)。启动wireshark,依次点击“Help”,”About Wireshark“菜单,在打开的对话框中的”Wireshark”标签页...

2015-09-21 21:22:00 694

转载 【wireshark】插件开发(一):概述

1. 概述wireshark提供了灵活的插件机制,使用户可以方便地扩展wireshark的功能。插件的功能主要包括,但不限于协议解析器。可以使用Lua或C语言来编写Wireshark插件,下表对比了这两种方式,绿色背景代表占优的一方。对比项目C插件Lua插件开发难度难容易,只需要了解Lua语言开发语言难以掌握的C...

2015-09-21 20:50:00 156

转载 【wireshark】开发环境搭建

1. 引言本文相关内容可参考Wireshark开发指南第2章”Quick Setup”要对wireshark代码进行修改,除了下文介绍的lua插件的方式以外,都需要对wirehshark源码进行编译(C外置解析插件不需要编译整个wireshark,都需要下载wireshark源码及需要的库),因此有必要学习如何搭建Wireshark开发环境。本文主要介绍在Windows下编译...

2015-09-20 14:00:00 465

转载 【wireshark】协议解析

1. 普通解析Wireshark启动时,所有解析器进行初始化和注册。要注册的信息包括协议名称、各个字段的信息、过滤用的关键字、要关联的下层协议与端口(handoff)等。在解析过程,每个解析器负责解析自己的协议部分, 然后把上层封装数据传递给后续协议解析器,这样就构成一个完整的协议解析链条。解析链条的最上端是Frame解析器,它负责解析pcap帧头。后续该调用哪个解析器,是通过上...

2015-09-20 13:02:00 351

转载 【wireshark】抓包和文件格式支持

1. 抓包捕获从网络适配器提取包,并将其保存到硬盘上.访问底层网络适配器需要提升的权限,因此和底层网卡抓包的功能被封装在dumpcap中,这是Wireshark中唯一需要特权执行的程序,代码的其他部分(包括解析器,用户界面等等)只需要普通用户权限。为了隐藏所有底层的机器依赖性,使用了libpcap/WinPcap库.这此库提供了从多种不同的网络接口 类型(Ethernet, ...

2015-09-20 12:48:00 701

转载 【wireshark】总体结构

1. 总体结构wireshark的总体结构如下图所示。2. 功能模块模块名功能源码子目录GTK/Qt处理所有的用户输入/输出(所有的窗口,对话框等等)/ui GTK: /ui/gtk Qt: /ui/qt Co...

2015-09-20 12:40:00 304

转载 【wireshark】Wireshark原理分析与二次开发系列

1.版权声明本系列文章是本人花了很多心血写成,wireshark本是开源软件,本人也乐于技术知识和经验的分享,更是欣赏和推崇开源精神,因此任何看到本文的人都可以随意转载,但只有一个要求:在大段甚至全文引用本系列文章内容的情况下,需要保留本人网名(赵子清)和本博客地址的全部或一部分(http://www.cnblogs.com/zzqcn)。2.引言Wireshark是一款...

2015-09-20 12:27:00 876

转载 【vim】分割窗口、标签页与Quickfix窗口

vim支持窗口分割和标签页,合适地使用这两种特性可以使文字编辑工作更愉快。1. 窗口分割vim支持窗口的水平分割和垂直分割。以下是常用的操作指令或快捷键。命令说明vim -o <files>打开多个文件,并将它们放在水平分割的窗口中vim -O <files>打开多个文件,并将它们放在垂直分割的窗口中...

2015-09-15 17:03:00 358

转载 【性能分析】使用Intel VTune Amplifier

本文转自https://software.intel.com/zh-cn/blogs/2010/11/10/amplxe-cl/版权归原作者所有,如原作者有任何不允许转载之理由,本文将自行删除。Intel® VTune™ Amplifier XE 2011 是新一代的性能分析工具,含图形界面以方便分析结果。但有时我们基于二点原因需要使用命令行来收集性能数据和进行分析:1.含图形界面的工...

2015-09-09 14:48:00 342

转载 【vim】搜索与替换

1. 搜索命令功能备注*向下搜索光标所在处的词n下一个,N上一个#向上搜索光标所在处的词同上[+<Ctrl>+i跳转到光标所在处的变量的声明使用tag[+<Ctrl>+d跳转到光标所在处的宏的定义使用tagycm定位命令跳转到光标所在处的变量的声...

2015-08-28 10:31:00 124

转载 【vim】插件管理及代码智能提示与补全环境的配置

1. 引言可以使用脚本/插件来给vim添加各种神奇的功能,从更换颜色主题、到代码智能提示,甚至项目管理。无数开发者通过开源社区贡献自己开发的插件,使得vim有可能变得无比强大。这儿http://vim-scripts.org/vim/scripts.html 是一份vim扩展脚本的列表。然而,我的思想是尽量不要使用vim插件,除了那些非常优秀且对自己的工作而言所必需的。这样,当需...

2015-08-21 17:40:00 4074

转载 【C++对象模型】使用gcc、clang和VC++显示C++类的内存布局

引言各种C++实现对C++类/对象的内存布局可能有所不同,包括数据成员的顺序、虚函数表(virtual table: vtbl)的结构、继承关系的处理等。了解C++类/对象的布局,对于理解C++各种机制,正确合理地进行设计和开发有很大的帮助。主流编译器的支持本文所述的3款主流编译器都提供打印/导出C++类/对象的内存布局的功能,现用表格列出其特性和用法,测试用的代码文件列于文...

2015-08-19 15:12:00 744

转载 【vim】插入模式与常用编辑操作

vim不像很多编辑器那样一启动便可以直接编辑文本,需要在普通模式按下i, a等键才会进入插入模式进行文本编辑。如何进入插入模式以下的命令都会让vim从普通模式切换到插入模式,但命令执行后的字符插入位置有所不同。命令执行后的字符插入位置i当前字符之前I当前行首第一个非空白字符之前a当前字符之后A...

2015-07-29 21:23:00 356

转载 【vim】正常模式下的一般操作

正常模式一般用于浏览文本,其实也就是通过键盘命令让光标在文本中跳来跳去,在任何模式下按一次或两次<Esc>会进入正常模式。基本思想vim对光标的定位操作非常精确和高效,这是它的一个非常好用的地方。但是,由于按键和按键组合太多太复杂,会让好多初学者望而却步。其实,vim的光标定位是有规律的,就好像当初学五笔打字一样,看起来要记很多字根,其实键盘上字根的排列是非常有规...

2015-07-23 01:21:00 134

转载 让博客园博客自动生成章节目录索引

对于比较长的文章,有一个好的目录索引是很有必要的,可以让读者比较清楚地了解文章内容和层次。然而,目前(2015.7)博客园不像csdn博客那样,会对发布的文章自动生成目录索引。不过,一些网友通过博客园后台提供的一些自定义功能,自己写脚本实现了这一功能。我用的脚本主要就是参考@薰衣草的旋律的,文章地址是:http://www.cnblogs.com/wangqiguo/p/4355...

2015-07-18 16:16:00 124

转载 【vim】模式与模式切换

很多初学者启动vim后,不知道怎么输入字符:按了半天字母,结果屏幕还是空的。vim和记事本或WORD不一样,不是一打开后就可以输入文字,此时它处于正常模式。vim一共有4个模式:正常模式 (Normal-mode)插入模式 (Insert-mode)命令模式 (Command-mode)可视模式 (Visual-mode)注意:方向...

2015-07-03 16:33:00 472

转载 【vim】简介与基本配置

vim是一款非常强大的文字编辑软件,是各种类UNIX系统标配的文本编辑工具。相信此文的读者对它应该不会陌生,在这里就不做介绍了。1.为什么要使用vim在认识vim之前,我用过好多IDE:Visual Studio, Eclipse, C++ Builder,Source Insight, SlickEdit, Qt Creator等等,但我觉得这些东西都有这样那样的不足(Qt C...

2015-05-29 10:03:00 134

转载 【Qt】Qt在Windows下的开发与调试环境配置

前文已经交待了从源码编译Qt自定义版本。现在可以开始配置一下开发与调试程序并写个Hello World了。1. IDE虽然Qt官方有VS插件使我们可以在VisualStudio中开发Qt应用,但我的感觉是那样的体验不太好,我还是喜欢使用清爽的Qt Creator来开发。QtCreator的下载地址:http://download.qt-project.org/offic...

2015-01-24 01:49:00 179

转载 【Qt】VS2010编译Qt5.3.2 64bit

1. 为什么要这么做在Windows下,Qt官网默认提供的二进制版本大多是32位,目前(2015.01.24)只对VS2013提供了64位版本,如下图所示:为了适应我目前安装的VS2010 IDE,也为了根据自己的需要编译特定的库和插件(比如去掉webkit之类),需要直接从源码编译Qt。本例编译的是Qt5.3.2版本,应该也适用于Qt5.4.0。2. 准...

2015-01-24 00:38:00 268

转载 【DPDK】虚拟机开发环境配置

DPDK介绍见:www.dpdk.org本文介绍的步骤基本适用于dpdk 1.7.0 - dpdk 2.0.0 各版本。只是setup.sh显示的菜单有一些小的不同;同样的,也适用于ubuntu更高版本(已在ubuntu 12.04+及14.04上验证过)1. 所用系统与软件版本系统:Ubuntu 12.04.3 LTS 64位,CentOS Linux re...

2014-10-14 13:15:00 312

转载 Linux动态库的导出控制

在实际工作中,许多软件模块是以动态库的方式提供的。做为模块开发人员,我们不仅要掌握如何编写和构建动态库,还要了解如何控制动态库的导出接口,这样,我们可以向模块的用户仅导出必要的接口,而另一些内部接口,为了安全或其他考虑,可以不必导出。当需要导出C++类时,问题显得更复杂一些,不过我认为不应导出C++类成员,而只应导出纯C接口。和Visual C++不同,GCC编译器默认会导出所有符号...

2014-04-02 12:09:00 145

转载 线程池(Linux实现)

讨论QQ群:135202158本文技术参考了sourceforge项目c thread pool,链接:http://sourceforge.net/projects/cthpool/线程池如上一篇随笔(http://www.cnblogs.com/zzqcn/p/3585003.html)提到的内存池一样,也是一种池化策略,在启动时(或者更高级的,运行时按一定策略分...

2014-03-26 17:43:00 71

转载 内存管理器(内存池)

讨论QQ群:135202158在一些应用场合,比如一个繁忙的服务器程序中,服务器频繁地接受并处理用户请求,如果每次处理都需要从系统动态地申请和释放内存,由于此操作开销较大,会加大处理时延;另一方面,此开销造成的累积效应也是很大的。对此我们可以举一个生活中的例子:假设一个烟鬼一天抽10包烟(这有点太多了,假设啊),如果他每次去商店只买一包烟,他一天就要往商店跑10次,很麻烦;...

2014-03-26 15:37:00 84

转载 无锁同步:计数器

概述同步问题是并发编程中经常遇到的问题。在用户层次,处理同步问题的一般方法是锁和信号量等,但这些方法都有性能问题。对性能的简单比较见此文最后。intel x86、x86_64处理器支持compare and swap (CAS)操作,该操作把读取A的值改变A的值这两个操作变成了一个原子操作,保证不会被其他CPU指令打断。GCC编译器从4.1.0开始通过内置...

2014-02-27 15:57:00 132

转载 序列化库MessagePack应用(C++)

介绍MessagePack(简称msgpack)是一个小巧而高效的序列化/反序列化库,支持多种开发语言。官方网站:http://msgpack.org/ 。下面是官方的一个简介:It's like JSON.but fast and small.MessagePack is an efficient binary serialization format. I...

2014-02-23 21:04:00 669

转载 字符串模式匹配算法2 - AC算法

上篇文章(http://www.cnblogs.com/zzqcn/p/3508442.html)里提到的BF和KMP算法都是单模式串匹配算法,也就是说,模式串只有一个。当需要在字符串中搜索多个关键字(模式)时,则需要用到多模式串匹配算法。简介AC(Aho-Corasick)算法是一个经典的多模式串匹配算法,它借鉴了KMP算法的思想,可以由有限状态机(Finite Stat...

2014-01-18 23:44:00 266

转载 字符串模式匹配算法1 - BF和KMP算法

在字符串S中定位/查找某个子字符串P的操作,通常称为字符串的模式匹配,其中P称为模式串。模式匹配有多种算法,这里先总结一下BF算法和KMP算法。注意:本文在讨论字符位置/指针/下标时,全部使用C语法,即下标从0开始。BF算法BF(Brute Force)算法也就是传说中的“笨办法”,是一个暴力/蛮力算法。设串S和P的长度分别为m,n,则它在最坏情况下的时间复杂度是O(m...

2014-01-07 18:49:00 272

转载 Linux(Ubuntu)配置问题集

Cannot set LC_CTYPE to default locale: No such file or directory安装Ubuntu Server版本(不带桌面环境)时,如果安装时的语言选择了中文,发现在字符界面很多命令的输出结果中包含菱形方块乱码。我们可以修改/etc/default/locale 文件把中文环境改为英文环境,来解决这个问题,方法是把关键的LA...

2013-12-25 10:57:00 138

空空如也

空空如也

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

TA关注的人

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