自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32平衡车

平衡车控制系统通过传感器、算法和执行器的协同工作实现自平衡与运动控制。系统采用三环PID控制架构:内环(直立PD)通过IMU传感器实时调整车身姿态;中环(速度PI)结合编码器反馈实现速度闭环;外环(转向)处理差速转向指令。开发流程遵循"先调直立、再调速度、最后转向"的节拍,其中直立环PD参数决定平衡稳定性,速度环PI参数影响动态响应。系统硬件包含MPU6050惯性测量单元(含DMP协处理器)、电机编码器、TB6612驱动模块等关键组件。调试过程需注意电源稳定性、信号干扰和机械对称性等常见

2026-05-01 01:45:50 544

原创 Linux驱动编程:内核同步的艺术-从互斥到底半部

本文摘要: 互斥锁(Mutex)和自旋锁(Spinlock)是两种常用的同步机制。互斥锁采用睡眠等待机制,适合锁持有时间较长的场景,能节省CPU资源但存在切换开销;自旋锁采用忙等待机制,适合锁持有时间极短的场景,响应快但消耗CPU。在中断环境下,Linux通过开关中断、自旋锁及其组合来保护共享资源,并将中断处理分为顶半部(快速响应)和底半部(耗时处理),分别使用Tasklet(中断上下文)和Workqueue(进程上下文)实现。开发中应根据场景需求选择合适机制:简单修改变量用原子操作,大段代码保护用锁;紧急

2026-04-26 15:05:06 428

原创 Linux驱动编程核心汇总:阶段一Ⅱ

本文介绍了基于Linux内核的LED驱动开发方法,重点讲解了三种驱动实现方案。首先通过混杂设备框架(miscdevice)构建基础驱动,简化设备注册流程;然后引入设备树机制实现硬件描述与驱动代码分离,提高可移植性;最后采用GPIO子系统抽象硬件操作,通过标准API控制LED。文章详细对比了传统驱动与设备树驱动的差异,分析了设备树在降低维护成本、简化编译环境等方面的优势,并展示了如何通过设备树节点和GPIO子系统API实现更简洁、通用的驱动设计。

2026-04-17 00:40:56 385

原创 Linux驱动编程核心汇总:阶段一Ⅰ

本文记录了Linux系统移植和LED驱动开发的完整过程。系统移植部分完成了uboot、Linux内核和rootfs的制作流程。驱动开发部分详细展示了LED字符设备驱动的实现,包括:1) 驱动框架搭建,包含模块初始化/退出、设备号分配、字符设备注册;2) 文件操作接口实现,包括open/close/read/write等系统调用处理;3) 硬件控制层,通过ioremap映射寄存器地址并实现GPIO控制;4) 用户空间交互,提供sysfs接口和字符设备接口;5) 并发控制,使用互斥锁保护共享资源。同时提供了对应

2026-04-16 08:30:00 330

原创 linux驱动编程2 : uboot、Linux内核、rootfs来源及制作流程

本文介绍了uboot和Linux内核的编译流程及功能结构。uboot部分涵盖源码获取(NXP官方及正点原子修改版)、编译步骤(包括图形界面配置和深度清理)、目录结构解析(如arch体系架构代码、cmd命令实现等)。Linux内核部分包含源码下载(4.1.15版本)、编译流程(默认配置或手动裁剪)、关键目录说明(如arch架构代码、drivers设备驱动)。重点探讨了三个核心问题:在运行程序中添加新代码的方法、利用内核框架操作设备的实现方式,以及MMU开启状态下操作物理地址的技术方案。

2026-04-12 23:21:18 442

原创 Linux驱动编程1:imxull上移植Linux系统

