自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

bie_niu1992的专栏

当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。

  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

原创 linux 下的 iptables/ netfilter 防火墙 深度理解 后篇

一 概述中篇已经提到了钩子函数的注册,也知道最终数据进来是通过钩子函数处理,来实现防火墙的功能的。那么netfilter 内核是在什么时候调用钩子函数?钩子函数又是怎么实现防火墙对应的功能的?(本章主要讲钩子函数实现的过滤功能)

2020-07-01 16:50:47 470 1

原创 linux 下的 iptables/ netfilter 防火墙 深度理解 中篇

一 概述前篇主要提到了用户空间 iptables 1.3.5 源码对规则的处理。但是并没有涉及内核空间netfliter 模块的处理。用户空间上的规则要生效最终肯定是通过传给内核空间的netfilter,让netfliter这个老大哥处理。因此抛出两个问题。用户空间的是怎么获取内核空间已经存在的规则,或者用户空间是如何将需要netfilter处理的规则下发给内核?简而言之,规则在用户空间是如...

2020-05-29 12:03:36 795

原创 UNIX 环境编程 之 进程间通讯(IPC) 五 System V信号量

一 概述信号量与先前介绍的IPC(管道,FIFO,以及消息队列)不同,它是一个计数器,主要用来解决进程或线程间共享资源引发的同步问题。使得资源在一个时刻只有一个进程(线程)所拥有。信号量只能进行两种,等待(使用信号)和发送(释放)信号

2020-05-28 14:25:33 244

原创 linux 下的 iptables/ netfilter 防火墙 深度理解 前篇

一 概述iptables 其实不是真正的防火墙,我们可以把它理解为一个客户端代理,用户通过iptables 这个代理,将用户的安全设置执行到对应的“安全框架”中,这个安全框架才是真正的防火墙。这个框架的名称叫做netfilter 。...

2020-05-12 14:16:54 784 1

原创 UNIX 环境编程 之 文件系统

一 文件描述符文字描述符是一个小的非负整数,内核用以标识一个特定进程正在存访的文件。当内核打开一个现存文件或创建一个新文件时,它就返回一个文件描述符。当读、写文件时,就可使用它。每当运行一个新程序时,所有的 shell 都为其打开三个文件描述符:标准输入、标准输出以及标准出错。

2020-04-30 14:26:43 214

原创 C 中 二维数组动态创建和作为函数参数传参问题

一 概述最近项目中用到二维数组,没想到用的时候出现了问题,找了好一会才发现原因。看来基本功还不扎实,有必要写篇博客好好理解下这二维数组。二 二维数组的动态创建当你知道创建的是几行几列数组时,在c++ 中你可以用new一条语句就能创建成相应的二维数组。int **p = new int* [5]; 但是在c语言中标准的库只有 malloc free是分配内存的,怎么分配呢?言归正传,...

2020-04-17 17:17:51 1934 3

原创 UNIX 环境编程 之 fork 函数详解

一 概述一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。二 fork 函数fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:1)在父进程中,fork返回新创建子进程的进程ID;2)在子进程中,f...

2020-04-02 13:56:55 613

原创 linux 下 packet_mmap 中篇 (发送实现)

一 概述前篇已经讲述了接收实现,而对于libpcap抓包的重要工具,本身其实也集成了packet_mmap抓包方式。那么既然可以用于捕获抓包。packet_mmap可以实现发送抓包吗?答案当然是肯定的。不过网上对于packet_mmap发送介绍少之又少。接下来会讲解packet_mmap发送数据包遇到的问题。

2019-12-06 10:23:31 2166 5

原创 linux 下 packet_mmap 前篇 (抓包实现)

一 概述tcpdump 篇章中讲述的只是原始的抓包流程。原始的抓包流程?简单的说就是创建socket,设置bpf后,每次接收数据包都要调用recvfrom系统调用。而每次调用recvfrom内核底层抓到的数据包都需要用内核copy到用户。不管是系统调用,还是copy都是相当耗cpu性能的。而linux内核提供了一种更高效的抓包方式packet_mmap

2019-12-06 10:22:25 3671 1

原创 UNIX 环境编程 之 进程间通讯(IPC) 四 System V共享存储

一 什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,因为数据不需要在客户机和服务器之间复制,所以这是最快的一种 I P C。特别提醒:共享内存并未提供同步机制,也...

2019-10-11 16:32:51 149

原创 UNIX 环境编程 之 进程间通讯(IPC) 三 命名管道(FIFO)

一 概述命名管道(FIFO) 跟管道(pipe)最大的一个区别,要让无亲缘关系的两个进程间通讯,管道是做不到的。而命名管道其实是跟路径名关联的,从而允许无亲缘关系的两个进程间通讯。二 管道函数的使用mkfifo函数#include <sys/types.h>#include <sys/stat.h>int mkfifo(const char *filename...

2019-10-11 15:32:58 153

