自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

QinMou

https://gitee.com/wang-qin928

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

原创 Linux:进程信号

掌握Linux信号的基本概念。掌握信号产⽣的⼀般⽅式。理解信号递达和阻塞的概念,原理。掌握信号捕捉的⼀般⽅式。了解中断过程,理解中断的意义掌握操作系统运⾏,系统调⽤原理,理解缺⻚异常或其他软件异常的基本原理重新了解可重⼊函数的概念。了解竞态条件的情景和处理⽅式。了解SIGCHLD信号, 重新编写信号处理函数的⼀般处理机制

2025-03-22 21:52:41 1088

原创 Linux:进程间通信

进程间通信的底层原理,匿名管道,命名管道fifo,system V的共享内存

2025-03-07 14:21:14 838

原创 Linux:ELF文件-静动态库原理

详解ELF文件静态库和动态库原理

2025-02-27 15:48:03 864

原创 Linux:动静态库

库是写好的现有的,成熟的可以复用的代码。现实中每个程序都需要依赖很多基础的底层库。世界上有很多大佬为了实现某一个功能,写了很多很NB的代码。他们把代码封装成一个库,这样我们不必写出像他们一样厉害的代码,只需要使用它们分享的库,也能使用对应的功能了。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。静态库 .a[Linux/macOS]、.lib[windows]动态库 .so[Linux]、.dll[windows]、.dylib[macOS]

2025-02-13 17:32:55 982

原创 Linux:EXT2文件系统

磁盘结构,分区,CHS寻址,LBA寻址,inode,Super_Block,GDT,块位图,inode位图,inode节点表,Data Block,路径解析,路径缓存,挂载分区,软硬链接,ACM时间,理解一切皆文件。

2025-01-20 22:09:05 947

原创 MySQL:索引

认识磁盘、磁盘的和操作系统是如何进行IO的、数据库与操作系统的IO、索引的原理及其底层数据结构B+树、如何创建索引、复合索引。

2025-01-02 17:54:50 1075

原创 MySQL:复合查询

介绍复合查询方法包括:多表查询、自连接、子查询(单行、多行、多列等)、from 子句子查询、合并查询(union、union all)、内外连接等

2024-12-24 20:39:41 1181

原创 MySQL:内置函数

MySQL 中常用的日期、字符串、数学及其他函数的基本用法,包括日期操作(如 current_date() 和 date_add())、字符串操作(如 concat() 和 replace())、数学函数(如 abs() 和 mod())以及加密函数(如 SHA2() 和 md5())。

2024-12-22 19:53:09 769

原创 MySQL:基本查询

全面阐述 MySQL 中 CRUD 操作。涵盖创建数据的多种插入方式,检索数据的各类查询语法,更新数据的列值变更,删除数据的不同方法,还介绍聚合函数、group by 子句、having 用法及 truncate 与 delete 区别等重要知识。

2024-12-21 17:33:32 1061 2

原创 MySQL:约束

介绍数据库空属性、默认值、列描述、zerofill、主键、自增长、索引、唯一键、外键等概念,包括其作用、特点、语法及应用案例。

2024-12-12 19:09:41 817

原创 MySQL:数据类型

介绍 MySQL 数据类型,包括数值(如 INT、FLOAT 等)、文本二进制(CHAR、VARCHAR 等)、时间日期、ENUM 和 SET 类型,阐述各类型特点、范围、存储方式及应用场景,还有相关注意事项与案例。

2024-12-12 18:15:33 976

原创 Linux:文件与IO

C 语言文件操作,如多种函数及打开模式;系统调用接口,如 open、close、write、read 函数及其参数、返回值;还介绍文件描述符原理,进程与文件联系,以及磁盘与内存文件关系,重定向原理,语言缓冲区,内核缓冲区,阐释基本文件操作原理与机制。

2024-12-07 18:09:26 1068

原创 Linux:进程(二)

进程退出的场景、退出码以及 exit 与_exit 函数。进程等待的原因和方法,status 参数、wait 和 waitpid 函数,非阻塞轮询。进程替换的概念、函数,如 execl、execle、execv。

2024-11-28 23:52:54 696

原创 MySQL:库和表的操作

想了解MySql中库和表的基本增删查改操作吗?这篇文章带你快速上手MySql!!!

2024-11-25 16:24:53 1295

原创 MySQL:数据库基础

想了解数据库的基本概念吗,想知道为什么有了文件还需要数据库存储呢?快来看看这篇文章,快速了解数据库!!!

2024-11-25 14:40:03 1053

原创 Linux:环境变量与程序地址空间

想知道什么是环境变量,为什么会存在环境变量,程序地址空间的相关知识吗?快来看看这篇文章!!!

