自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 gdb相关

您可以在 GDB 的交互模式下键入 `help` 或 `h` 来获取更详细的帮助信息。例如:`break main` 或 `break filename.c:20`。5. 一旦切换到所需的栈帧,您可以使用 GDB 的其他命令来查看和修改该栈帧中的变量值,如 `print`、`set`、`display` 等。例如:`list` 或 `list 10,20`(显示从第 10 行到第 20 行的代码)。与 `next` 的区别在于,`step` 会进入函数体内部。- `delete`:删除指定的断点。

2024-04-03 10:50:39 251

原创 使用gdb对编写的动态库进行调试

中调试动态库时,你可以设置断点、观察变量的值,并逐步执行和分析动态库的代码。确保在编译动态库时包含调试信息,并在加载动态库时正确设置搜索路径,以便。中设置断点以暂停动态库的执行。选项来编译源代码,并生成带有调试符号的动态库文件。编译动态库:首先,确保在编译动态库时包含调试信息。调试动态库代码:开始调试动态库代码。等命令逐步执行,查看变量的值,跟踪函数调用等。并加载动态库:打开终端,输入。命令提示符下,加载动态库文件。的带有调试符号的动态库文件。结束调试:在调试完成后,使用。命令设置断点,然后使用。

2023-11-21 14:42:17 1388

原创 以下是使用 C 语言实现遍历目录、移动文件并检查子目录的示例代码

通过运行以上 C 代码,它将遍历源目录下的所有文件(包括子目录中的文件),并将它们移动到目标目录中。同时会检查子目录在目标目录下是否存在,不存在则创建该目录。函数中,我们添加了检查子目录在目标目录下是否存在的逻辑。如果子目录不存在,则使用。请确保在编译和运行代码之前,包含所需的头文件和链接相关的库(如。函数用于遍历目录并递归地处理文件和子目录。分别替换为实际的源目录和目标目录的路径。函数创建该目录,并为其设置权限。

2023-11-20 10:38:54 266

原创 python中的loguru日志同时按时间和大小分割

在 Loguru 中,可以使用回调函数来实现同时按时间和文件大小进行日志文件的分割。参数和自定义回调函数来实现这个需求。

2023-11-03 11:51:20 614

原创 loguru设置按天分割日志,保留1天内容

请根据实际需求进行适当的配置,并根据 Loguru 的文档了解更多可用的选项和参数。这样配置后,Loguru 将根据每天切割日志文件,并且保留最近的 1 天的日志文件,删除超过 1 天的旧日志文件。部分示例中,我们设置了日志级别为 DEBUG,并指定了日志文件的路径。部分,我们列出了要使用的处理程序(例如文件),没有指定其他参数。),然后在代码中加载该配置文件以使用指定的 Loguru 配置。请确保将实际的路径替换为您想要保存日志文件的路径。,表示仅保留 1 天内的日志文件。在上面的示例中,我们定义了。

2023-10-07 14:32:02 716

原创 mysql相关的语句(操纵数据库、筛选条件、时间计算)

MySQL 是一种流行的关系型数据库管理系统,提供了丰富的 SQL 语句来操作和管理数据库。在MySQL中,可以使用多种筛选条件的语句来过滤查询结果。

2023-09-26 16:54:43 51

原创 c++中的三种继承方式 的区别

需要注意的是,尽管可以使用不同的继承方式,但在实际中应该谨慎使用。合理的继承方式能够提高代码的可维护性和扩展性,而滥用继承可能导致紧耦合的代码结构和继承层次过深的问题。这些继承方式影响了派生类对基类成员的访问权限,也决定了如何将基类的功能和行为与派生类相关联。选择适当的继承方式取决于具体需求和设计考虑。这些继承方式决定了派生类如何继承基类的成员以及对这些成员的访问权限。

2023-09-14 15:01:11 420

原创 windows以及linux上的服务创建及启动

