自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL - 第14节 - MySQL使用C语言连接

下面在与MySQL数据库交互时,访问的都是connect_demon数据库,该数据库下有一个user表,表中有三条记录。

2023-07-04 22:20:50 1705 27

原创 MySQL - 第13节 - MySQL用户管理

• 如果一个用户只需要访问MySQL中的某一个数据库,甚至数据库中的某一个表,那么可以为其创建一个普通用户,并为该用户赋予对应的权限,而不让该用户看到数据库中的其他数据,防止该用户对其他数据进行误操作。需要注意的是,MySQL中可以存在同名的用户,只要这些同名用户对应的登录主机不同即可,因为user表中的主键是复合主键,由表中的user列和host列共同承担。• IDENTIFIED BY '密码' (可选):如果用户存在,则在授予权限的同时修改该用户的密码,如果用户不存在,则创建该用户。

2023-07-03 23:36:52 671 6

原创 MySQL - 第12节 - MySQL视图特性

根本原因就是因为视图和基表使用的是同一份数据,将视图中CLARK所在部门的部门名改为HR后,部门表中10号部门的部门名也就变成HR了。当我们要查询每个员工及其对应的部门名称时,需要使用员工表和部门表进行多表查询,并筛选出员工的部门号等于部门的部门号的记录。下面用员工表和部门表作为测试表,员工表中的ename代表的是员工的姓名,deptno代表的是员工所在部门的部门号。部门表中的dname代表的是部门名,deptno代表的是部门的部门号。通过查询员工表,可以看到员工CLARK所在部门的部门号为10。

2023-07-03 15:24:11 505 6

原创 MySQL - 第11节 - MySQL事务管理

• 一致性: 在事务开始之前和事务结束以后,数据库的完整型没有被破坏,这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联型以及后续数据库可以自发性地完成预定的工作。• Support: 表示服务器对存储引擎的支持级别,YES表示支持,NO表示不支持,DEFAULT表示数据库默认使用的存储引擎,DISABLED表示支持引擎但已将其禁用。• Transactions: 表示存储引擎是否支持事务,可以看到InnoDB存储引擎支持事务,而MyISAM存储引擎不支持事务。

2023-06-28 14:51:47 3061 23

原创 MySQL - 第10节 - MySQL索引特性

• 数据库表中存储的数据都是以记录为单位的,如果在查询数据时直接一条条遍历表中的数据记录,那么查询的时间复杂度将会是O(N)。• 索引的价值在于提高海量数据的检索速度,只要执行了正确的创建索引的操作,查询速度就可能提高成百上千倍。当一张表创建索引后,在数据库底层就会为表中的数据记录构建特定的数据结构,后续在查询表中数据时就能通过查询该数据结构快速定位到目标数据。

2023-06-25 16:47:25 1011 10

原创 MySQL - 第9节 - MySQL内外连接

现在要显示SMITH的名字和其所在部门的名称,按照复合查询的做法就是,取员工表和部门表的笛卡尔积,在where子句中指明筛选条件为员工的部门号等于部门的部门号,筛选出每个员工匹配的部门信息,并指明员工姓名为SMITH,筛选出SMITH的信息和其所在部门的信息。给出一张员工表和一张部门表,员工表中的ename代表的是员工的姓名,deptno代表的是员工所在部门的部门号。• 在on子句后指明内连接的条件为员工的部门号等于部门的部门号,保证筛选出来的数据是有意义的。表的连接分为内连接和外连接。

2023-06-25 15:51:48 1047 9

原创 MySQL - 第8节 - MySQL复合查询

• 下面给出三张表,分别是员工表(emp)、部门表(dept)和工资等级表(salgrade)。• 雇佣时间(hiredate)• 此等级最低工资(losal)• 此等级最高工资(hisal)• 部门编号(deptno)• 部门编号(deptno)• 雇员编号(empno)• 雇员姓名(ename)• 雇员领导编号(mgr)• 部门名称(dname)• 部门所在地点(loc)• 雇员职位(job)• 工资月薪(sal)• 等级(grade)• 奖金(comm)

2023-06-24 16:31:56 1187 10

原创 MySQL - 第7节 - MySQL内置函数