原创 UNIX 环境编程 之 进程间通讯(IPC) 二 管道(pipe)

一 概念管道是一种最基本的IPC机制,完成数据传递。调用pipe系统函数即可创建一个管道。作用于有血缘关系的进程之间,只能在具有公共祖先的进程之间使用管道是半双工的。数据只能在一个方向上流动管道是由内核管理的一个缓冲区,一般为4K大小,它被设计成为环形的数据结构,以便管道可以被循环利用。二 管道的创建#include <unistd.h>int pipe (int f...

2019-09-26 14:50:10 321

原创 UNIX 环境编程 之 进程间通讯(IPC) 一 IPC概述

1.概述IPC是进程间通信(inter process communication)的简称,传统上该术语描述的是运行在某个操作系统之上的不同进程间的各种消息传递.而涉及不同进程间对消息的处理的时候,也就必须要考虑相关消息的同步。本章主要简单介绍下,会涉及的几种的几种同步方式,和几种常用的IPC方式。后续会深入理解下2.IPC通信方式管道(pipe):一种广泛使用的IPC形式。但是有两种限制...

2019-09-26 14:48:41 246

原创 linux 下 tcpdump 详解 后篇(自己实现抓包过滤)

一 概述在了解了tcpdump的原理后,你有没有想过自己去实现抓包过滤? 可能你脑子里有个大概的思路,但是知道了理论知识,其实并不能代表你完全的理解。只要运用后,你才知道哪些点需要注意,之前没有考虑到的。

2019-09-03 13:42:24 3128 2

原创 linux 下 tcpdump 详解 中篇(内核源码分析)

一 概述前篇通过libpcap分析,可以很清楚的发现其实用户层调用了三个系统调用,就实现了将内核网卡抓的包,返回给用户层。 而对于内核做了哪些呢?

2019-09-03 13:30:06 1401 1

原创 linux 下 tcpdump 详解 前篇(libpcap库源码分析)

一 概述用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 至于tcpdump参数如何使用,这不是本章讨论的重点。liunx系统抓包工具,毫无疑问就是tcpdump。而windows的抓包工具,wireshark也是一款主流的抓包工具。wireshark 使用了winpcap库。tcpdump...

2019-08-23 15:29:11 1756

原创 linux 内核动态模块初始化 __attribute__((section(XXX)))

一 概述传统的应用编写时,每添加一个模块,都需要在main中添加新模块的初始化。也就是说增加的一个不能算是真正的独立模块,得在main中修改代码才能集成这模块功能。有没有什么办法可以实现main跟其他模块之间隔离呢?main不再关心有什么模块,模块的删减也不需要修改main?二 liunx内核模块初始化如果你对liunx模块有一定了解,你应该知道liunx模块都是独立加载,加载模块,不需要修...

2019-08-20 10:52:24 752

原创 UNIX 环境编程 之 内存映射(mmap)

1.内存映射概念liunx 中 mmap内存映射主要是指硬盘上文件的位置与进程逻辑地址空间中一块大小相同的区域之间的一一对应。2.mmap 函数使用1.函数 mmap()void * mmap(void * addr ,size_t len, int prot ,int flags,int fd,off_t offset);其中addr可以指定描述符fd应被映射到进程内空间的首地址,它...

2019-07-30 11:19:51 580

原创 物理内存和虚拟内存

1.概念物理内存:真实的硬件设备(内存条)虚拟内存:利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。(为了满足物理内存的不足而提出的策略)在很久以前,还没有虚拟内存概念的时候,程序寻址用的都是物理地址,取决于CPU的地址线条数,32位平台的话 2^32也就是4G 。且每次开启一个进程都给4G的物理内存。很显然你内存小一点,这很快就分配完了,于...

2019-07-30 11:17:06 4570

原创 linux 防火墙: 从 iptables 到 ipset 的过滤ip

一 :iptables 了解:iptables,可以将规则组成一个列表,实现绝对详细的访问控制功能 工作在用户空间中,定义规则的工具,本身并不算是防火墙。它们定义的规则,可以让在内核空间当中的netfilter来读取,并且实现让防火墙工作。而放入内核的地方必须要是特定的位置,必须是tcp/ip的协议栈经过的地方。而这个tcp/ip协议栈必须经过的地方,可以实现读取规则的地方就叫做 netfi

2017-11-08 17:17:17 1905

原创 海量数据库(详解缓存处理方法)

缓存处理大数据缓存就是将从数据库中获取的结果暂时保存起来在下次使用的时候无需重新到数据库中获取,从而降低数据库的压力。 缓存的使用方式可以分为通过程序直接将数据库数据保存到内存中和使用缓存框架两种方式 它主要用于数据变化不是很频繁的情况。而且如果是定期失效( 数据修改时不失效)的失效机制,实时性要求也不能太高,因为这样缓存中的数据和真实数据可能会不一致。而memcache就是提供缓存的一种缓存框

