自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL数据类型介绍

本文主要介绍了MySQL中的主要数据类型及其特性。数值类型部分详细讲解了tinyint的越界测试、bit类型的存储方式及M参数含义,以及float和decimal两种小数类型的精度差异。字符串类型重点对比了固定长度的char和可变长度的varchar,通过工位与背包的生动比喻说明两者在存储机制和适用场景上的区别。日期时间类型介绍了date、datetime和timestamp三种常用格式的表示范围和存储空间。文章通过具体案例演示了各类型的数据操作,并强调了数据约束的重要性,为数据库设计中的数据类型选择提供了

2025-08-05 21:18:21 569

原创 Linux中《动/静态库原理》

本文深入解析了ELF(Executable and Linkable Format)文件格式在编译链接过程中的关键作用。从目标文件(.o)生成、多文件合并到可执行文件加载,详细阐述了ELF文件的四种类型(可重定位、可执行、共享目标、核心转储)及其四部分结构(ELF头、程序头表、节头表、节)。重点介绍了readelf工具的使用方法,并通过实例展示了可执行程序加载时Section合并为Segment的过程,揭示了程序从编译到运行的底层实现机制。

2025-06-29 21:31:09 707

原创 Linux中《动/静态库制作》

库是预编译的可复用代码集合,分为静态库(.a/.lib)和动态库(.so/.dll)。静态库在编译时直接嵌入程序,运行时不再需要;动态库则在程序运行时加载,多个程序可共享同一库。静态库使用ar工具打包.o文件生成,动态库通过gcc的-shared和-fPIC选项生成。使用库时需要指定头文件路径(-I)、库路径(-L)和库名(-l)。动态库运行时需确保系统能找到库文件,可通过拷贝库文件、建立软链接、设置LD_LIBRARY_PATH环境变量或配置/etc/ld.so.conf.d/目录实现。

2025-06-27 14:37:40 649

原创 Linux -- Ext系列文件系统介绍

本文用生活化比喻解释了磁盘、服务器、机柜和机房的概念及其层级关系:磁盘类似存储数据的"抽屉",服务器是装有多个磁盘的"功能电脑",机柜如同存放服务器的"书架",机房则是保障设备运行的"图书馆大楼"。文中详细剖析了磁盘的物理结构(磁头、磁道、柱面、扇区)和CHS寻址方式,并通过Linux命令示例展示了磁盘容量计算方法。最后指出现代存储系统虽采用更先进技术,但传统磁盘结构仍是理解计算机存储的基础。

2025-06-17 21:06:58 678

原创 MySQL表操作

本文介绍了MySQL表的基本操作,包括创建表、查看表结构、修改表和删除表。创建表时需要指定字段名、数据类型、字符集和存储引擎等属性。查看表结构可使用DESC或SHOW CREATE TABLE命令。修改表包括添加/修改/删除字段、修改表名和字段名等操作,使用ALTER TABLE语句实现。删除表采用DROP TABLE命令,操作需谨慎。文章通过示例演示了各项操作的具体语法和执行效果,帮助用户掌握MySQL表的基本管理方法。

2025-06-13 21:21:55 462

原创 MySQL库操作

MySQL数据库基本操作指南摘要 本文介绍了MySQL数据库的基础操作命令: 查看数据库:使用show databases和select database()命令; 显示创建语句:show create database查看数据库创建信息; 修改数据库:主要修改字符集和校验规则,使用ALTER DATABASE命令; 删除数据库:DROP DATABASE命令会连带删除数据库文件夹; 备份恢复:使用mysqldump命令备份,source命令恢复,可备份单表或多库; 连接监控:show processlis

2025-06-13 19:58:52 465

原创 Linux中《基础IO》详细介绍

FILE:是C语言标准库中定义的一个结构体类型(struct),用来表示一个“文件流”,结构体里面封装了文件描述符fd,在操作系统的接口中,只认文件操作符fd。缓冲区是内存空间的⼀部分。也就是说,在内存空间中预留了⼀定的存储空间,这些存储空间⽤来缓冲输⼊或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输⼊设备还是输出设备,分为输⼊缓冲区和输出缓冲区。缓冲区就是一段内存空间。

2025-06-09 20:35:34 992

原创 Linux中《进程控制》详细介绍

