自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(213)
  • 资源 (4)
  • 收藏
  • 关注

原创 从零开始编译一个gcc的交叉编译工具链

建议下载该链接中的编译脚本。

2024-03-15 15:16:26 340

原创 linux虚拟网络设备

网络虚拟化相关的Linux接口介绍:基于Tun/tap设备的示例代码,基于tun/tap字符设备生成虚拟网卡:基于tun/tap设备的应用:vpn、绕开防火墙:

2024-02-23 18:31:55 453

原创 使用msys2编译tongsuo和grpc遇到的问题

Cygwin,MinGW,msys2的区别: https://blog.csdn.net/weixin_27155667/article/details/116910123。msys2安装使用参考:https://blog.csdn.net/l1206715877/article/details/125120888。

2024-02-18 18:33:51 355

原创 cmake系列教程

链接https://www.jianshu.com/p/23683ddaaa1c。

2024-02-04 10:03:44 347

原创 centos7编译grpc源码

centos升级gcc v7:

2023-12-15 10:25:51 91

原创 Cherno C++视频课程-学习笔记

待补充。

2023-10-07 17:39:13 132

转载 Redis使用详细教程

************************************* Redis配置 **********************************************lrem mylist 1 "hello"#删除(1个)一个值为hello的元素。sismember myset2 "one"#判断元素one是不是myset2集合的(相当于is_array())。sdiff myset2 myset3#返回myset2中的与myset3的差集(以myset2为准)。

2023-03-08 18:32:10 1708

原创 CRC32原理、表生成、CRC计算代码

CRC我就拿下了:https://www.cnblogs.com/poiu-elab/archive/2012/10/22/2734715.html我学习CRC32、CRC16、CRC原理和算法的总结(与WINRAR结果一致):https://blog.csdn.net/flaoter/article/details/77461353

2021-08-13 14:13:57 2092

转载 CRC常用参数模型及C#代码实现

目录参数模型 算法实现 CRC-32 CRC-32/MPEG-2 表生成算法 参考资料 本文源码参数模型#CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。CRC算法参数模型解释:NAME:参数模型名称。

2021-08-07 17:33:44 1035 1

转载 Linux中断处理流程

1. 中断处理流程  当中断发生时,Linux系统会跳转到asm_do_IRQ()函数(所有中断程序的总入口函数),并且把中断号irq传进来。根据中断号,找到中断号对应的irq_desc结构(irq_desc结构为内核中中断的描述结构,内核中有一个irq_desc结构的数组irq_desc_ptrs[NR_IRQS]),然后调用irq_desc中的handle_irq函数,即中断入口函数。我们编写中断的驱动,即填充并注册irq_desc结构。2. 中断处理数据结构:irq_desc  Lin

2021-07-14 09:44:13 1851 2

转载 Linux 进程的 Uninterruptible sleep(D) 状态

首先,说一下产生D状态的原因。上图阐释了一个进程运行的情况,首先,运行的时候,进程会向内核请求一些服务,内核就会将程序挂起进程,并将进程放到parked队列,通常这些进程只会在parked队列中停留很短的时间,在ps(1)列表中是不会出现的。但是如果内核因为某些原因不能提供相应服务的话。例如,进程要读某一个特定的磁盘块,但是磁盘控制器坏了,这时,除非进程完成读磁盘,否则内核无法将该进程移出parked队列,此时该进程标志位就会被置为D。由于进程只有在运行的时候才能接受到signals,所以此时...

2021-05-29 14:08:48 1753

转载 Ubuntu 18.04 制作本地源

from: https://www.cnblogs.com/lianshuiwuyi/p/11118470.htmlcaution: "gpg -a --export pub_id | apt-key add -" use sudo. --> "sudo gpg -a --export pub_id | sudo apt-key add -"

2021-02-19 10:16:39 340

转载 你真的懂 Unicode 和 UTF-8 是什么关系吗?来看看这个就彻底懂了!

想必做过爬虫的同学肯定被编码问题困扰过,有 UTF-8、GBK、Unicode 等等编码方式,但你真的了解其中的原理吗?下面我们就来了解一下 Unicode 和 UTF-8 编码到底有什么关系。要弄清 Unicode 与 UTF-8 的关系,我们还得从他们的来源说起,下来我们从刚开始的编码说起,直到 Unicode 的出现,我们就会感觉到他们之间的关系ASCII码我们都知道,在计算机的世界里,信息的表示方式只有 0 和 1,但是我们人类信息表示的方式却与之大不相同,很多时候是用语言文字、...

2020-11-30 11:59:39 335

原创 存储器域、DRAM域和PCI总线域

