自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

国内知名云计算厂商职位内推(研发、运维),长期有效,简历至 fangui_ju#163.com...

原创 C 语言编程 — 使用 assert 断言进行程序设计

目录 文章目录目录断言利用断言来提高代码的可测试性自定义断言来满足需求尽量在函数中使用断言来检查参数的合法性避免在断言表达式中使用改变环境的语句避免使用断言去检查程序错误在防错性程序设计中使用断言来进行错误报警用断言保证没有定义的特性或功能不被使用谨慎使用断言对程序开发环境中的假设进行检查参考文档...

2020-05-31 22:23:31 729 0

原创 C 语言编程 — uint8_t / uint16_t / uint32_t /uint64_t

目录 文章目录目录uint8_t\uint_16_t\uint32_t\uint64_t格式化输出 uint8_t\uint_16_t\uint32_t\uint64_t 在 C99 标准(ISO C99: 7.18 Integer types)的 stdint.h 头文件中通过 typedef ...

2020-05-31 11:14:15 861 0

原创 Redis Python 客户端

目录 文章目录目录Python Redis连接池管道String 操作List 操作Hash 操作Set 操作ZSet 操作常规操作 Python Redis >>> import redis >>> r = redis.Redis(host='loc...

2020-05-27 14:41:19 706 0

原创 hiredis — Redis 的 C 语言客户端
原力计划

目录 文章目录目录Redis 客户端HIREDIS安装验证Synchronous APIredisConnectredisCommandfreeReplyObjectredisFree Redis 客户端 Redis 拥有几乎所有主流编程语言的客户端(https://redis.io/client...

2020-05-27 00:18:21 1395 0

原创 DPDK — PDUMP 抓包工具

目录 文章目录目录前文列表DPDK PDUMP安装部署运行原理操作步骤dpdk-pdump 指令 前文列表 《DPDK — 安装部署》 《DPDK — TestPMD》 DPDK PDUMP pdump 库是在 DPDK 16.07 版本引入的一个 DPDK 数据包捕获框架(抓包工具)。因为 DP...

2020-05-26 17:11:30 1156 0

原创 5GC 关键技术之计算与存储分离

目录 文章目录目录前文列表计算与存储分离参考文章 前文列表 《简述移动通信网络的演进之路》 《5G 第五代移动通信网络》 《5GC 关键技术之 SBA(基于服务的软件架构)》 《5GC 关键技术之 CUPS(控制与用户面分离)》 《5GC 关键技术之网络切片》 计算与存储分离 在移动通信网络中计算...

2020-05-19 10:44:17 1429 0

原创 C 语言编程 — 管道(Pipe)

目录 文章目录目录Linux 的管道指令C 语言的匿名管道命名管道匿名管道和命名管道的区别参考文档 Linux 的管道指令 如果你熟悉 Linux,那么你对管道应该不会感到陌生,我们经常会使用 “|” 来使用管道。但是管道的真正定义是什么呢? 管道是一个进程连接数据流到另一个进程的通道,它通常用...

2020-05-16 00:22:27 1147 1

原创 C 语言编程 — size_t 的意义与作用

目录 文章目录目录size_t 的作用size_t 的使用 size_t 的作用 在 C 语言程序中使用 size_t(size_type)可以提高代码的可移植性、有效性、可读性。实际上,在 K&D C 中并没有提供 size_t 类型,而是 C 标准委员会为了解决程序的可移植性问题将 s...

2020-05-15 00:16:23 921 0

原创 C 语言编程 — 线程安全与线程非安全

目录 文章目录目录线程安全与线程非安全C 语言的线程非安全函数(不可重入函数) 线程安全与线程非安全 多线程程序中,线程安全是必须要考虑的因素。 线程安全(Thread Safe)就是在多线程环境中,多个线程在同一时刻对同一份资源(e.g. 寄存器、内存空间、全局变量、静态变量 etc.)进行写操...

2020-05-14 23:33:06 1024 0

原创 DPDK — DPDK APP 的指令行参数

目录 文章目录目录DPDK APP 的指令行参数Lcore-related options(逻辑线程相关参数)Device-related options(设备相关参数)Multiprocessing-related options(多进程相关参数)Memory-related options(存...

2020-05-12 14:58:45 951 0

原创 DPDK — EAL 环境抽象层

目录 文章目录目录EAL 环境适配层Linux 环境下的 EALDPDK App 的初始化和运行内存分配Structure: malloc_heapStructure: malloc_elem申请内存释放内存多线程支持用户态中断处理 EAL 环境适配层 EAL(Environment Abstra...

2020-05-12 13:03:24 850 0

原创 Linux 操作系统原理 — 内存 — mmap 进程虚拟内存映射

目录 文章目录目录mmap()mmap 与 read/write 的性能比较mmap 优点总结 mmap() mmap() 是一个系统调用函数,本质是一种进程虚拟内存的映射方法,可以将一个文件、一段物理内存或者其它对象映射到进程的虚拟内存地址空间。实现这样的映射关系后,进程就可以采用指针的方式来读...

2020-05-10 14:51:17 783 0

原创 MIMO 天线技术

目录 文章目录目录MIMO MIMO MIMO(Multiple Input Multiple Output,多进多出)是为极大地提高信道容量,在发送端和接收端都使用多根天线,在收发之间构成多个信道的天线系统。MIMO 系统的一个明显特点就是具有极高的频谱利用效率,在对现有频谱资源充分利用的基础上...

2020-05-10 14:00:16 1293 0

原创 数字基带

目录 文章目录目录数字基带 数字基带 在数字通信系统中,未经调制的数字信号所占据的频谱是从零频或很低频率开始的,称为数字基带信号。数字基带信号是数字信息的电波形表示,它可以用不同的电平或脉冲来表示相应的消息代码。数字基带信号的类型有很多。以矩形脉冲为例: 单极性不归零波形 双极性不归零波形 ...

2020-05-10 13:56:52 577 0

原创 GSM 第二代移动通信网络

目录 文章目录目录GSMGSM 与 SIM 卡 GSM GSM(Global System for Mobile Communications,全球移动通讯系统),即 2G(语言通话及短信服务)。GSM 较之它以前的标准(1G)最大的不同是他的信令和语音信道都是数字的,因此 GSM 被看作是第二代...

2020-05-10 13:55:45 868 0

原创 DPDK — TestPMD

目录 文章目录目录前文列表DPDK APP 的指令行参数指定 DPDK App 使用的 lcore(逻辑核)指定 DPDK App 使用的大页内存隔离 DPDK App 使用 lcore使用基于 Intel VT-d 的 Linux IOMMU Pass-Through 来运行 DPDK App ...

2020-05-09 22:53:05 2155 0

原创 DPDK — PMD,DPDK 的核心优化

目录 文章目录目录前文列表PMD,DPDK 的核心优化PMD 与 UIP 的交互实现PMD 的应用层实现参考文章 前文列表 《DPDK — 安装部署》 《DPDK — 数据平面开发技术》 《DPDK — 架构解析》 《DPDK — IGB_UIO,与 UIO Framework 进行交互的内核模块...

2020-05-09 11:47:03 1578 0

原创 DPDK — IGB_UIO,与 UIO Framework 进行交互的内核模块

目录 文章目录目录前文列表IGB_UIO 前文列表 《DPDK — 安装部署》 《DPDK — 数据平面开发技术》 《DPDK — 架构解析》 IGB_UIO 虽然 PMD 是在用户态实现的网卡驱动程序,但实际上还是会依赖于内核提供的策略。其中 UIO 内核模块,是内核提供的用户态驱动框架,而 I...

2020-05-08 22:28:17 2282 3

原创 DPDK — 安装部署

目录 文章目录目录环境软件依赖安装测试hellowroldPMD 测试 环境 Intel x86 CentOS7 NUMA node >= 1 Memory >= 4GB NICs >= 2 Kernel >= 2.6.33(支持 UIO、HUGETLBFS、PR...

2020-05-08 00:45:57 2029 0

原创 DPDK — 数据平台优化技术

目录 文章目录目录DPDK 优化技术DPDK 性能影响因素硬件结构的影响OS 版本及其内核的影响OVS 性能问题内存管理CPU 核间无锁通信设置正确的目标 CPU 类型与模式优化方案应用 NUMA 亲和性技术减少跨 NUMA 内存访问应用 CPU 绑核技术减少上下文切换损耗应用大页内存技术减少 T...

2020-05-06 15:24:31 951 0

原创 DPDK — 架构解析

目录 文章目录目录DPDK 基本技术DPDK 实现原理DPDK 架构UIO,DPDK 的基石PMD,DPDK 的核心优化IGB_UIOKNI核心部件库核心部件库对应的 DPDK 核心组件实现平台相关模块几个关键 API 的使用举例 DPDK 基本技术 DPDK 技术分为基本技术和优化技术两类。其中...

2020-05-06 15:23:38 1703 0

原创 DPDK — 在 NFV 中的应用

目录 文章目录目录DPDK 在 NFV 中的应用 DPDK 在 NFV 中的应用 NFV 通过在通用 x86 架构硬件上运行的虚拟化网络功能(VNF),为电信运营商和互联网服务商提供了一种灵活的业务部署手段和高效的组网方案,可以支持固/移网络和 IDC 中 NAT、DPI、EPC、FW 等各类业务...

2020-05-06 15:22:31 606 0

原创 计算机组成原理 — ARM 体系结构

目录 文章目录目录ARMARM 的架构x86 架构与 ARM 架构的区别ARM 的技术实现 ARM ARM 架构过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个 32 位精简指令集(RISC)处理器架构,其广泛地使用在...

2020-05-05 13:30:58 1630 0

转载 Linux 操作系统原理 — 文件系统 — 管理与优化

目录 文章目录目录磁盘空间管理磁盘配额文件系统备份文件系统的一致性文件系统性能高速缓存块提前读减少磁盘臂运动磁盘碎片整理 磁盘空间管理 文件通常存在磁盘中,所以如何管理磁盘空间是一个操作系统的设计者需要考虑的问题。在文件上进行存有两种策略:分配 n 个字节的连续磁盘空间;或者把文件拆分成多个并不一...

2020-05-05 12:55:49 740 0

转载 Linux 操作系统原理 — 文件系统 — 实现原理

目录 文章目录目录文件的实现连续分配链表分配索引分配文件系统在内核中的实现参考文档 文件的实现 最重要的问题是记录各个文件分别用到了哪些磁盘块。不同的系统采用了不同的方法。下面我们会探讨一下这些方式。分配背后的主要思想是有效利用文件空间和快速访问文件 ,主要有三种分配方案: 连续分配 链表分配 ...

2020-05-05 12:30:10 687 0

原创 Linux 操作系统原理 — 文件系统 — 存储布局

目录 文章目录目录文件系统的布局MBR 与分区表磁盘分区创建 MBR 分区创建 GPT 分区分区的格式化分区特性引导块空闲空间块inode 区块、data block 区块与超级块LVM 与 RAIDLVM 逻辑卷管理RAID 磁盘阵列RAID 类型 文件系统的布局 MBR 与分区表 磁盘的 0 ...

2020-05-05 11:48:50 702 0

原创 Linux 操作系统原理 — 文件系统 —文件

目录 文章目录目录文件文件的构造文件的类型常规文件ASCII 码文件二进制文件设备文件字符设备文件块设备文件目录文件其他文件文件的属性文件的操作目录的操作 文件 文件的构造 文件的构造有多种方式。上图列出了常用的三种构造方式: 上图中的 a 是一种无结构的字节序列,操作系统不关心序列的内容是...

2020-05-05 10:37:57 801 0

原创 C 语言面试题 — int i [ 4 ]={ i [ 2 ]=2 }

目录 文章目录目录题目 题目 #include <stdio.h> int main(void) { int i[4] = {i[2] = 2}; printf("%d %d %d %d\n", i[0], i[1], i[2], i[3]); ...

2020-05-04 22:59:34 727 0

原创 数据结构 — 堆

目录 文章目录目录堆堆的应用堆的基本操作往堆中插入元素删除堆顶元素堆的排序参考文章 堆 堆可以是一个完全二叉树,这样实现的堆也被称为二叉堆。完全二叉树,它的叶子节点都在最后一层,并且这些叶子节点都是靠左排序的。 堆中节点的值都 >=(或 <=)其子节点的值,堆中如果节点的值都 >...

2020-05-04 22:42:51 608 0

原创 数据结构 — B+ 树

目录 文章目录目录B+ 树 B+ 树 B+ 树是平衡二叉查找树、双向链表、跳表的结合体。所有的节点值都在最后叶节点上用双向链表连接在了一起,仔细和跳表对比一下,现在如果我们要找 15 ~ 27 这个区间的数只要先找到 15 这个节点(时间复杂度 logn = 3 次)再从前往后遍历直到 27 这...

2020-05-04 15:34:29 502 0

原创 数据结构 — 平衡二叉树

目录 文章目录目录平衡二叉树 平衡二叉树 平衡二叉查找树具有如下性质: 若左子树不空,则左子树上所有节点的值均小于它的根节点的值; 若右子树不空,则右子树上所有节点的值均大于或等于它的根节点的值; 每个非叶子节点的左右子树的高度之差的绝对值(平衡因子)最多为 1。 从其特性就可以看到平衡二叉...

2020-05-04 15:28:48 520 0

原创 数据结构 — 双向链表

目录 文章目录目录双向链表跳表 双向链表 双向链表支持顺序查找和逆序查找,如下图: 所以双向链表也常被称之为环(Ring),常见于处理网络数据包的内存缓存空间的组织。双向链表的缺点是不支持按某个值或区间的快速查找,也不支持数据的快速插入。 跳表 跳表是在链表之上加上多层索引构成的,相对于双向链表...

2020-05-04 15:27:10 564 0

原创 数据结构 — 哈希表

目录 文章目录目录哈希表 哈希表 哈希表,又称为散列表,是根据键值对(Key/Value)进行访问的数据结构,它让 Value 经过哈希函数的转换映射到哈希表对应的位置上,查找效率非常高。哈希索引就是基于哈希表实现的,假设我们对 name 建立了哈希索引,则查找过程如下图所示: 对于每一行数据,...

2020-05-04 15:22:14 624 0

原创 Linux 操作系统原理 — 网络硬件卸载

目录 文章目录目录网络 Offload交换 Offload 网络 Offload 网络 Offload,主要是指将原本在内核网络协议栈中进行的 IP 分片、TCP 分段、重组、checksum 校验等操作,转移到网卡硬件中进行,使得 CPU 的发包路径更短,消耗更低,从而提高处理性能。 一开始这些...

2020-05-04 15:10:22 1251 0

原创 QEMU 和 Ceph 的 I/O QoS 实现

目录 文章目录目录令牌桶算法漏桶算法前端 QoS:通过 QEMU 的块设备 IO 限速机制进行限速后端 QoS:通过 librbd 的镜像 IO 限速机制进行限速总结参考文章 令牌桶算法 令牌桶算法是一个非常老牌的 I/O 控制算法,在网络、存储 I/O 上都有着广泛的应用。即:一个固定容量的桶装...

2020-05-04 14:57:37 758 0

原创 Linux 操作系统原理 — IO 模型

目录 文章目录目录基本概念同步与异步阻塞与非阻塞五种 IO 模型阻塞 IO非阻塞 IO同步 IO(信号驱动)异步 IOIO 多路复用selectpollepoll 基本概念 同步与异步 同步是指一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成。 异步是...

2020-05-04 13:18:13 2972 0

原创 计算机组成原理 — PCIe 总线

目录 文章目录目录PCIe 设备的枚举过程PCIe 设备的信息查询PCIe 设备的 Memory 空间访问参考文章 PCIe 设备的枚举过程 作为 x86 体系重要的一环,PCIe 标准历经了 PCI,PCI-X 和 PCIe,走过了近 30 年时光。下图是一个 PCIe 的拓扑结构示意,PCIe...

2020-05-03 11:39:03 4087 3

原创 虚拟化技术实现 — KVM 的 I/O 虚拟化

目录 文章目录目录前文列表VirtIO为什么需要 VirtIO?VirtIO 的架构VirtIO 的网络实现virtio-net 驱动与设备vhost-net 处于内核态的后端vhost-user 使用 DPDK 加速的后端vDPA 使用硬件加速数据面 前文列表 《虚拟化技术实现 — 虚拟化技术发...

2020-05-03 10:58:54 1832 0

原创 Linux 操作系统原理 — I/O 系统

目录 文章目录目录Linux I/O 读写方式I/O 中断原理DMA 传输原理传统 I/O 方式传统读操作传统写操作参考文章 Linux I/O 读写方式 Linux 提供了轮询、I/O 中断以及 DMA 传输这 3 种磁盘与主存之间的数据传输机制。其中轮询方式是基于死循环对 I/O 端口进行不断...

2020-05-03 00:18:38 1615 3

原创 Python GIL 对线程并发性能的影响

目录 文章目录目录Python GIL 对线程并发性能的影响Python 的线程安全问题Python 的原子性操作Python 的线程库锁 Python GIL 对线程并发性能的影响 说到这里,不妨继续引入 Python GIL 的问题。 在多处理器时代,程序要想充分的利用计算平台的性能,就必须按...

2020-05-02 23:34:00 563 0

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