本文介绍了Linux进程管理的核心概念和方法,主要包括三个部分:进程创建、进程终止和进程等待。 在进程创建部分,详细讲解了fork函数的工作原理,包括其返回值机制和写时拷贝技术,解释了如何通过fork创建父子进程以及资源分配过程。 进程终止部分阐述了进程退出的三种场景(正常正确、正常错误和异常终止),对比了exit()和_exit()函数的区别,并介绍了退出码的含义及其获取方法。 进程等待部分说明了父进程等待子进程的必要性,重点介绍了wait和waitpid两种系统调用,包括参数设置、返回值解析以及如何获取

2025-06-08 21:05:42 666

原创 MySQL数据库基础

本文介绍了数据库的基本概念和使用方法。首先分析了传统文件存储的缺点(安全性低、查询管理困难等),说明数据库作为专业数据管理解决方案的优势。文章详细讲解了MySQL的服务器连接、数据库管理、表操作等基本命令,并通过示例演示了数据库创建、表操作和数据查询等核心功能。同时剖析了MySQL的三层架构(连接层、服务层、存储引擎层)和SQL语言分类(DDL、DML、DCL)。最后对比了不同存储引擎的特性,指出MySQL采用插件式存储引擎架构,可根据场景选择适合的引擎。全文为初学者提供了MySQL数据库的入门指南。

2025-06-02 17:07:16 709

原创 C语言输入函数对比解析

哈哈,看来你正在和C语言的输入函数们玩“大家来找茬”!放心,我会用最接地气的方式给你讲明白,保证比看《甄嬛传》还精彩。咱们先上结论:fgets是输入函数界的防弹衣,其他函数可能是皇帝的新装。下面进入正片环节

2025-05-17 21:09:26 998

原创 Linux中《进程》详细介绍

可以这样,但是效率太低了,CPU的速度是以纳秒为单位的,而外设的速度是以毫秒为单位的,CPU都已经把数据处理完了,但是外设还没有把数据拷贝过来,根据木桶效应,这样会降低效率。,体现在父进程创建子进程的时候,会把父进程的PCB,拷贝给子进程,子进程和父进程的PCB大部分都是一样的,所以子进程有自己的PCB。因为一个父亲可以有多个子进程,所以如果是父进程的话,需要返回子进程的pid,便于区分,哪个是哪个子进程,而子进程返回0,是为了标识,这是一个子进程,我们不常⻅的计算机,如服务器,⼤部分都遵守冯诺依曼体系。

2025-03-30 11:29:49 733

原创 Linux中《进程地址空间》详细介绍

父进程创建时,会同时创建PCB,struct mm_struct,页表,并加载父进程对应的代码和数据,将物理内存中的地址转化为虚拟地址,再构建页表映射,子进程拷贝父进程的PCB,struct mm_struct,页表,当子进程修改数据时,OS为了进程的独立性,发生写时拷贝,再修改子进程虚拟地址映射的物理地址,所以虚拟地址是相同的,物理地址不同。在早期的计算机中,要运⾏⼀个程序,会把这些程序全都装⼊内存,程序都是直接运⾏在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。

2025-03-30 11:29:26 981

原创 Linux中《进程状态--进程调度--进程切换》详细介绍

当内存资源不足时,将wait_queue里的进程的代码和数据唤出到磁盘当中swap交换分区。如果次数键盘就绪了,OS会把磁盘当中该PCB的代码和数据再重新加载到内存,构建指针映射,这个也叫做唤入。我们把这个称为阻塞挂起,运行挂起也是同样的道理。

2025-03-29 14:17:23 1211

原创 Linux中《环境变量》详细介绍

同时bash进程内部也会维护一张命令行参数表,用户输入命令后,是bash先拿到,bash先把命令行的一串字符,以空格为分隔符进行切分,把切分的内容放到一个字符数组中,利用PATH环境变量,找到对应的指令,进行执行。当用户登陆时,操作系统会给用户创建一个bash进程,bash进程会从操作系统的配置文件中读环境变量信息,并在bash内部创建一张环境变量表,一个指针数组的样子。没错,就是环境变量的作用,环境变量里的。记录了一些指定的路径,系统默认会在指定的路径下查找,也就是说,从系统的配置文件里来的!

2025-03-29 14:16:01 1089

原创 Linux中基础开发工具详细介绍

• 在Linux下安装软件, ⼀个通常的办法是下载到程序的源代码, 并进⾏编译, 得到可执⾏程序.• 但是这样太麻烦了, 于是有些⼈把⼀些常⽤的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在⼀个服务器上, 通过包管理器可以很⽅便的获取到这个编译好的软件包, 直接进⾏安装.• 软件包和软件包管理器, 就好⽐ “App” 和 “应⽤商店” 这样的关系.