本文介绍了Linux驱动开发的核心内容和imx6ull开发板的系统烧写流程。首先阐述了Linux驱动的实质是将裸机驱动与Linux内核结合开发,强调需要掌握源码分析、Makefile工具、系统操作等能力。接着对比了不同芯片的资源特点,重点说明ARM架构的启动流程、时钟系统和外设配置。然后详细讲解了imx6ull开发板的三种烧写方式:SD卡、EMMC和网络挂载模式,包括uboot引导、内核加载和根文件系统挂载等关键步骤。最后特别说明了网络模式下的环境配置要点,包括双网卡设置、tftp/nfs服务器配置等,为开

2026-04-12 17:17:01 558

原创 C语言:俄罗斯方块项目详解与开发笔记

本文介绍了一个基于C语言实现的终端版俄罗斯方块游戏,采用MVC设计模式,包含游戏模型、视图渲染和控制器三个核心模块。项目支持多级难度调节、彩色界面显示和非阻塞键盘输入等特性,详细说明了编译方法、关键算法(如方块旋转、碰撞检测)和终端控制技术。文章还分享了调试技巧和性能优化建议,并总结了通过该项目掌握的C语言高级特性和游戏开发基础知识。这个结构清晰、功能完整的项目可作为学习C语言游戏开发的典型案例。

2026-04-09 13:30:54 470

原创 ARM裸机学习9——ADC模块详解与应用实践

本文基于i.MX6ULL处理器深入解析其ADC模块开发要点。该ADC采用SAR架构,支持8/10/12位分辨率,最高1MS/s采样率。开发流程包含初始化(配置GPIO、时钟及寄存器)、校准(必需步骤)、数据采集(轮询或中断方式)及滤波优化(中值+均值处理)。关键点包括:时钟需控制在2.5-30MHz范围,复位后必须校准,转换结果需滤波处理提升稳定性。文中提供了完整的寄存器配置说明和代码实现,并针对误差来源和Linux驱动开发给出了优化建议。通过合理配置,该ADC模块可满足高精度数据采集需求。

2026-04-07 22:05:02 722

原创 ARM裸机学习3——用汇编语言点亮 LED

本文介绍了基于IMX6ULL开发板的LED控制实验流程。首先提供了Keil和VSCode两种版本的汇编启动代码框架,包含中断向量表和模式切换设置。随后详细说明了开发板硬件结构,重点讲解了LED和GPIO资源分布。在代码实现部分,分步骤讲解了时钟开启、IO复用配置和GPIO控制的具体汇编实现方法,包括寄存器地址设置和位操作。最后介绍了编译环境的搭建、代码传输方法以及通过SD卡烧写程序的完整流程。实验成功实现了通过GPIO控制LED亮灭的功能,为嵌入式系统开发提供了基础实践范例。

2026-04-06 19:51:18 388

原创 Linux:Linux命令行音视频播放器

本文介绍了基于Linux系统开发的命令行音视频播放器实现方案。项目采用C语言编写控制程序,通过fork()和exec()调用mplayer作为播放后端,利用FIFO管道实现进程间通信。系统支持播放控制、曲目切换、快进快退、播放模式设置等核心功能,并通过SIGCHLD信号处理实现自动连播。文章详细解析了目录扫描、播放控制、终端模式设置等关键代码模块,展示了Linux系统编程中进程管理、IPC通信、信号处理等技术的实际应用。该播放器不仅具备完整功能,更是学习嵌入式系统编程的实践案例,为进一步功能扩展提供了良好基

2026-04-05 23:57:27 756 1

原创 ARM裸机学习8——I2C (Inter-Integrated Circuit,集成电路总线)

本文系统讲解了I²C总线协议的核心原理与嵌入式开发实践。首先解析I²C的物理基础(SCL时钟线、SDA数据线)和通信特征(半双工、地址寻址)。重点阐述了I²C的核心时序规则,包括起始/停止条件、数据传输铁律和应答机制。详细拆解了单字节读写和多字节读写的完整通信流程,并给出IMX6ULL平台的驱动实现代码,涵盖初始化配置、数据收发函数等关键部分。通过AT24C02 EEPROM读写实验演示了I²C设备操作,提供了多设备管理方案和调试技巧。文章最后总结了I²C通信的时序要点和常见问题,为嵌入式开发者提供了完整的

