自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络编程之UDP广播与粘包问题

本文介绍了UDP广播通信的实现原理和应用场景。UDP广播通过广播地址255.255.255.255实现局域网内的"点对多"通信,需使用setsockopt()开启SO_BROADCAST选项。文章对比了TCP和UDP的通信特点,TCP存在粘包问题,可通过自定义报文格式解决,而UDP以报文为单位不会产生粘包。文中提供了UDP广播的发送端和接收端示例代码,展示了如何实现广播功能。广播通信适用于局域网环境,简单高效,但需注意网络负载问题。

2025-09-14 23:05:57 836

原创 C语言之函数

本文系统介绍了C语言函数的相关知识,主要包括:1. 函数的基本概念,包括模块化程序设计思想、函数分类(库函数/自定义函数、有参/无参函数);2. 函数定义与调用,详细说明了函数定义格式、形参与实参的关系、函数返回值机制;3. 函数的特殊调用方式,包括嵌套调用和递归调用;4. 数组作为函数参数时的注意事项;5. 变量的作用域(局部/全局变量)和存储类型(auto/static/extern/register);6. 内部函数与外部函数的区别。文章通过组合数计算等实例,阐述了函数在代码复用和程序结构化中的重要作

2025-09-14 14:48:00 364

原创 MySQL 数据类型与运算符详解

本文系统介绍了MySQL的核心功能:1.数据类型分为整数、小数、字符串、日期等多种类型,需根据业务需求选择;2.运算符包括算术、比较、逻辑等五类,使用时需注意优先级和NULL值处理;3.存储引擎主要有InnoDB、MyISAM等,各自适用于不同场景,InnoDB支持事务适合高并发。掌握这些基础知识可提升MySQL使用效率。

2025-09-11 22:46:40 115

原创 mysql简介

本文系统介绍了MySQL数据库的基础知识,包括数据库概念、安装部署、核心组件及SQL语言操作。主要内容涵盖:1.数据库基本概念与分类;2.MySQL特点及安装步骤;3.核心文件位置与实用工具;4.SQL语言分类及语法规范;5.数据库服务管理及基础操作。文章重点讲解了MySQL的启动关闭、登录退出、数据库创建/删除等实用操作,同时介绍了系统数据库的作用和用户数据库管理方法。最后还提供了MySQL命令行帮助功能的使用说明,为初学者提供了全面的MySQL入门指导。

2025-09-11 22:34:10 1261

原创 数据结构之二叉树

本文介绍了树和二叉树的基本概念及操作。首先定义了树的结构和相关术语,如结点、度、层次等。重点讲解了二叉树的几种特殊类型:满二叉树、完全二叉树和二叉排序树,并分析了它们之间的关系。随后详细阐述了二叉树的各种操作,包括创建、插入、遍历(前序、中序、后序)、查找和删除节点,每种操作都配有C语言实现代码。特别是对复杂的删除操作,区分了三种不同情况并给出了解决方案。通过示例程序演示了各种操作的执行过程和结果,全面展示了二叉树在数据结构中的应用。

2025-09-09 22:23:54 1302

原创 数据结构之链表(单向链表与双向链表)

本文介绍了链表数据结构的基本概念和实现方法。主要内容包括:1.链表的基本结构,包含头指针和结点(数据域+指针域);2.单向链表的设计与实现,详细说明了创建、插入(头插/尾插/中间插入)、删除、查询、更新、遍历和回收等操作;3.双向链表的设计实现,通过增加前驱指针提高操作效率;4.两种链表的对比分析,指出单向链表结构简单但操作受限,双向链表操作灵活但占用更多内存;5.提供完整的C语言实现代码示例。链表适用于数据量不确定且需要频繁增删的场景,读者可根据具体需求选择合适的链表类型。

2025-09-08 21:20:22 948

原创 万字详解网络编程之socket

Socket是网络通信的核心接口,提供进程间跨主机的通信能力。文章首先介绍了Socket的基本概念和三种类型(流式、数据报、原始套接字),以及网络字节序转换的必要性。随后详细讲解了基于TCP/IP协议的Socket通信流程,包括创建套接字、绑定地址、监听连接等关键API,并给出了并发服务器示例代码。最后阐述了UDP通信的特点和相关API,包括无连接的数据报发送/接收方式。全文通过对比TCP和UDP的通信机制,系统性地介绍了Socket编程的核心知识点,为网络应用开发提供了实用指导。

2025-09-07 20:32:43 861 2

原创 万字详解网络编程之TCP/IP协议与UDP协议

