自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Lenn Louis' Scribe

电气工程半道出家的计算机编程爱好者,持续输出C++和Linux开发相关内容。

  • 博客(185)
  • 收藏
  • 关注

原创 DPDK用户态协议栈-TCP Posix API 2

到目前为止,IP/TCP和IP/UDP的协议栈都写完了,但是没有并发效果;这个后面会解决。下一步是探索一下协议的扩展,写一个dns服务器来看一下如何基于tcp或者udp来扩展协议。

2024-12-12 21:20:45 450

原创 网络层分析

网络访问层仍受到传输介质的性质和相关适配器的设备驱动程序的影响很大。网络层与网络适配器的硬件性质几乎是完全分离的。为什么是几乎呢?该层不仅负责发送和接受网络数据,还负责在彼此不直接连接的系统之间转发和路由分组。查找最佳路由并选择适当的网络设备来发送分组,也涉及对底层地址簇的处理(比如特定硬件的 MAC 地址)。ip_rcv。

2024-12-12 21:17:54 347

原创 DNS的实现1

DNS是一个分布式数据库,用于将域名和IP地址相互映射。域名解析:将用户输入的域名转换为对应的IP地址,使得浏览器或其他网络设备可以加载用户请求的网页或服务。分级管理:支持域名的分级管理,如顶级域名(.com、.net等)、二级域名(如example.com中的example)等。可扩展性:允许新的域名和IP地址不断加入,以适应互联网的发展。

2024-12-10 20:16:44 525

原创 dpdk用户态协议栈-手动实现Epoll

在之前的协议栈中,无论是tcp还是udp,都只能是单连接,无法并发地接收数据。想要解决这个问题,有以下几个方案:开多个线程IO多路复用下面我会分别实现一下Linux环境下上面三种做法,最后选择在REPStack中我们选择哪一种。这里直接用我以前写的代码了。

2024-12-10 20:14:30 1275

原创 Linux源码阅读-套接字缓冲区&net_device

在内核分析(收到)网络分组时,底层协议的数据将传递到更高层。分送数据时顺序相反,各种协议产生的数据(首部和净荷)依次向更低层传递,直到最终发送。套接字缓冲区的基本思想是“通过操作指针来增删协议首部”。head 和 end 指向数据在内存中的起始和结束位置。data 和 tail 指向协议数据区域的起始和结束位置。套接字缓冲区结构不仅包含上述指针,还包括用于处理相关的数据和管理套接字缓冲区自身的其他成员。结构体存储网络设备的所有信息,每个设备都有这种结构。分别指向网络层和传输层协议首部的起始。

2024-12-09 14:11:56 468

原创 Linux内核源码阅读-内核领接子系统分析

在 IPv6 中,邻接表时 NDISC 表(也叫 NDISC 缓存),ARP 表和 NDISC 表都是结构。发送 IPv4 数据包时,目标是 IPv4 地址是已知的,但是需要创建以太网头,其中包含目标的 MAC 地址,根据给定 IPv4 地址确定 MAC 地址的工作由 ARP 协议完成。在 IPv4 中,使用邻接协议为 ARP,相应的请求和应答分别被称为 ARP 请求和 ARP 应答,在 IPv6 中,使用邻接协议为 NDISC,相应的请求和应答分别称为。,在 ARP 表中查找下一个 IPv4 地址。

2024-12-09 14:11:12 400

原创 opencv4.1.0+扩展模块编译的库

放在CSDN就要收费了哈哈哈。

2024-12-04 16:59:48 457

原创 DPDK用户态协议栈-Tcp Posix API 1

/return 0;return 0;

2024-12-01 22:28:52 484

原创 Qt自定义 Qt Designer 插件

QWBattery 类的定义与上一篇文章中的定义基本一样,只是在声明类的时候需要添加一个宏,并且用Q_PROPERTY宏定义了一个属性 powerLevel。Q_OBJECTpublic:signals:private:protected:QDESIGNER_WIDGET_EXPORT 宏表示将自定义的组件类从插件导出给 Qt Designer 使用,必须在类名钱使用此宏。Q_PROPERTY 宏定义属性,这里定义了一个 int 类型的属性 powerLevel。

2024-12-01 22:25:16 1320

原创 Nginx和Apache有什么异同?