1. 物理地址 1.1 虚拟地址经过MMU转换后的物理地址,指的是存储器域的地址空间编址。 1.2 存储器域并不是对主存(DRAM)的编址。 1.3 DRAM域是对主存的编码。比如内存条大小为8GB,则DRAM域通常编址为0至8GB。2. PCI总线域: 2.1 独立的地址空间。 2.2 PCI总线上各个设备的配置空间(存储资源)和BAR空间(存储资源)在该地址空间编址。3. 存储器域: 3.1 DRAM域和PCI总线域映射到该空间。 3.2...

2020-11-20 10:45:17 1281

原创 SR-IOV Spec 笔记

参考文档 PCI Local Bus Specification, Revision 3.0 PCI Bus Power Management Interface Specification, Revision 1.2 PCI Express Base Specification, Revision 2.1 Multi-Root I/O Virtualization and Sharing Specification, Revision 1.0 Address Tra...

2020-11-09 09:08:55 2510

原创 《Linux那些事儿之我是sysfs》笔记一:设备模型

内核版本:2.6.10目标:理解设备模型和sysfs文件系统1. 初探: sysfs文件系统的作用:用于将系统中的设备组织成层次结构,并向用户态提供详细的内核数据结构信息。 挂载命令:mount -t sysfs sysfs /sys。 sysfs信息来源:kobject层次结构,也就是linux系统的设备模型。2. linux设备底层模型 kobject: 每个在内核注册的kobject对象都对应于sysfs文件系统中的一个目录。 ...

2020-11-06 10:20:03 167

原创 IOMMU-VFIO-设备透传-笔记

1. IOMMU主要功能包括DMA Remapping和Interrupt Remapping。 DMA Remapping: 设备驱动通过DMA描述符告诉设备DMA控制器,本次DMA操作的存储器地址。 在宿主机上,DMA描述符上存储的是物理地址,DMA可正常进行。 在虚拟机上,设备通过VT-d等技术被直接分配给虚拟机后,DMA描述符上存储的是GPA(即HVA);而RC上映射的是HPA,故DMA不能正常进行;此时需要iommu将TLP中的GPA转换为H...

2020-11-05 14:12:25 4010

原创 《Linux那些事儿之我是PCI》笔记

1. PCI access mode: BIOS, direct, mmconfig, any BIOS mode: 有的BIOS支持PCI总线的枚举;此种方式直接使用BIOS程序枚举的结果。(64位平台没有该选项) ?? Direct mode: 内核进行PCI总线枚举过程; MMConfig: PCIE才用的上,PCI用不上;2. PCI设备配置寄存器的内容是谁写入的? 总线枚举 芯片组: 北桥+南桥; 北桥中包含host bri...

2020-11-03 11:34:05 796 1

转载 linux中的阻塞机制及等待队列

转自:https://www.cnblogs.com/gdk-0078/p/5172941.html阻塞与非阻塞是设备访问的两种方式。驱动程序需要提供阻塞(等待队列,中断)和非阻塞方式(轮询,异步通知)访问设备。在写阻塞与非阻塞的驱动程序时,经常用到等待队列。一、阻塞与非阻塞阻塞调用是没有获得资源则挂起进程,被挂起的进程进入休眠状态,调用的函数只有在得到结果之后才返回,进程继续。非阻塞是不能进行设备操作时不挂起,或返回,或反复查询,直到可以进行操作为止,被调用的函数不会阻塞当前进程,而.

2020-10-19 13:58:36 989

转载 iptables详解(1):iptables概念

转自:http://www.zsythink.net/archives/1199。防火墙相关概念此处先描述一些相关概念。从逻辑上讲。防火墙可以大体分为主机防火墙和网络防火墙。主机防火墙:针对于单个主机进行防护。网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后的本地局域网。网络防火墙和主机防火墙并不冲突,可以理解为,网络防火墙主外(集体), 主机防火墙主内(个人)。从物理上讲,防火墙可以分为硬件防火墙和软件防火墙。硬件防火墙:在硬件...

2020-09-11 16:04:19 278

原创 《PCI Express体系结构导读》 -- 王奇

《PCI Express体系结构导读》 -- 王奇http://blog.sina.com.cn/s/articlelist_1685243084_3_1.html

2020-08-29 20:53:25 3272

转载 pci_register_driver

转自:https://blog.csdn.net/Buyi_Shizi/article/details/51262587 在bus总线对应的数据结构bus_type中,有两份重要的结构体,struct kset drivers和struct kset devices。在写驱动程序的时候,要想驱动程序能工作,首先就要把驱动程序对应的driver程序放进struct kset driver结构体中,然后把设备的信息放入struct kset device中。 而pci_register_dr...

2020-08-20 10:24:29 393

转载 Linux设备驱动之字符设备驱动

转自:https://blog.csdn.net/andylauren/article/details/51803331一、linux系统将设备分为3类:字符设备、块设备、网络设备。应用程序调用的流程框图:三种设备的定义分别如下,字符设备:只能一个字节一个字节的读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后顺序进行。字符设备是面向流的设备,常见的字符设备如鼠标、键盘、串口、控制台、LED等。块设备:是指可以从设备的任意位置读取一定长度的数据设备。块设备如硬盘、