• 这么做的好处主要有两个,第一个好处就是公司内部数据库中存储的不是用户的明文信息,就算用户信息泄露了也不会产生太大影响,第二个好处就是形成的摘要是定长的,这样有利于数据库表结构的设计。在显示评论信息时,如果只想显示评论的日期而不显示评论的时间,可以在查询sendtime字段时,通过date函数截取sendtime的日期部分进行显示。注:对于多字节字符来说,不同编码中一个字符所占的字节个数是不同的,比如utf8中一个字符占用3个字节,而gbk中一个字符占用2个字节。

2023-06-23 16:42:09 1599 8

原创 MySQL - 第6节 - MySQL表的增删查改

• 表的增删查改简称CRUD:Create(新增),Retrieve(查找),Update(修改),Delete(删除)。• CRUD的操作对象是对表当中的数据,是典型的DML(Data Manipulation Language)数据操作语言。

2023-06-21 17:12:45 1265 8

原创 MySQL - 第5节 - MySQL表的约束

如果要让某个字段不允许为空,在创建表的时候就可以给对应字段设置not null属性。比如我们创建一个班级表,表当中包含班级名和该班级所在的教室,如果插入数据时不想让这两个字段为空,就可以在创建表时给这两个字段设置not null属性。• 但是数据类型的约束很单一,为了更好的保证数据的合法性,从业务逻辑角度保证数据的正确性,MySQL中出现了表的约束,目的就是为了尽可能保证数据安全,减少用户的误操作可能性。• 真正约束字段的是数据类型,如果插入的数据超出了对应数据类型的取值范围,那么数据将会插入失败。

2023-06-19 07:04:00 549 4

原创 MySQL - 第4节 - MySQL数据类型

数据类型的作用:• 决定了存储数据时应该开辟的空间大小。• 决定了如何识别一个特定的二进制序列。• 决定了数据的取值范围。

2023-06-17 11:36:46 897 4

原创 MySQL - 第3节 - MySQL表的操作

可以看到我当前的MySQL默认使用的是InnoDB存储引擎,如果我建表时没有指定使用哪种存储引擎,那么就会默认使用InnoDB存储引擎。• 采用MyISAM存储引擎建表,会产生对应的xxx.frm(表结构)、xxx.MYD(表数据)和xxx.MYI(表索引)文件。• 采用InnoDB存储引擎建表,会产生对应的xxx.frm(表结构)和xxx.ibd(表数据+表索引)文件。数据库创建完毕后选中数据库,在该数据库中创建一个user表,并在建表时指定采用MyISAM存储引擎。• Null表示该字段是否允许为空。

2023-06-16 21:12:52 975 10

原创 MySQL - 第2节 - MySQL库的操作

命令,将数据库的字符集改为gbk,并将数据库的校验规则改为gbk_bin。3.如果创建的数据库名称db_name与mysql的关键字同名,则会创建失败,如果一定要创建,则需要给db_name用反引号引用(反引号是键盘在Esc下面那个键),如下图所示。注:如果没有对MySQL的配置文件进行过修改,则默认的编码格式是utf8,默认的校验规则是utf8_general_ci。1.如果创建数据库时未指明数据库的编码格式或校验规则,则默认使用MySQL配置文件中对应的编码格式或校验规则。

2023-06-16 11:27:42 1595 4

原创 MySQL - 第1节 - MySQL数据库基础

也就是说,MySQL服务器本质是一个网络服务器,我们使用mysql命令连接MySQL服务器时,本质就是MySQL客户端在向MySQL服务器发起连接请求,连接建立成功后MySQL客户端就会将用户输入的SQL语句发送给MySQL服务器,之后MySQL服务器就会根据SQL语句对数据进行对应的操作。4.由于内存数据库的数据存储在内存中,数据库主机掉电后数据就会丢失,因此在数据库服务关闭前通常需要把内存中的数据转储到磁盘上,甚至在内存数据库运行期间,一些数据也会持久化到磁盘存储。

2023-06-14 22:36:35 1150 3

原创 MySQL - 第0节 - MySQL在Centos 7环境安装