以上仅是简要的示例,实际上,创建和启动服务的方法可能因操作系统、服务管理工具或特定的应用程序要求而有所不同。确保按照操作系统和服务管理工具的文档提供的准确步骤进行操作。在服务单元文件中指定执行命令、工作目录、依赖项等服务的详细信息。创建和启动服务的方法可能因操作系统而异。编写服务程序:使用编程语言(如C++、C#)编写一个能够以服务形式运行的程序。):创建一个描述服务相关信息的配置文件。编写 Systemd 服务单元文件(

2023-09-08 17:15:05 131

原创 mysql数据库的使用以及相关函数介绍

这是一个简单的示例,介绍了如何在 C 语言中使用 MySQL 数据库。实际上,不同的数据库可能有不同的库和 API,因此具体的使用方式可能会有所差异。要在 C 语言中使用 SQL,你需要安装适当的数据库库,并使用相应的 API 来连接和执行 SQL 查询。以下是一个简单的示例,展示了如何在 C 语言中使用 MySQL 数据库。如果查询产生了结果集,则可以使用此函数来获取并保存结果集供后续处理。:返回最近执行的 INSERT、UPDATE 或 DELETE 查询所影响的行数。:关闭与数据库的连接。

2023-09-08 14:58:05 47

原创 mysql中标签带有特殊符号应该如何处理

通过按照上述步骤处理包含特殊符号的标签,你可以在 C 语言中正确地向 MySQL 数据库插入数据。确保在构建 SQL 查询语句时将标签用反引号 (`) 包裹起来,以便告诉 MySQL 将其作为字面量处理,而不是解释其中的特殊符号。函数(或类似的函数)构建 SQL 查询语句,并将标签插入到查询语句中。:在 C 代码中,将包含特殊符号的标签(列名或表名)存储在字符串变量中。函数将表名和列名插入到查询语句中,并在它们周围添加了反引号 (`)。函数执行构建好的 SQL 查询语句,并检查是否有错误发生。

2023-09-08 11:11:35 595

原创 消除浮点型运算的误差

通过这种方式,我们可以通过字符串来除以 1024 并消除损失,而不使用取余操作。请注意,在进行进一步的计算或处理结果时,你可能需要使用字符串转换函数(如。如果你想要通过字符串来除以 1024 并消除损失,但不使用取余操作,可以使用字符数组和循环来实现。接下来,我们使用循环处理余数部分。我们将余数乘以 10,并将商作为字符添加到结果字符串。中,直到余数变为零或达到所需的小数位数(这里假设最多有 15 位小数)。当我们在使用浮点型运算时,要求0误差时我们就可以使用该方法。在上述示例中,我们首先将整数。

2023-08-24 17:16:54 427

原创 git指令

这些命令涵盖了Git的基本操作以及一些与分支相关的指令。请注意,某些指令可能需要在特定分支下执行(如合并、重命名分支等),因此在执行相关指令前,请确保你已经切换到正确的分支。- 更新本地仓库到最新的远程仓库状态。- 克隆一个远程Git仓库到本地。- 添加文件或文件夹到Git仓库。- 初始化一个新的Git仓库。- 提交代码变更到Git仓库。- 推送代码变更到远程仓库。- 合并指定分支到当前分支。- 撤销尚未提交的代码变更。- 查看本地分支列表。- 切换到指定分支。

2023-08-22 11:05:56 32

原创 c语言中的位运算

这些位运算操作在计算机底层编程、嵌入式系统开发和优化算法等领域经常被使用。它们可以高效地进行位级操作,对二进制数据进行处理和优化,实现各种功能和算法。位运算是对二进制数字进行操作的运算方式。在计算机中,数字以二进制形式表示,位运算可以直接对二进制位进行操作,包括逻辑运算、移位运算和按位运算。

2023-08-18 16:49:15 45

原创 使用位图或者数组进行判断数字是否出现过

这两种方法都可以用于判断数字是否出现过,并根据需要适当调整数字范围和数据结构大小。位图的实现要复杂一些,需要使用位运算来操作特定的位。

2023-08-18 16:48:37 132

原创 cJson

cjson是一个用于处理JSON数据的C语言库,提供了一系列函数来解析、生成和操作JSON数据。这只是cjson库中几个常用函数的简要说明。cjson还提供了其他函数来处理数组、数字、布尔值等等。你可以参考cjson库的文档或源代码来获取更详细的信息。

2023-07-27 16:01:40 180

原创 qt中使用代码编写布局控制器

布局管理器是一种用于在Qt应用程序中自动管理窗口部件位置和尺寸的工具。它可以根据不同的布局策略自动调整部件的大小和位置,以适应窗口的大小变化。布局管理器有几种类型,包括垂直布局(QVBoxLayout)、水平布局(QHBoxLayout)、网格布局(QGridLayout)等。每种布局管理器都有其特定的用途和特点。

2023-07-13 18:14:09 314

原创 cmake链接其他文件夹的.lib库

最后,确保这些语句位于适当的位置,以正确链接库文件。一般而言,建议将它们放置在创建可执行文件或库的目标之后。请根据实际情况修改路径和变量名,以适应你的项目。如果有其他特定要求,请提供更多详细信息,以便更好地帮助你。指定库的全路径(如果需要):如果你的库文件不在默认的搜索路径下,可以在。是你要链接的库文件名(不包含路径和扩展名)。是你的目标名称(例如可执行文件或库)而。重复步骤2和步骤3以链接多个库文件。中指定库文件的全路径。

2023-07-06 15:35:36 2473 1

原创 对五元组的处理

【代码】对五元组的处理。

2023-06-27 10:17:29 67 1

原创 libpcap的简单应用

(Packet Capture Library),即数据包捕获函数库。在网络包抓取中libpcap是非常常用的一个库,著名的tcpdump就是用它来实现的。libpcap是一个 与实现无关的访问操作系统所提供的分组捕获函数库,用于访问数据链路层。这个库为不同的平台提供了一致的C函数编程接口,在安装了 libpcap 的平台上,以 libpcap 为接口写的程序、应用,能够自由地跨平台使用。它支持多种操作系统。

2023-06-27 10:04:30 1180 1

原创 makefile文件的编写

如果你的文件名字不是makefile,而是makefilebuff-demo这样自定义的,那么需要这么操作。如果在没有使用 -f 指定的情况下,会按照下面的顺序执行。通过vim编辑器进行创建makefile并打开,输入以下指令。make 命令可以通过 -f 执行使用的makefile。保存后退出,并查看makefile文件是否成功编写。通过makefile文件进行生成可执行文件。通过ls指令验证相关文件是否成功创建。使用touch指令进行创建相关文件。通过make指令运行make文件。

2023-06-27 09:34:11 299 1

原创 http的简单实现

http协议是建立在TCP/IP协议之上应用层协议,默认端口为80,8080http协议的的特点是无状态,无连接利用抓包工具httpwatch可以获取报文http协议的报文传输的是ASCII码,在TCP/IP协议之上,主要主要分为三部分请求行、请求头、请求体第一行,包含三个信息:请求方式,url,http协议版本GET 请求 GET /books/?sex=man&name=Professional HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0

2023-03-10 23:42:07 349

原创 初识网络七层模型

7应用层OSI 的应用层协议包括文件的传输、访问及管理协议(FTAM) ,以及文件虚拟终端协议(VIP)和公用管理系统信息(CMIP)等;例如HTTP6表示层表示层􏰁供多种功能用于应用层数据编码和转化,以确保以一个系统应用层发送的信息 可以被另一个系统应用层识别;例如XDR、ASN.1、SMB、AFP、NCP5会话层会话层建立、管理和终止表示层与实体之间的通信会话;

2023-02-03 22:24:42 128

原创 树莓派gpio驱动编写——不使用wiringPi

虚拟地址空间的大小也由操作系统决定,32位的操作系统虚拟地址空间的大小为 2^32 字节,也就是 4G,64 系统的操作系统虚拟地址空间大小为 2^64 字节。由该部分可以得知,我们对pin4进行操作就是对FSEL4进行操作,也是对12-14位进行操作,并且为001时为输出模式。在目录/dev下都能看到鼠标,键盘,屏幕,串口等设备文件,硬件要有相对应的驱动,那么open怎样区分这些硬件呢?我们设置的是输出模式,所以我们需要获取上层的指令,可以通过copy_from_user函数。

2023-01-12 16:01:25 528

原创 树莓派——内核编译

包含和硬件体系结构相关的代码,每种平台占一个相应的目录。和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分)、mm(内存管理)、math-emu(浮点单元仿真)、lib(硬件相关工具函数)、boot(引导程序)、pci(PCI总线)和power(CPU相关状态)。内核的最核心部分,包括进程调度、定时器等,和平台相关的一部分代码放在arch/*/kernel目录下。将树莓派中的sd通过读卡器插入电脑,其中有两个分区,一个是fat分区,一个是ext4分区。

2023-01-11 20:56:08 414

原创 Linux共享库、静态库、动态库详解

静态函数库静态函数库实际上就是简单的一个普通的目标文件的集合,一般来说习惯用“.a”作为文件的后缀。可以用ar这个程序来产生静态函数库文件。Ar是archiver的缩写。静态函数库现在已经不在像以前用得那么多了,主要是共享函数库与之相比较有很多的优势的原因。慢慢地,大家都喜欢使用共享函数库了。不过,在一些场所静态函数库仍然在使用,一来是保持一些与以前某些程序的兼容,二来它描述起来也比较简单。静态库函数允许程序员把程序link起来而不用重新编译代码,节省了重新编译代码的时间。

2023-01-10 20:58:37 307

原创 树莓派——交叉编译

我们在Ubuntu上面编写树莓派代码,并编译成可执行代码,如a.out,是在树莓派上面运行,不是在Ubuntu Linux上面运行。对于pi4b来说,GitHub上的版本较低,当使用wiringPi进行交叉编译时会报错,所以需要自行进行交叉编译工具的安装。我们在Windows上面编写C51代码,并编译成可执行代码,如xx.hex,是在51上运行,不是在Windows上面运行。正常我们先要交叉编译wiringPi库,编译出的库适合树莓派,这时候交叉编译可执行程序的试试,链接库的格式也是正确的。

2023-01-10 17:13:22 491

原创 树莓派——初级编程

需要将该文件中的console=serial0,115200字段删除,保存退出就可以。对于树莓派引脚的操作可以使用wiringPi库进行操作,具体函数在该博客中;默认情况,树莓派的串口和蓝牙连接。想办法断开蓝牙连接,把串口用来数据通信。Ctrl+o 保存,会有提示是否写入。需要注意的是,当第一次使用串口的时候,需要更改一些文件。通过官方给的相关文件和软件,对树莓派进行刷系统。windows用“远程桌面连接”自带软件登录。Nano是文档编辑器,已进入便可以编写。网络ssh方式登录树莓派。

2023-01-10 11:12:18 2768

原创 Linux——socket综合应用

config.hsever.cclient.c

2022-12-06 20:34:46 124

原创 Linux系统编程——网络编程

对于网络编程来说协议有很多种,比如socket、http、ftp等等,本文只讲解socket(TCP/UDP)。

2022-12-06 19:53:10 276

原创 Linux线程——消费者生产者

在同一个进程里面有多个线程,这些线程分别扮演消费者和生产者两类。其中生产者为消费者提供任务,消费者去拿到任务并且执行任务。而他们之间的“交易场所”为内存块,即全局变量。当生产任务达到一定量满的时候,生产者进行等待,并且唤醒消费者进行拿取。当任务达到0的时候,消费者进行等待,并且唤醒生产者进行生产任务。在消费者和生产者中存在两种关系,其中生产者和生产者之间是互斥关系,消费者和消费者之间是互斥关系,生产者和消费者之间是互斥和同步的关系。

2022-11-22 16:21:24 707

原创 Linux系统编程——线程

第一个参数为互斥变量,用pthread_mutex_t数据类型表示。在使用互斥变量前必须对它进行初始化,可以把它置为常量PTHREAD_MUTEX_INITIALIZER(只对静态分配的互斥量)pthread_cond_signal和pthread_cond_broadcast:参数为条件变量。pthread_mutex_lock和pthread_mutex_unlock:参数都为互斥变量。pthread_mutex_destroy:参数为互斥变量。第二个参数为保护条件所对应的互斥锁的互斥变量的地址。

2022-11-21 22:28:14 323

原创 Linux系统编程——进程间通信

消息队列通过名字字面意思理解就是队列排队结构,消息队列与FIFO很相似,都是一个队列结构,都可以有多个进程往队列里面写信息,多个进程从队列中读取信息。但FIFO需要读、写的两端事先都打开,才能够开始信息传递工作。而消息队列可以事先往队列中写信息,需要时再打开读取信息。

2022-11-07 22:41:38 500

原创 Linux系统编程—进程

(4)栈:自动变量以及每次函数调用时所保存的信息都存放在此段中,每次调用函数时其返回值以及调用者的环境信息(例如机器寄存器的值)都存放在栈中。通常,正文段是可共享的,所以即使是频繁执行的程序(如文本编辑器、c编辑器颌shell等)在存储器中也只需有一个副本,另外,正文段通常是只读的,以防程序由于意外而修改其自身的指令。编程可以调用getpid函数获取自身的进程标识符,getppid获取父进程的进程标识符。(2)可以使用top指令查看。4、父进程与子进程:A进程创建了B进程,则A为父进程B为子进程。

2022-10-12 20:53:44 2140

原创 Linux中实现cp命令

2、通过lseek函数判断src文件的大小,并对buf进行跟配合适的空间。argc是所有参数的总数量。6、释放buf并close两个文件。5、将buf写入到des.c。3、读src的内容到buf。4、打开创建des.c。一、main函数的原型。二、实现cp指令的思路。

2022-10-06 16:49:38 374

原创 Linux系统编程——文件编程

2、文件描述符,这个数字在一个进程中表示一个特定含义,当我们open一个文件时,操作系统在内存中构建了一些数据结构来表示这个动态文件,然后返回给应用程序一个数字作为文件描述符,这个数字就和我们内存中维护的这个动态文件的这些数据结构绑定上了,以后我们应用程序如果要操作这个动态文件,只需要用这个文件描述符区分。当打开一个现存文件或者创建一个新文件时,内核向进程返回一个文件描述符。当读写一个文件时,用open颌creat返回的文件描述符表示该文件,将其作为参数传递给read和write。(其返回值为文件描述符)

2022-10-01 22:55:00 112

原创 IIC协议

而RS-232标准串口是全双工通信,并且传输速度有20kb/s。1、IIC协议是半双工通信,并且传输速度只有10kb/s。

2022-08-31 15:26:57 220

空空如也

空空如也

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

TA关注的人

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