2025-03-13 18:35:13 842 1

原创 Linux权限介绍

Linux中的粘滞位(Sticky Bit)是一种特殊的文件系统权限标志,主要用于目录,以限制对目录中文件的删除和重命名操作.一个文件是否能被删除,与文件的rwx权限本省无关,以文件所处的目录w权限有关.任何一个人都能在共享目录下新建文件,但是不能让文件非拥有者删除文件.:假设当前用户是 user1,工作目录是 /home/user1,执行 su - user2 后,用户身份切换到 user2,工作目录会变为 /home/user2,并且加载了 user2 的环境变量和配置文件。

2025-02-19 09:32:06 832

原创 Linux中sudo命令的详细介绍

名称:sudo = Super User DO(以超级用户身份执行)作用:允许普通用户临时以 root(超级管理员)或其他用户的权限执行命令。核心价值:在保证系统安全的前提下,赋予用户有限的提权能力。

2025-02-18 14:24:09 883

原创 C++高阶数据结构 -- 《 图 》

有向图和无向图:在有向图中,顶点对是有序的,顶点对称为顶点x到顶点y的一条边(弧),

2024-12-23 19:03:21 927

原创 C++高阶数据结构 --《 并查集 》

从上图可以看出:编号6,7,8同学属于0号小分队,该小分队中有4人(包含队长0);编号为4和9的同学属于1号小分队,该小分队有3人(包含队长1),编号为3和5的同学属于2号小分队,该小分队有3个人(包含队长1)。注意:这里的初始化状态是-1,表示一棵树,该位置是根。特点:跟堆类似,用下标表示关系, 双亲表示法(父亲)(根位置为负数,孩子位置为双亲的下标)这里表示10棵树,10个集合。

2024-12-19 09:35:19 782

原创 C++--map和set的使用介绍

set的声明如下,T就是set底层关键字的类型set默认要求T⽀持⼩于⽐较,如果不⽀持或者想按⾃⼰的需求⾛可以⾃⾏实现仿函数传给第⼆个模版参数大于比较set底层存储数据的内存是从空间配置器申请的,如果需要可以⾃⼰实现内存池,传给第三个参数。⼀般情况下,我们都不需要传后两个模版参数。set底层是⽤红黑树实现,增删查效率是O(logN) ,迭代器遍历是⾛的搜索树的中序,所以是有序的。map的声明如下,Key就是map底层关键字的类型,T是map底层value的类型。

2024-11-28 10:32:29 836

转载 C++--多态语法介绍

多态是⼀个继承关系的下的类对象,去调⽤同⼀函数,产⽣了不同的⾏为。⽐如Student继承了Person。

2024-11-17 17:54:12 1009 1

原创 二叉搜索树介绍

所以综合而言⼆叉搜索树增删查改时间复杂度为: O(N)那么这样的效率显然是⽆法满⾜我们需求的,后续还会继续讲解⼆叉搜索树的变形,平衡⼆叉搜索树AVL树和红⿊树,才能适⽤于我们在内存中存储和搜索数据。

2024-11-17 16:01:20 641

原创 C++中的stack和queue介绍

stack的介绍堆栈是一种容器适配器,专门设计用于在后进先出(LIFO)的上下文中操作,其中元素仅从容器的一端插入和提取。queue的介绍队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列.底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。

2024-10-28 20:59:13 947

原创 C++中的list介绍(常用函数)

list的文档及介绍。list中的接口比较多,此处类似,只需要掌握如何正确的使用,然后再去深入研究背后的原理,已达到可扩展的能力。以下为list中一些常见的重要接口。

2024-10-22 14:59:06 820

原创 C++中的vector介绍(常用函数)

vector的文档介绍vector是序列容器,表示可以改变大小的数组。(constructor)构造函数声明接口说明vector()(重点)无参构造构造并初始化n个val(重点)拷贝构造使用迭代器进行初始化构造int main()//无参的构造//n个val的构造//拷贝构造//迭代器区间构造return 0;

2024-10-15 14:48:32 1333 1

原创 C++中的string介绍(常用函数)

在构造时,将资源的计数给成1,每增加一个对象使用该资源,就给计数增加1,当某个对象被销毁时,先给该计数减1,然后再检查是否需要释放资源,如果计数为1,说明该对象时资源的最后一个使用者,将该资源释放;C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP。当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量。

2024-08-17 17:12:35 854

原创 C/C++内存管理

内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。

2024-08-03 11:27:42 748

原创 C++--类和对象(下)