2026-04-03 23:57:19 1124

原创 ARM裸机学习6——UART

摘要:本文详细介绍了嵌入式系统中的UART通信技术。主要内容包括:1.通信基本概念及分类(异步/同步、串行/并行、单工/半双工/全双工);2.UART协议详解(数据格式、电气标准);3.I.MX6U硬件实现(UART资源、原理图);4.软件开发(初始化函数、数据收发函数、stdio库移植);5.实验验证(115200波特率通信)。重点阐述了如何通过硬件配置和软件编程实现稳定可靠的串口通信,并提供了完整的代码实现和Makefile配置方案。

2026-04-01 20:39:15 500

原创 ARM裸机学习2——汇编语言

本文系统介绍了ARM汇编语言的基础知识与应用。主要内容包括:1. ARM汇编核心概念与基础指令(MOV/ADD/SUB/LDR/STR等);2. 跳转指令与程序控制(B/BL/BX及条件跳转);3. 栈操作与函数调用规范(FD栈使用);4. 汇编与C语言互调规则;5. 裸机启动代码模板;6. 常见问题解决方案。重点阐述了汇编在嵌入式开发中的核心作用——为C语言运行环境进行底层初始化,包括配置栈指针、异常向量表等关键操作。文章通过具体代码示例(如三数取最大值、1到100累加等)演示了ARM汇编的典型应用场景。

2026-03-25 21:22:38 617

原创 ARM裸机学习1——ARM体系架构

本文对比了51单片机与ARM架构的主要差异:51采用8位CISC架构,适合简单控制;ARM采用32位RISC架构,具有更高性能和低功耗特性。ARM内核分为A(应用处理器)、R(实时控制)、M(微控制器)三大系列,采用多总线结构和哈佛架构。开发时需注意关闭MMU、启用指令缓存等关键设置。文章还详细介绍了ARM的寄存器结构、7种工作模式、异常处理流程以及编译工具链等核心概念,为嵌入式开发提供了基础理论框架。(149字)

2026-03-24 19:30:22 709

原创 51单片机——UART 串口通信

摘要:本文介绍了串口通信的基本概念,包括TTL、RS232、RS485等电平标准及UART异步串行通信协议特点(全双工、串行传输)。详细解析了51单片机串口相关寄存器(SCON、PCON)配置方法及波特率计算,对比了I2C(半双工)与SPI(全双工)协议特性,并简要说明Modbus工业协议的主从架构。内容涵盖通信方式分类(串行/并行、同步/异步)、数据帧格式(如9600-N-8-1)以及多机通信控制等核心知识点。(150字)

2026-03-23 23:50:34 526

原创 51单片机——DS18B20 温度传感器