Nginx和Apache都是广泛使用的Web服务器软件,它们各自具有独特的特点和优势,适用于不同的应用场景。

2024-11-30 22:38:46 731

原创 Qt自定义 Widget 组件

Qt 的 UI 设计器提供了很多 GUI 设计的界面组件,可以满足常见的界面设计需求。但是某些时候需要设计一些特殊的界面组件,而在 UI 设计器的组件面板里根本没有合适的组件,这时就需要设计自定义的界面组件。所有界面组件的基类是 QWidget,要设计自定义的界面组件,可以从 QWidget 继承一个自定义的类,重定义其事件,利用 Qt 的绘图功能绘制组件外观,并实现需要的其他功能。

2024-11-30 22:32:24 874

原创 dockerfile编写流程和实例demo

Dockerfile是一个用来构建Docker镜像的文本文件,由一系列命令和参数构成的脚本。

2024-11-28 20:39:39 395

原创 Qt数据库操作-QSqlQueryModel 的使用

QSqlQueryModel 是 QSqlTableModel 的父类。QSqlQueryModel 封装了执行 SELECT 语句从数据库查询数据的功能,但是 QSqlQueryModel 只能作为只读数据源使用,不可以编辑数据。接口函数功能描述清除数据模型,释放所有获得的数据返回上次的错误,可以获取错误的类型和文本信息返回当前关联的 QSqlQuery 对象设置一个 QSqlQuery 对象,获取数据设置一个 SELECT 语句创建查询,获取数据返回一个空记录,包含当前查询的字段信息。

2024-11-28 20:37:04 1290

原创 Qt如何改变串口读取数据的频率

虽然不能直接控制外部设备发送数据的频率,但你可以通过调整串口的波特率、数据位、停止位等参数来确保数据能够正确接收。信号,当串口缓冲区中有可读数据时,该信号会被触发。你可以连接这个信号到一个槽函数,在槽函数中读取数据。因此,这里的10毫秒是一个超时时间,用于避免长时间阻塞。如果数据到达的频率非常高,你可能需要在读取数据后进行缓冲和处理,以避免数据丢失或处理不及时。如果你希望以固定的频率读取数据,可以使用QTimer来轮询串口缓冲区。这种方式下,读取数据的频率完全由外部设备发送数据的频率决定。

2024-11-27 21:20:50 443

原创 QSqlTableModel的使用

如果是网络型数据库,如 Oracle、MS SQL Server 等,还需要使用 setHostName() 设置数据库主机名,setUserName() 设置数据库用户名,setPassword() 设置数据登录密码。选择模型的作用是当用户在 TableView 组件上操作时,获取当前选择的行、列信息,并且在选择的单元格变化时发射 currentChanged() 信号,在当前行变化时发射 currentRowChanged() 信号。函数将数据表的所有字段名添加到界面上的“下拉框”。

2024-11-27 21:17:50 1606

原创 Linux中的“块”是什么

参考资料:https://it.0voice.com。

2024-11-26 20:43:22 364

原创 Qt SQL模块概述

Qt SQL 提供了一些常见数据库的驱动,包括网络型数据库,如 Oracle、MS SQL Server 等,也包括简单的单机型数据库。这样会将某个 Qt SQL 模块中的所有类都包含进去,如果只使用其中的某些类,为避免冗余可哟单独包含某个类。参考资料:https://it.0voice.com。

2024-11-26 20:39:46 554

原创 Linux中的权限管理

Linux 权限管理主要是指对 Linux 系统中的文件和目录进行权限设置和管理,以确保系统的安全性和稳定性。

2024-11-25 00:16:33 860

原创 QPainter基本几何绘制