这里要注意的是yum命令要通过管道读取rpm -qa | grep mysqld所产生的安装包列表,管道会通过标准输入传给yum命令,而yum命令是命令行应该通过argv输入(应该将rpm -qa | grep mysqld所产生的安装包列表依次拼在yum remove命令后面进行卸载),xargs的作用就是从标准输入读到的一行一行的内容一个个的喂给后面的yum进程。使用yum list | grep mysql命令查看yum源列表,如下图所示,从图中可以看出yum源列表中有mysql的yum源。

2023-06-14 15:46:28 1407 6

原创 Linux - 第25节 - Linux高级IO(三)

3.当所有的事件处理器注册完毕后,应用会启动初始分发器的事件循环,这时初始分发器会将每个事件处理器的Handle合并起来,并使用同步事件分离器等待这些事件的发生。1.当应用向初始分发器注册具体事件处理器时,应用会标识出该事件处理器希望初始分发器在某个事件发生时向其通知,该事件与Handle关联。2.初始分发器会要求每个事件处理器向其传递内部的Handle,该Handle向操作系统标识了事件处理器。4.当某个事件处理器的Handle变为Ready状态时,同步事件分离器会通知初始分发器。

2023-06-08 09:13:06 1352 15

原创 Linux - 第24节 - Linux高级IO(二)

调用select函数之前就需要用fd_set结构定义出对应的文件描述符集,然后将需要监视的文件描述符添加到文件描述符集当中,这个添加的过程本质就是在进行位操作,但是这个位操作不需要用户自己进行,系统提供了一组专门的接口,用于对fd_set类型的位图进行各种操作。writefds:输入输出型参数,调用时用户告知内核需要监视哪些文件描述符的写事件是否就绪,返回时内核告知用户哪些文件描述符的写事件已经就绪。NULL/nullptr:select调用后进行阻塞等待,直到被监视的某个文件描述符上的某个事件就绪。

2023-06-05 21:22:55 659 2

原创 Linux - 第23节 - Linux高级IO(一)

• 接下来我们需要将读取上来的数据包交给最底层的链路层处理,进行链路层的解包和分用,此时就是让sk_buff结构当中的mac_header指针指向最初的数据包,然后向后读取链路层的报头,剩下的就是需要交给网络层处理的有效载荷了,此时便完成了链路层的解包,。• 紧接着就是传输层对数据进行处理了,同样的道理,让sk_buff结构当中的transport_header指针,指向数据包中网络层报头之后的数据,然后继续向后读取传输层的报头,便完成了传输层的解包。

2023-06-05 16:52:01 690

原创 Linux - 第22节 - 网络基础(其他重要协议或技术)

至今,我们的计算机上仍然保留了hosts文件,这个hosts文件当中一般存储的是主机名与IP地址之间的映射,用户也可以在hosts文件中自主添加域名和IP映射关系,在域名解析的过程中会优先查找hosts文件的内容。• 本地DNS服务器拿着域名去权威域名服务器中,查询域名对应的IP地址,最终将该域名对应的IP地址返回给浏览器,此时整个域名解析过程就完成了。• 本地DNS拿到顶级域名服务器的IP地址后,就会拿着域名去找顶级DNS服务器,顶级域名服务器会告诉本地DNS权威域名服务器的IP地址。

2023-06-05 09:53:18 1271 1

原创 Linux - 第21节 - 网络基础(数据链路层)

• 但数据在网络传输时需要一跳一跳的从一台主机跳到另一台主机,最终才能将数据转发到目标主机,因此要将数据发送到目标主机的前提是,需要先将数据转发给与当前主机直接相连的下一跳主机,而两台主机直接相连也就意味着这两台主机属于同一网段,因此将数据转发到下一跳主机实际是属于局域网通信范畴的,而这实际就是链路层需要解决的问题。• 对于这个问题,以太网的做法就是先不限制各个主机发送数据的能力,局域网中的每个主机想发数据的时候直接发就行了,但是只要发送出去的数据与其他主机发送的数据产生了碰撞,那就得执行碰撞避免算法。

2023-06-02 10:19:01 1007 2

原创 Linux - 第20节 - 网络基础(网络层)