DS18B20是一款高精度数字温度传感器,采用单总线通信协议,测温范围为-55℃~+125℃,精度达±0.5℃。其特点包括:支持多设备组网、唯一64位ROM编码、9-12位可调分辨率(默认0.0625℃)、3V-5.5V宽电压供电(含寄生供电)。使用时需外接4.7kΩ~10kΩ上拉电阻,长距离传输需屏蔽线。通信遵循"初始化→ROM命令→功能命令"流程,温度转换需200ms。温度数据为16位补码格式,需将读取的二进制值乘以0.0625获得实际温度值。典型操作流程包括复位、跳过ROM(0xC

2026-03-23 17:12:35 990

原创 51单片机基础外设:中断、定时器/计数器(PWM控制蜂鸣器、电机)

注意:①因为ULN2003的输出是集电极开路,ULN2003要输出高电平,必须在输出口外接上拉电阻。GATA=1 时,要用软件使 TR0 或 TR1 为 1,同时外部中断引脚 INT0/1 也为高电平时,才能启动定时/计数器工作。:加 1 计数器(16 位),由高 8 位和低 8 位两个寄存器 THx 和 TLx 组成。主要应用:继电器驱动器,字锤驱动器,灯驱动器,显示驱动器(LED 气体放电),线路驱动器和逻辑缓冲器。用于设置定时/计数器的工作方式,低四位用于 T0,高四位用于 T1。

2026-03-22 23:29:48 836

原创 51单片机基础外设:GPIO(以LED、按键、数码管为例)

摘要:本文介绍了GPIO的基本概念与工作模式,包括推挽输出、开漏输出等4种输出模式以及上拉输入、下拉输入等4种输入模式。通过LED控制实验,详细讲解了点亮LED、流水灯实现等基础操作,包含电路连接、代码实现及编译信息分析。同时阐述了数码管的工作原理、动态显示技术及驱动电路设计要点,提供了共阴/共阳数码管的段码表。最后介绍了独立按键的硬件特性、消抖处理方法及按键检测函数实现,为单片机外设控制提供了完整的技术参考方案。

2026-03-22 13:55:16 672

原创 51单片机基础

本文系统介绍了51单片机的学习与应用指南。主要内容包括:1.学习方法建议从51单片机入门,掌握核心原理后可快速迁移到其他型号;2.列举了Intel、ATMEL、STC等主流51系列产品;3.详细解析了51单片机的硬件结构、I/O端口特点及自编程能力;4.介绍了开发工具链(Keil、STC-ISP)和逻辑分析仪调试技巧;5.强调了数字电路和C语言基础的重要性,特别讲解了位运算和数据类型转换。文章还展示了51单片机在智能家居、工业控制等领域的广泛应用,为初学者提供了全面的学习路径和实践指导。

2026-03-21 23:57:38 689

原创 数据库编程

SQLite是一种轻量级关系型数据库,适用于嵌入式设备和本地数据管理。本文介绍了SQLite的安装(Linux环境)、基本操作命令(.tables查看表、.schema查看结构)以及核心SQL操作(建表、增删改查)。重点讲解了C语言编程接口的使用流程:sqlite3_open打开数据库、sqlite3_exec执行SQL语句、sqlite3_close关闭连接,并提供了完整示例代码。SQLite因其单文件存储、零配置和跨平台特性,特别适合移动应用、嵌入式系统和小型工具软件的本地数据存储需求。

2026-03-10 07:30:00 779

原创 Linux:TCP并发服务器实现

高性能服务器开发中的IO多路复用技术对比 本文系统分析了构建高性能网络服务器时处理并发连接的核心技术IO多路复用。针对传统"一线程一连接"模型的资源瓶颈问题,详细探讨了Linux系统的四种IO模型,重点比较了三种多路复用实现方案:select、poll和epoll。其中,select受限于1024连接数且效率低下,poll改进了连接数限制但仍需遍历所有描述符,而epoll通过内核事件表实现了O(1)时间复杂度的高效处理。文章通过具体代码示例展示了各技术的实现方式,并指出epoll在支持百

2026-03-09 15:04:36 644

原创 Linux:网络编程-HTTP 协议

本文介绍了HTTP协议的基本概念和工作流程。HTTP作为应用层协议,基于TCP实现客户端与服务器间的数据传输。文章首先解释了HTTP协议定义、URL结构以及超文本概念。重点阐述了HTTP传输流程:1)客户端发起TCP连接;2)发送包含方法、路径等信息的请求报文;3)服务器处理请求并返回状态码和资源的响应报文;4)关闭或复用连接。最后指出理解HTTP的"请求-响应"模型是网络应用开发的基础,掌握报文结构和传输流程对网络调试和Web开发至关重要。

2026-03-09 00:38:26 614

原创 Linux:网络编程-基于HTTP协议的天气预报查询系统开发详解

