自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

m0_67768006的博客

欢迎各位大佬

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

原创 数据库操作

数据库编码集就是采用统一的编码形式,一旦采用一个编码集创建数据库之后那么在这个数据库下创建的表也会采用这个编码集,就是相当于会被继承下去,除非自己设置编码集,否则使用数据库编码集。我们还有需求,添加字段,删除字段等等。是未来创建数据库时使用数据库然后在数据库下创建表,表使用的编码规则就会继承他自己所在数据库,而数据库又是依赖于mysql和mysqld!如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。

2024-05-11 09:55:47 1254 2

原创 mysql基础概念

数据库能存储但是存储的话文件就已经能够存储了又为何要有数据库用来对数据做存取,因为一般文件只是提供了对数据做存储的功能,但是文件没有提供对数据做更好的管理方案,就是对存储的数据做增删查改,所以对于数据的管理能力需要我们用户自己来,因此也就衍生了数据库,数据库能够对数据存储的同时能将存储的数据做更好的管理,能做增删查改。数据库的本质:对数据内容存储的一套解决方案,你给我的字段或要求,然后数据库我(mysqld)给你一个结果,它在给结果之前要对数据进行分析,然后返回结果给用户,数据库整体对外提供存储解决方案。

2024-05-10 20:25:31 740

原创 计算机网络

文章目录计算机实现通信协议OSI七层模型封装与分用局域网通信端口号网络字节序计算机实现通信网卡是文件,当向网卡中写文件时就是向网络中写内容,向网络中写内容时就可以被另外一个主机拿到。这样就可以实现通信。计算机开始时是单机通信的就是计算机内部之间通信,进程之间通信,但是后来逐渐发展到了计算机和计算机之间通信,就相当于是人和人之间通信,计算机和计算机通信是在同一个局域网之下进行通信,因为每一个计算机是相互独立的,每一个计算机有自己执行的业务,然后当一个计算机要知道另外一个计算机工作的内容时,所以它们要通

2024-05-08 23:19:10 1378 4

原创 捕捉信号的处理

如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。当某个信号的处理函数被调用时,内核自动将当前信号加入进程的信号屏蔽字,当信号处理函数返回时自动恢复原来的信号屏蔽字,这样就保证了在处理某个信号时,如果这种信号再次产生,那么 它会被阻塞到当前处理结束为止。正在处理2号信号2号信号会防止重复捕捉,若是我在处理2号信号时,想让进程对其他信号进行屏蔽,当其他信号到来时对其他信号屏蔽,就可以将想要屏蔽的信号添加到sa_mask中,就可以在处理当前信号时让进程对其他信号做屏蔽。

2024-04-23 20:09:50 989 1

原创 内核态和用户态

用户一个进程有自己独立页表结构,所以有多少进程就有多少页表,但是内核级页表只有一份,因为操作系统就一个,所以进程看到的内核空间都是一样的,内核空间中代码和数据都是一样的每一个进程看到的3-4G都是一样的,在整个系统中不管进程在怎么切换3-4G空间都是不变,所以操作系统调用接口在所有进程看来都是一样的,而每一个进程都可以有sudo方法转换权限,所有进程在调用方法时就相当于在自己的正文代码区调用内核 区方法完成之后在返回用户地址空间如同在低级地址空间中直接调用。处于用户态时只能访问用户自己的数据和代码。

2024-04-23 08:42:04 1052 1

原创 信号保存、阻塞、处理

进程可以选择阻塞某个信号,就是比如一位同学在学校上学,然后他对于某一个老师不喜欢,但是迫于学校威压又不得不去上课,不过这个老师本身管的并不严厉,所以对于这个老师安排的作业,你早就选择不做,并且这个老师也放任学生期末再交作业或者可以不交作业,你就选择了不作作业就选择让作业堆积起来让作业堆积起来不做,你就是把你作业阻塞住了,不过你是将其记住的,等到有一天你发现这个老师还不错的时候你就想起来做他的作业,这样你就把这个阻塞给解除。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。

2024-04-22 16:48:15 1072 1

原创 Core dump(核心转储)