2017-09-01 11:50:39 4574

原创 设计模式之单例模式

3、单例模式(Singleton)单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。3、有些类如交易所的核心交易引擎,控制着交易流程,如果该

2015-12-18 14:11:21 271

原创 设计模式之适配器模式

共有两类适配器模式:对象适配器模式-- 在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。类适配器模式-- 这种适配器模式下,适配器继承自已实现的类(一般多重继承)适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。Adapter模式的宗旨

2015-12-17 14:21:06 254

原创 设计模式之抽象工厂模式

工厂模式属于创建型模式,大致可以分为三类,简单工厂模式、工厂方法模式、抽象工厂模式。听上去差不多,都是工厂模式。这里我主要介绍抽象工厂模式,认识了抽象工厂模式,简单工厂模式,工厂方法模式自然而然就明白了,当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知道实例化哪一个子类呢?比如每个抽象产品角色都有两个具体产品。抽象工厂模式提供两个具体工厂角色,分别对应于这两个具体产品角色,每一个具体工厂

2015-12-17 11:48:36 289

转载 VS2010编写exe程序,在其他电脑上无法运行,提示缺少mfc100.dll的解决办法

问题:在自己电脑上用VS2010编写的VC++程序(使用MFC库),不能在其他电脑上运行。双击提示:“无法启动此程序,因为计算机中丢失mfc100.dll 尝试重新安装该程序以解决此问题。”解决方案:方案1.采用静态编译使用VS2010编译的程序在windows xp中运行时,经常会出现找不到相关的DLL文件,我们可以使用静态编译的方法把这些运行依赖文件打包到*....

2015-06-09 16:26:30 14762 2

转载 8583协议

深入理解8583协议最初,金融系统只有IBM这些大公司来提供设备,象各种主机与终端等,后来有很多大大小小的公司进入,怎样设计一个报文协议,解决各公司金融系统之间的报文交换,暂且称该协议叫做ISO8583协议。例如‘回头客会员管理系统’POS机上应用的就是8583报文。金融行业涉及到的数据内容是比较少的,如交易类型、帐号、帐户类型、密码、交易金额、交易手续费、日期时间、商户代码、2磁3磁数据

2015-05-28 17:15:31 844

原创 Vs2010 下的静态库、动态库的创建和调用

静态库和动态库的区别定义:静态库:程序编译一般需经预处理、编译、汇编和链接几个步骤。在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中。这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。利用静态函数库编译成的文件比较大,因为整个

2015-05-13 10:51:32 4251

原创 gcc,gdb调试

有一阵没更新博客了,事情比较繁琐,其实归根到底还是自己恒心不足这篇博客质量不高,主要是记下liunx下gdb调试方法指令,方便忘了能迅速查找gdb 调试(01) 首先,输入gdb test(02) 进入到gdb的调试界面之后,输入list,即可看到test.c源文件(03) 设置断点,输入 b main(04) 启动test程序,输入run(05) 程序在main开始的地方...

2015-03-30 10:28:48 321

原创 MFC 详解一之重要的类

最近好久没用vs下的mfc工程了,感觉对于mfc越来越感到莫名的陌生不了解,网上也看到好多关于mfc的深入了解的博客,其中liyi268这位前辈对于mfc六大机制总结的很到位,还有就是《深入浅出 MFC》侯俊杰的这本书更是没话说,一直犹豫要不要写mfc方面的博客,最终想想为什么不写呢,也许自身的水平有限,也许投入写mfc博客的时间会比较长,但是自身总结一方面能加深印象,促使自己更加深入的了解,一方

2015-03-24 17:01:48 891

原创 阅高质量C++/C 编程——知识小结

这几天用了晚上些空余时间,将林锐的高质量C++/C编程这本书看了一遍,为了加深印象,总结下一些之前不太清楚的知识点,和一些比较重要的知识点。(1)文件结构:防止头文件重复引用:方式一:#ifndef __SOMEFILE_H__#define __SOMEFILE_H__ ... ... // 声明、定义语句#endif方式二:#pragma once ... .

2015-03-18 14:39:29 436

原创 Linux下GNU的makefile

关于程序编译的一些规范和方法,一般来说,首先都是对源文件编译成中间代码文件,然后再通过链接将生产的中间代码文件合成可执行的文件Windons下 :.cpp .h 源文件编译 .obj中间文件 链接 .exe 等可执行文件Linux下: .c .h 源文件编译 .o中间文件 链接 可执行文件但是当源文件太多,编译生产的中间目标文件太多,而链接时要明确指出生产可执行文件必要

2015-03-11 15:19:40 462

memcache服务端所需的tar包(libevent,memcached)

liunx 服务器安装memcache缓存框架所需要的相关包 其中libevent-memcache.tar 包含了libevent-release-1.4.15-stable.tar和memcached-1.5.1.tar两个tar包

2017-08-31

空空如也

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

TA关注的人

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