本文介绍了TCP/IP网络协议栈的核心概念和实现。首先阐述了IP协议的作用(数据包传输)和IP地址分类(IPv4/IPv6、公网/内网),以及端口号、域名等网络基础概念。重点讲解了TCP协议的可靠传输机制,包括三次握手建立连接、四次挥手断开连接的过程,以及TCP数据包格式。同时对比了UDP协议的无连接特性。文章还分析了OSI七层模型与TCP/IP四层模型的区别,并通过C语言示例代码(TCP服务器/客户端、UDP服务器/客户端)演示了网络编程的具体实现。最后指出TCP适用于可靠性要求高的场景,而UDP更适合实

2025-09-07 17:56:37 1313

原创 Linux线程与线程池

本文将系统介绍线程的基本概念、实现原理及POSIX线程库的应用。主要内容包括:1.线程是CPU调度的基本单位,相比进程更轻量级,具有共享地址空间、通信便捷等优势;2.POSIX线程库函数详解,涵盖线程创建、等待、取消、属性设置等核心操作;3.通过生产者-消费者模型展示多线程编程实践;4.线程池工作机制及其实现,包括任务队列管理、线程调度等关键技术。文章最后提供了完整的线程池实现代码,演示了如何高效处理并发任务。全文以Linux系统为背景,强调线程在提升程序性能方面的重要作用。

2025-09-05 22:00:29 952

原创 Linux消息队列

消息队列是Linux系统中实现进程间通信的重要机制。它通过内核维护的消息链表实现,具有随机查询、多进程读写等特点,相比管道更适合频繁数据交换。文章详细介绍了消息队列的核心数据结构(如msgbuf、msqid_ds)和关键系统调用(msgget创建/获取队列、msgsnd发送消息、msgrcv接收消息、msgctl控制队列)。通过单进程收发消息和双进程通信的完整代码示例,展示了消息队列的实际应用方式,包括消息类型定义、队列创建、消息收发及队列销毁等典型操作流程。

2025-09-05 08:30:00 674

原创 进程通信之信号量

摘要:信号量是一种用于进程/线程同步的机制,通过整型计数器控制共享资源的访问。Linux提供内核信号量和用户态信号量(POSIX和SystemV)。信号量通过P/V操作实现:P操作减1,若结果小于0则阻塞;V操作加1,若结果仍小于0则唤醒等待进程。SystemV信号量API包括semget(创建)、semctl(控制)、semop(操作)等函数。典型使用步骤为:创建信号量、初始化、执行P/V操作、最后删除信号量。示例程序演示了父子进程通过信号量实现文件访问的互斥操作。

2025-09-03 22:56:21 981

原创 进程通信之共享内存

共享内存就是允许两个不相关的进程访问同⼀个逻辑内存。共享内存是在两个正在运⾏的进程之间共享和传递数据的⼀种⾮常有效的⽅式。采⽤共享内存的通信效率⽐较⾼。优点:因为所有进程共享同⼀块内存,所以共享内存在各种进程间通讯⽅式中具有最⾼的效率,因为进程可以直接读写内存,⽽不需要任何数据的拷⻉。缺点:因为所有进程共享内存,就会引起同步的问题,⽽系统对访问共享内存没有进⾏同步机制,就需要⽤户⾃⼰来提供同步措施。IPCS命令简介。

2025-09-03 10:27:25 1107

原创 Linux进程通信之信号

信号机制与处理函数摘要 信号是Linux系统中进程间通信的异步事件通知机制,模拟硬件中断,用于处理突发事件(如Ctrl+C触发SIGINT)。信号分为不可靠信号(1-31,可能丢失)和可靠信号(32-64,支持排队)。常见信号来源包括进程调用(kill/raise)、终端操作、子进程终止(SIGCHLD)及定时器(SIGALRM)。 关键处理函数: kill():向指定进程发送信号,支持进程组广播。 alarm():设置定时器,到期发送SIGALRM。 sigaction():高级信号处理,支持带参回调(如

2025-09-01 09:00:00 1311

原创 Linux进程间通信之管道

进程间通信(Inter-Process Communication, IPC)是指在两个或者多个不同进程间传递或者交换信息,通过信息的传递建立几个进程间的联系,协调⼀个系统中的多个进程之间的行为。每个进程各⾃有不同的⽤户地址空间,任何⼀个进程的全局变量在另⼀个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟⼀块缓冲区,进程A把数据从⽤户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读⾛,内核提供的这种机制称为进程间通信。

2025-08-31 17:14:46 547

原创 进程创建,退出以及各种进程

本文介绍了进程创建与管理的相关概念和函数。主要内容包括:1)进程创建方式(系统/父进程创建)及system、fork函数的使用;2)特殊进程状态(孤儿/僵尸进程)及其处理方法;3)进程退出机制(正常/异常退出);4)vfork与fork的区别;5)多进程环境下的文件描述符共享特性;6)exec函数族的功能及使用方法。文章详细说明了各系统调用的函数原型、参数含义和返回值,并通过代码示例展示了实际应用场景。最后强调了合理使用这些函数对避免进程资源泄漏的重要性。