• 双方在进行网络通信时,发送的数据并不是直接从一方的传输层直接发送到了另一方的传输层,而是需要传输层将数据继续向下进行交付,在网络层和链路层经过数据封装后再通过网络发送到对方主机,对方主机收到数据后也同样需要在链路层和网络层进行数据解包,此时对方的传输层才拿到了发送过来的数据,然后再继续将该数据向上进行交付。其中,送数据的这个人从四楼下来的过程就是数据封装的过程,这个人在路上经过路径选择到达对方楼下的过程就是数据路由的过程,而这个人再上到四楼将数据交给对方的过程就是数据解包的过程。

2023-05-31 15:24:08 766 2

原创 Linux - 第19节 - 网络基础(传输层二)

现在我们让telnet退出,就相当于客户端向服务器发起了连接断开请求,但此时服务器端并没有调用close函数关闭对应的文件描述符,所以当telnet退出后,客户端维护的连接的状态会变为FIN_WAIT_2,而服务器维护的连接的状态会变为CLOSE_WAIT。但如果当服务器收到客户端的FIN请求后,服务器端不调用close函数关闭对应的文件描述符,那么服务器就不会给客户端发送FIN请求,相当于只完成了四次挥手当中的前两次挥手,此时客户端和服务器的连接状态分别会变为FIN_WAIT_2和CLOSE_WAIT。

2023-05-29 17:29:28 947 2

原创 Linux - 第18节 - 网络基础(传输层一)

在学习HTTP等应用层协议时,为了便于理解,可以简单的认为HTTP协议是将请求和响应直接发送到了网络当中。但实际应用层需要先将数据交给传输层,由传输层对数据做进一步处理后再将数据继续向下进行交付,该过程贯穿整个网络协议栈,最终才能将数据发送到网络当中。传输层负责可靠性传输,确保数据能够可靠地传送到目标地址。为了方便理解,在学习传输层协议时也可以简单的认为传输层协议是将数据直接发送到了网络当中。端口号(Port)标识一个主机上进行网络通信的不同的应用程序。

2023-05-25 15:57:15 928 1

原创 Linux - 第17节 - 网络基础(应用层三)

HTTP协议内容都是按照文本的方式明文传输的,明文传输是不安全的,所以现在主流的解决 方式是在http所在的应用层和tcp所在的传输层之间加一层SSL/TLS软件层(SSL/TLS软件层属于应用层),SSL/TLS软件层对于从应用层流向传输层即发送的数据执行加密功能,对于从传输层流向应用层即接收的数据执行解密功能。下载⼀个天天动听软件,未被劫持的效果,点击下载按钮,就会弹出天天动听的下载链接,如下图一所示,已被劫持的效果,点击下载按钮,就会弹出QQ浏览器的下载链接,如下图二所示。1.2.1.什么是"加密"

2023-05-24 10:31:38 1336 8

原创 Linux - 第16节 - 网络基础(应用层二)

网络计算器场景下我们使用socket套接字系列接口、定制协议、编写业务的过程较为麻烦,考虑的也不一定全面。一些常用的场景已经有程序员自定义过成熟的协议,这些协议慢慢成为了应用层特定协议的标准,可以被我们直接使用。在编写网络通信代码时,我们可以自己进行协议的定制,但实际有很多优秀的工程师早就已经写出了许多非常成熟的应用层协议,其中最典型的就是HTTP协议。应用层代码的定制协议部分常见协议标准有http、https、smtp、ftp、DNS等,我们这里以http、https为主进行讲解。

2023-05-20 10:49:00 1079 5

原创 Linux - 第15节 - 网络基础(应用层一)

再谈协议再谈协议1.1.协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定,比如怎么建立连接、怎么互相识别等。为了使数据在网络上能够从源到达目的,网络通信的参与方必须遵循相同的规则,我们将这套规则称为协议(protocol),而协议最终都需要通过计算机语言的方式表示出来。只有通信计算机双方都遵守相同的协议,计算机之间才能互相通信交流。

2023-05-17 17:34:35 527 5

原创 Linux - 第14节 - 网络编程套接字(三)

创建serverTcp.cc文件,写入下图一所示的代码,创建clientTcp.cc文件,写入下图二所示的代码,创建log.hpp文件,写入下图三所示的代码,创建util.hpp文件,写入下图四所示的代码,创建ThreadPool.hpp文件,写入下图五所示的代码,创建Task.hpp文件,写入下图六所示的代码,创建Lock.hpp文件,写入下图七所示的代码,创建Makefile文件,写入下图八所示的代码,因为三个进程同属一个进程组,所以我们使用jobs命令可以看到这三个进程是在一个任务组的,如下图所示。

