07 2024 档案
摘要:C程序起点main函数 main c语言中main函数接收两个参数int argc, char* argv[] int main(int argc, char* argv[]); int main(int argc, char** argv); 如上,argc代表参数的数量,argv但是参数字符串指
阅读全文
摘要:DPDK简介 DPDK(Data Plane Development Kit)数据平面开发工具包,是一个开源软件项目。DPDK通过维护一系列能够加速多核CPU数据包处理的库,提供数据处理框架。DPDK通过绕过内核进行数据处理,表现出了比内核中断处理更高的效率。 DPDK项目架构 EAL EAL(En
阅读全文
摘要:多队列网卡配置 作者使用的是ubuntu 20.04,VMWARE 首先查看系统上的网卡 ip a # 查看网卡信息 查看ens33是否支持多队列网卡,如果是下图这种情况就是不支持多队列网卡。 cat /proc/interrupts | grep ens33 #proc是linux虚拟文件系统 关
阅读全文
摘要:文件系统类型 基于磁盘的文件系统 如FAT、EXT4 虚拟文件系统 如proc 网络文件系统 顾名思义,网络文件系统还将网络通信封装起来,这意味可以直接通过通信访问另一台设备的文件系统。 man fs # 查看文件系统,其实这里只是内存中使用的inode,底层介质上的inode内容会更少 文件系统基
阅读全文
摘要:原子操作(X86架构) 楔子 首先什么是原子,意味着不可再分。相应地,反映在计算机程序里,那么就会成为一条指令,不存在中间指令,执行过程不会被打断。这样程序在执行时,就能够保证独占访问,避免其它线程访问它。接下来接口的讲解,是以C11标准有#inlcude <stdatomic>为例。 已有接口 这
阅读全文
摘要:手写线程池 线程池解决的问题是避免线程创建、销毁的代价以及避免线程太多,内存耗尽。GCC编译时,必须通过指令引入线程库。 gcc -o threadpool threadpool.c -pthread 组件开发 线程池最基本需要包含三个组件 任务队列-添加任务 管理组件-管理线程对立以及任务队列 执
阅读全文
摘要:socket网络通信 socket能够解决的问题是客户端和服务器端进行交流的问题 服务器server socket() 的作用是创建一个端点,然后返回一个fd指向这个端点。包括分配fd和分配tcb进程控制块两。接受三个参数需要指定通信域 domain(AF_INET, AF_INET6)、指定通信语
阅读全文
摘要:C语言 文件操作 fopen(filename, "r") // 只读模式打开文件 -r // 只读 -w // 可写 -b // 二进制 fgetc(fd) // 从fd获取char fgets(st, n, stdin) // 从输入流获取n个字符 getchar() // 从输入流获取一个字符
阅读全文
摘要:事件处理模式 reactor模式 reactor是一种事件处理模式,出现要解决的问题是要将原本IO管理转变为更关心事件管理,每个事件发生的时候调用回调函数进行处理。 构成 register 注册事件 callback 回调函数 结构体包括io, event, callback, rbuffer, w
阅读全文
摘要:IO多路复用 select系统调用 维护的是一个文件描述符(fd)集合(set),监测这些fd集合。 #include <sys/select.h> // 头文件 运行机制 将fedset复制到内核空间,然后对其进行遍历,查看可读,可写,错误事件,返回就绪事件总数。 select函数 select函
阅读全文
摘要:Linux常用命令 基本操作命令 命令补全 值得特别提醒的是假如我们输入了一个命令例如cd /etc/但是忘记下面要打开什么文件,这时候我们加入两个tab键cd /etc/[tab][tab]就能够显示当前目录下所有目录,然后输入我们想要进入的目录。如果你能够确定当前目录下只有一个文件或目录cd /
阅读全文
摘要:MySQL数据库 操纵数据库 查看数据库 show databases; 创建数据库 create database <database_name>; 删除数据库 drop database <database_name>; 使用数据库 use mysql 操纵数据表 查看数据表 show tabl
阅读全文
摘要:多线程并发锁 包括自旋锁、互斥锁、无锁 POSIX接口 posix接口提供linux下线程操作库,posix默认生成的线程占用8M空间 pthread_create线程创建函数 pthread_create(pthread_t *th, const pthread_attr_t *attr, voi
阅读全文
摘要:MySQL数据库 操纵数据库 查看数据库 show databases; 创建数据库 create database <database_name>; 删除数据库 drop database <database_name>; 使用数据库 use mysql 操纵数据表 查看数据表 show tabl
阅读全文
摘要:Linux常用基本命令 基本操作命令 命令补全 值得特别提醒的是假如我们输入了一个命令例如cd /etc/但是忘记下面要打开什么文件,这时候我们加入两个tab键cd /etc/[tab][tab]就能够显示当前目录下所有目录,然后输入我们想要进入的目录。如果你能够确定当前目录下只有一个文件或目录cd
阅读全文
摘要:Bash shell vim first.sh #!/bin/bash # bash #!/bin/sh # shell viriable="nishidashabi" # 变量间没有空格 chmod -x first.sh ./first.sh # 执行 shell语法 shell解释器标志 #!
阅读全文
摘要:内存检测和编程调试工具基础 GDB(GNU debugger) GDB可以用于linux系统下的任务调试,主要的命令有: GDB附加程序 gdb ./demo # 进入gdb调试窗口 gdb attach pid # 附加进程 加断点break break 76 # 给第76行加断点 运行run r
阅读全文
摘要:错误 “E: Unable to correct problems, you have held broken packages.”这种问题包破坏问题,可能是由于镜像源与系统版本不一致造成的 解决方案: 首先查看镜像源文件的内容 cat /etc/apt/sources.list 比较对应的字符串
阅读全文
摘要:通讯录 需求分析 创建联系人-insert 删除联系人-delete 搜索联系人-search 输出所有联系人-traversal 保存文件-save-存储方式key:value的实现 加载文件-load-将键值对读入并加入到存储结构中 架构分析 实现分析 底层实现 采用链表实现,因此要定义通讯录结
阅读全文
摘要:Linux安装 博主使用的是ubuntu 16.04 apt更换镜像源 这里以更换阿里云镜像源为例。 首先去阿里云官方网站找对应版本系统的镜像源https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11iGqq
阅读全文

浙公网安备 33010602011771号