自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第五章 SQLite数据库:5、SQLite 进阶用法: SQLite 安全问题(如注入防护)、性能分析(EXPLAIN)、数据库维护(VACUUM)、时间处理到常用函数等及SQLite 综合使用案例

SQL 注入是指攻击者通过构造恶意输入,将恶意 SQL 语句插入查询中,从而对数据库执行非预期操作。

2025-04-20 15:24:51 296

原创 第五章 SQLite数据库:5、SQLite 进阶用法:ALTER 命令、TRUNCATE 操作、视图创建、事务控制和子查询的操作

SQLite 的命令允许在不完全重建表的情况下修改现有的表结构。通过 ALTER TABLE,您可以执行如重命名表名、添加新列等操作,但无法执行复杂的修改,如删除列或修改列的数据类型。

2025-04-20 14:56:39 690

原创 第五章 SQLite数据库:5、SQLite 进阶用法:JOIN、UNION、TRIGGER、INDEX、ALIAS、INDEXED BY 等模块

采用“图书借阅系统”作为示例模型,涵盖 JOIN、UNION、TRIGGER、INDEX、ALIAS、INDEXED BY 等模块,旨在帮助读者全面理解 SQL 编程逻辑与底层原理,提升数据建模与查询优化能力。

2025-04-18 11:19:37 443

原创 第五章 SQLite数据库:4、SQLite 进阶用法:常见的约束、PRAGMA 配置、数据操作

约束用于强制字段值必须满足条件,从而保障数据的完整性和一致性。初始化数据库时统一配置常用PRAGMA表结构应明确使用NOT NULLCHECKDEFAULT等约束可封装表定义 + PRAGMA 为一体的创建脚本。

2025-04-18 11:01:06 300

原创 第五章 SQLite数据库:3、SQLite 常用语法及使用案例

SQLite 提供了 SQL 操作和表达式,支持对数据进行插入、选择、更新、删除和多种数学、逻辑、位运算等操作

2025-04-17 18:50:06 1067

原创 第五章 SQLite数据库:2、SQLite 数据类型及数据库、附加库及表等基本操作

SQLiSQLite 数据类型是一个用来指定任何对象的数据类型的属性。SQLite 中的每一列,每个变量和表达式都有相关的数据类型。

2025-04-15 22:04:15 719

原创 第五章 SQLite数据库:1、SQLite 基础语法及使用案例

功能模块使用语法数据结构定义CHECK数据操作INSERTSELECTUPDATEDELETE查询优化INDEXGROUP BYORDER BY查询进阶JOINVIEWSUBQUERYEXISTS数据一致性COMMITROLLBACK。

2025-04-15 10:55:47 997

原创 第四章 Linux套接字通信:12.UDP特性之组播(多播)

组播也可以称之为多播这也是UDP的特性之一

2025-04-15 10:52:53 1135

原创 第四章 Linux套接字通信:11.UDP特性之广播

广播的UDP的特性之一,通过广播可以向子网中多台计算机发送消息,并且子网中所有的计算机都可以接收到发送方发送的消息,每个广播消息都包含一个特殊的IP地址,这个IP中子网内主机标志部分的二进制全部为1 (即点分十进制IP的最后一部分是255)。点分十进制的IP地址每一部分是1字节,最大值为255,比如:192.168.1.100广播分为两端,即数据发送端和数据接收端,通过广播的方式发送数据,发送端和接收端的关系是 1:NUDP的广播和日常生活中的广播是一样的,都是一种快速传播消息的方式,因此广播的开销很小,发

2025-04-14 13:47:19 560

原创 第四章 Linux套接字通信:10.基于UDP的套接字通信

udp是一个面向无连接的,不安全的,报式传输层协议,udp的通信过程默认也是阻塞的。

2025-04-14 13:43:16 1117

原创 第四章 Linux套接字通信:9.IO多路转接(复用)之epoll

epoll 全称 eventpoll,是 linux 内核实现IO多路转接/复用(IO multiplexing)的一个实现。O多路转接的意思是在一个操作里同时监听多个输入输出源,在其中一个或多个输入输出源可用的时候返回,然后对其的进行读写操作。

2025-04-13 14:46:22 1041

原创 第四章 Linux套接字通信:8.IO多路转接(复用)之poll

poll的机制与select类似,与select在本质上没有多大差别,使用方法也类似

2025-04-13 14:45:01 718

原创 第四章 Linux套接字通信:7. IO多路转接(复用)

IO多路转接也称为IO多路复用,它是一种网络通信的手段(机制),通过这种方式可以同时监测多个文件描述符并且这个过程是阻塞的,一旦检测到有文件描述符就绪( 可以读数据或者可以写数据)程序的阻塞就会被解除,之后就可以基于这些(一个或多个)就绪的文件描述符进行通信了

2025-04-13 14:42:44 573

原创 第四章 Linux套接字通信:异步通信小结

异步通信可以有效减少 I/O 操作的等待时间,使程序能够在等待 I/O 完成时继续执行其他任务