2020-08-19 13:56:14 728

转载 linux设备驱动之PCIE驱动开发

转自:https://blog.csdn.net/u010872301/article/details/78519371PCIE(PCI Express)是INTEL提出的新一代的总线接口,目前普及的PCIE 3.0的传输速率为8GT/s,下一代PCIE 4.0将翻番为16GT/S,因为传输速率快广泛应用于数据中心、云计算、人工智能、机器学习、视觉计算、显卡、存储和网络等领域。PCIE插槽是可以向下兼容的,比如PCIE 1X接口可以插4X、8X、16X的插槽上。实现基本的PCIE驱动程序,实现以

2020-08-19 11:48:37 1386

转载 图解PCIE原理(从软件角度)

转自:https://blog.csdn.net/hulidong971/article/details/414121991 PCIE基本概念1.1 PCIE拓扑架构图1.2 PCIE Switch内部结构图1.3 PCIE协议结构图2 PCIE枚举原理2.1 Type0&Type1配置头空间2.2 拓扑示例连接Device0的端口设为Port0,连接Device1的端口设为Port1 (Port可...

2020-08-19 11:45:26 1200

转载 PCIe传输速率和可用带宽(吞吐量)计算

转自:https://blog.csdn.net/s_sunnyy/article/details/79027379==================================================================== PCI Express 版本 编码方案 传输速率 吞吐量 ×1 ×4 ×8 ×1...

2020-08-19 11:42:55 1340

原创 信号量PV操作在System V和POSIX pthread库间的性能差异

一、请知: 1. System V信号量每次执行PV操作时,都需要进行用户态和内核态的切换。 2. POSIX pthread库实现的信号量执行PV操作时,仅当需要时才进行用户态和内核态的切换。具体表述如下: 2.1 P操作:a) 在用户态“信号量值减一,且值大于等于0”,则无需陷入内核; b) 在用户态“信号量值减一,且值小于0”,则需要陷入内核,并将调用进程插入到该信号量的等待队列,睡眠; ...

2020-07-11 09:57:38 565

转载 关于超融合的几篇参考文章

1. 超融合详细对比:市面各主流超融合产品及厂商优劣势解密: https://blog.csdn.net/qiansg123/article/details/801339352. 超融合架构和服务器虚拟化是什么关系?主流超融合厂商服务器虚拟化产品对比分析: https://blog.csdn.net/Abbott0o7/article/details/1010544933. ...

2020-01-22 17:12:21 561

原创 性能分析工具

0. 下载链接:https://download.csdn.net/download/liufuchun111/121140121. 安装: 1.1 解压libunwind-0.99-beta.tar.gz和gperftools-2.6.1.tar.gz使用源码方式安装.2. 执行: 2.1 待分析程序修改: 包含头文件: #include <googl...

2020-01-21 09:40:40 120

转载 国产处理器架构

参考:https://www.cnblogs.com/ivyharding/p/11105902.htmlcpu架构指的是cpu的指令集。只要包括ARM、x86、MIPS和Alpha等。目前主要国产处理器的架构和应用如下:处理器 架构 应用 性能 麒麟 ARM 移动端 与高通相当 龙芯 MIPS pc端 功耗低、性能低 ...

2020-01-21 09:38:11 6618

转载 探讨C语言中位字段的内存分配

C语言的位字段是个比较有意思的特性。它的目的是在一个机器字中保存多个对象(每个对象占据若干bit),从而节省内存资源,同时又避免复杂的位运算。在此不再讨论位字段的具体语法,下面将研究位字段的存储特性。 先说含有多个字段(field)的字(word)所占空间的规律——含有多个字段的字的大小是所有字段的类型中的最长的那个的倍数。但要确定究竟是最长类型的几倍则比较复杂,这要看是...

2019-07-11 10:56:20 314

转载 Linux内核学习方法

转自:https://www.cnblogs.com/hdk1993/p/4674620.htmlMakefile不是Make Love  从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉。毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了,现在想来依然觉得丢人。  毫不夸张地说,Kconfig和Makefile是我们浏览内...

2019-07-06 20:12:07 382

转载 通过插画理解kubernetes基本概念

========== 第一篇 ==========转自:https://www.cnblogs.com/kouryoushine/articles/8007648.html插画版Kubernetes指南(小孩子也能看懂的kubernetes教程)是根据一个视频翻译过来的,比较形象编者按:Matt Butcher 是 Deis 的平台架构师,热爱哲学,咖啡和精雕细琢的代码。有一天女...

2019-06-18 21:00:14 190

转载 malloc 的原理与产生内存碎片的原因