2024-11-24 22:48:25 796

原创 Linux:进程(一)

著名的冯诺依曼结构,什么是操作系统,为什么需要操作系统,进程是什么,进程如何创建,进程的状态,什么是僵尸进程和孤儿进程,进程优先级,O(1)调度算法。

2024-11-22 15:07:03 934

原创 Linux:版本控制器git和调试工具cgdb

为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。 ⽬前最主流的版本控制器就是 Git 。

2024-11-16 16:02:03 992

原创 C++进阶:异常

异常处理机制允许程序中独⽴开发的部分能够在运⾏时就出现的问题进⾏通信并做出相应的处理, 异常使得我们能够将问题的检测与解决问题的过程分开,程序的⼀部分负责检测问题的出现,然后解决问题的任务传递给程序的另⼀部分,检测环节⽆须知道问题的处理模块的所有细节。

2024-11-02 21:56:21 815

原创 C++进阶:C++11的新特性

2011年,C++标准委员会发布了C++11标准,这是C++的一次巨大飞跃,引入了许多重要的新特性,如智能指针、lambda表达式、并发编程支持等。这一版本的发布对C++社区产生了深远的影响,使得C++在现代软件开发中更具竞争力。

2024-11-01 22:19:35 1040

原创 Linux:编辑器Vim和Makefile

vim主要的三种模式分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)

2024-10-27 14:12:29 1460

原创 Linux:权限