发送2号信号core dump是0没问题,因为它的默认动作是term,但是发送8号信号core dump还是0,8号信号默认动作是core dump,出现这样的现象是因为我这是云服务器,云服务器对于core dump功能是关闭的,虚拟机对于core dump的功能是开启的!因为程序出错,这样的错误是运行时错误,一个程序崩掉了,就可能想知道是怎么错的或者是什么时候出错的,或者在哪一行出错的,就可以通过core。并且在当前目录形成了一个很大的core.进程pid文件这个文件中存放的是进程出异常的信息。

2024-04-21 22:41:28 903

原创 信号----硬件中断

计算机中存在各种设备,各种设备都可以发送中断,所有cpu存在辨别中断是由哪一个设备发过来的,因此每一个设备的硬件中断是有对应编号的类似1,2,3,4之类的数字。在硬件层面上,向cpu某个帧角发送中断,cpu要记录下来某一个设备发过来的中断号是几,cpu是有记录的,这是因为在计算机中只认识二进制,所有在cpu中有一个寄存器能够保存数据,然后将接收过来的中断号对应的高低电频转换为二进制010101保存起来,然后转换为对应数据在给相应数据带上类型就是我们看见的数据了。那么cpu内部的寄存器为什么能保存数据?

2024-04-21 21:38:52 445

原创 信号产生与处理

操作系统给进程发信号,是给进程的哪一部分发送的,光是给进程发送的话太过于抽象了,因为进程包含太多的东西了,错做系统给进程发送的信号是给进程的PCB发送的,task_struct发送,在task_struct中维护了一个字段,整数字段,,这个整数当作32个比特位来使用,然后0号下标不用,每一个下标当作一个信号编号,所有当操作系统给进程发送信号进程收到信号之后,task_struct中signal字段对应比特位的内容由0变为1就可以了!异常是进程收到了信号,并且一个进程异常默认动作是会退出进程。

2024-04-21 20:13:15 1008 1

原创 消息队列和信号量

让不同进程看到同一份资源的方式:文件缓冲区、共享内存、队列。

2024-04-20 17:38:03 1086 1

原创 SystemV共享内存

进程间通信本质:先让不同进程看到同一份资源。不同进程之间要完成通信则要通过使用共享内存进行通信,不同进程看到同一份资源!共享内存建立自己的地址空间,建立映射关系然后映射到共享区。共享内存图先在操作系统上申请一块内存空间。然后将内存挂接到进程自己的进程地址空间(映射到共享区)。当要释放共享内存的时候,要先去除进程与共享区之间的关联然后再释放共享内存,而这些都是由操作系统来完成!而在一个计算机中会存在很多进程通信,操作系统对于进程通信所许哟的共享内存进行管理。

2024-04-20 10:14:35 911

原创 日志情况分析

va_start:表示的是设置头第一个参数,它的第一个参数是va_list 的变量,第二个参数是函数形参的变量名,函数形参只有一个,而这个形参为可变参数中所能接受实参的最大个数!va_arg:表示从被调函数第二个形参开始获取传过来的实参,它的第一个参数是va_list定义的变量,第二个参数是被调函数第二个参数的类型名称,每调用一次va_arg,就获取到一个被调函数中的形参参数。va_list:定义了三个宏定义函数va_start,va_arg,va_end所需要的一些基本信息。

2024-04-19 22:40:22 486

原创 进程间通信方式命名管道

然后要考虑让两个进程都看见同一个通信信道管道文件。两个进程通信一个为服务端一个为客户端,服务端为客户端提供服务,管道由服务端创建,但是在建立管道之后,只是将信道建立好了,服务方不能立即打开文件,因为写方没有向管道文件中写入数据,那么服务端就会阻塞,要等待客户端写入之后服务端才开始打开文件然后读取客户端给服务端发送的数据。若是管道文件不删除,客户端就能直接打开,并且服务端会显示这个管道文件已经存在不会再建立,此时客户端向这个管道中写入没有进程来读,所有每一次通信完成之后要将管道文件删除!

2024-04-19 18:32:44 643 1

原创 进程通信方式管道文件

