自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux进程(四) --- 终止和等待

信号是一种异步通知机制,用于通知进程某个事件已经发生。信号可以来自操作系统、硬件、用户或其他进程。

2024-05-19 05:13:10 621

原创 Linux进程(三) --- 地址空间

页表是操作系统用来管理虚拟内存和物理内存之间映射关系的数据结构。每个进程有自己的页表,记录了其虚拟地址到物理地址的映射。页表的主要作用是将虚拟地址转换为物理地址,使得虚拟内存系统能够正常工作。写时拷贝技术在多个进程需要共享同一资源时非常有用,特别是在内存管理中。它主要用于优化进程创建和数据复制的开销。写时拷贝的机制:当一个进程创建一个子进程(如通过fork()系统调用)时,父进程和子进程共享相同的内存页,而不是立即复制所有内存页。

2024-05-19 05:00:57 746

原创 MySQL事务(二)

在可重复读隔离级别下,一个事务在启动时,会建立一个一致性视图(Snapshot)。事务内的所有查询都在这个一致性视图下执行,这意味着如果事务中途执行了多次相同的查询,结果将是相同的,不受其他事务的影响。可重复读(Repeatable Read,RR)保证在同一事务中多次读取同一数据的结果是一致的,即使其他事务进行了更新操作。可以防止脏读(Dirty Read)和不可重复读(Non-Repeatable Read)。通过Next-Key Locking机制部分防止幻读(Phantom Read)。

2024-05-17 02:09:33 934

原创 Linux的环境变量

在C和C++等编程语言中,main。

2024-05-17 01:43:06 328

原创 MySQL事务(一)

在MySQL中,事务是一组操作,这些操作要么全部执行成功,要么全部失败。事务的主要目的是保证数据的一致性和完整性。它确保当我们对数据库进行一系列操作时,要么所有操作都生效,要么如果其中任何一个操作失败,所有的操作都不会生效,就像从未执行过一样。:事务中的所有操作要么全部成功,要么全部失败,没有中间状态。如果事务失败,所有的更改都会被撤销,回滚到事务开始之前的状态。:事务执行前后,数据库都必须处于一致的状态。事务保证从一个一致状态转换到另一个一致状态。:并发执行的事务之间互不干扰。

2024-05-16 06:27:27 778

原创 Linux进程(三) --- 状态

进程正在使用CPU或准备使用CPU。进程在等待某个事件或资源。进程已被暂停,等待继续执行的信号。僵尸进程是已经终止执行但仍然在进程表中保留的进程。它保留在进程表中的原因是为了让其父进程读取它的退出状态。这种状态的进程不会占用系统资源(如CPU和内存),但会占用一个进程表项。

2024-05-16 05:55:04 1038

原创 Linux进程(二)--- 进程的调用与状态

在Linux中,/proc文件系统是一个虚拟文件系统,提供了关于内核、进程以及系统硬件的信息。每个正在运行的进程在/proc目录下都有一个对应的子目录,其名称为该进程的PID(进程ID)。这些子目录包含了该进程的各种信息,如内存映射、文件描述符、状态等。以下是如何在/proc。

2024-05-15 07:36:31 911

原创 MySQL索引(二)

MySQL中的页目录(Page Directory)是InnoDB存储引擎中B+树数据结构的一部分,主要用于提高数据页(data page)内的查找效率。每个数据页存储记录时,页目录作为索引,帮助快速定位记录的位置。页目录的存在,使得在大数据页中查找特定记录的速度大大提升。

2024-05-15 07:22:32 1282

原创 MySQL索引(一)

MySQL的索引是一种用于加速数据查询的数据库结构。它类似于一本书的目录,通过建立索引,MySQL可以更快速地定位和检索所需的数据,从而提高查询的效率。索引的基本原理是为数据列创建一个数据结构(通常是B树或哈希表),这个数据结构能够快速查找特定值的位置。

2024-05-14 08:22:26 1058 1

原创 Linux进程(一) -- 介绍进程

PCB包含了进程使用的资源信息(如打开的文件、使用的内存段等)。PCB的存在有助于实现资源保护和进程间的隔离,防止一个进程的错误或恶意行为影响其他进程。PCB保存了进程的上下文信息(如CPU寄存器状态、程序计数器等),使操作系统能够在切换进程时保存当前进程的状态并恢复另一个进程的状态,从而实现进程的无缝切换。PCB集中存储了与进程相关的所有信息,包括进程状态、进程号、程序计数器、寄存器内容、内存管理信息、I/O状态信息等。通过PCB,操作系统可以实现进程间的有效通信和同步,确保多进程环境下的协调运行。

2024-05-14 08:13:12 1040

原创 MySQL的复合查询

