- 博客(38)
- 资源 (1)
- 收藏
- 关注
原创 VPP:用户文档学习
矢量报文处理一、标量与矢量报文处理(1)标量报文处理 典型的标量报文处理网络协议栈一次仅处理一个数据包:中断句柄从网口获取一个数据包,并对其进行一系列的处理(处理接口调用)。+---> fooA(packet1) +---> fooB(packet1) +---> fooC(packet1)+---> fooA(packet2) +---> fooB(packet2) +---> fooC(packet2)...+---> fooA(packet3)
2020-10-16 14:50:26
552
原创 C 语言#define宏特殊符号
#include <stdio.h>//#: automatically transform the parameter to string#define ToString(x) #x//##: connect parameters#define Function(func, para1, para2)do{_##func(para1,para2);printf("----------------------------\n");}while(0)// VA_ARGS: rec
2020-09-21 11:56:23
264
原创 观察者模式(行为型)
观察者模式(行为型)一、目的 系统中相互协作的模块之间常会有一个副作用:维护对象之间的一致性而导致对象间的紧耦合。 为解决这个问题,需要定义一种一对多的依赖关系,当一个对象发生变化时,所有依赖它的对象都得到通知,并自动执行相关操作。由此可知,观察者模式是一个发布-订阅式模型。被依赖的对象为发布者,对它依赖的对象订阅它的变化用于后续做出反应。二、应用场景1)一个抽象模型有两个方面,其中一个方面依赖于另一个方面,需要将其二者封装进不同对象,且独立的变化和复用;2)一个对象的改变需要告知其它对象,
2020-09-04 20:01:58
188
原创 protobuf-c简介与使用
protobuf-c简介一、数据类型照proto类型C/C++类型proto类型C/C++类型doubledoublefloatfloatint32int32int64int64uint32uint32uint64uint64sint32int32sint64int64fixed32uint32fixed64uint64sfixed32int32sfixed64int64boolboolstringst
2020-08-21 13:58:47
4758
原创 libevent客户端与服务端demo
libevent库tcp基本结构与使用流程一、基本数据类型(结构)1)evutil_socket_t:网络文件描述符 libevent中定义为:#define evutil_socket_t int,与linux下定义相同,操作应该也相同。2)struct event_base:事件基本结构 该结构用于保存libevent事件分发循环的的信息和状态,是libevent的核心。每个应用都应有一个。它保持对挂起和活跃事件的监听,并把处于就绪态(活跃)的事件告知(通知)应用。常用接口:
2020-08-19 20:37:14
1218
原创 centos使用protobuf-c
Linux下protobuf-c的使用、一、下载安装包 下载protobuf2.6.0以上版本(protobuf-c)的依赖,与protobuf-c。二、进行安装(1)安装依赖sudo yum -y install autoconf automake libtool make g++ unzip(2)安装protobuf./autogen./configuremakemake checksudo make installsudo ldconfig (3)安装protobu
2020-08-17 14:50:24
668
原创 Cache预取
/*执行方式: g++ cache.c -o cache.out ./cache.outNote: Cache预取原理。Express: Cache之所以能够提高系统性能,主要是程序执行存在局部性现 象, 即时间局部性和空间局部性。 1) 时间局部性: 是指程序即将用到的指令/数据可能就是目前正在 使用的指令/数据。 因此, 当前用到的指令/数据在使用完毕之后可以暂 时存放在Cache中, 可以在将来的时候再被处理器用到。 一个
2020-08-13 19:35:26
1571
2
原创 函数指针
函数指针一、什么是函数指针1.函数类型:函数类型由其返回类型与参数列表共同确定(与函数名无关),其格式为: return_type ()(parameter_list…);声明函数对象:int (function)(int a, int b);//括号可省略 由此可见:函数的类型确定应由内向外->函数名前:返回类型,函数名后:形参列表。2.函数指针:即函数类型的指针,其格式为: return_type(*)(parameter_list…);声明函数指针:int (
2020-07-04 18:14:43
2672
原创 指针、引用和常量修饰符const
C++中的指针、引用与常量修饰符const一、C++中的指针 指针:一种存储数据内存地址的数据类型。因为其表示的是地址信息,所以不论何种数据类型,其指针都占用相同的存储空间。二、C++中的引用 引用:已存在对象的别名,不属于数据类型,不占用存储空间。通过引用对对象的操作类似与指针,会真正改变对象。引用必须进行初始化,且不能再次引用其他对象。注意: 1.在声明引用时,必须对其进行初始化(引用用作函数参数、函数返回值除外); 2.指针通过地址间接访问某变量,引用通过别名直接访问; 3
2020-06-14 18:42:56
181
原创 编程中的池(decorator)
编程中池的概念性理解一、C#/* * The Using of Pool: * In some conditions, the instance of the specific class consumes more time or memory resources during * initializing or releasing phase. * Then the frequent 'new', 'release' o
2020-05-16 11:16:19
371
原创 linux:RAID的mdadm
RAID独立磁盘冗余阵列的配置与使用一、什么是RAID? RAID(Redundant Arrays of Independent Disks):独立磁盘冗余阵列。RAID是由两个以上的物理块设备(磁盘驱动或分区)一起创建的虚拟设备。它将多个块设备组合成一个设备来支持一个单一的文件系统。一些RAID层级含有冗余,来恢复一定程度的设备异常。 用于在多个磁盘上存储数据,且能够适当的重复存储数据,从而保证在某个磁盘损坏的情况下,不影响整个系统的运转。二、RAID的分级或种类 RAID有0至6七种基
2020-05-12 15:21:04
374
原创 C#封闭方法和封闭类:sealed
C#中的封闭方法和封闭类一、封闭类使用sealed修饰符修饰的类为封闭类,表示该类不可被继承。故,该修饰符不可与abstract一起使用,因为抽象类的方法需要继承的实体类做具体实现,必须被继承才有意义。using System;namespace Test{ public sealed class Transformer { private static...
2020-05-07 14:42:34
497
原创 C#中的lambda表达式
C#中的lambda表达式一、lambda表达式的格式lambda声明运算符:=>()=>expression;()=>{statements body;}二、lambda表达式 任何 Lambda 表达式都可以转换为委托类型。 Lambda 表达式可以转换的委托类型由其参数和返回值的类型定义。 如果 lambda 表达式不返回值,则可以将其转换为 Action 委...
2020-05-07 14:04:12
600
原创 C#中的委托
C#中的委托一、委托的理解 委托是一个对象,知道如何调用一个方法。 委托类型:定义了委托实例可以调用的方法类型(返回类型和参数)。 delegate int Transformer(int x); 委托实例:调用者的委托,调用者调用委托,然后委托调用目标方法,间接解耦调用者与目标方法。把目标方法赋值给委托变量的时候,即创建了委托实例。static int Square(in...
2020-05-07 11:09:25
220
原创 C#中的索引操作
C#中的索引和范围 C#中访问顺序结构中的索引和范围支持: System.Index:索引类; ^:与尾部索引相关(seq[seq.Length - 1]相当于seq[^1]); System.Range:范围类; . . :范围运算符;namespace Edu{ public class program { ...
2020-05-06 17:23:52
578
原创 C#中的字符串格式操作
C#中的字符串格式操作一、C#中的字符串内插:$ 'KaTeX parse error: Expected 'EOF', got '&' at position 83: …果的字符串表示形式。 &̲ensp; 声明内插…“内插字符串”;内插字符串包含使用{}来插入表达式。 格式:{内插表达式,最小字符数:字符串格式} string nam...
2020-05-06 15:07:20
1051
原创 C#中的多态
C#中的多态一、多态的概念 一个接口,多个功能。静态多态:重载函数。动态多态:抽象类和抽象函数。二、动态多态抽象类格式:abstract class CName{abstract public return_type Func(Para_list…);…}子类:class Sub:CName{overried public return_type Func(Para...
2020-04-29 17:19:53
301
原创 C#中的类型、变量和表达式
C#笔记(二)类型、变量和表达式一、C#中的类型类类型:定义包含数据成员和函数成员在内的数据结构,支持单继承和多态。该机制可特化基类操作。结构类型:类似于类类型定义包含数据成员和函数成员的数据结构。 不需分配堆空间。但不支持用户指定的继承,直接继承于Object。接口类型:定义了一组公用接口的集合约定。支持自身,类类型,结构类型的多继承。继承了接口的类或结构需要实例化接口函数。委派类型:...
2020-04-29 15:46:36
312
原创 C#简介
C#笔记(一)一、什么是C#? C#是微软基于C、C++开发的简单通用的面向对象编程语言。属于.net平台的一部分,能够实现跨平台编译。二、C#部分功能功能描述垃圾回收自动释放未被使用对象的内存空间异常处理提供了一种结构化的可扩展方法用于错误检测和恢复类型安全语言设定未初始化的对象不可访问统一类型系统所有数据类型继承自同一object类,进行...
2020-04-29 10:53:41
243
原创 redis基本使用
Redis数据库基本使用一、什么是redis? Redis(Remote Dictionary Server):使用C语言开发的内存高速缓存数据库。数据模型为key-value:键值对。且支持数据持久化,保证数据安全。 后端启动redis:修改redis配置文件redis.conf中daemonize no(改为yes),执行./redis-server redis.conf,后启动终端...
2020-04-24 10:41:07
185
原创 设计模式笔记(一)
设计模式笔记(一)一、什么是设计模式? 特定环境下解决某类重复出现问题的一套成功或有效的解决方案。二、设计模式的分类GOF:23个。创建型:如何创建对象;结构型:如何实现类或对象的组合;行为型:类或对象怎样交互以及怎样分配职责;简单工厂模式:独立于23个设计模式之外的一种。共24个。三、设计模式的目标(1)如何将代码分散在几个不同的类中?(2)为什么要有接口?(3)何谓...
2020-04-23 22:01:38
131
原创 C++可调用对象
C++可调用对象 对于一个对象或表达式,若果可以对其使用调用运算符,则称他为可调用的。 函数调用对象:函数、函数指针、重载了调用运算符的类和lambda表达式。一、函数格式: return_type func_name(parameters…){function_body} auto func_name(parameters…)->return_type{function...
2020-04-22 17:55:15
144
原创 字符串匹配-Boyer-Moore
/*Itme: Boyer-Moore string matching algorithmInternal support: Try to shift more positons once unmatching to match faster.Assistant tools: Bad-Char array: case1: pattern contai...
2020-04-05 13:15:18
153
原创 线程池初探
线程池初探一、什么是线程池 线程池是对多线程编程的一种处理方式,其线程都为后台线程。处理过程中将任务添加到整个线程池,线程池挑选线程来处理任务,达到异步解耦的目的。可用于异步、解耦。 线程相关:linuxC/C++多线程二、线程池的组成 任务队列:存放待处理任务的队列; 执行队列:处理任务的队列,每个队列为一个线程; 管理组件:执行队列对任务队列处理的策略,使线程池合理的运...
2020-04-04 15:03:01
253
原创 TCP协议概述
Tcp协议一、如何理解TCP协议 TCP(Transfer Control Protocol,传输控制协议),是面向连接的端对端全双工通信方式,提供可靠的字节流传输。二、报文格式及其含义格式:含义:(1)源端口和目的端口:各占2字节,分别写入源端口号和目的端口号;(2)序号:占4字节,本报文段发送的第一个字节的数据在总发送数据中的序号。范围为0至2的32次幂减1,序号超出范围好采...
2020-03-07 16:42:00
270
原创 linux进程间通信:消息队列
一、消息队列的概念 消息队列:内核地址空间中的内部链表,通过linux内核在各个进程之间传递内容。 消息顺序地发送到消息队列中,并以几种不同的方式从队列中获取;消息队列间通过IPC的标识符进行区别;不同的消息队列相互独立;每个消息队列中的消息构成一个独立的链表。二、相关数据结构定义位置:<linux/msg.h>stuct msgbuf{ long mtype; ...
2020-03-02 16:10:01
197
原创 linux进程间通信:管道
linux进程间通信:管道一、什么是管道 在linux系统中,管道是将一个两个进程之间的标准输入与标准输出连接起来的机制,以半双工的方式工作(将一个进程的输出与另一个进程的输入连接起来的单向通信)。 对管道的读写与一般的I/O系统函数一致,但不支持某些特定的I/O操作,例如lseek()。二、相关函数函数原型int pipe(int pipefd[2])头文件&...
2020-02-27 12:25:36
138
原创 linux命名管道:fifo
linux命名管道:fifo一、命名管道 除了创建方式,FIFO文件与管道极为相似。FIFO是非匿名的管道,通过系统调用mkfifo()存在于文件系统中。二、FIFO相关函数函数名称int mkfifo(const char *pathname, mode_t mode)头文件<sys/types.h><sys/stat.h>函数参...
2020-02-27 12:21:16
214
原创 二叉树的遍历
一、测试用图二、代码示例#include<iostream>#include<vector>#include<stdlib.h>#include<queue>#include<stack>#include<stdio.h>typedef struct _Node { struct _Node* left;...
2020-02-22 10:16:53
179
原创 linux网络IO之select初探
select初探一、相关函数select, pselect, FD_CLR, FD_ISSET, FD_SET, FD_ZERO函数原型int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)头文件sys/select.h...
2020-02-04 15:33:57
206
原创 IP协议
IP协议一、什么是IP协议 IP协议是TCP/IP协议中的协议,它为TCP、UDP、ICMP等协议提供传输的通路。 IP层的主要目的是提供子网的互联,形成较大的网络,使不同的子网之间能够传输数据。二、IP层的主要作用1数据传送:将数据从一个主机传输到另一个主机2寻址:根据子网划分和IP地址,发现正确的目的主机地址3路由选择:选择数据在互联网上的传...
2020-01-04 13:58:37
252
原创 Tcp/Ip协议栈
Tcp/Ip协议栈一、TCP/IP协议栈 Tcp/Ip协议,是包含tcp/ip协议在内的一系列网络数据交换的网络协议,又称TCP/IP协议族、或TCP/IP协议栈。二、TCP/IP协议栈与TCP/IP网络模型三、OSI网络模型分层特性物理层规定了物理线路和设备的触发、维护、关闭物理设备的机械特性、电气特性、功能特性和过程,为上层的传输提供物理介质,本层是通信端点...
2020-01-03 16:36:18
568
原创 linux下socket网络编程简例
linux下socket编程一、什么是socket编程?socket(套接字)是进程间通信的方式之一,它允许不同主机上的进程间进行通信。 进程间通信方式进程间通信方式作用域管道同一台计算机FIFO同一台计算机消息队列同一台计算机信号量同一台计算机共享存储同一台计算机socket同一台计算机或不同计算机 sock...
2019-12-27 14:04:55
213
原创 g++与gdb常用参数与命令
g++ 与 gdb 常用操作一、什么是g++,gdb ? g++:GNU的C++编译器。 gdb:GNU发布的类unix系统下的程序调试工具。 gcc与g++的区别:gcc无法链接c++程序。二、C/C++代码到可执行程序的过程预处理:进行头文件展开、宏替换、去掉注释和条件编译等(生成 *.i 文件)。编译:检查代码无语法错误后,生成汇编语言代码(生成 *.s 文件)。...
2019-12-21 21:07:09
644
原创 linux C/C++多线程
linux C/C++多线程一、什么是线程? 线程:是操作系统能够进行运算调度的最小单位。被包含在进程当中,是进程运行的最小单位。 主线程:当一个程序启动时,操作系统为其创建一个进程,同时创建的该进程的第一个线程,为该进程的主线程,此后创建的线程为该线程的子线程。每个进程,至少都有一个主线程(因为他要运行啊,哈哈,一个都没有可还行!!!)。二、线程的生命周期 线程的生命周期分为...
2019-12-20 16:56:40
238
原创 C++运算符重载
C++运算符重载一、什么是重载?函数重载:统一作用域内名字相同,形参列表不同的函数。运算符重载:当运算符作用于类类型的运算对象时,重新定义该运算符的含义。二、可重载与不可重载运算符可以被重载的运算符+-*/%^&|~!`=<><=>=++–<<>>==!=&am...
2019-12-15 22:10:51
227
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人