进程间通信本质就是让不同的进程看见同一份资源,所有父子进程之间看到了同一内存级文件资源,他们在通信也要保证通信数据的准确性,不要这个进程一边要读取数据,一边又要给另外一个进程写数据,进程之间通信是在第三方通信信道之间完成,若是一个进程即要写又要读,当进程向一个通信信道中写入时,然后进程又向这个管道通信中读取可能是读到自己写入的数据!一个进程打开文件时并创建子进程,那么打开的文件会不会给子进程拷贝,会的,不过不是将文件内容都拷贝他只是对于文件描述符表会拷贝一份,里面的文件对象的地址存在。

2024-04-19 10:44:20 1078

原创 进程间通信

进程间通信就是两个进程或多个进程实现数据层面的交互,但是进程是相互独立的存在进程之间的独立性,导致了进程之间实现通信的话成本是很高的,那么要如何做到进程之间可以通信?而进程访问由操作系统提供的空间,进程通信也就变成了访问操作系统,而进程是代表用户,所有操作系统不允许直接去访问它的资源,这个资源从创建到使用释放都不允许用户直接使用,而是由操作系统提供了一个系统接口给用户以便使用(操作系统不信任用户)进程通信的前提是让不同进程看见同一份资源,这也是进程通信的本质。进程之间通信就是让不同进程看到同一份资源。

2024-04-18 23:27:19 360

原创 动态库和静态库

动态库在运行的时候是要被加载到内存的,而一个动态库会被多个源文件使用,常见的动态库被所有的可执行程序都要使用在动态链接时,这个动态库啊就是一一个共享的库,当将一个动态库给删除之后,那些与这个动态库相关的可执行程序都不能执行,共享库失去所有依赖共享库而生的可执行程序就不再能够执行它的功能,所有动态库在被加载之后,会被所有进程共享!4./etc/ld.so.conf.d建立自己的动态库路径的配置文件,然后重新ldconfig即可,把动态库路径添加到配置文件中即可,这个配置文件中添加的是永久有效的!

2024-04-18 22:07:09 780

原创 Linux软硬链接

软链接是一种类似快捷方式的,就是在桌面上建立的快捷方式,建立了软链接这个软连接也是一个文件有自己的inode编号,软链接数据块中存的是它指向文件的地址(路径),当点击这个软连接时就是去执行这个地址对应的文件内容。软链接是一个独立的文件,当一个软链接删除时,不会影响它指向路径中的内容,但是若是将指向路径文件删除之后,软链接没有指向,这个软链接就会失败,找不到源头了,就像是桌面快捷方式删除不会对存储在电脑中的应用造成影响,但是若是电脑中应用删除,那么软链接再去查找就找不到对应软件!系统中存在大量的软链接,用。

2024-04-18 13:04:06 1573 1

原创 文件缓冲区

不同的需求有不同的刷新策略。所有操作计算机的动作都是以进程操作的,访问文件都是以进程方式完成,进程是操作系统帮助用户完成任务的渠道之一,给进程分派各种任务让进程去完成。进程打开文件注定会存在多个被打开的文件,而这些被打开的文件操作系统要将其进行管理,用struct FILE结构体进行管理,一个个FILE对象,在FILE结构体中有打开文件的缓冲区字段和维护信息,它是在FILE对象中,而FILE对象是属于用户的所以这个缓冲区是用户及缓冲区,一个文件有一个缓冲区,每一个打开的文件都有自己的缓冲区。

2024-04-17 21:14:05 1062

原创 文件管理操作

但是标准错误还是能打印出来的,一个文件可以被多个进程打开,在文件描述符表中,用不同数组下标存储同一个文件对象的地址,而当一个对象又多个文件描述符表指向时,不会因为一个文件描述符表关闭这个文件就关闭了,而是存在引用计数只有当引用计数减到0之后这个文件才是真正的被关闭了,就算是一个文件描述符表关闭也只是哪个进程对应要文件执行的内容关掉而其它进程还会执行。打开一个文件会返回FILE指针类型,打开文件有路径,然后再选择打开文件的方式若是以读的方式打开,那么不会创建,所有往文件中写入信息时会报错。

2024-04-06 23:25:20 923 1

原创 文件系统原理