目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入, 即使目录仍然有-r读权限。(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

2024-10-26 22:08:10 982

原创 C++进阶:哈希

哈希(hash)⼜称散列,是⼀种组织数据的⽅式。从译名来看,有散乱排列的意思。本质就是通过哈希函数把关键字Key跟存储位置建⽴⼀个映射关系,查找时通过这个哈希函数计算出Key存储的位置,进⾏快速查找。

2024-10-21 14:47:30 849 1

原创 C++进阶:实现红黑树

红⿊树是⼀棵⼆叉搜索树,他的每个结点增加⼀个存储位来表示结点的颜⾊,可以是红⾊或者⿊⾊。 通过对任何⼀条从根到叶⼦的路径上各个结点的颜⾊进⾏约束,红⿊树确保没有⼀条路径会⽐其他路径⻓出2倍,因⽽是接近平衡的。

2024-10-11 23:04:22 772 1

原创 Linux:基本指令

XShell 下的复制粘贴复制: ctrl + insert (有些同学的 insert 需要配合 fn 来按)粘贴: shift + insertctrl + c / ctrl + v 是不行的

2024-10-03 22:54:01 862 17

原创 C++进阶:AVL树保持平衡的秘诀

AVL树整体结点数量和分布和完全⼆叉树类似,⾼度可以控制在log(n),那么增删查改的效率也可 以控制在O(log(n)),相⽐⼆叉搜索树有了本质的提升。

2024-09-29 11:40:22 1097 8

原创 C++进阶:set和map

set是key搜索场景的结构, map是key/value搜索场景的结构。它们的底层都是红黑树,红⿊树是⼀颗平衡⼆叉搜索树。

2024-09-27 18:27:31 683 17

原创 C++进阶:二叉搜索树

另外,⼆分查找也可以实现O(logN) 级别的查找效率,但是⼆分查找有两⼤缺陷:1. 需要存储在⽀持下标随机访问的结构中,并且有序。2. 插⼊和删除数据效率很低,因为存储在下标随机访问的结构中,插⼊和删除数据⼀般需要挪动数 据。 这⾥也就体现出了平衡⼆叉搜索树的价值。

2024-09-16 20:27:23 1229 16

原创 C++进阶:多态

• 对不满⾜多态条件(指针或者引⽤+调⽤虚函数)的函数调⽤是在编译时绑定,也就是编译时确定调⽤函数的地址,叫做静态绑定。• 满⾜多态条件的函数调⽤是在运⾏时绑定,也就是在运⾏时到指向对象的虚函数表中找到调⽤函数的地址,也就做动态绑定。

2024-09-14 13:22:32 922 16

原创 C++进阶:继承

继承(inheritance)机制是⾯向对象程序设计使代码可以复⽤的最重要的⼿段,它允许我们在保持原有类特性的基础上进⾏扩展,增加⽅法(成员函数)和属性(成员变量),这样产⽣新的类,称派⽣类。

2024-09-12 11:34:10 1116 16

原创 C++初阶:stack&queue&deque

但是,deque有一个致命缺陷:不适合遍历,因为在遍历时,deque的迭代器要频繁的去检测其是否移动到某段小空间(缓冲区)的边界,导致效率低下,而序列式场景中,可能需要经常遍历,因此在实际中,需要线性结构时,大多数情况下优先考虑vector和list,deque的应用并不多,而目前能看到的一个应用就是,STL用其作为stack和queue的底层数据结构。

2024-09-07 17:13:24 661 14

原创 C++初阶:list

(1)这里的list迭代器的实现不再是简单的原生指针,而是对原生指针进行了一层封装,使它更符合迭代器的行为(2)这里多加两个模板参数,主要是 * -> 两个操作符重载访问Node里面的内容。如果调的是const_iterator,那么返回的就是const指针(const修饰指针指向的内容不可修改)或引用如果调用普通的iterator,返回普通指针或引用。(3)这样通过模板编译器其实还是会生成两个类,减少了重复的代码(4)list的迭代器不是随机迭代器,而是双向迭代器。

2024-08-08 22:04:04 658 24

原创 C++初阶:vector

vector和我们之前学的顺序表的结构是差不多的,用一个动态开辟的数组来储存管理数据。vector的底层和顺序表有点区别。(后续会讲到)

2024-08-02 13:34:52 870 6

原创 C++初阶:string

C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列 的库函数,但是这些库函数与字符串是分离开的,不太符合OOP:面向对象编程(Object-Oriented Programming,简称OOP)的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。

2024-07-27 00:01:45 724 14

原创 C++初阶:模板

泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。

2024-07-22 10:26:24 1100 11

原创 C++初阶:动态内存管理

1. 栈(stack)又叫堆栈--非静态局部变量/函数参数/返回值(数据,地址)等等,栈是向下增长的。2. 内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口 创建共享共享内存,做进程间通信。3. 堆(heap)用于程序运行时动态内存分配,堆是可以上增长的。4. 数据段(静态区)--存储全局数据和静态数据,程序结束后由系统释放。5. 代码段--可执行的函数(类成员函数和全局函数)二进制代码/只读常量。

2024-07-21 22:29:44 744 10

原创 C++初阶:类和对象(三)

初始化列表的使⽤⽅式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成 员列表,每个"成员变量"后⾯跟⼀个放在括号中的初始值或表达式。

2024-07-18 22:12:02 983 11

原创 C++初阶:类和对象(二)

默认成员函数就是用户没有显式实现,编译器会⾃动⽣成的成员函数称为默认成员函数。⼀个类,我们不写的情况下编译器会默认⽣成以下6个默认成员函数

2024-07-15 17:08:08 1026 13

原创 C++初阶:类与对象(一)

⾯向对象三⼤特性:封装、继承、多态

2024-07-10 21:11:47 1367 9

原创 C++初阶:从C过渡到C++的入门基础

定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下⾯的rand不再冲突了。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/类型出处(声明或定义)的逻辑,所以有了域隔离,名字冲突就解决了。

2024-07-09 00:11:05 921 13

51单片机LED8*8点阵显示坤坤跳舞打篮球画面

直接将此文件用stc_isp烧录进stc89c52就行

2024-07-27

基于C语言开发的《贪吃蛇双人版》小游戏

一号玩家用WSAD控制蛇的方向,二号玩家用上下左右控制蛇的方向,寻找吃的东西,每吃一口就能得到一定的积分,而且蛇的身子会越吃越长,身子越长玩的难度就越大,不能碰墙,不能咬到自己的身体,更不能咬自己的尾巴。任何一条蛇以任何方式死亡,都被视为游戏结束,积分高者获胜。 贪吃蛇游戏最初为单机模式,后续又陆续推出团战模式、赏金模式、挑战模式等多种玩 这里的贪吃蛇游戏由C语言开发: • 贪吃蛇地图绘制 • 蛇吃⻝物的功能(上、下、左、右,W、S、A、D⽅向键控制蛇的动作) • 蛇撞墙死亡 • 蛇撞⾃⾝死亡 • 计算得分 • 按下{【、】}|键,两条蛇同时加速、减速 • space暂停游戏

2024-04-28

基于C语言开发的贪吃蛇小游戏

用上下左右控制蛇的方向,寻找吃的东西,每吃一口就能得到一定的积分,而且蛇的身子会越吃越长,身子越长玩的难度就越大,不能碰墙,不能咬到自己的身体,更不能咬自己的尾巴。 贪吃蛇的目标就是长成最长的一条蛇! 贪吃蛇游戏最初为单机模式,后续又陆续推出团战模式、赏金模式、挑战模式等多种玩法。 这里的贪吃蛇游戏由C语言开发: • 贪吃蛇地图绘制 • 蛇吃⻝物的功能(上、下、左、右⽅向键控制蛇的动作) • 蛇撞墙死亡 • 蛇撞⾃⾝死亡 • 计算得分 • 蛇⾝加速、减速 • 暂停游戏

2024-04-19

空空如也

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

TA关注的人

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