volatile关键字
摘要:volatile 是 C 和 C++ 编程语言中的一个关键字,用于修饰变量,指示编译器该变量可能在程序的某个地方被外部因素改变。它常用于多线程编程、嵌入式系统和与硬件交互的场景 用途 防止优化:当变量被声明为 volatile,编译器不会对该变量进行优化。这意味着每次访问该变量时,编译器都会从内存中
阅读全文
posted @
2024-09-30 16:32
Dylaris
阅读(24)
推荐(0) 编辑
linux中的信号处理器函数
摘要:信号处理器函数的设计 常见的两种 信号处理器函数设置全局性标志变量并退出。主程序对此标志进行周期性检查,一旦置位随即采取相应动作。 信号处理器函数执行某种类型的清理动作,接着终止进程或者使用非本地跳转将栈解开并将控制返回到主程序中的预定位置。 设计原则 简洁性 短小精悍:信号处理函数应该尽量简短,以
阅读全文
posted @
2024-09-30 16:21
Dylaris
阅读(17)
推荐(0) 编辑
符号链接和硬链接
摘要:硬链接 硬链接其实就是一个文件的别名 我们看到下面这张图 ln t1 hard_link 这个命令表示我们给文件t1创建了一个硬链接hard_link 然后可以看到他们两个指向的inode编号(675970, 最左端的数字)是一样的,说明他们是同一个文件,然后在看到一个数字 2 ,这个数字是硬链接的
阅读全文
posted @
2024-09-29 20:44
Dylaris
阅读(44)
推荐(0) 编辑
linux中的信号
摘要:标准信号 信号是事件发生时对进程的通知机制。有时也称之为软件中断。信号与硬件中断的相似之处在于打断了程序执行的正常流程,大多数情况下,无法预测信号到达的精确时间。 信号分为两大类。第一组用于内核向进程通知事件,构成所谓传统或者标准信号。Linux 中标准信号的编号范围为 1~31。另一组信号由实时信
阅读全文
posted @
2024-09-29 19:48
Dylaris
阅读(51)
推荐(0) 编辑
数据库系统------ER图中的符号
摘要:矩形 实体集:实体是指在现实世界中可独立存在的对象或事物,实体集就是相同类型实体的集合,可以看成是一个类 画在实体集中的属性 A1 表示 简单属性 A2 表示 复合属性,即由 多个子属性组成的属性,这里是指A2.1和A2.2,例如,地址可以分为街道、城市和邮政编码 A3 表示 多值属性,即该属性可以
阅读全文
posted @
2024-09-26 16:02
Dylaris
阅读(276)
推荐(0) 编辑
strcpy、strncpy和strdup
摘要:strcpy 用途:复制字符串,包括空字符(\0) 语法:char *strcpy(char *dest, const char *src); 注意:没有边界检查,目标缓冲区必须足够大,否则可能导致缓冲区溢出 strncpy 用途:复制指定长度的字符串,不会超过指定的字符数 语法:char *str
阅读全文
posted @
2024-09-25 23:10
Dylaris
阅读(40)
推荐(0) 编辑
getopt函数的使用
摘要:getopt函数 int getopt(int argc, char * const argv[], const char *optstring); 头文件: #include<unistd.h> 参数: argc: 命令行参数的数量 **argv*8: 一个字符串数组,包含所有命令行参数 **op
阅读全文
posted @
2024-09-25 23:04
Dylaris
阅读(43)
推荐(0) 编辑
文件系统的挂载和卸载
摘要:单根目录层级和挂载点 单根目录层级是说,linux上所有文件系统的文件都位于单根目录树下,即 "/" 这个目录下面,然后文件系统可以被挂载在根目录之下(被视为目录层级的子树),挂载的目录就是挂载点 换句话说,文件系统是在硬盘上的,我们可以通过一个目录去访问到这个文件系统,这个目录就是文件系统的挂载点
阅读全文
posted @
2024-09-25 19:41
Dylaris
阅读(29)
推荐(0) 编辑
文件系统的简单介绍
摘要:什么是文件系统 文件系统是对常规文件和目录的组织集合 我的理解是,文件系统就相当于是一种和用户的约定,它规定了该文件系统下文件的存储方式和访问方式等,然后用户访问该文件系统下的文件,就得遵循这个约定 常规文件系统 一般文件系统的组成如上,引导块是操作系统使用的,超级块就记录了文件系统的一些信息,比如
阅读全文
posted @
2024-09-25 19:31
Dylaris
阅读(30)
推荐(0) 编辑
数据库系统------sql语句
摘要:创建 以上的图就是sql中创建表的大致使用方法啦,每一个椭圆或者圆就是sql固定的语法,然后矩形就是我们自己自定义的,然后箭头代表着输入的顺序,如果箭头又回到某个起始处,表示这可以是一个循环,比如定义多个列,以下就带大家一起走一遍这个流程吧 我们按照这个图的输入顺序一个一个写 ok,第一个进入到一个
阅读全文
posted @
2024-09-25 12:06
Dylaris
阅读(21)
推荐(0) 编辑
使用dup2实现一个简单的命令重定向
摘要:以下是一个echo命令的的重定向的简单实现,大家可以把他改成main函数在执行,一样的,然后我们需要关注的部分就是代码中标有注释的代码块 #include "command.h" int _echo(char *argv[]) { int argc = 0; for (char **ptr = ar
阅读全文
posted @
2024-09-24 13:11
Dylaris
阅读(12)
推荐(0) 编辑
IO 缓冲区
摘要:IO 缓冲区 认识 首先我们要明白一些概念,用户级和内核级,可以简单的理解为,我们平时的编程就是在用户级干活,而内核级就是操作系统的地盘,当我们需要操作系统帮忙的时候,就需要调用操作系统提供的一些接口,也就是系统调用(其实就是些函数),这时候就是由用户级进入到内核级执行 然后,我们还要理解一下缓冲区
阅读全文
posted @
2024-09-23 13:47
Dylaris
阅读(29)
推荐(0) 编辑
文件描述符与文件流
摘要:文件描述符 文件描述符其实就是一些非0整数,他们代表着对应的文件,换句话说,对文件描述符进行操作就是在对文件进行操作 涉及到文件描述符的创建的一般常用的就以下几个(以目前所学来看) // 打开文件 open int fd = open(filepath, O_CREAT | O_RDONLY, 06
阅读全文
posted @
2024-09-23 11:33
Dylaris
阅读(11)
推荐(0) 编辑
进一步认识系统调用write()和read()
摘要:简介 write 函数 ssize_t write(int fd, const void *buf, size_t count); fd:文件描述符,表示要写入的文件或设备 buf:指向要写入的数据的缓冲区 count:要写入的字节数 返回值:成功时返回写入的字节数;失败时返回 -1 read 函数
阅读全文
posted @
2024-09-18 17:29
Dylaris
阅读(88)
推荐(0) 编辑
centos7.6的yum源报错:Cannot find a valid baseurl for repo: base/7/x86_64
摘要:问题 解决方案 网络 首先确认自己的网络是否正常,这里可以ping一个网站试试,我用的是百度来测试,反正你能正常访问的可以拿来测试 如果不行的话,可能得自行查阅了,好像有个配置是ONBOOT=no还是啥的,把no改成yes就行了,我记不太清了,仅供参考 yum源 如果网络正常那可能就是yum源没法正
阅读全文
posted @
2024-09-18 16:52
Dylaris
阅读(125)
推荐(0) 编辑
简单的磁盘文件IO
摘要:文件描述符 在linux中,文件IO的系统调用,是 以文件描述符,即一个非负整数,来指代打开的文件,你可以认为,操作文件描述符就是在操作文件 并且,对于每个进程而言,他们的文件描述符是自成一套的 以下截图是为了验证每个进程的文件描述符自成一套,我们可以看到有左边两个程序,t1.c和t2.c,他们几乎
阅读全文
posted @
2024-09-12 21:27
Dylaris
阅读(12)
推荐(0) 编辑
什么是系统调用?
摘要:用户空间和内核空间 我们这里简单解释下这两个概念,我们平时的编程就是在用户空间去做的,然后内核空间一般是操作系统的地盘,主要就是和硬件打交道,控制资源分配等,它受到一些特定的保护,我们不能随意闯入 可以注意下,就是 用户空间的级别是比内核空间的级别低 的,换句话说,内核空间里的是老大,我们想要做一些
阅读全文
posted @
2024-09-11 23:54
Dylaris
阅读(74)
推荐(0) 编辑
数据库系统------关系数据模型
摘要:关系数据模型 先贴一张图,挺多不理解的,这里只解释一些我能理解的概念 关系(表) 关系: 其实可以理解为二维表,就是我们平时常见的 行列表,这个就是关系 关系名:就是你这个二维表的名字,每个表都有唯一的名字 关系模式:表头,就是表格的 列名的集合,比如学生表有 (学号,姓名,年龄,班级),学生表中的
阅读全文
posted @
2024-09-10 23:30
Dylaris
阅读(1189)
推荐(0) 编辑
shell的简单编写
摘要:shebang 行 shell脚本的第一行是#!/bin/bash,/bin/bash是我们用来解释该脚本的shell的路径,这里是用bash,也可以替换成其他的 注释 # 这是一个注释 以 # 开头表示该符号右侧是注释 变量 变量赋值 在shell中,变量都是以字符串形式存储的,数字字符串会在进行
阅读全文
posted @
2024-09-07 18:25
Dylaris
阅读(36)
推荐(0) 编辑
Makefile和CMkeLists.txt的简单编写
摘要:Makefile CXX = g++ # 编译器 TARGET = out # 最终输出的文件名 # 如果有新增源文件,需手动添加同名的中间文件 OBJ = main.o src1.o src2.o # 要生成的中间文件(汇编文件),还未链接 # 也可以使用下面这种方法,这样我们就不要手动添加新增的
阅读全文
posted @
2024-09-07 17:18
Dylaris
阅读(20)
推荐(0) 编辑
vscode中launch.json和tasks.json的基础配置
摘要:示例 这是我在本文中用作示例的文件夹的图片,然后我先介绍下需要用到的,这样大家才能更好的理解后面的launch.json和tasks.json的配置 本文使用的是c++语言,用的编译器是mingw,命令行编译使用的就是g++ 红色: 红色方框的是主要的文件夹 .vscode:这个文件夹也是自带的,如
阅读全文
posted @
2024-09-07 00:48
Dylaris
阅读(3175)
推荐(1) 编辑
数据库系统------RDBMS数据的查询、定义、操作
摘要:SQL(结构化查询语言) DML(Data Manipulation Language, 数据操作语言) 专注于对数据库中的数据进行操作的语言 主要有以下的操作: SELECT:查询数据 INSERT:插入新数据 UPDATE:更新现有数据 DELETE:删除数据 主要分为两类 过程性:用户指定所需
阅读全文
posted @
2024-09-04 21:14
Dylaris
阅读(13)
推荐(0) 编辑
数据库系统------数据模型
摘要:数据模型 数据模型是 用于描述的概念性工具的集合,我感觉就和UML差不多吧,就是为了让数据库的定义、设计更规范 比如说: 关系模型 : 使用表格结构描述数据,以行和列的形式存储数据,强调 数据之间的关系 实体-关系数据模型 面向对象数据模型 对象关系数据模型 半结构化数据模型 网络模型 结构模型 罗
阅读全文
posted @
2024-09-04 20:25
Dylaris
阅读(14)
推荐(0) 编辑