自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络对战五子棋(web-gobang)项目

文章目录:1.开发背景2.项目功能&&效果展示3.开发环境&&主要技术4.项目模块&&设计思路5.项目功能实现5.1 登陆注册5.2 匹配功能5.3 判断是否是自己的回合&&落子判断5.4 将对手下的棋同步到自己的棋盘上6.项目源码1.开发背景  五子棋是一种传统的棋种,它不仅容易上手,老少皆宜,而且趣味横生,引人入胜:它不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。为了将自己所学到的知识更系统地用起来,也为了检测自己对Lin

2021-08-18 23:54:35 2649 4

原创 高级IO:五种高阶IO模型、多路转接(select、poll、epoll)

文章目录:前言1.五种高阶IO模型1.1 阻塞IO1.2 非阻塞IO1.3 信号驱动IO1.4 多路转接IO(可监控多个文件描述符)1.5 异步IO2.多路转接技术(select、poll、epoll)2.1 select2.1.1 函数原型及参数解释2.1.2 fd_set解释2.1.3 返回值2.2 selset代码验证2.2.1 select简单验证前言任何IO操作都需要经过 等待 和 拷贝数据 这两个过程,而这两个过程是在内核当中的过程1.五种高阶IO模型1.1 阻塞IO在内核将数据准

2021-08-16 14:55:13 782

原创 求连续子数组最大和