扇区是磁盘上访问的最小单位(512字节),因此我们可以把磁盘看作由无数个扇区构成的存储介质,而要把数据写入到磁盘中就是要先在磁盘中找到扇区来存储数据,存储数据总得先找到能存放的地方然后再将数据给存放进去而一个盘面有无数个扇区,磁盘也有很多盘面所以要先知道在哪一个盘面而磁头是定位盘面的所有要知道在哪一个磁头,磁头有自己对应编号便于定位盘面,知道在那一面之后要确定磁道,再确定再哪一个扇区这些查找的存储定位都要带有自己的编号,这样以便于确认访问在哪?磁盘的存储构成有盘面,扇区,柱头,磁头。

2024-04-02 00:26:11 883 2

原创 进程程序替换

替换函数有很多,不容易记住,但是他们函数命名只有l、p、v、e的不同1.l(list)表示以链表节点形式将参数传递2.v(vector) : 参数用数组3.p(path) : 有p自动搜索环境变量PATH4.e(env) : 表示自己维护环境变量各个函数之间区别execve是系统接口,其余的都为c语言提供的库函数,他们在底层调用execve只有execve是真正的系统调用,其它五个函数最终都调用 execve,所以execve在man手册 第2节,其它函数在man手册第3节。

2024-03-29 21:23:48 816 1

原创 进程的等待

父进程创建多个子进程时,在等待的时候将第一个参数设置为-1,然后就可以等待任意一个进程,而还有多少子进程需要等待则用一个引用计数的方式表示还有多少子进程需要等待。当父进程在等待的时候,若是父进程把自己的任务执行完毕了,但是子进程还不退出,而父进程要回收子进程,就会一直等待着子进程退出,而等待子进程的方式就是通过options来设置的,此时在等待的过程中,父进程会陷入一个阻塞状态,系统默认的等待方式为阻塞等待,阻塞等待就是父进程一直在等待,但是在着等待的过程中又不做其他的事情,就是一直等着。

2024-03-29 13:49:10 926 1

原创 进程的终止

它返回0,是代表运行完毕结果正确,这样可不必知道其正确原因,这个0代表这进程的退出码,也是表征代码的运行结果是否正确的一个关键,然后这个退出码会被它的父进程拿到就是告诉它的父进程它的运行结果是正确的,退出码就是给它的父进程返回一个运行的结果。进程创建出来之后,会退出,退出就是一个进程终止,那么进程终止有哪些场景?而关心错误原因是谁会关心,自然是在乎进程的人,也就是进程它的父进程会关心是为何错误的,因为父进程交给子进程做工作,然后子进程没有把工作做完或者失败了,父进程会关心它为何会失败及失败原因。

2024-03-28 19:29:53 1538

原创 进程地址空间

物理地址,若是虚拟地址,他又会去页表映射,然后形成一个循环。进程有自己内核数据结构,然后还有属于自己的进程地址空间和页表再加上代码和数据,当进程在运行的时候操作系统会给进程构建页表,还有一个进程地址空间里面各种字段信息,进程内核数据结构中有找到自己进程空间的属性信息,进程地址空间中为进程的各种数据以及代码等属于进程的划分地址区域,然后这些地址区域中的每一个字段都有属于自己的地址,之后再将这地址写入页表,当操作系统将数据内存中拿到代码和数据时,将在内存中的地址填入到页表与进程地址空间形成映射关系!

2024-03-26 10:24:18 1075 1

原创 Linux环境变量