本文介绍了一个基于C语言开发的天气预报查询系统,该系统通过nowapi网站的API接口获取实时天气数据。系统采用模块化设计,包含网络通信、JSON数据解析和天气展示三大功能模块。关键技术包括:使用socket建立TCP连接获取数据,cJSON库解析JSON格式的天气信息,以及Weather结构体存储和格式化输出天气数据。程序支持查询指定城市的当天及未来7天天气预报,具有高效网络通信、健壮错误处理等特点。文章详细展示了系统架构、核心代码和使用示例,并提出了增加可视化图标、空气质量查询等扩展方向。该系统可作为学

2026-03-08 17:23:48 485

原创 Linux:网络编程-UDP通信

本文介绍了UDP协议的基本原理及编程实现。UDP是一种无连接、不可靠但高效的传输协议,具有资源开销小、传输机制简单等特点。文章详细讲解了UDP通信流程,包括服务端和客户端的操作步骤,以及socket、bind、sendto、recvfrom等关键函数的使用方法。同时提供了两个实用案例:基于UDP的文件传输程序和双向聊天程序,包含完整的C语言代码和Makefile。在实现过程中需要注意IP地址配置、端口绑定、字节序转换等技术细节,并给出了实际测试时的注意事项。这些示例展示了UDP协议在网络编程中的实际应用。

2026-03-08 15:07:01 801

原创 Linux:网络编程-TCP通信

本文介绍了TCP通信协议及其应用实现。主要内容包括:1. TCP协议详解:通过三次握手建立可靠连接,采用确认机制、流量控制和拥塞控制确保传输可靠性,通过四次挥手结束连接;2. 关键函数接口:包括socket、listen、accept、send、recv、connect等函数的功能和参数说明;3. TCP与UDP的区别:从连接性、可靠性、传输模式等方面进行对比;4. 应用示例:提供了基于TCP的双向聊天程序和文件传输程序的完整代码实现,包括客户端和服务端代码,并解决了TCP粘包问题。文中通过具体代码示例展示

2026-03-04 23:25:23 752

原创 Linux:网络编程——wireshark抓包工具使用

Wireshark是一款开源的网络数据包分析工具,可用于捕获和分析网络流量。在Linux环境下安装需先测试网络连通性,通过apt-get命令安装。使用时需以管理员权限启动,选择对应网卡进行抓包。抓包完成后可通过协议类型(如HTTP、TCP、UDP)、端口号或IP地址设置过滤规则,查看特定网络数据。该工具能帮助开发者直观理解数据传输过程,是网络调试的重要工具。

2026-03-03 23:32:04 156

原创 Linux:网络编程基础

本文系统介绍了计算机网络基础知识体系,主要内容包括:1.网络协议模型(OSI七层模型和TCP/IP四层模型)及其对应协议;2.网络层核心概念(IP地址分类、子网划分、公有/私有地址等);3.传输层协议对比(TCP的可靠连接与UDP的无连接特性);4.网络配置相关命令(ifconfig、ping等)。重点解析了TCP/IP协议栈各层功能,详细说明了IP地址的组成、分类及特殊地址,并对比了TCP和UDP协议的特点与应用场景。文章为网络编程提供了扎实的理论基础,涵盖从底层网络接口到上层应用的完整知识框架。

2026-03-02 22:20:28 1410

原创 Linux:进程间通信IPC(interprocess)——消息队列,共享内存,信号灯(system v分支进程通信方法)

本文介绍了Linux系统中三种进程间通信(IPC)机制:消息队列、共享内存和信号灯。消息队列通过ftok生成键值、msgget创建队列、msgsnd/msgrcv收发消息、msgctl销毁队列实现通信。共享内存通过shmget申请内存、shmat映射内存、shmdt解除映射、shmctl删除内存实现高效数据共享。信号灯通过semget创建信号量数组、semctl初始化、semop操作实现进程同步。文中提供了各机制的详细函数接口说明、核心流程步骤和C语言示例代码,包括消息队列的发送/接收程序、共享内存的读写程