https://blog.myzony.com/mallocde-yuan-li-yu-chan-sheng-nei-cun-sui-pian-de-yuan-yin/什么是缺页中断?当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作:1、检查要访问的虚拟地址是否合法2、查找/分配一个物理页3、填充物理页内容(读取磁盘,或者直接置0,或者啥也不干)4、建立映射关系...

2019-06-14 10:47:47 2660 2

转载 Linux C内存池的实现

转自:https://blog.csdn.net/szkbsgy/article/details/50491216在编程中,为了避免由于频繁的malloc/free产生内存碎片,通常会在程序中实现自己的内存管理模块,即内存池。内存池的原理:程序启动时为内存池申请一块较大的内存,在程序中使用内存时,都由内存池进行分配,不再使用的内存交给内存池回收,用于再次分配。内存池一般会有如下的接口:mem...

2019-06-12 11:07:58 874

转载 十分钟带你理解Kubernetes核心概念

转自:http://www.dockone.io/article/932[kubə’netis],重音在第三个音节,读音:库伯耐踢死;简称k8s,字母k后有8个其他字母,最后一个字母是s。本文将会简单介绍Kubernetes的核心概念。因为这些定义可以在Kubernetes的文档中找到,所以文章也会避免用大段的枯燥的文字介绍。相反,我们会使用一些图表(其中一些是动画)和示例来解释这些概念...

2019-06-05 16:23:29 173

转载 Linux虚拟网络设备之bridge(桥)

转自:https://segmentfault.com/a/1190000009491002?utm_source=tag-newest继前两篇介绍了tun/tap和veth之后,本篇将介绍Linux下常用的一种虚拟网络设备,那就是bridge(桥)。本篇将通过实际的例子来一步一步解释bridge是如何工作的。什么是bridge?首先,bridge是一个虚拟网络设备,所以具...

2019-06-05 12:00:37 678

转载 Linux虚拟网络设备之veth

转自:https://segmentfault.com/a/1190000009251098有了上一篇关于tun/tap的介绍之后,大家应该对虚拟网络设备有了一定的了解,本篇将接着介绍另一种虚拟网络设备veth。veth设备的特点veth和其它的网络设备都一样,一端连接的是内核协议栈。 veth设备是成对出现的,另一端两个设备彼此相连 一个设备收到协议栈的数据发送请求后,会...

2019-06-05 11:59:37 563

转载 Linux虚拟网络设备之tun/tap

转自:https://segmentfault.com/a/1190000009249039在现在的云时代,到处都是虚拟机和容器,它们背后的网络管理都离不开虚拟网络设备,所以了解虚拟网络设备有利于我们更好的理解云时代的网络结构。从本篇开始,将介绍Linux下的虚拟网络设备。虚拟设备和物理设备的区别在Linux网络数据包的接收过程和数据包的发送过程这两篇文章中,介绍了数据包的收发流程,...

2019-06-05 11:58:42 407

转载 Linux网络 - 数据包的发送过程

转自:https://segmentfault.com/a/1190000008926093继上一篇介绍了数据包的接收过程后,本文将介绍在Linux系统中,数据包是如何一步一步从应用程序到网卡并最终发送出去的。如果英文没有问题,强烈建议阅读后面参考里的文章,里面介绍的更详细。本文只讨论以太网的物理网卡,并且以一个UDP包的发送过程作为示例,由于本人对协议栈的代码不熟,有些地方...

2019-06-05 11:57:16 784

grpc-c++ v1.60.0源码,包含各个子模块

grpc-c++ v1.60.0源码,包含各个子模块

2024-02-04

gperftools-unwind-graphviz.20200119.tar.gz

gperftools安装包和依赖包; 安装使用说明; 示例代码: #include <google/profiler.h> #include <stdio.h> void func1(void) { int i = 0; while (i < 1000000) { ++i; } return; } void func2(void) { int i = 0; while (i < 2000000) { ++i; } return; } void func3(void) { for (int i = 0; i < 1000; ++i) { func1(); func2(); } return; } int main(int argc, char *argv[]) { ProfilerStart("my.prof"); // 指定所生成的profile文件名 func3(); ProfilerStop(); // 结束profiling return 0; }

2020-01-19

《图解http》

详细的介绍了http协议; 特色是穿插了大量插图,图文并茂,有助于加深理解及记忆。

2018-11-14

Nginx高性能Web服务器详解

面向: Web服务器使用者; Nginx学习开发者; Linux研发工作者; 网络编程爱好者。

2018-11-14

vim插件:omnicppcomplete-0.41.zip、taglist_46_vim.zip、vim-autocomplpop.zip三合一

vim常用插件: 1. omnicppcomplete-0.41.zip 2. taglist_46_vim.zip 3. vim-autocomplpop.zip

2018-05-25

空空如也

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

TA关注的人

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