自定义博客皮肤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------缓冲区与C库的原理

缓冲区的作用是提高效率,因为将数据写入到设备,是需要调用系统接口的,如果每次写入缓冲区的数据就调用一次系统调用,涉及到系统调用这时操作系统就会介入,用户态转为内核态,这个过程需要时间,效率比较低。有了缓冲区,满足一定条件才会调用系统调用将数据统写入到操作系统而不用频繁的调用系统接口。刷新:其实就是将用户缓冲区的数据写入操作系统的过程。

2024-10-14 22:01:54 487

原创 linux---进程程序替换详解

其实也挺容易理解的,程序替换是涉及到内核的,为了保证安全性,操作系统提供了系统调用,一旦涉及了系统调用,用户态立刻变为了内核态,控制权就交给了操作系统。验证:先自己建一个环境变量的表argv2,然后程序替换后打印所有的环境变量,我们可以看到环境变量已经被覆盖了,新程序的environ指针也指向了这个新的环境变量表。第一个参数是程序文件的路径,程序也是个文件,它存储在磁盘中,后面的参数就是执行这个程序需要的参数。这个函数就没有可变参数了,p表示它会根据你的文件名,去环境变量path中查找,v就是数组的意思。

2024-09-26 00:17:55 488

原创 c++----io流

需要我们自己对类型进行重载。

2024-09-22 23:02:49 365

原创 linux-----进程控制

提示:以下是本篇文章正文内容,下面案例可供参考。

2024-09-22 23:01:23 982

原创 linux网络-----传输层

数据要交接应用层先通过传输层(给哪个程序发数据)传输层作用:负责数据能够从发送端传输接收端。对于应用层来说有许多服务,传输层怎么知道把数据发给那个应用服务?这时就有了端口号:端口号(Port)标识了一个主机上进行通信的不同的应用程序。在服务器和多个客户端通信时,它怎么识别的哪个客户端哪个通信呢?通过五元组,即使端口号相同也可以通过ip地址区分。

2024-09-21 13:17:28 978

原创 linux----进程地址空间

一个进程如果要对物理内存进行访问,首先要通过虚拟地址,在cpu中寄存器CR3中存储者页表的物理地址,硬件MMU进行虚拟到物理转化的过程中,先要通过页表字段查看内存是否分配和内存是否有内容,没内容或者被分配,这个进程就会被停止访问内存,将操作权限转交给操作系统,这时操作系统就会进行内存的分配和填充数据或者程序,将虚拟内存映射到分配的物理内存,这个过程也叫缺页中断,分配填充完,进程就可以继续访问。这里我们看到申请的堆,依次进行申请,堆的地址是向上增长的。(1)栈堆相对而生,堆是向上增长的,栈是向下增长的。

2024-09-21 13:01:21 1161

原创 mysql--表的基本操作(curd)

curd

2024-07-31 21:39:30 609

原创 mysql---事务

事务的原子性关注的是一个事务要么完成状态要么是初始的状态。在高并发中,事务在执行过程中可能会 出现互相影响的情况。比如:多个事务同时访问同一张表,甚至同一行数据。数据库中,允许事务受不同程度的干扰,就有了一种重要特征:隔离级别。我们可以设置隔离级别(1)查看全局隔离级别(2)查看当前会话隔离级别(3)设置当前会话的隔离级别语法:-- 设置当前会话 or 全局隔离级别语法那么全局和会话的有什么区别的呢,在没有设置会话的隔离级别的。

2024-07-31 03:09:49 575

原创 MySQL----初始数据类型

范围:-128-----127在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。可以通过UNSIGNED来说明某个字段是无符号的。如果我们向mysqlt特定的类型中插入不合法的数据,Mysq一般会直接拦截,不让我们操作。能插入mysql的数据一定是插入的时候是合法。所以数据类型也是一种约束。

2024-07-18 20:08:28 718

原创 Mysql----内置函数

Mysql--内置函数

2024-07-18 20:04:15 426

原创 Mysql----表的约束

数据库中表的约束

2024-06-24 22:55:43 1029

原创 C++-------多态

(1) 必须通过基类的指针或者引用调用虚函数(2) 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写,重写必须返回值,函数名,参数类型相同,同时virtual只能修饰成员函数(这个和继承那个不同,继承的virtual解决的是菱形继承问题)。

2024-06-24 22:46:35 1002

原创 linux---生产者和消费者模型

生产者和消费者模型

2024-06-01 15:12:42 1206 1

原创 linux--------线程的同步和互斥