2025-04-11 15:40:50 601

原创 第四章 Linux套接字通信:6.TCP 套接字通信封装(C/C++)

在掌握了 TCP 套接字通信流程的基础上,对相关通信操作进行了函数级与类级封装

2025-04-11 11:40:21 469

原创 第四章 Linux套接字通信:5.TCP数据粘包的处理

套接字通信是TCP是传输层协议,是一个面向连接的、安全的、流式传输协议。

2025-04-11 09:54:15 799

原创 阻塞 IO和非阻塞IO

阻塞 I/O 是指在执行 I/O 操作时,进程会被挂起(阻塞),直到 I/O 操作完成。

2025-04-10 20:26:14 702

原创 第四章 Linux套接字通信:4.服务器并发

在TCP通信过程中,服务器端启动之后可以同时和多个客户端建立连接,并进行网络通信,但是在介绍TCP通信流程的时候,提供的服务器代码却不能完成这样的需求

2025-04-10 13:28:43 709

原创 第四章 Linux套接字通信:基础信息补充

Socket(套接字)是应用程序通过网络进行通信的端点。不同类型的 Socket,决定了它的传输协议、通信方式、使用场景等。

2025-04-10 10:06:53 499

原创 第四章 Linux套接字通信:3. TCP状态转换、端口复用

在TCP进行三次握手,或者四次挥手的过程中,通信的服务器和客户端内部会发送状态上的变化

2025-04-10 10:04:50 1005

原创 第四章 Linux套接字通信:2.TCP协议

TCP协议是一个安全的、面向连接的、流式传输协议

2025-04-08 20:13:27 682

原创 第四章 Linux套接字通信:1.套接字通信基础

Socket套接字由远景研究规划局(Advanced Research Projects Agency, ARPA)资助加里福尼亚大学伯克利分校的一个研究组研发。

2025-04-08 19:48:34 583

原创 第三章 Linux进程线程:线程进程总结

定义:父进程先于子进程退出,子进程成为 孤儿进程,此时 进程(PID=1)会接管它,并回收其资源。孤儿进程的影响:总结 问题 定义 影响 预防与处理 僵尸进程 子进程退出但父进程未 ,导致进程表项未释放 占用 PID 资源,可能导致新进程无法创建 - 或 处理子进程 - 绑定 信号处理函数 - (Linux) 孤儿进程 父进程先于子进程退出,子进程由 进程接管 影响较小,但可能

2025-04-08 16:38:36 652

原创 第三章 Linux进程线程:10.C语言线程池

线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。

2025-04-08 16:26:08 620

原创 第三章 Linux进程线程:9.线程同步:互斥锁、信号量、条件变量

进程间与线程间通信- 通常用于进程间通信的方式,也可以用于线程间通信。- 信号量不仅适用于进程间同步,还可以用于线程间同步。无名信号量与有名信号量有名信号量:通过唯一的信号量名称标识,在操作系统中有唯一标识,适用于进程间通信。无名信号量:用于进程间通信时,信号量必须存储在共享的内存区域内,进程通过内存地址直接访问这些信号量。二进制信号量与计数信号量二进制信号量:用于互斥,通常充当互斥锁,确保资源的互斥访问。计数信号量:用于控制进程或线程的执行顺序,值的范围可以大于1,用于协调多个进程的顺序。

2025-04-08 15:38:50 832

原创 第三章 Linux进程线程:7.守护进程

守护进程(Daemon Process),也就是通常说的 Daemon 进程(精灵进程),是 Linux 中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。一般采用以d结尾的名字。

2025-04-08 14:16:06 412

转载 第三章 Linux进程线程:6.信号

Linux中的信号是一种消息处理机制,信号也可以实现进程间通信

2025-04-08 14:03:59 375

转载 第三章 Linux进程线程:8.线程概述

进程是资源分配的最小单位,线程是操作系统调度执行的最小单位。

2025-04-08 11:23:31 574

原创 第三章 Linux进程线程:5.消息队列

消息队列

2025-04-07 21:59:46 758

转载 第三章 Linux进程线程:4.共享内存

共享内存不同于内存映射区,它不属于任何进程,并且不受进程生命周期的影响。

2025-04-07 21:39:35 597

转载 第三章 Linux进程线程:3. 内存映射

如果想要实现进程间通信,可以通过函数创建一块内存映射区,和管道不同的是管道对应的内存空间在内核中,而内存映射区对应的内存空间在进程的用户区(用于加载动态库的那个区域),也就是说进程间通信使用的内存映射区不是一块,而是在每个进程内部都有一块。

2025-04-07 20:21:43 415

转载 第三章 Linux进程线程:2.管道