MySQL中的多表查询是一个强大的功能,允许你在一个查询中组合来自多个表的数据。这通常通过JOIN语句实现,但也可以使用子查询或集合操作符(如UNION下面我将介绍几种常见的多表查询方式及其用途。

2024-05-13 07:55:24 789 1

原创 PC的体系结构

冯诺依曼体系结构,也称为冯诺依曼架构,是一种计算机架构的设计概念,由20世纪中叶的数学家和物理学家约翰·冯·诺依曼提出。这种架构的核心特点是将程序指令和数据存储在同一块可读写的存储器中。这样做的优点是简化了计算机的设计和操作,但也带来了所谓的“冯诺依曼瓶颈”,即处理器在执行程序时可能会因为存储器的带宽限制而导致性能瓶颈。尽管现代计算机在冯诺依曼体系结构的基础上进行了许多改进和扩展,例如引入缓存、多核处理器等,但这一基本架构仍是许多计算机和设备设计的基础。

2024-05-13 07:48:40 1774

原创 mysql --- 内置函数

MySQL数据库提供了一系列内置函数,这些函数可以在SQL查询中使用,以执行计算、格式化数据、处理字符串、日期和时间等操作。这些函数可以大致分为几个类别:字符串函数、数值函数、日期和时间函数、控制流程函数、加密和压缩函数等。

2024-05-12 06:22:33 274

原创 Linux -- gdb

GDB(GNU Debugger)是一个功能强大的开源调试工具,主要用于调试C和C++编写的程序。它允许你查看程序执行时的内部情况,可以用来设置断点、单步执行代码、查看变量值等,以帮助开发者找出程序中的错误。GDB 是 GNU 项目的一部分,广泛应用于各种Unix-like系统中,包括Linux、BSD等操作系统。

2024-05-12 06:16:43 829

原创 mysql -- CRUD

MySQL是一个广泛使用的开源关系数据库管理系统(RDBMS),它支持通过SQL(Structured Query Language)语言进行数据的管理。在MySQL中,CRUD是一个常见的术语,代表了数据管理的四个基本操作:创建(Create)、读取(Read)、更新(Update)和删除(Delete)。下面,我将逐一介绍这些操作及其在MySQL中的具体应用方式。

2024-05-11 08:10:44 695

原创 Linux -- Git

Git 是一个开源的分布式版本控制系统,主要用于软件开发中的源代码管理。它由 Linus Torvalds 创建,也是 Linux 内核的开发者。Git 使得多个开发者可以在同一个项目上协作,而不会相互干扰。它允许开发者在本地计算机上创建多个分支,独立进行开发和测试,然后合并回主分支。

2024-05-11 07:56:35 736

原创 进度条(小程序)

缓冲区是内存中的一个临时存储区域,用来存放输入或输出数据。在标准 I/O 库中,缓冲区的使用可以提高数据处理的效率。例如,当向终端输出文本时,字符通常存储在缓冲区中,直到缓冲区满或者遇到特定条件时才实际向终端设备输出。

2024-05-10 06:51:52 674

原创 Makefile

在 Makefile 中,你可以定义变量以简化管理和修改。

2024-05-10 06:37:19 769

原创 Linux的编译器

程序的编译过程是将源代码转换为可执行文件的一系列步骤。这个过程涉及多个阶段,主要包括预处理、编译、汇编和链接。

2024-05-09 07:27:00 1098

原创 Linux -- > vim

vi和vim是两款流行的文本编辑器,广泛用于Unix和类Unix系统中。它们以其强大的功能和灵活的编辑能力而闻名,特别是在编程和系统管理中非常受欢迎。

2024-05-09 07:17:58 802

原创 Centos Yum

yum,全称为 Yellowdog Updater Modified,是一种基于 RPM 包管理器的开源软件包管理器,主要用于 CentOS、Red Hat Enterprise Linux(RHEL)和 Fedora 等 Linux 发行版。yum用来简化软件的安装、更新和管理过程。它通过使用软件仓库来自动解决依赖关系,使得软件包管理更加方便。yum。

2024-05-08 06:04:37 1191

原创 Linux权限(二)

假设你有一个共享目录。

2024-05-08 05:53:17 1005

原创 Linux的权限

权限是计算机系统中一个重要的安全机制,旨在控制和限制对资源的访问。权限控制可以保护关键系统文件、目录和配置不被未授权用户或程序修改或删除。这样可以防止系统被破坏或者出现故障。权限可以保护用户的个人文件、文档和数据不被其他用户查看、修改或删除。这保障了用户的隐私和数据安全。在多用户环境下,权限允许每个用户拥有独立的工作空间,确保不同用户之间不会互相干扰。这样不同用户可以在同一个系统中同时工作,而无需担心互相影响。通过权限,系统管理员可以限制普通用户对某些资源的访问,例如特定的硬件设备或网络接口。

2024-05-06 06:51:41 2152 2

原创 Linux的shell外壳

在计算机领域,“shell”(外壳)是指一种用户界面,提供了访问操作系统服务的方式。Shell 是用户与操作系统之间的桥梁,它解释并执行用户输入的命令。

2024-05-06 06:44:56 960

原创 Linux常见指令(三)

这些指令用于文件和目录的创建、编辑、复制、移动和删除。ls(列出目录内容),cp(复制文件或目录),mv(移动或重命名文件或目录),rm(删除文件或目录)。:这些指令用于文本文件的查看、编辑和处理。cat(查看文件内容),grep(文本搜索),sed(流编辑器),awk(模式扫描和文本处理语言)。:用于监控和管理系统资源和进程。top(显示进程的动态实时视图),ps(显示当前运行的进程),kill(终止进程),df(显示磁盘空间使用情况),free(显示内存使用情况)。:用于管理和诊断网络问题。ping。

2024-05-05 07:02:44 764

原创 Linux的打包压缩

打包压缩是指将一个或多个文件及目录集合先打包成一个文件,然后再进行压缩处理的过程。打包打包是将多个文件和目录合并为一个单一的文件。打包的主要目的是为了方便传输和归档。常用的打包工具有tar,它会将文件和目录集合成一个.tar文件。举例来说,使用tar打包可以这样操作:其中,-c表示创建新的打包文件,-v表示显示过程,-f指定输出文件名。压缩压缩是指通过算法减少文件的体积。压缩可以进一步减小打包文件的大小。常见的压缩工具有gzipbzip2xz等,它们会将.tar文件压缩成.tar.gz。

2024-05-05 06:59:09 876

原创 Linux常见指令(二)

这些指令用于文件和目录的创建、编辑、复制、移动和删除。ls(列出目录内容),cp(复制文件或目录),mv(移动或重命名文件或目录),rm(删除文件或目录)。:这些指令用于文本文件的查看、编辑和处理。cat(查看文件内容),grep(文本搜索),sed(流编辑器),awk(模式扫描和文本处理语言)。:用于监控和管理系统资源和进程。top(显示进程的动态实时视图),ps(显示当前运行的进程),kill(终止进程),df(显示磁盘空间使用情况),free(显示内存使用情况)。:用于管理和诊断网络问题。ping。

2024-05-04 06:37:26 1026

原创 Linux的目录结构

在Linux系统中,"路径"指的是文件系统中文件或目录的位置。路径可以是绝对的或相对的。:从根目录(即)开始,描述从根目录到目标文件或目录的完整路径。例如,是一个绝对路径,指向/usr/local目录下的bin目录。:基于当前工作目录的路径。它不是从根目录开始的。例如,如果当前目录是/home/user,则相对路径指向。这两种路径类型在Linux命令行操作中非常重要,用于指定操作的目标位置。

2024-05-04 06:22:02 1841

原创 初识Linux

第一台被广泛认为是现代计算机的原型的机器是ENIAC(电子数值积分计算机)。它由约翰·莫克利和约翰·普雷斯珀·埃克特在宾夕法尼亚大学设计,并于1945年完成。ENIAC主要用于复杂的数学计算,如弹道学计算,它使用了大量的电子管进行运算,体积庞大,能耗极高。

2024-04-30 20:31:59 855 1

原创 操作系统(八股)- 进程

Linux和windows不同,并没有所谓的线程,在Linux中,线程(也称为轻量级进程)是一种使得进程内多个执行路径能够并行进行的机制。每个线程都共享进程内共享资源,如内存空间和文件描述符等,但它们各自独立拥有程序计数器(指令指针,指示计算机的控制单元下一条要执行的指令在内存中的地址)、寄存器集合和栈空间。Linux进程是一个在运行中的程序实例。在Linux操作系统中,每当你运行一个程序的时候,系统会创建一个进程。进程是操作系统进行资源分配和调度的基本单位。每个进程都有一个唯一的标识符,PID.

2024-04-08 09:02:39 913

原创 Linux操作系统(八股)- 系统内存

Linux的内存管理机制是一个很复杂的内容,其中包含了很多机制。包括虚拟内存、分页、内存寻址。要了解Linux的内存机制,首当其冲就是万物皆文件的概念,所有的东西在Linux中都是文件,什么目录、进程、数据,都是文件,所以在这个背景下,程序在运行中的进程的文件需要被存在内存中,Linux的内存管理是基于分段式和分页式混合的方式进行内存管理。

2024-04-07 08:16:30 397

原创 C/C++的关键字(八股)持续更新....

修饰指针: 分为常量指针(pointer to const)指针指向的数据不能被修改,指针本身可以被修改指向另一个地址,和指针常量(常量指针,const pointer) 指针本身的值不能被修改(它指向的地址),但它所指向的数据可以被修改,简单的记忆方式, *在const后面 代表这个指针是有个常量指针, * 在const前面这就是一个指针常量, 两个都加const,代表这是一个常量指针常量;修饰全局变量:static对全局变量进行了修饰,改变了作用域,只有这个文件下能看到这个变量。

2024-04-07 07:31:23 1052 3

原创 C++的命名空间、输入&输出、缺省参数、重载、引用和内联函数

定义命名空间namespace 名称 {// 代码,例如类、函数、变量等定义。

2024-02-05 03:49:57 832 1

原创 双向带头链表实现

双向带头链表的实现

2024-01-29 09:24:00 977

原创 C++的多态

它指的是能够使用相同的接口来操作不同类型的数据或对象。在编程中,这意味着同一个方法或函数可以根据传递给它的对象的类型来执行不同的操作。当派生类重写基类的虚函数时,它允许派生类的函数返回基类函数返回类型的派生类型。当然普通的静态多态也是可以完成的,大多是情况下的多态都是指动态多态。通常是通过方法覆盖实现的,即子类重写父类的方法,使得同一个方法调用可以表现出不同的行为。这个函数的目的是创建当前对象的一个副本并返回指向该副本的指针。关键字是 C++11 引入的,用于明确指出该方法是重写基类中的虚函数。

2024-01-29 03:30:03 946

原创 Linux常见指令(一)

Linux是一种开源的操作系统,广泛运用再服务器、桌面电脑、移动设备和嵌入式系统中。这个个基于Unix的多用户、多任务操作系统,具有高可指定性和灵活性。

2023-12-22 17:46:45 1070 1

原创 栈的实现指南

栈的最基本特性是后进先出,也就是最后添加到栈中的元素会是第一个被移除的元素。这种特性让栈非常适合处理那些需要按顺序记录然后逆序处理的数据。:栈主要支持两种操作:压栈(push),即在栈顶添加一个元素;和弹栈(pop),即移除栈顶的元素。还可以进行的操作包括查看栈顶元素(peek/top)和检查栈是否为空。:栈在计算机科学中有广泛的应用,如在算法中进行递归调用的处理、程序的函数调用堆栈、表达式求值(例如计算器中的操作)、回溯算法(如迷宫求解、深度优先搜索等)等。

2023-11-20 02:59:44 155 1

原创 顺序表的实现-c语言

顺序表(Sequential List)是一种线性数据结构,它是一种用于存储和管理一组元素的数据结构,其中元素按照一定的顺序排列在内存中的连续存储区域中。顺序表通常用于静态分配或动态分配内存来存储元素。以下是顺序表的一些关键特点和简单介绍:连续存储:顺序表中的元素在内存中是连续存储的,这意味着每个元素都紧邻着下一个元素存储,因此可以通过下标或偏移来快速访问元素。固定或动态大小:顺序表可以是固定大小的(静态顺序表)或动态大小的(动态顺序表)。

2023-11-12 03:56:23 221 1

原创 扫雷小游戏的实现-c语言

如果选中的格子下面不是雷,则会显示一个数字,这个数字表示该格子周围八个格子中雷的总数。这个扫雷游戏是一个经典的计算机单人游戏,玩家的目标是在一个矩阵(通常是一个矩形或正方形网格)中找出所有没有雷的格子而不触发任何雷。当一个空白格子被打开时,游戏会自动打开周围的其他空白格子,直到所有与之相连的空白区域都被揭示出来。这个过程是递归完成的。函数首先打印标题和列号,然后打印每一行的行号和该行的内容,每个位置的值后面都跟着一个空格,使得棋盘易于阅读。函数,这个函数打印了一个简单的菜单,提供了游戏开始和退出的选项。

2023-11-07 03:11:37 56

原创 三子棋(井字棋)的实现和解析

游戏的目标是尝试将你的标记连成一直线(可以是水平的、垂直的或对角线的),同时还要阻止对手达到这个目标。:在计算机程序中,棋盘通常用二维数组来表示,每个格子可以是初始值(例如空格 ' '),玩家的标记('O' 或 'X'),或电脑的标记(如果是与电脑对战的版本)。循环,这意味着菜单至少会显示一次,并且只要玩家不选择退出(即输入非0值),菜单就会继续显示。:游戏需要能够处理玩家与玩家之间,或玩家与电脑之间的轮流机制。的函数,该函数打印游戏的主菜单,让玩家选择开始游戏(按1)或退出(按0)。函数检查是否有赢家。

2023-11-07 02:59:01 959

空空如也

空空如也

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

TA关注的人

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