在我们所运行的进程,在命令行下的进程都是命令行bash的子进程,而bash在启动的时候会从操作系统的配置文件中读取环境变量信息,而bash下的子进程在执行时也会读取bash进程的环境变量信息,其实就是继承,bash在创建子进程时,子进程什么也没有,就从bash进程中将它的所有东西都拷贝了一份,从bash进程中继承下去,环境变量就是其中之一(bash构建环境变量表,然后若是它创建子进程,而子进程也会在创建时有一张环境变量表,然后创建时将环境变量信息填入子进程环境变量中。系统环境变量也是可以添加的。

2024-03-25 17:17:41 739 1

原创 进程优先级

cpu为了保他们之间的公平,也就存在了优先级!例如学校食堂,同学们下课之后去吃饭,食堂窗口是少数的而学生人数很多,注定了学生之间存在竞争对于食堂窗口来说,然后他们要有序的进行排队,不然不排队的话就会造成蜂拥而上,然后那些强势的就是状的就可能一直占用着,而其他访问不了,这就相当于维护一个秩序,每个人都默认遵循这个规则根据优先级访问资源。优先级是可以被调整的,能通过top命令修改,那么是否可以极大的修改一个进程的优先级然后让某个进程能够一直被运行操作上是可以达到的但是实际上是不可以的,因为nice值有限制。

2024-03-21 21:55:46 435 2

原创 进程切换&&进程状态

人在做一件事情都会有对应的状态是做完了,还是没有开始做或者正在做,而进程也是有自己状态的进程对应状态:这是一般操作系统的进程状态,其实操作系统进程状态都是差不多的,不过在Linuxx内核中进程状态分为:运行状态,休眠状态,磁盘休眠状态,停止状态,死亡状态,僵死状态。

2024-03-20 23:49:29 790 2

原创 Linux创建进程

创建进程两个方式:"./"运行我们的程序(指令层面)fork:在代码运行期间(代码层面)

2024-03-19 22:58:36 1253 1

原创 进程的一些概述

进程是什么?进程应该如何描述?进程又该如何管理?进程如何查看?

2024-03-18 23:36:58 826 1

原创 操作系统(OS)

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。冯诺依曼体系结构中的硬件单元提供的功能,这些硬件由操作系统来控制与管理,操作系统对下是对软硬件资源进行管理,对上(用户)提供稳定良好的环境。

2024-03-17 22:56:33 965 1

原创 计算机冯诺依曼体系结构

输入设备、存储器、输出设备、运算器、控制器这些硬件之间原是相互独立的,各自有对应的功能,而为了使这些相互独立的硬件能够完成交互,需要用一根根线路将它们连接起来有些是我们人眼可以看见的(暴露在外边的,但是有些是内部的,无法让我们直接看见)这样使其成为了一个体系结构。使各个硬件之间达成协同能力!

2024-03-17 20:33:53 1104

原创 Linux下调试(gdb工具)

在windows系统vs系列下写的c/c++程序可以调试,在linux系统下同样对于自己写的程序也是可以调试的,不过对于写的一般程序发布的版本是release版本的,但是在需要调试是要程序是以debug版本发布的,在编译时要加选项 ''-g''使发布的软件以可以调试的版本发布,而如何知道程序是什么版本发布的,在linux下使用命令readelf -S +可执行程序名然后管道过滤debug若是有debug则为debud版本发布,没有就是release版本发布因为程序中含有调试信息,以gdb工具进行调试。

2024-03-16 00:34:54 466 1

原创 C++模板初阶

模板

2023-07-02 15:51:44 214 4

原创 c++类和对象收尾

而这里的引用是引用3,3是int类型,他无法从int类型转换为A&类型,所以可以知道它在这过程中是发生隐式类型转换,并且调用它的拷贝构造的!是构造+拷贝构造 ,2会隐式转换为A类型对象,此时就生成了一个A类型的临时对象,然后它会调用构造函数,之后再将这个临时对象,拷贝构造初始化a2,但是编译器会优化,直接是调用构造函数了,构造+拷贝构造 ---->构造。然后这个生成的临时对象再拷贝给cc,它经历了两次拷贝,但是编译器将其优化了,只调用了一次构造!发生类型转换,会生成一个临时变量,这个临时变量具有常性!

2023-06-27 16:28:51 257 3

原创 c++初始化列表和静态成员

c++初始化列表和静态成员

2023-06-26 20:06:44 789 1

原创 C++运算符重载

运算符重载,日期计算器的实现

2023-06-24 15:42:32 467

原创 C++拷贝构造函数

拷贝构造函数

2023-06-19 19:31:41 363 9

原创 Linux中新建用户使用sudo问题

Linux新建用户使用sudo的问题

2023-06-19 08:00:00 305 1

原创 Linux编译器gcc/g++

Linux编译器gcc/g++,程序翻译,动/静态库,debug/release

2023-06-18 19:57:51 1387 3

原创 Linux编辑器vim

Linux中的编辑器vim

2023-06-17 17:19:16 1032 4

空空如也

空空如也

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

TA关注的人

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