线程同步和互斥

2024-06-01 15:11:41 1013

原创 linux-----环境变量

常见的环境变量:PWD:记录当前工作目录PATH : 指定命令的搜索路径HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)SHELL : 当前Shell,它的值通常是/bin/bash。查看环境变量:echo $NAME //NAME:你的环境变量名称1. echo: 显示某个环境变量值2. export: 设置一个新的环境变量3. env: 显示所有环境变量4. unset: 清除环境变量。

2024-05-24 11:46:34 651

原创 C++-----类型转换

标准C++为了加强类型转换的可视性,引入了四种命名的强制类型转换操作符:static_cast、reinterpret_cast、const_cast、dynamic_cast

2024-05-24 11:39:52 477

原创 linux---线程控制

线程的创建,等待,中止,分离

2024-05-18 18:49:52 708

原创 linux----静态库和动态库

对于文件建立硬链接,每对一个文件形成一个硬链接,inode计数就会加加,txt和hardlink就是2.在一个目录下创建一个子目录inode计数是2,因为还有隐藏文件(.和..)。但是这个库是我们自己写的,并不在系统默认的lib64目录下,使用这个库的编译的时候必须告诉编译器这个静态库在哪个目录下是哪个静态库,才可以正确的形成可执行程序。硬链接:对一个文件形成硬链接,它们俩的inode编号相同,实际上是同一个文件。静态库:程序要编译链接才可以运行,如果链接的是静态库,运行阶段就不用再次进行链接。

2024-05-18 18:49:29 853

原创 linux---信号的捕捉和处理

信号的捕捉和处理

2024-05-17 16:42:17 836 1

原创 linux---进程通信

提示:以下是本篇文章正文内容,下面案例可供参考。

2024-05-17 16:41:20 752

原创 C++-----继承

提示:这里可以添加本文要记录的大概内容:提示:以下是本篇文章正文内容,下面案例可供参考一、隐藏问题可以简单理解为编译器会先从子类找,如果找到了就不关父类的事情了,子类中没找到就从父类中寻找。1.派生类和基类成员变量同名:2.派生类和基类成员函数同名:只要是函数名相同就构成重写(隐藏)。注意:派生类和基类它们的作用域是不同的,不存在重载的问题。3.派生类和基类析构函数:基类和派生类构造函数是先初始化基类后派生类,而析构函数是先调用派生类然后自动(注意)调用基类析构函数;

2024-03-06 19:36:52 770

原创 linux---初识文件系统调用接口

linux系统通过fd来管理打开的文件,fd是一个数组的下标,可以理解为文件的身份证。linux系统默认会打开3个流对象,分别是输入流stdin,输出流stdout,错误流stderor.它们的数组下标是 0,1,2.如果我们没有改变0,1下标中的内容,那么c语言中的scanf和printf分别就会从键盘和屏幕,读取和打印数据。printf是默认数组下标是1的文件打印数据,我们关闭1,打开一个文件这时数组下标1中存储的时文件test的指针,这样我们原来要把字符串打印到屏幕上转而实现打印到了文件test中。

2024-03-06 19:33:18 904

原创 C++------类与对象(六个默认函数)

C++支持一个类即使是空类,它也会自动生成六个默认的函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证 每个数据成员都有 一个合适的初始值,并且在对象整个生命周期内只调用一次。析构函数:与构造函数功能相反,析构函数不是完成对对象本身的销毁,局部对象销毁工作是由 编译器完成的。而对象在销毁时会自动调用析构函数,完成对象中资源的清理工作。

2024-02-05 00:47:08 801

原创 Liunx------vim编译器的入门使用

我们可以通过命令help vim-modes查看它的所有模式,以下是常用的1.插入模式:在该模式下,你输入的任何字符都被当作文本内容2.命令模式输入的字符被当做命令处理,我们进入vim,默认是命令模式3.底行模式。

2024-02-05 00:26:50 1224

原创 C++-----初始函数模板与类模板

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

2023-11-22 23:29:45 342

原创 初识makefile

makefile可以帮助我们自动化编译我们的代码,只需要通过make命令。make是个命令解释器,makefile是一个文件。提示:以下是本篇文章正文内容,下面案例可供参考它的变量类似宏定义,可以替换。好处是我们可以简化代码。通过$().。

2023-11-22 14:01:37 561

原创 C++/C-----内存管理