2023-05-16 19:42:34 675 5

原创 Linux - 第13节 - 网络编程套接字(二)

netstat -lntp命令可以看到我们服务器程序tcpServer的网络状态,Proto是服务类型这里为tcp的,Recv-Q是收到的消息数这里为0,Send-Q是发送的消息数这里为0,Local是本地绑定的IP地址这里是0.0.0.0,即任意地址绑定,Address是绑定的端口号这里是8080,Foreign为允许访问的远端主机IP,这里为任何远端主机,Address为允许访问的远端主机的端口,这里为任何远端主机的端口,State为当前套接字状态,这里为监听状态LISTEN。

2023-05-13 17:25:41 848

原创 Linux - 第12节 - 网络编程套接字(一)

源MAC地址和目的MAC地址是包含在链路层的报头当中的,而MAC地址实际只在当前局域网内有效,因此当数据跨网络到达另一个局域网时,其源MAC地址和目的MAC地址就需要发生变化,因此当数据达到路由器时,路由器会将该数据当中链路层的报头去掉,然后再重新封装一个报头,此时该数据的源MAC地址和目的MAC地址就发生了变化。一台机器上可能会有大量的进程,但并不是所有的进程都要进行网络通信,可能有很大一部分的进程是不需要进行网络通信的本地进程,此时PID虽然也可以标识这些网络进程的唯一性,但在该场景下就不太合适了。

2023-05-07 17:53:25 963

原创 Linux - 第11节 - 网络入门

这时就有人设法将这些计算机连接在一起,当某个业务需要多台计算机协同完成时,就可以将共享的数据放到服务器中进行集中管理,此时各个计算机就都能获取到这些共享的数据,所以各个业务在处理就能随时进行切换了。在局域网中有一种设备叫做交换机,交换机主要完成局域网内数据的转发工作,也就是在局域网内将数据从一台主机转发给另一台主机。在早期的时候,计算机之间是相互独立的,此时如果多个计算机要协同完成某种业务,那么就只能等一台计算机处理完后再将数据传递给下一台计算机,然后下一台计算机再进行相应的业务处理,效率非常低下。

2023-05-05 16:04:48 914

原创 Linux - 第10节 - Linux多线程(二)

饥饿问题:某个执行流访问完临界资源后释放锁,此时相较于其他执行流,该执行流离锁更近,更容易再次申请到锁进而访问临界资源,其他执行流长时间得不到锁,无法访问临界资源的情况就是饥饿问题。解决饥饿问题:某个执行流访问完临界资源后释放锁,此时该执行流不能再立即申请锁,而应该排到其他执行流的尾部,等到其他执行流申请锁访问完临界资源后再去申请锁。我们在保证线程互斥的条件下(保证临界资源安全的前提下),让线程能够按照某种特定的顺序访问临界资源,这种特性我们就叫做线程同步。线程进行等待,如果条件满足则线程被唤醒并执行。

2023-04-25 21:49:42 1289 4

原创 Linux - 第9节 - Linux多线程(一)

CPU内有很多寄存器,寄存器中存储着进程的地址空间和页表,调用线程的时候,地址空间和页表不用切换了,因此调度成本变得更低了。创建的n-1个task_struct中的一个task_struct,该task_struct占有对应进程的一小份代码、数据,且使用部分页表,我们将这样的一个task_struct所对应的执行流称为线程。如果今天我们要创建一个进程,只创建进程的task_struct,mm_struct和页表共用另一个进程的,那么这两个“进程”看到的所有的资源都一样(执行的代码、访问的堆栈区等都相同)。

2023-03-28 11:30:28 637 4

原创 Linux - 第8节 - 进程信号

2.在计算机领域,信号是给进程发送的,进程要具备处理信号的能力,也有两个前提条件:(1)提前已经具备了能够识别这些信号的能力(2)提前已经具备了对应信号的处理办法。在计算机系统中,进程要提前具备处理信号的能力(提前已经具备了能够识别和处理这些信号的能力),需要程序员在操作系统中内置了相关代码,操作系统来帮我们教进程。1.要具备处理信号的能力有两个前提条件:(1)在信号还没产生时就能够识别这些信号(2)在信号还没产生时已经提前知道这个信号的处理办法。我们是如何得知这些生活中的信号的呢?