2026-02-27 18:59:59 904

原创 Linux:进程间通信IPC(interprocess)——管道、信号

Linux进程间通信(IPC)方式主要包括三类:1)基础IPC如管道(无名管道用于亲缘进程,有名管道支持任意进程)和信号;2)System V IPC对象如共享内存和信号量;3)支持网络通信的socket。管道通过内核队列实现数据传递,具有阻塞特性;信号用于异步通知事件,包含64种类型,其中SIGKILL(9)和SIGSTOP(19)不可屏蔽。关键区别在于:管道传输数据内容,信号仅作事件通知。文中详细介绍了管道创建函数pipe/mkfifo、信号处理函数signal/kill/alarm等接口的使用方法及特

2026-02-26 20:04:01 831

原创 Linux:线程间通信——互斥锁(Mutex)、信号量(Semaphore)

本文摘要: 本文系统介绍了多线程编程中的关键概念和同步机制。主要内容包括:1.临界资源与临界区的定义,以及线程安全问题的成因;2.互斥锁的使用方法(初始化、加锁、解锁、销毁)及其实现线程同步的原理;3.死锁的产生条件(互斥、不可剥夺、请求保持、循环等待)及解决方案;4.信号量的工作原理(PV操作)及其在多线程同步中的应用。通过代码示例展示了互斥锁和信号量的具体实现方式,比较了两者的区别:互斥锁用于排他访问,信号量可实现顺序控制。文章强调线程同步对保证数据一致性的重要性,并提供了避免死锁的实用建议。

2026-02-25 20:41:37 1449

原创 Linux——进程进阶:exec 族

摘要:本文介绍了两个重要的进程控制函数。exec函数族用于进程代码替换,通过不同后缀区分参数传递方式,常与fork()配合使用,执行后原代码段被完全覆盖。system函数则封装了fork()和exec(),提供执行Shell命令的简便接口,适合简单的系统操作。两者都是Linux进程管理的核心工具,但system更侧重易用性,而exec提供更底层的控制。

2026-02-11 18:20:27 443

原创 Linux:线程(thread)

本文摘要: 线程是轻量级进程,依附于进程存在,实现程序并发处理。核心区别在于:进程是资源分配最小单元,线程是CPU调度最小单元。线程创建时默认分配8MB独立栈空间,共享进程的文本/数据/堆区。多线程优势在于高效调度和通信,但线程崩溃会导致进程终止;多进程则更安全但开销大。主要线程操作包括:pthread_create创建、pthread_exit退出、pthread_join阻塞回收、pthread_self获取ID等。线程属性可设置为JOINABLE(需手动回收)或DETACHED(自动回收)。实际应用中

2026-02-11 18:01:03 931

原创 Linux: 进程(Process)

本文介绍了进程的基本概念及相关操作。进程是程序的动态执行过程,包含创建、调度和消亡等阶段。文章详细讲解了进程查看命令(top、ps)、管理命令(kill、前后台操作)以及优先级设置(nice、renice)。同时阐述了进程的内存映射机制(MMU)和虚拟地址空间分布,包括文本段、数据段、堆栈区等。此外还介绍了7种进程调度算法和6种进程状态(运行态、就绪态等)。最后说明了进程创建函数fork的使用方法及其特性,包括子进程对父进程资源的拷贝机制。全文系统性地梳理了进程管理的核心知识点。

2026-02-10 17:46:41 872

原创 Linux:时间函数

C语言时间处理函数摘要:time()函数获取1970年1月1日至今的秒数,参数为存储地址,返回秒数或-1(失败)。localtime()将秒数转换为包含时区的日历时间,返回tm结构体,包含年、月、日等详细信息。mktime()则执行反向操作,将tm结构体转换为秒数。这些函数位于time.h头文件,用于系统时间处理和时间格式转换。