/内置类型//申请一个int大小,初始化为3//连续申请3个int,分别初始化delete pyt;//释放连续的空间配合[]//自定义类型//申请一个对象(MyQL)空间同时调用构造函数//连续申请3个对象空间,调用3次构造函数(1,2,3会隐式转换)//释放连续空间,调用析构函数完成对象资源清理,然后在释放对象的空间// 动态申请一个int类型的空间// 动态申请一个int类型的空间并初始化为10// 动态申请10个int类型的空间。

2023-11-18 21:40:55 48

原创 C++--------时间类的实现

C++ -------实现时间类

2023-11-16 12:20:19 202

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

在之前编译器自动生成的默认构造函数,它不会对内置类型初始化,C++对它打了个补丁,就是声明变量的时候可以给缺省值,这里的缺省值就是给初始化列表的默认值,当然如果初始化列表已经赋值,缺省值无效。static 修饰的变量和函数是这个类所共有的,所有该类的对象都可以访问它,可以理解为对象的全局函数和变量,也受限制符的限制。我们可以用初始化列表初始化,函数体内检查。友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在 类的内部声明,声明时需要加friend关键字。

2023-11-12 20:47:51 33

原创 时间复杂度和空间复杂度

当N=5 递归最大的深度为5,当递归到最后最后一项的时候开始返回,这时 f(1)返回,空间被回收给f(0)利用,它们其实共用同一个空间只是使用者不同,当f(0)返回f(2)也就返回了,f(2)的空间回收给了右边的f(1)利用........。一个算法程序在不同机器上跑的时间都是不同的,它取决于很多因素,比如cpu运行速率。于是有了时间复杂度,一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法 的时间复杂度。时间复杂度是一个函数同时时间可累加的。也使用大O渐进表示法。

2023-10-26 20:28:43 35

原创 Linux的权限

一一对应指令:su 或者 su - 它们的区别在于su只是角色的切换,su - 是以root账号重新登入超级用户符号:#普通用户符号:$(1) 以普通用户登入切换超级用户 :需要输入root密码(2)普通用户切换到另一个普通用户:需要输入另一个普通用户的密码(3)超级用户切换到普通用户:不用输入密码,直接切换超级用户的权限比普通用户大,可以执行普通用户执行不了的指令如果一定要执行root权限下的指令需要root账号将用户添加入白名单,然后就可以执行了。

2023-10-25 13:27:50 142 1

原创 Linux基本指令

说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。若源文件或目录的形态,不属于目录或符号链 接,则一律视为普通文件处理 -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理。键盘的输入并不是直接向屏幕输入,在linux下一切皆文件,我们可以把键盘屏幕当做文件,从键盘文件读取数据然后再输入到到屏幕文件中,这叫回显。如:ls –d 指定目录 -i 输出文件的 i 节点的索引信息。

2023-10-16 21:11:56 241 1

原创 c++-----入门篇

内联函数就是在函数声明前加个inline关键字,调用该函数编译器会在编译阶段将该函数展开,不进行普通函数进行栈帧的创建。多个变量的类型要相同,因为编译器只会判断最前面的数据类型,然后默认后面的变量都是这个数据类型。

2023-10-16 16:31:12 131 1

原创 编译与链接

这些符号是c语言内置的int main()//编译的源文件//文件被编译所在的行数//文件被编译的时间如果编译器遵循ANSI C,其值为1,否则未定义return 0;语法:#define name stuff name是标识符的名字我们可以用它来干什么呢?#define MAX 6 //设置标识符的值#define ret register//为关键字起别名;)//用简短的符号代替一种简单的实现。

2023-10-01 21:26:34 54

原创 数据结构---栈和队列

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考。

2023-09-26 21:23:10 32

原创 C语言----通讯录的实现(动态版,文件版)

以下运行的通讯录是使用动态版的,如果需要用到文件保存的,在菜单栏中取消文件函数功能的注释就好了提示:以下是本篇文章正文内容,下面案例可供参考。

2023-09-11 23:04:47 96

原创 C语言------动态内存管理

C语言提供了一个动态内存开辟的函数: 这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己 来决定。如果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器:int main()//int b=10;//int a[b];

2023-09-10 20:24:53 71

原创 C语言-----文件操作

提示:以下是本篇文章正文内容,下面案例可供参考将数据写入date.txt的文件中int main()//以写的形式打开文件i

2023-09-09 20:19:09 288 1

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

扫雷小游戏。

2023-08-17 02:50:41 44 1

原创 自定义类型:结构体,枚举,联合

C语言自定义类型详解和总结:结构体,联合体,枚举

2023-08-12 00:15:28 72 1

空空如也

空空如也

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

TA关注的人

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