2025-08-31 15:51:29 910

原创 Linux进程简介

Linux进程管理摘要:Linux是多用户多任务操作系统,通过进程调度实现并发执行。进程是程序执行的动态实例,具有唯一进程ID(PID),由内核通过进程控制块(PCB)管理。进程内存映像包含代码段、数据段、堆栈段等结构。进程状态包括就绪、运行、阻塞等,并会相互转换。进程分为交互式、批处理和守护进程三类。常用命令如ps、top查看进程,kill终止进程。

2025-08-25 21:49:13 927

原创 Linux之文件IO

⽂件就是存储在硬件磁盘上的数据集合,在Linux中,⼀切都是⽂件,如c源码⽂件,shell脚本,可执⾏⽂件,视频⽂件等,就连键盘,显示器,⿏标等硬件设备也都是⽂件。1.2文件描述符1)什么是文件描述符?⼀个Linux进程(正在运⾏程序)可以打开成百上千个⽂件,为了表示和区分已经打开的⽂件,linux会给每个⽂件分配⼀个编号,这个编号是⼀个正整数,被称为⽂件描述符。程序打开⼀个现有⽂件或者创建⼀个新⽂件时,内核向进程返回⼀个⽂件描述符。2)如何查看文件描述符的范围?

2025-08-21 22:35:34 1014 1

原创 STM32入门教程:LED灯闪烁,流水灯实现及按键控制

本教程基于STM32F407开发板标准库开发,详细介绍了LED和按键控制的实现方法。首先分析LED电路原理图,确定PF9/PF10引脚控制LED1/LED0(低电平点亮)。通过SysTick定时器实现精确延时功能,编写了LED初始化及控制函数,实现LED闪烁和流水灯效果。随后扩展按键控制功能,针对WK_UP(PA0)和KEY0(PE4)按键分别采用高/低电平检测,通过延时消抖和状态翻转机制,实现了按键控制LED开关的功能。教程从基础LED驱动到按键交互,循序渐进地展示了STM32外设开发的完整流程。

2025-08-16 14:47:36 393 1

原创 商场购物结算系统

摘要:本项目是一个基于C语言开发的商场购物结算系统,模拟超市购物全流程,包括商品购买、退货、更换及查看功能。系统采用模块化设计,通过product、cart、member等模块组织代码,使用结构体管理商品和会员数据,数组存储购物车和会员信息。会员机制支持折扣和积分累积,结账时自动计算优惠金额和积分奖励。系统通过菜单交互实现功能调用,具有良好可读性和可维护性。技术实现包括C语言标准库函数调用、字符串处理、结构体应用和函数流程控制等,有效提升了购物结算效率和用户体验。

2025-07-14 11:10:14 404 1

原创 队列设计与实现(包含顺序队列和链式队列)

队列:是一种先进先出 FIFO 后进后出 LILO 的数据管理方式。分为:1.顺序队列/环形队列(数据存储使用数组方式)2.链式队列(数据存储采用链表方式)

2025-04-28 09:42:40 267

原创 C语言选择排序

c语言一维数组快速排序

2025-03-24 00:04:02 275

原创 C语言冒泡排序

c语言一维数组冒泡排序

2025-03-23 23:55:42 288

原创 基于51单片机的篮球计数器

使用51单片机实现篮球计数器功能,每当双方球队进球后可以实现计分功能,并且还有开始和暂停功能,当按下开始按钮,其中一块显示屏进行单节15分钟倒计时,当按下暂停键,倒计时暂停,15分钟倒计时结束后触发蜂鸣器报警。24秒违例功能,当单个回合一方进攻时间超过24秒,触发蜂鸣器报警功能。还有换场功能,当双方进行两节比赛后,后两节交换场地。还有加时间和减时间按钮,假如出现时间计算错误或者忘记暂停时间,可以通过该按钮修正。

2025-02-08 19:57:22 162

原创 五子棋游戏

game2pwindow.h和game2pwindow.cpp实现两个玩家互相对战的功能,gameaiwindow.h和gameaiwindow.cpp实现玩家和电脑ai进行对战的功能。整体程序使用painter画笔的方式绘制五子棋棋盘和棋子等,并未使用qt的ui设计。其中gameaiwindow.cpp中的aiMove()函数也可替换为更高级的算法,使电脑下棋更加智能。

2025-02-08 19:23:21 391

空空如也

空空如也

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

TA关注的人

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