2026-02-10 00:30:22 361

原创 Linux软件编程:IO编程——目录IO

摘要:本文介绍了Linux目录操作相关函数,包括:opendir()打开目录流,closedir()关闭目录流,readdir()读取目录项;mkdir()创建目录,rmdir()删除空目录;chdir()切换工作目录,getcwd()获取当前路径。重点说明了各函数的参数、返回值及使用注意事项,如内存泄漏预防和目录权限设置。最后提到可通过综合练习掌握目录创建、删除、切换和文件遍历等操作。这些函数是Linux系统编程中目录操作的基础。

2026-02-09 16:46:43 434

原创 Linux软件编程:IO编程——文件IO

文件IO与标准IO是Linux系统中的两种文件操作方式。标准IO通过库函数实现,具有缓存机制,适合普通文件操作;文件IO是系统调用,无缓存,适用于设备文件和实时通信。文件IO接口包括open、close、read、write和lseek等函数,通过文件描述符操作文件。标准IO本质上是文件IO的封装,系统默认打开0(stdin)、1(stdout)、2(stderr)三个文件描述符。文件描述符具有上限限制,新描述符总是使用最小可用整数。两种IO方式可通过dup/dup2函数相互转换。

2026-02-09 14:04:07 828

原创 Linux软件编程:IO编程——标准IO

本文摘要:本文系统介绍了Linux标准I/O编程的核心概念和接口函数。主要内容包括:1)标准I/O的三种缓存形式(全缓存、行缓存、不缓存)及其应用场景;2)文件操作三步骤(打开、读写、关闭)及fopen/fclose函数详解;3)字符处理(fgetc/fputc)、行处理(fgets/fputs)、格式化I/O(fscanf/fprintf)和二进制I/O(fread/fwrite)函数;4)文件定位(fseek/ftell/rewind)和状态检查(feof/ferror)函数。重点强调Linux&quo

2026-02-06 17:35:42 976

原创 Linux:软件编程

本文介绍了Linux操作系统基础知识和Shell编程要点。主要内容包括:1)Linux系统概述,包括其发展历史、特点、组成架构和核心功能;2)常用Shell命令,如文件操作、查看、搜索、权限管理等基础命令;3)Shell脚本编程,涵盖变量、分支、循环、数组、函数等语法结构。文章详细对比了解释型和编译型语言的特点,并系统讲解了Shell脚本的开发流程、引号使用、环境变量等核心概念。通过具体命令示例和脚本范例,帮助读者快速掌握Linux系统管理和Shell编程的基本技能。

2026-02-05 19:06:55 2274

原创 排序算法:常用排序算法

本文系统介绍了程序效率的衡量指标和常见算法的时间复杂度。主要内容包括:1)程序效率的核心指标是时间复杂度和空间复杂度,列举了从O(1)到O(2^n)的常见复杂度等级;2)详细分析了冒泡排序、选择排序、插入排序等O(n^2)算法,特别指出插入排序在数据基本有序时可达O(n);3)介绍了希尔排序(改进版插入排序)和快速排序两种O(nlogn)高效算法,阐述其分治思想;4)讲解了折半查找的O(logn)查找算法。通过代码实现和运行时间测试,全面比较了各类算法的性能特点,为算法选择提供参考依据。

2026-02-04 14:58:46 645

原创 数据结构:哈希表(Hash table)

摘要:哈希表是一种基于键值对的高效数据结构,通过哈希函数将关键码映射到表中位置实现快速访问(O(1)时间复杂度)。其核心包括哈希算法、哈希冲突(不同数据映射到同一位置)及解决方法(如链地址法,即用链表存储冲突数据)。示例展示了哈希表的基本操作:创建、插入数据、显示全部数据、查找单个数据及销毁哈希表。

2026-02-03 23:52:47 217

空空如也

空空如也

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

TA关注的人

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