2023-03-20 11:09:40 851

原创 Linux - 第7节 - 进程间通信

​​​​​​​进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。​​​​​​​ 通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。​​​​​​​ 资源共享:多个进程之间共享同样的资源。数据传输:一个进程需要将它的数据发送给另一个进程。System V进程间通信。System V 消息队列。System V 共享内存。3.system V共享内存。

2023-03-11 16:01:16 736

原创 vscode下载与使用

下载好之后左边会新增一个远程资源管理器,点击远程资源管理器点击加号Add New,点击F1输入 remote-ssh 然后回车,然后输入 ssh 用户名@主机IP地址 并回车,点击弹出来的......\.ssh\config,此时弹出添加主机成功的提示符,点击Open Config按钮,可以看到Config配置文件内容,此时左边的SSH TARGETS栏中显示了我们添加的主机。​​​​​​​ vscode可以配置插件,完成各种轻功能。​​​​​​​ vscode编写代码支持本地编写和远程编写。

2023-03-10 17:30:16 2125

原创 Linux - 第6节 - 动态库和静态库

程序在编译链接的时候把库的代码拷贝到可执行文件中。程序运行的时候将不再需要静态库。程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。注:1.一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件的整个机器码。也就是说如果可执行程序是动态链接生成的,程序里面如果涉及到外部函数调用,可执行程序中记录的是外部函数的地址,外部函数具体的实现还在动态库中。

2023-03-08 18:08:47 657

原创 Linux - 第5节 - 基础IO

答:通过使用fopen、fclose、fread、fwrite形成代码,代码编译得到程序,将程序运行起来的时候才会执行对应的代码,才是真正的对文件进行相关操作,因此本质上是进程在对文件进行相关操作。总结:我们通常所说的当前路径准确的说应该是当前进程所处的工作路径,当前进程所处的工作路径默认是进程对应可执行程序所处的路径,当前进程所处的工作路径可以手动进行修改。在操作文件的过程中有可能既改变内容又改变属性,即改变内容的同时属性可能跟着改变(例如向文件写入的时候,文件的最新修改时间和文件的大小都会改变)。

2023-02-28 11:27:17 513 1

原创 Linux - 第4节 - Linux进程控制

进程创建进程创建在linux中fork函数是非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。进程调用fork,当控制转移到内核中的fork代码后,内核做:分配新的内存块和内核数据结构给子进程将父进程部分数据结构内容拷贝至子进程添加子进程到系统进程列表当中fork返回,开始调度器调度当一个进程调用fork之后,就有两个二进制代码相同的进程。而且它们都运行到相同的地方。但每个进程都将可以开始它们自己的旅程。

2023-02-20 11:58:32 823 2

原创 Linux - 第3节 - Linux进程概念

很多数据是由操作系统自动提前加载到内存中的,例如开机的过程要等一段时间,其本质上就是将操作系统预加载到内存中,当你刚刚open打开某个文件时,文件中的数据可能早已经被操作系统预加载到内存中了,这就是操作系统预加载的特点。因为有存储器的存在,存储器具有一定数据暂存的能力,这就让软件有了更大的生存空间和价值。cpu只和内存打交道,而我们的代码软件进行编译,编译后的.exe等文件是在磁盘上的,因为cpu只在内存中读取指令或数据,这就要求如果要运行程序,就必须将程序先加载到内存中,换句话说这是体系结构规定的。

2023-02-04 16:48:18 947 2

原创 c++ - 第26节 - c++知识梳理

(1)需要熟练掌握这些容器的常见接口使用(增删查改:insert、erase、find、operator[]、iterator)(1)需要熟练掌握这些容器的常见接口使用(增删查改:insert、erase、find、operator[]、iterator)(1)需要熟练掌握这些容器的常见接口使用(增删查改:insert、erase、find、operator[]、iterator)1.重点熟练掌握的容器:vector、list、map、set、unoredered_map、unoredered_set。

2023-01-20 12:21:37 1616 2

空空如也

空空如也

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

TA关注的人

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