• 尽量使⽤初始化列表初始化,因为那些你不在初始化列表初始化的成员也会⾛初始化列表,如果这个成员在声明位置给了缺省值,初始化列表会⽤这个缺省值初始化。• 内部类本质也是⼀种封装,当A类跟B类紧密关联,A类实现出来主要就是给B类使⽤,那么可以考虑把A类设计为B的内部类,如果放到private/protected位置,那么A类就是B类的专属内部类,其他地⽅都⽤不了。,初始化列表的使⽤⽅式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成员列表,每个"成员变量"后⾯跟⼀个放在括号中的初始值或表达式。

2024-07-26 10:43:04 1081

原创 C++--类和对象(中)

析构函数与构造函数功能相反,析构函数不是完成对对象本⾝的销毁,⽐如局部对象是存在栈帧的,函数结束栈帧销毁,他就释放了,不需要我们管,C++规定对象在销毁时会⾃动调⽤析构函数,完成对象中资源的清理释放⼯作。传值返回会产⽣⼀个临时对象调⽤拷⻉构造,传值引⽤返回,返回的是返回对象的别名(引⽤),没有产⽣拷⻉。

2024-07-25 13:36:23 877

原创 C++---类和对象(上)

• class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数。这里我们就用Date类来做个样例class Datepublic://成员函数private://成员变量int _year;int _month;int _day;

2024-07-23 17:48:53 730

原创 插入/选择/希尔/堆/冒泡/快速/归并/计数排序——大集合

所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。

2024-07-19 12:22:23 1935

原创 C++入门知识

• 定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace zx//关键字加命名空间的名字int a = 10;int val;• namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量。int a = 10;int a = 20;• C++中域有函数局部域,全局域,命名空间域,类域;

2024-07-10 12:25:39 868 1

原创 判断是否为完全二叉树

1.完全二叉树的概念:对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。2.思路:可以采用层序遍历的方法,把节点依次放入队列中,空节点也要放进去,在出队列的时候,出到空了,就开始遍历整个队列,如果整个队列都是空节点,则是完全二叉树,遇到非空节点,就不是完全二叉树。后面非空节点一定是前面非空节点的孩子,前面非空节点已经出了队列,那么后面的非空节点肯定也已经入了队列。这里我没有写队列的数据结构,我是写好了,直接拿来用的。

2024-07-07 19:20:25 203

原创 二叉树节点个数(C语言)

递归解答。

2024-07-06 10:35:13 437

原创 二叉树中的前序、中序、后续遍历(C语言)

递归分解图。

2024-07-06 10:18:14 586

原创 Topk问题

从N个数中,找出最大的前K个数,我们这里给10000个数,找出最大的前10个。个数,与堆顶的数据进行比较,比堆顶的大,就代替堆顶的数,再使用。在完成代码后,我们如何确保我们找出来的数就是最大的那几个?我们可以自己在数据文件中添加数据,明显的比原来的数据大。b.建一个K个数据的小堆,从数据文件中遍历。a.打开一个文件,将数据写入文件中。说明我们成功找出了最大的K个数。

2024-07-05 21:13:19 410

原创 C语言求完全平方数(不一样的方法)

第一种方法:使用sqrt()函数,判断sqrt() == (int)sqrt()是否相等。第三种方法:使用奇数平方和的规律,奇数平方和等于奇数个数的平方和。第二种:用小于n的数i除以n,判断i* i==n是否相等。求完全平方数,我们经常使用的有两种方法。

2024-06-15 10:17:12 2196 3

原创 链表的回文结构的判定(C语言)怎会如此简单!!!

链表的回文结构,轻松拿捏!!!

2024-06-03 12:54:18 361

原创 设计循环队列(C语言)怎会如此简单!!!

C语言使用数组,实现循环队列,简简单单!!!

2024-05-26 09:36:38 1037 3

原创 用栈实现队列(C语言)

如果我们要出数据的话,我们根据队列的出入原则,应该出数据1,所以我们可以把pushst里面的数据全部倒入到popst中,那么popst中的数据为(1,2,3,4).pushst拿来入数据,popst拿来出数据,刚好可以满足队列的需求。想再出数据时,已经没有数据了,我们需要从pushst里再次倒入数据(5,6),先对popst判空,如果为空,我们需要倒入数据后,再删除数据。根据题目,我们可以知道,我们需要用两个栈来实现队列,先要对连个队列进行销毁,再对两个栈的结构体销毁。两个栈为空,队列才为空。

2024-05-25 17:51:00 1161

空空如也

空空如也

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

TA关注的人

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