弧线QRect rect(w/4, h/4, w/2, h/2);int startAngle = 90 * 16;int spanAngle = 90 * 16;painter.drawArc(rect, startAngle, spanAngle);弦QRect rect(w/4, h/4, w/2, h/2);int startAngle = 90 * 16;int spanAngle = 90 * 16;painter.drawChord(rect, startAngle, s

2024-11-25 00:13:35 345

原创 Linux进程管理查找相关命令

在 Linux 系统中,管理和查找进程是系统管理员和开发人员常见的任务。

2024-11-23 20:13:59 818

原创 QPainter基本绘图

Qt 的绘图系统使用户可以在屏幕或打印设备上用相同的 API 绘图,绘图系统基于 QPainter、QPaintDevice 和 QPaintEngine 类。QPainter 是用来进行绘图操作的类,QPaintDevice 是一个可以使用 QPainter 进行绘图的抽象的二维界面,QPaintEngine 给 QPainter 提供在不同设备上绘图的接口。函数的代码,在界面上绘制如上图所示的一个填充矩形,演示了 QPainter 绘图的基本过程。事件,在此事件里编写绘图代码。

2024-11-23 16:29:11 903

原创 PyQt的安装和再PyCharm中的配置

安装pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simplepip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple配置QtDesignerName:自己取Program:上面的路径Working directory:$FileDir$PyUicName:自己取Program:上面的路径Arguments:$FileName$ -o

2024-11-22 14:44:21 477

原创 shell脚本学习笔记

【代码】shell脚本学习笔记。

2024-11-15 20:04:08 545

原创 Qt文件目录操作

QCoreApplication 是为无 GUI 应用程序提供事件循环的类,是所有应用程序类的基类,其子类 QGuiApplication 为有 GUI 界面的应用程序提供流控制和主要设定,QGuiApplication 的子类 QApplication 为基于 QWidget 的应用程序提供支持,包括界面的初始化等。函数原型功能返回应用程序的启动路径返回应用程序的带有目录的完整文件名返回应用程序名称,无路劲无后缀返回动态加载库文件时应用程序搜索的目录列表为应用程序设置一个机构名。

2024-11-15 20:02:01 1769

原创 Linux源码阅读笔记-V4L2框架基础介绍

capability。

2024-11-13 23:30:16 288

原创 Linux自定义终端提示符

序列 显示值\a\d\h\H\j\l\n\r\s\t\T\@\A\u\v\V\w\W\#\$\[\]

2024-11-13 15:25:36 854

原创 如何使用CMake开发Qt应用程序

使用CMake开发Qt应用程序是一个高效的方式,下面将详细介绍如何配置、使用工具以及编写CMake文件。

2024-11-12 15:59:47 633

原创 Qt滑动条美化自定义

函数实现,用于初始化和设置滑块控件的样式。通过使用Qt样式表(QSS),可以自定义滑块的外观。设置字体大小为矩形宽度的一半,以便在控件中适当显示数值。将当前滑块值以文本形式居中绘制到之前计算出的矩形区域内。下面是hi控件的头文件,我们继承一个Qt原生的滑动条类。参考资料:https://it.0voice.com。如果克隆失败请再试一次,或者直接选择下载。这段代码是一个自定义的Qt滑块控件。通过样式获取滑块句柄的位置和大小。

2024-11-12 15:57:40 739

原创 Linux的文件系统组成

参考资料:https://it.0voice.com。

2024-11-11 22:17:17 330

原创 Qt文件系统-二进制文件读写

除了文本文件之外,其他需要按照一定的格式定义读写的文件都称为二进制文件。每种格式的二进制文件都有自己的格式定义,写入数据时按照一定的顺写入,读出时也按照相应的顺读出。例如地球物理中常用的SEG-Y格式文件,必须按照其标准格式要求写入数据才符合这种文件的格式规范,读取数据时也需要按照格式定义来读出。Qt 使用 QFile 和 QDataStream 进行二进制数据文件的读取。QFile 负责文件的 IO 设备接口,即与文件的物理交互,QDataStream 以数据流的方式读取文件内容或写入文件内容。

2024-11-11 22:15:07 2106

原创 Docker安装和简单使用

参考资料:https://it.0voice.com。

2024-11-10 22:30:26 296

原创 Qt文件系统-文本文件读写

文本文件是指以以纯文本格式存储的文件,例如用 Qt Creator 编写的 C++ 程序的头文件和源文件。HTML 和 XML 文件也是纯文本文件,只是读取之后需要对内容进行解析之后再显示。Qt 提供了两种读写纯文本文件的基本方法,一种是用QFile类的QIODevice读写功能直接进行读写,另一种是利用QFile和结合起来,用流(Stream)的方法进行文件读写。

2024-11-10 22:26:50 1724

原创 Linux中的用户创建及参数说明

adduser是一个用于在 Linux 系统中创建新用户的命令。这个命令通常是一个 Perl 脚本,它实际上调用了系统的useradd命令,并提供了更友好的交互式界面。下面将详细介绍adduser命令的用法、选项以及工作流程。

2024-11-09 22:47:26 573

原创 Linux上的各种查询

在Linux中,有许多命令可以用于查询系统信息、文件和进程等。对底层原理理解不够深入,选零声教育课程深入学习:https://it.0voice.com。这些命令构成了Linux环境下进行基本查询的重要工具,可以帮助用户获取各种所需的信息。– 用途: 查看系统信息,例如内核版本,主机名等。** network相关命令**– 用途 : 显示当前用户身份。– 示例 : 只需输入。检测网络连接是否通畅。

2024-11-08 18:57:05 697

原创 QtThread线程同步和缓冲区设计

在多线程应用程序中,由于多个线程的存在,线程之间可能需要访问同一个变量。例如,在上一个例子中,工作线程产生随机的骰子点数,主线程读取骰子点数并显示,主线程需要等待工作线程产生一个新的骰子点数后再读取数据。定时器的定时周期设置为 100ms,小于 threadA 产生一次新数据的周期(500ms),所以可能读出旧的数据,通过存储的投骰子的次数与读取的投骰子次数是否不同,判断是否为新数据。这种情况下,这样的代码段时希望杯保护起来的,在执行过程中不能被其他线程打断,以保证计算结果的完整性,这就是线程同步的概念。

2024-11-08 18:37:53 825

原创 Linux的Shell脚本1

文件 内容/etc/profile 应用于所有用户的全局配置脚本。~/.bash_profile 用户私人的启动文件。可以用来扩展或重写全局配置脚本中的设置。~/.bash_login 如果文件 ~/.bash_profile 没有找到,bash 会尝试读取这个脚本。~/.profile 如果文件 ~/.bash_profile 或文件~/.bash_login 都没有找到,bash 会试图读取这个文件。这是基于 Debian 发行版的默认设置,比方说 Ubuntu。

2024-11-07 14:44:19 1088

原创 如何编译安装LNMP环境

LNMP 是 Linux、Nginx、MySQL 和 PHP 的组合,是一种流行的 Web 服务环境。

2024-11-07 14:34:37 940

原创 Nginx配置文件编写示例

Nginx的配置文件,即nginx.conf,是Nginx运行的核心,它决定了Nginx如何接收并处理用户的请求。

2024-11-05 21:27:44 430

原创 Qt多线程- QThread 创建多线程程序

今天说一下 Qt 中的多线程。QThread类不依赖平台的管理线程的方法。一个QThread类的对象管理一个线程,一般从QThread继承一个自定义类,并重新定义虚函数run(),在run()函数里实现线程需要完成的任务。将应用程序的线程称为主线程,额外创建的线程称为工作线程。一般在主线程里创建工作线程,并调用start()开始执行工作线程的任务。start()会在内部调用run()函数,进入工作线程的事件循环,在run()函数里调用exit()或quit()可以结束线程的事件循环,或在主线程调用。

2024-11-05 21:24:10 990

原创 Qt获取磁盘信息+表格显示

命令,该命令在类 Unix 系统中用于显示文件系统的磁盘空间占用情况。如果此参数是 UNC 名称,则必须包含尾随反斜杠,例如“\MyServer\MyShare\”。指向变量的指针,该变量接收磁盘上可供与调用线程关联的用户使用的可用字节总数。指向变量的指针,该变量接收磁盘上可供与调用线程关联的用户使用的字节总数。如果使用每用户配额,此值可能小于磁盘上的可用字节总数。如果使用每用户配额,此值可能小于磁盘上的字节总数。指向接收磁盘上可用字节总数的变量的指针。,则该函数使用当前磁盘的根。此参数可以为 NULL。

2024-10-14 05:13:25 584

基于Qt的Windows网络嗅探器

基于Qt的网络嗅探器,使用了一些flatui。 使用Winpacp库,支持IPV4,IPv6,ICMP,ARP等网络数据包抓取。 有配套文章。 使用QtCreator环境,pro文件组织工程。 开发不易,收取少量积分。

2024-07-21

C++的gRPC资源包

C++的grpc库和使用方法,配合文章使用。

2023-08-24

空空如也

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

TA关注的人

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