- 博客(33)
- 资源 (6)
- 收藏
- 关注
原创 snort规则检测引擎初探
0x01缘由 目前的产品开发过程中,涉及到了对应用层协议类型的检测。考虑到要构建高效的规则匹配引擎,于是再次研究了snort的规则引擎。 主要目的还是开阔下设计思路和借鉴一些方法。0x02 规则制定 良好的规则设计是今后配置规则和扩展的基础。 Snort 采用数据结构 RuleTreeNodes(RTN) 和 OptT
2017-06-30 20:33:09 2756 1
原创 DPDK的方法论
0x00缘由 吃完午饭,闲来无聊阅读了《深入浅出DPDK》,看到以下章节顿时感觉自己在性能优化上是摸着石头过河。如果好好理解这段话,会对目前工作做的事情有个好的指导。 DPDK采用了很多具体优化方法来达到高性能的提升,有一些是利用IA软件优化的最佳实践方法,还有一些是利用了IA的处理器特性。0x01 专用负载下的针对性软件优化 专用处理器通
2017-06-29 15:11:12 1288
转载 值得推荐的C/C++框架和库
转载理由: 在研发成员水平有限时 or 产品压力较大时 or 工期较紧时 or 初创,如何利用开源去拼装一个系统,利用前人的成果? 假如给你一个初创团队,成员不多,能否找出可行方案?转载于: http://www.ezlippi.com/blog/2014/12/c-open-project.html值得学习的C语言开源项目Libe
2017-06-26 20:38:42 973 1
原创 技术团队管理--代码规范的制定与落地
0x01缘由 想想去年团队在经历业务拆分前执行的一些代码规范活动,发现效果较差,而且未在公司得到推广。究其原因是什么? 阅读:http://www.infoq.com/cn/articles/how-can-code-specification-be-executable有感而发。 规范制定 != 规范执行 这点做得不够,对于每个团队成员的代码编写情况的检
2017-06-25 21:25:35 1754
原创 阅读ISE 复习linux多线程开发时需使用的锁
1、缘由以项目带动学习,主要学习C++一些特性,复习linux编程中锁、信号、条件变量等。2、ISE点示例///////////////////////////////////////////////////////////////////////////////// class AutoInvokable/AutoInvoker - 自动被调对象/自动调用者//// 说明:/
2017-06-23 15:53:14 437
转载 评估磁盘IO速度
转载理由:在开发高性能软件,做性能优化时,大部分人都会找I/O瓶颈,但是I/O是不是瓶颈这个还有待确认。在处理大量数据时,对硬件的性能要有充分的了解,这样不会把优化目标转移。转载地址:http://blog.chinaunix.net/uid-24250828-id-3239100.html下面是我试用的案例:[root@BH analyzer_new]# df
2017-06-23 09:11:06 379
转载 elasticsearch技术手册 v1.0
转载理由:产品研发过程中,使用到了elasticsearch,虽然这块不是我负责,难免会遇到交集的地方,避免一无所知,学习之,MARK;转载地址:http://www.zhangxiaolong.org/2017/05/22/elasticsearch-tec-book-v1-0/?utm_source=tuicool&utm_medium=referral1.
2017-06-23 08:53:00 1266
转载 手把手简易实现shellcode及详解
转载理由: 处于安全行业靠边产业,经常听和看到shellcode,但是只有模糊的认识,于是学习一把,毕竟C和汇编了解,开阔下视野;转载于:http://blog.nsfocus.net/simple-realization-hand-handle-shellcode-detailed-explanation/?utm_source=tuicool&utm_medium=referral
2017-06-22 21:15:46 6231 2
原创 xplico中使用ndpi进行协议识别
0x01 缘由有人通过github找我了解xplico,一直没有好好解答他的问题,于是想着手写这么一篇简单文章。0x02 介绍做协议识别:1、特征码 2、端口 3、正则详细介绍,传送:http://www.sdnlab.com/17449.html0x03 xplico的使用在tTcp_garbage.c \Udp_analysis.c 中使用
2017-06-22 17:38:35 3004 1
原创 阅读ISE源码过程中重新对单例模式的理解
0x01缘由最近在项目开发中使用到了日志类,对其封装时采用的单例模式,但是仔细研究后,发现很多细节未考虑,于是学习了下ISE的单例模式设计;0x02单例模式需考虑的场景用于配置文件、日志等公共操作类。注意如下:1、每次instance()返回唯一个对象;2、多线程并发访问;(意味着加锁)3、返回对象效率要高;0x03ISE单例实现templateclass
2017-06-21 17:24:17 276
原创 Linux c/c++后端编程,信号量,屏蔽和不屏蔽,信号捕获;
0x01 缘起在 linux c/c++后端编程的过程中,我们经常对捕获和捕获一些信号的处理。主要是在程序收到相关信号时能进行安全的退出,做一些善后处理。如下场景:Linux下的线程实质上是轻量级进程(light weighted process),线程生成时会生成对应的进程控制结构,只是该结构与父线程的进程控制结构共享了同一个进程内存空间。 同时新线程的进程控制结构将从父线程(进
2017-06-20 18:05:47 1982 1
原创 snort 之AC匹配算法
0x01 缘起最近项目中使用AC算法,前面已经转载几篇文章学习之,就想起目前正在使用但是未深入分析的snort开源IDS项目。研究其高效AC匹配算法。下面主要针对源码讲解,然后添加了源码注释。写成这篇文章,也是做一个mark,阅读下源码0x02源码/* $Id$ *//* ** Copyright (C) 2014-2016 Cisco and/or its affiliate
2017-06-20 11:03:22 2655
转载 AC自动机
转载理由:理解更深刻,而且图形更可视化,关键构造失败函数比较抽象,类似KMP next函数的构建。基本原理已经理解,尝试实践和测试性能0(n);转载地址:http://blog.csdn.net/sealyao/article/details/45604271、概述Aho-Corasick自动机算法(简称AC自动机)1975年产生于贝尔实验室。该算法应用有限自动机巧妙地将字符比较转
2017-06-18 15:34:29 508
原创 堆栈溢出引出的一些mark知识点--汇编
0x01缘由 浏览博客时,发现一篇《CVE-2016-10190 FFmpeg Heap Overflow 漏洞分析及利用》传送:https://security.tencent.com/index.php/blog/msg/116?utm_source=tuicool&utm_medium=referral,因为从事C/C++编程,带着兴趣和疑问阅读了此篇文章。然后阅读这个的过程中
2017-06-18 13:10:04 835
转载 汇编入门
转载理由: 阅读堆栈溢出原来,复习下大学学的汇编;转载于:http://www.cnblogs.com/YukiJohnson/archive/2012/10/27/2741836.html本文翻译自:http://www.cs.virginia.edu/~evans/cs216/guides/x86.html本文描述基本的32位X86汇编语言的一个子集,其中涉及汇编语言的
2017-06-17 21:21:27 807
转载 AC算法
转载理由:产品开发中需要高效的字符串匹配算法,所以mark下转载于:http://blog.csdn.net/myjoying/article/details/7960534下一步:学习使用 早在1975年贝尔实验室的两位研究人员Alfred V. Aho 和Margaret J. Corasick就提出了以他们的名字命名的高效的匹配算法---AC算法。该算法
2017-06-16 16:47:34 2453
原创 xplico TCP流重组算法
对xplico的研究,断断续续,之前有人在github上咨询我问题,只简单的解答了一些粗浅的问题,下面主要针对TCP流重组。下面为xplico一条流重组的关键数据结构(没包含流表,所以不考虑流表的设计):包:struct seq { packet *pkt; /* packet 包*/ unsigned long seq; /* seq or
2017-06-16 16:09:58 3682
原创 ISE -- I/O Buffer 之 STL vector学习
0x01 缘起 在高性能服务器开发的过程中,良好的IO缓存是整个设计比较重要的环节。带着这方面的兴趣,阅读了开源ISE的IO Buffer设计,不评估其优劣,纯粹学习这方面知识,深度学习下STL vector容器的使用和内存的管理。0x02 IO Buffer介绍 消息缓存,主要存储socket接收和发送的消息。发送消息时,将消息有序的缓存到buffer中;消息接
2017-06-15 13:50:51 1039
转载 深入理解STL源码--空间配置器(allocator)
转载于:http://ibillxia.github.io/blog/2014/06/13/stl-source-insight-1-memory-allocator/?utm_source=tuicool&utm_medium=referral转载理由:实践项目中存在大量使用map,set,vector等STL容器,容器使用时内存分配、释放与长规的差异。主要学习了解,方便今后问题的排查。
2017-06-15 09:18:06 3443
原创 boost::scoped_ptr
0x01 缘由 我想有些知识点存在即有它的意义,可能在不同的场景有不同的使用场景。有了boost::shared_ptr 为啥还要有一个boost::scoped_ptr呢?带着这个疑问学习了一下。0x02 认识boost::scoped_ptr scoped 意为作用域,表示此智能指针只能在本作用域里使用,不能允许拷贝和赋值,只能在scoped_ptr被申明
2017-06-12 14:13:45 439
原创 this指针
this指针只能在一个类的成员函数中调用,它表示当前对象的地址。下面是一个例子:1234567voidDate::setMonth(intmn){ month=mn; this->month=mn; (*this).month=mn; //这三句是等价的}1.this只能在成员函数中使用。
2017-06-11 10:56:20 247
原创 c++中易犯的错误
1声明和定义的区别①变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。②变量声明:用于向程序表明变量的类型和名字。③定义也是声明:当定义变量时我们声明了它的类型和名字。④extern关键字:通过使用extern关键字声明变量名而不定义它。 1.定义也是声明,extern声明不是定义,即不分配存储空间。extern告诉编译器变量在其他地方定
2017-06-11 10:55:00 443
原创 Dpdk distrabutor
1.创建分流器distrabutor首先要检测系统的核数,核数至少需要2个才可以运行,建议核数大于等于3个,可以在分配worker时达到较好的效果。接下来就创建分流器了static struct rte_distributor *d;d =rte_distributor_create("Test_distributor", rte_socket_id(),
2017-06-11 10:49:39 1412
原创 DPDK IP重组
1ip_reassembly功能介绍 ip_reassembly模块是在IP层将分片的IPv4和IPv6的报文进行重组。它是通过rte_ipv4_frag_reassemble_packett()和rte_ipv6_frag_reassemble_packet ()两个函数进行重组。2分片与IP首部1、对于
2017-06-11 10:43:18 2517
原创 dpdk IP分片
Ip_fragmentation的处理流程 1.初始化EAL环境先rte_eal_init(argc, argv)初始化EAL环境,确定绑定的核数,队列数。解析parse_args(argc, argv)参数,如-c是确定虚拟的内核数。2.获取网卡的数目通过函数rte_eth_dev_count()来获取网卡的数目。3. 获取核的个数通过函数rte_lcore_coun
2017-06-11 10:41:14 2068
原创 DPDK测试
1安装环境软件建议版本GNUmake coreutils:cmp, sed, grep, arch gcc:versions >= 4.5.xlibcheaders (glibc-devel.i686 / libc6-dev-i386; glibc-devel.x86_64 for 64-bitcompilation)Linuxkernel headers or sour
2017-06-11 10:39:57 3394
转载 explicit关键字
下班回家,回想同事对这个关键字的理解,于是学了一把:转载于:http://www.cnblogs.com/ymy124/p/3632634.html 首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为impl
2017-06-08 20:44:48 255
原创 boost::any 学习
0x01 缘由 阅读源码ise发现此库的用法,于是学习学习,毕竟如果在性能要求不高的情况下,个人是不远造轮子的,而更愿意拿来使用,用好。0x02 boost::any 简介 0x03 boost::any 用法举例// class ObjectContext - 从此类继承给对象添加上下文class ObjectContext{public:
2017-06-07 16:36:56 488
原创 coredump 续---abort,addr2line
0x01缘由 在项目实际开发中,当出现段错误时,为了定位问题的代码行。必须保留程序运行上下文、根据linux内核日志定位代码行等。 有时当程序自己发现问题时,自动退出程序释放资源,如发现系统内存耗尽时,退出程序,又得自动将文件流刷新到磁盘等。0x02 abort介绍 信号量:SIGABRT 6 程序自己发现错误并调用 abort 时产生。
2017-06-06 16:59:15 2228
原创 boost::function与boost::bind 的使用
0x01 为啥? 为啥要用这个?这个用起来有什么好处?查了下资料陈硕大哥的见解:http://blog.csdn.net/solstice/article/details/3066268 下面也说说我的想法:每个技术点都有适合的用法,使用某项技术点,还是依据整个团队的技术成熟度、熟悉度等。 最近在阅读haoxingeng的服务器框架ise,发现其用法,于是有学
2017-06-05 16:01:31 5625
原创 /proc/sys/net/ipv4/ 下参数理解,方便服务器优化
/proc/sys/net/ipv4/下文件:1) /proc/sys/net/ipv4/ip_forward该文件表示是否打开IP转发。0,禁止1,转发基本用途:如VPN、路由产品的利用;原理图:缺省设置:02) /proc/sys/net/ipv4/ip_default_ttl该文件表示一个数据报的生存周期(Tim
2017-06-02 16:52:27 6389
原创 boost::shared_ptr 智能指针在项目中的使用
0x01 智能指针的设计的目的 在linux c/c++编程过程中,对资源的合理使用是一个常遇到的题,如何防止内存泄露是c/c++程序员必须关注的问题。如何规避内存泄露,那就必须要有良好的编程习惯,malloc/free,new/delete需成对出现等。 C++编程中为了防止内存的泄露,boost设计了智能指针,目的消除未delete时的内存泄露。0x02 智能指
2017-06-02 11:54:44 657
转载 DDoS攻击原理及防护方法论
转载于:http://netsecurity.51cto.com/art/200903/114969.htm 戴鹏飞目的:了解DDOS攻击原理,IDS防护设备开发打下基础 从07年的爱沙尼亚DDoS信息战,到今年广西南宁30个网吧遭受到DDoS勒索,再到新浪网遭受DDoS攻击无法提供对外服务500多分钟。DDoS愈演愈烈,攻击事件明显增多,攻击流量也明显增大,形势十分
2017-06-01 18:26:28 893
Stack 的建立,删除及相关操作
2010-12-24
Stack 的建立,删除及相关操作
2010-12-24
数据结构PPT数据结构PPT数据结构PPT数据结构PPT数据结构PPT数据结构PPT数据结构PPT
2010-12-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人