参数说明fd文件描述符,指定要操作的文件、管道或套接字。cmd操作命令,决定fcntl执行的操作。例如:F_GETFL:获取文件状态标志(如O_NONBLOCKF_SETFL:设置文件状态标志。F_GETFDF_SETFD:获取/设置文件描述符标志(如FD_CLOEXECF_GETOWNF_SETOWN:获取/设置文件的所有者(用于异步 I/O)。F_GETLKF_SETLKF_SETLKW:文件锁定控制。arg。

2025-04-07 17:37:22 606

转载 第三章 Linux进程线程:1.进程控制

进程控制并且只占用磁盘上的空间,是一个静态的概念。被执行之后的程序叫做进程,不占用磁盘空间,需要消耗系统的内存,CPU资源,每个运行的进程的都对应一个属于自己的虚拟地址空间,这是一个动态的概念NoteAPI(Application Programming Interface,应用程序编程接口)是一组规则、定义和协议,允许不同的软件程序之间进行交互和通信。

2025-04-07 12:19:29 622

转载 第二章 Linux的文件I/O系统

在Linux系统中,当我们打开或创建一个文件(或套接字)时,操作系统会提供一个 文件描述符(File Descriptor,FD)在Linux 中,文件描述符0、1、2是有特殊含义的。➢ 0是标准输入(stdin)的文件描述符➢ 1是标准输出(stdout)的文件描述符➢ 2是标准错误(stderr)的文件描述符。

2025-04-07 12:10:28 761

原创 第一章 Linux下的C语言开发

gcc的-c参数可以将汇编代码转换为机器码,还可以直接将C语 言源文件转换为机器码,gcc -c main.c就是第二种用法,这里省略了-o main.o。- 静态链接:将所有目标文件和所需的库在编译时一并打包进最终的可执行文件(包括C标准库 (libc)、数学库(libm)和其他任何通过代码引用的外部库。> ① 方式一 gcc main.o hello.o -o main 没有添加-static关键字,**gcc默认执行动态链接**,即glibc库文件没有包含到可执 行文件中。

2025-04-07 11:46:16 352

原创 树莓派桌面写一个脚本运行python程序(自用)来自GPT

现在,您应该可以在桌面上看到一个名为 "Run GxAcquireSoftTrigger" 的图标。双击该图标将会打开一个终端窗口,并在。在桌面上创建一个图标,点击该图标可以打开终端并执行特定的命令。在桌面上创建一个新的文本文件,例如。Python 脚本。

2024-04-04 15:25:28 454 1

原创 树莓派64位 Bookworm 更换国内源

etc/apt/sources.list.d/raspi.list里的软件源是树莓派基金会单独提供/维护的软件源,主要包括raspi-config、minecraftpi、树莓派桌面环境、内核固件驱动等少量软件。一般我们更改的是这个源raspbian这个源是由独立开发者维护的,与树莓派基金会并无直接联系。我们在网上总是只有对应版本的换源操作,没有说明如何去找到属于自己版本的源。然后在此界面选择自己需要的版本:找到自己需要的源。第一步终端输入下面命令打开该文件。1、树莓派基金会提供的源。

2024-03-21 10:39:40 2748 3

原创 树莓派开机启动启动程序(自用)

举例:用于在树莓派终端上创建一个名为的shell脚本。:使用touch命令创建一个名为testboot.txt的文件。使用chmod命令将文件权限设置为777,表示所有用户都有读、写和执行的权限。使用echo命令将字符串"hello pi~"追加到testboot.txt文件中。请注意,使用chmod 777赋予文件最高权限可能会有安全风险,因为它允许所有用户对文件进行读、写和执行。在实际应用中,最好只授予必要的权限,以提高系统的安全性。您可以根据实际需求调整文件权限。

2024-01-17 22:27:38 701

原创 树莓派5GPIO引脚问题

模块时,程序无法确定树莓派的 SOC(System on a Chip)外围设备的基地址。这个错误通常出现在 Raspberry Pi 上使用 GPIO 相关库时,因为这些库需要与硬件通信,而硬件的位置信息是必要的。本人小白,树莓派5在使用GPIO的引脚使用时候,目前官方只给出只能只用GPIO ZERO库。请确保您的系统已连接到互联网,以便从 PyPI(Python 包索引)下载和安装库。确保您的硬件连接正确。某些 GPIO 库可能需要特定的硬件连接,确保与文档一致。确保您使用的 GPIO 库(例如。

2024-01-17 16:57:06 5778 12

原创 树莓派上创建虚拟环境

在树莓派上创建虚拟环境是一种良好的实践,可以帮助您在不同项目之间隔离Python包的依赖关系。以下是在树莓派上使用。使用虚拟环境可以有效地管理项目的依赖项,确保它们不会与系统级的Python包冲突。如果您的树莓派上使用的是Python 2,请使用。一旦虚拟环境被激活,您将看到终端提示符的前面有。在您的项目文件夹中,运行以下命令创建一个名为。激活虚拟环境以开始使用它。为您实际需要安装的包的名称。终端提示符将返回到正常状态。,表示您现在在虚拟环境中。在终端中运行以下命令安装。在虚拟环境中,您可以使用。

2023-12-13 20:13:46 1896 1

空空如也

空空如也

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

TA关注的人

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