连续子数组最大和(分治+动态规划)题目描述:输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n).示例:输入:[1,-2,3,10,-4,7,2,-5]返回值:18说明:输入的数组为{1,-2,3,10,-4,7,2,-5},和最大的子数组为{3,10,-4,7,2},因此输出为该子数组的和 18。思路分析:先求出以 i 结尾的所有的局部最大的连续子序列和,而局部的连续子序列最大和就求 max(F(i

2021-08-12 01:39:32 638

原创 六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

文章目录:1. 插入排序2.希尔排序1. 插入排序步骤:1.从第一个元素开始,该元素可以认为已经被排序2.取下一个元素tem,从已排序的元素序列从后往前扫描3.如果该元素大于tem,则将该元素移到下一位4.重复步骤3,直到找到已排序元素中小于等于tem的元素5.tem插入到该元素的后面,如果已排序所有元素都大于tem,则将tem插入到下标为0的位置6.重复步骤2~5动图演示如下:思路:  在待排序的元素中,假设前n-1个元素已有序,现将第n个元素插入到前面已经排好的序列中,使得前n个

2021-07-24 23:27:25 542865 212

原创 MySQL(一):环境安装、连接服务端的过程、数据库分类、数据库常用语句

文章目录:1. 安装mariadb环境1. 安装mariadb环境mariadb是mysql的一个分支版本(free)查看环境中是否有mariadb:在root用户下通过 rpm -qa | grep mariadb 命令查看安装mariadb:yum install -y mariadbyum install -y mariadb-serveryum install -y mariadb-devel启动mariadb:service mariadb start

2021-07-23 15:02:02 334 3

原创 Linux——TCP协议(三次握手(从数据包名,双方连接状态,包序管理分析),四次挥手(从数据包名,双方连接状态分析))

文章目录:前言1. 三次握手1.1 从数据包名和连接双方状态分析三次握手1.2 包序管理1.2.1 抓网络数据包1.2.2 分析TCP网络数据包1.2.3 分析TCP包序号前言TCP协议的连接是面向连接,可靠传输,面向字节流的,而TCP之所以能保持可靠传输是因为三次握手和四次挥手1. 三次握手1.1 从数据包名和连接双方状态分析三次握手首先我们通过数据包名和连接双方的连接状态来了解三次握手的过程如下图所示客户端在发送SYN数据包后客户端的状态变为SYN_SENT,当服务端接收到客户端发送的

2021-07-10 15:54:28 504 2

原创 Linux——UDP协议:UDP的特点,UDP的协议格式,UDP缓冲区,UDP的应用

文章目录:前言1. UDP1.1 UDP的特点1.2 UDP的协议格式前言传输层是负责端对端之间的传输,端指的是端口(port);TCP协议和UDP协议都是传输层的协议端口的划分① 0-1023:知名端口② 3306:mysql数据库的端口③ 1521:oracle数据的端口如下图所示,为一些固定的端口号:也可以通过cat /etc/services【问题一】一个进程是否可以bind多个端口号?可以【问题二】一个端口号是否可以被多个进程bind?不可以,一个端口号只能

2021-07-06 11:11:20 704 1

原创 Linux——HTTP协议:HTTP协议的概念,格式,版本,请求方法,状态码及其解释,Header,对HTTP协议中URL的理解;TCP粘包问题

文章目录:1. TCP粘包问题1. TCP粘包问题

2021-07-02 22:49:27 432 1

原创 Linux——套接字编程(二):TCP的socket编程(流程,接口),TCP 客户端 / 服务端通信(单进程版本,多进程版本,多线程版本)

文章目录:1. TCP的socket编程(流程&接口)1.1 编程流程1. TCP的socket编程(流程&接口)1.1 编程流程

2021-06-29 20:51:26 475 4

原创 C++ 多态的原理,虚函数,虚函数的重写,虚函数表,静态绑定,动态绑定

文章目录:

2021-06-06 17:59:22 1244 14

原创 C++ 继承的概念,同名隐藏,赋值兼容规则,继承中的友元与静态成员,多继承的构造顺序,菱形继承及其存在的问题,虚拟继承及其原理

文章目录:1.继承的定义1.继承的定义

2021-06-02 21:59:02 373 7

原创 Linux—套接字编程(一):UDP/TCP协议,UDPSocket编程(流程+接口+封装),UDP客户端/服务端的实现

文章目录:1.UDP协议2. TCP协议3. UDP的socket编程3.1 编程流程3.2 创建套接字1.UDP协议(1)传输层协议(2)无连接:当UDP客户端想要给UDP服务端发送数据的时候,只需要知道服务端的IP和端口,就可以直接发送;即,在发送数据之前是不知道服务端的状态信息(是否启动 / 是否在跑)(3)不可靠:不保证UDP的数据一定到达对端机器(4)面向数据报:UDP数据是整条数据接收和发送的解释如下:假设应用层要想传输层传入“hello”,当hello传入传输层还尾传入网络层时

2021-05-28 17:25:33 506 11

原创 Linux——网络基础(一):协议,OSI七层模型,TCP/IP五层(四层)模型,IP,端口,数据的封装和分用,网络字节序

文章目录:1. 网络按照地域可划分为2.协议2.1 什么是协议2.2 什么是网络协议2.3 什么是协议分层2.4 网络协议簇2.5 体系结构3. OSI七层模型(网络模型,网络的分层模型)4. TCP/IP五层(或四层)模型5. 数据流向6. IP,端口的本质和作用6.1 IP地址6.2 端口7. 网络数据需要网络转发的时候,需要具备哪些条件1. 网络按照地域可划分为(1)局域网(2)城域网(3)广域网2.协议2.1 什么是协议协议是双方约定同一种语言,进行沟通2.2 什么是网络协议

2021-05-23 17:33:09 459 7

原创 Linux——多线程(三):线程同步,条件变量

文章目录:1. 线程同步2. 条件变量1. 线程同步作用:在多个执行流访问临界资源的时候是合理访问的模拟一个如下场景,假设,有一个线程A,一个线程B,一个碗,线程A负责吃碗里的面,线程B负责给碗里做面,此时我们用如下代码进行模拟: 1 #include<stdio.h>

2021-05-16 21:16:05 355 1

原创 Linux——多线程(二):线程安全,线程不安全现象,线程互斥-互斥锁(原理,接口,使用),死锁

文章目录:1.线程安全2. 如何描述线程不安全的现象2.1 正常变量操作的原理2.2 线程不安全现象的描述1.线程安全线程安全:多个执行流,访问临界资源,不会导致程序产生二义性执行流:理解为线程访问:指的是对临界资源进行操作临界资源:指的是多个线程都可以访问到的资源eg:全局变量,某个结构体(不能是定义在某个线程入口函数内),某个类的实例化指针临界区:代码操作临界资源的代码区域称之为临界区二义性:结果会有多个2. 如何描述线程不安全的现象2.1 正常变量操作的原理正常情况,假

2021-05-12 17:05:12 889 5

原创 C++ STL——模拟实现vector

文章目录:1. vector的介绍2.STL—vector的使用2.1 vector的构造接口2.2 vector iterator 的使用2.3 vector空间增长问题2.4 vector 的增删查改交换接口3. vector 迭代器失效问题3.1 对于vector可能引起迭代器失效的操作1. vector的介绍点击查看—>[vector的文档介绍](1)vector是表示可变大小数组的序列容器。(2)就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对

2021-05-07 23:55:10 734 13

原创 C++ STL——模拟实现List

文章目录:1. STL-List的使用1.1 list的构造1.2 List迭代器的使用1.3 list capacity1.4 获取头尾元素(因为返回的是引用,所以可赋值修改)1.5 List的修改方法1. STL-List的使用1.1 list的构造可以通过如下两种方式对链表进行访问方法一:#include<iostream>#include<list>using namespace std;void main(){ list<int> my

2021-05-05 21:59:11 420 3

原创 Linux——多线程(一):线程的概念,线程的优缺点,线程控制(线程创建,线程终止,线程等待,线程分离)

文章目录:1. 线程的概念2. 线程的优缺点3. 进程和线程的对比4.【拓展】多进程的应用场景有哪些?4.1 守护进程4.2 分布式服务5. 线程控制5.1 线程创建5.2 验证情况一:在主线程中创建一个工作线程主线程和工作线程都不退出5.2 验证情况二:在主线程中创建一个工作线程,让主线程退出,工作线程不退出5.3 传参验证1. 线程的概念(1)一个进程当中一定存在一个主线程,执行main函数的线程称之为主线程(2)其他线程都被称之为工作线程(3)之前所说的进程,本质上是线程组,即线程组被称为

2021-05-04 14:53:44 482 1

原创 Linux——进程信号(二):信号的捕捉流程,信号的阻塞,代码验证可靠信号和非可靠信号的注册,volatile关键字

文章目录:1. 信号的捕捉流程1.1 前言1.2 捕捉流程:信号什么时候进行处理?(信号的处理在内核态完成)1.3 什么时候进入操作系统内核2. 信号的阻塞2.1 信号的阻塞,不会影响信号的注册2.2 从内核源码角度分析信号阻塞2.3 信号阻塞的接口2.4 验证可靠信号的注册和非可靠信号的注册3. volatile关键字1. 信号的捕捉流程1.1 前言信号的注册,是不是和操作系统维护的进程的PCB有关系?因为struct task_struc中有一个struct sigpending中有一个sig

2021-05-01 22:23:37 346 1

原创 Linux——进程信号(一):信号的种类,信号的产生,信号的注册,信号的注销,信号的处理方式

文章目录:1. 信号的概念2. 如何查看信号的信息以及查看信号的默认处理动作2.1 操作系统对信号的处理动作2.2 信号具体的信息3. 信号的种类3.1 非实时信号(非可靠信号)3.2 实时信号(可靠信号)4. 信号的产生4.1 硬件产生4.2 软件产生5. 信号的注册5.1 从PCB的角度理解信号的注册5.1.1 查看源码5.1.2 信号注册的原理5.2 信号的注册1. 信号的概念信号是一个软件中断;接下来我们举个例子说明什么是软件中断:中断就是打断的意思,相当于我们过马路看见的红绿灯,当红灯亮时

2021-04-29 17:04:44 3603 8

原创 Linux——进程间通信(三):共享内存(创建接口,附加接口,分离接口,操作接口),共享内存的删除,消息队列

文章目录:1. 共享内存1.1 共享内存的原理1.2 共享内存的接口1.2.1创建共享内存(shmget函数)1.2.2 附加共享内存到进程(shmat函数)1.2.3 分离共享内存(shmdt函数)1.2.4 共享内存操作函数(shmctl函数)1. 共享内存1.1 共享内存的原理(1)在物理内存中创建一块内存(2)不同的进程通过页表映射,将同一块物理内存映射到自己的虚拟地址空间(3)不同的进程,操作进程虚拟地址,通过页表的映射,就相当于操作同一块内存,从而完成了数据的交换1.2

2021-04-27 22:13:44 1133 1

原创 C++ STL-List源码分析

文章目录:对源码中的私有成员数据进行刨析,根据缺什么补什么,对私有成员的数据类型进行声明源码中私有成员如下:刨析后如下:#include<iostream>using namespace std;namespace code{ template <class _Ty> class list { public: //类型的萃取 typedef size_t size_type;//大小的类型 typedef _Ty value_type

2021-04-25 14:23:52 2201 6

原创 STL-List-源码

// list standard header#if _MSC_VER > 1000#pragma once#endif#ifndef _LIST_#define _LIST_#include <cstddef>#include <functional>#include <iterator>#include <memory>#include <stdexcept>#include <xutility&g

2021-04-25 14:13:17 311

原创 C++ 模板初阶(函数模板&类模板),非类型模板参数,零初始化

文章目录:1. 前言-引入模板2. 函数模板2.1 函数模板的概念2.2 函数模板的格式2.3 函数模板的原理2.4 函数模板的实例化2.4.1 隐式实例化:让编译器根据实参推演模板参数的实际类型2.4.2 显示实例化:在函数名后的<>中指定模板参数的实际类型2.5 模板参数的匹配原则3. 类模板3.1 类模板的定义格式3.2 类模板的实例化4. 非类型模板参数4.1 为什么存在非类型模板参数4.2 非类型的函数模板参数4.3 非类型模板参数的限制5. 零初始化1. 前言-引入模板之前我们

2021-04-22 23:33:12 2147 2

原创 Linux——进程间通信(二):获取和设置文件描述符属性,匿名管道非阻塞读写特性,命名管道,创建共享内存

文章目录:1. 匿名管道的非阻塞读写特性1.1 获取文件描述符属性和设置文件描述符属性1.2 匿名管道的非阻塞读写特性1.2.1 读端进行读(非阻塞),写端不写(不操作)情况一:写端不关闭情况二:写端关闭1. 匿名管道的非阻塞读写特性1.1 获取文件描述符属性和设置文件描述符属性fcntl函数:设置/获取文件描述符的属性int fcntl(int fd, int cmd, … /* arg */ );需要一个宏 F_GETFL:获取文件描述符的属性—>传给cmd,此时可变参数列表就可以

2021-04-20 16:46:04 306 1

原创 C++ 浅谈new/delete, operator new/operator delete,malloc/free和new/delete的区别 ,内存泄漏

文章目录:1. C/C++内存分布2. C语言中动态内存管理方式3. C++内存管理方式3.1 new/delete操作内置类型3.2 new和delete操作自定义类型1. C/C++内存分布(1) 栈又叫堆栈,非静态局部变量/函数参数/返回值等等都在栈上,栈是向下增长的(2)内存映射段是高效I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享内存,做进程间通信(3)堆用于程序运行时动态内存分配,堆是向上增长的(4)数据段–存储全局数据和静态数据 (变量)(5)代

2021-04-18 22:52:24 1159 13

原创 C++ 初始化列表,explicit关键字,static成员,友元(友元函数,友元类),内部类

文章目录:1. 友元1.1 前言1.2 友元的分类1.3 友元函数1.4 友元类1. 友元1.1 前言当我们想打印私有成员时,我们可以写一个函数,如何让这个函数返回这个私有对象,调用这个函数打印,代码如下#include<iostream>using namespace std;class Test{public: Test(int data = 0) :m_data(data) {} Test(const Test& t) { m_data = t.m_d

2021-04-17 14:06:08 785 6

原创 C++ 类的6个默认成员函数(构造函数,析构函数,拷贝构造函数,赋值重载函数,取地址及const取地址操作符重载)

文章目录:1. 类的6个默认成员函数2. 构造函数2.1 前言2.2 什么是构造函数2.3 构造函数的特性3. 析构函数3.1 前言3.2 析构函数3.3 析构函数的特性3.4 析构函数按什么顺序析构4. 拷贝构造函数(对象初始化对象的过程)4.1 前言4.2 什么是拷贝构造函数4.3 拷贝构造函数的特性4.4 拷贝构造函数参数中的const是否可以去掉4.5 拷贝构造函数参数中&是否可以去掉5.1. 类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是,任何

2021-04-15 17:36:56 1563 10

原创 Linux——进程间通信(一):进程间通信的作用,匿名管道(命令,内核,PCB三个角度分析)

文章目录:1. 进程间通信的作用2. 匿名管道2.1 通过命令感受管道2.2 从内核角度解释管道2.3 创建管道1. 进程间通信的作用由于进程独立性的存在,两个进程想要直接交换数据是非常困难的,所以应用进程间通信来解决进程与进程之间交换数据的问题2. 匿名管道2.1 通过命令感受管道ps: 命令aux: 命令行参数|: 管道grep: 可执行程序2.2 从内核角度解释管道管道就是内核当中的一块缓冲区(一块内存),进程A和进程B可以通过这个缓冲区进行数据交换,匿名管道是不具备标

2021-04-15 11:50:41 336 1

原创 Linux——基础IO(三):动态库&静态库,动态链接&静态链接,文件系统,软硬链接

文章目录:1.动态库1.1 分类1.2 生成动态库1.3 使用1.4 动态库配合环境变量的使用2. 静态库2.1 分类2.2 静态库的的生成2.3 使用3. 静态链接和动态链接1.动态库1.1 分类windows下:后缀为.dll的文件为动态库linux下:后缀为.so,前缀为lib的文件为动态库1.2 生成动态库命令:gcc/g++ 必选项的命令行参数:-shared==>生成动态库-fPIC:生成与位置无关的代码命令范式:gcc/g++ [

2021-04-14 15:02:07 2027 6

原创 C++ const的使用,this指针,常方法(面试最爱问的this指针)

文章目录:1. const的使用2. this指针2.1 前言(this指针的引出)2.2 什么是this指针1. const的使用const的使用有以下四种情况:const int* pint const *pint* const pconst int* const p我们可以通过以下图解来理解这四种情况const到底修饰的是谁:当const在 “ * ” 的左边,则指向的值不能被修改当const在 “ * ” 的右边,则自身不能被修改2. this指针2..

2021-04-09 15:04:45 2106 12

原创 Linux——基础IO(二):文件描述符,文件流指针,重定向

文章目录:1. 文件描述符文件描述符的实质:文件描述符的分配规则:一个进程最大可以开多少个文件描述符?2. 文件流指针1. 文件描述符文件描述符就是内核当中 fd_array 数组的下标,是一个正整数我们写出如下代码,并在代码最后加上一个循环,让代码不要退出运行程序,后查看当前进程如下图所示:文件描述符:0–>标准输入1–>标准输出2–>标准错误文件描述符的实质:在进程中有一个结构体指针(struct file_struct* files),指向.

2021-04-08 20:31:05 2086 4

原创 Linux - 安装内核源码

文章目录1. 搞清楚自己机器的内核版本2. 在官网查找内核源码3. 上传到自己的云服务器4. 安装完毕5. 查看内核源码1. 搞清楚自己机器的内核版本此处可以使用cat /etc/redhat-release查看到我们机器的内核版本2. 在官网查找内核源码点击内核源码官网然后向下找到自己的内核版本,单击进入。找到 os/ 单击进入找到 Source/ 单击进入SPackages/ 单击进入找到一个以Kernel开头.src.rpm结尾的文件,单击下载3. 上传到自己的云服务.

2021-04-06 20:10:50 1960 1

原创 Linux ——基础IO(一) :C语言中的文件操作接口(fopen,fclose,fread,fwrite,fseek)&系统调用文件接口(opne,close,read,write,lseek)

目录:1. C语言文件接口(库函数)1.1 fopen1.2 fclose1.3 fread1.4 fwrite1.5 fseek2. 系统调用的文件接口2.1 open1. C语言文件接口(库函数)C语言文件接口函数有:fopen/fclose/fread/fwrite/fseek等1.1 fopenFILE *fopen(const char *path, const char *mode); path:带路径的文件名称(待打开的文件) mode: 

2021-04-06 11:21:13 1920 3

原创 C++ 类,类的封装,访问限定符,类的作用域,类的实例化,类对象大小计算,类对象的存储方式

文章目录:1. 面向过程和面向对象2. 类1. 面向过程和面向对象C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题C++是基于面向对象的,关注的是对象 ,将一件事情拆分成不同的对象,靠对象之间的交互完成2. 类在C语言中,结构体中只能定义变量,如下图所示:...

2021-04-01 23:50:27 258 2

原创 [C++] 引用,内联函数,auto关键字,基于范围的for循环,指针空值nullptr

文章目录:1. 引用1.1 序言1.2 引用的基本概念1.3 引用的特征1.4 常引用1.5 引用的场景1.6 传值和传引用效率对比1.7 引用和指针的区别2. 内联函数1. 引用1.1 序言在学习C语言阶段,我们学习了如何写一个函数来实现两个数的交换,接下来我们将一步步实现这个交换函数当我们初次接触C语言时,实现一个交换函数我们可能会写出如下代码:void swap(int a, int b){ int tem = a; a = b; b = tem;}显然这个函数是不能实现真

2021-03-31 22:24:27 456 2

原创 C++ 函数重载,缺省参数,命名空间

文章目录:1. 函数重载1.1 为什么C++支持重载,而C语言不支持重载你?1.2 Visual C++的名称修饰规则如下:1.3 extern "C"2. 缺省参数1. 函数重载函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 顺序)必须不同,常用来处理实现功能类似数据不同的问题函数参数个数不同函数参数类型不同函数参数顺序不同不能依靠返回值不同测试如下:#include<iostream>

2021-03-30 17:58:07 1134 3

原创 Linux-进程创建,进程终止,进程等待

文章目录:1.进程创建1.1 fork()函数1.2 vfork()函数2.进程终止2.1 进程终止的场景2.2 进程常见的终止方法正常终止(可以通过 echo $? 查看进程退出码)异常退出:Ctrl + c,信号终止扩展-->[刷新缓冲区的方式]扩展-->[库函数在哪一步冲刷缓冲区,关闭流]3. 进程等待3.1 进程等待的作用3.2 wait函数wait函数的使用问题一:如下代码我们如何证明父进程没有先退出,而是一直在等待子进程先退出问题二:僵尸进程,子进程在退出的时候会告知父进程,是怎么实

2021-03-28 19:15:44 1231 1

原创 Linux-环境变量,进程虚拟地址空间,查找物理内存地址(分页式,分段式,段页式)

文章目录:1.环境变量1.1 基本概念1.2 设置环境变量1.3 获得环境变量值的三种方法1.环境变量1.1 基本概念环境变量一般是指操作系统中用来指定操作系统运行环境的一些参数常见的环境变量•   PATH:保存了可执行程序的搜索路径•   SHELL:保存了命令行解释器的名称•   HOME:保存了当前用户的家目录查看环境变量•   echo $[环境变量名称]:查看环境变量中的内容

2021-03-26 00:17:47 1834 5

原创 Linux-冯诺依曼体系结构,操作系统,进程,PCB,进程状态,僵尸进程,孤儿进程

目录:1.冯诺依曼体系结构2.操作系统2.1 基本概念2.2 设计OS的目的3.进程3.1 基本概念3.2 查看进程信息4. 描述进程-PCB4.1 基本概念4.2 并发和并行4.3 struct内容分类4.3 进程状态4.4 进程创建4.4.1 getpid()函数4.4.2 gitppid()函数4.4.3 fork()函数1.冯诺依曼体系结构生活中我们常见的计算机(eg:笔记本),不常见的计算机(eg:服务器),大部分都遵守冯诺依曼体系特点•    数据存储在"内存"

2021-03-24 12:28:39 1730 1

空空如也

空空如也

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

TA关注的人

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