Linux
文章平均质量分 86
BaiRong-NUC
醉生梦死谁成器,拓马长枪定乾坤。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux VM虚拟机CentOS7 从下载到 远程访问 再到将web服务提供给外部访问(花生壳)
安装CentOS并切换yum源VMware+CentOS 7 静态IP设置方法(保姆级教程,建议收藏)注意:需要先固定好虚拟机内网IP后再进行远程访问,否则每次重启远程访问会失效Xshell连接虚拟机详细教程Linux下安装花生壳花生壳(内网穿透)服务+VMware搭建任意操作系统的服务器环境远程连接虚拟机............转载 2022-06-06 12:48:49 · 771 阅读 · 3 评论 -
C/C++ 后端开发学习知识点总结(思维导图C、C++与数据结构、Linux、网络、MySQL)
注意:这里只是简单的将知识点罗列了一下,可能有遗漏还请见谅思维图中没有标记 了解 的都很重要!1.C语言原创 2022-05-27 11:45:31 · 1447 阅读 · 0 评论 -
Linux_MySQL C语言连接MySQL,部分操作函数(设置中文编码,增删查改)解析(动态库软链接)
这里采用连接外部库的方式,使用C语言连接MySQL建议先看一下Linux_动态库与静态库(制作与安装)首先先看一下自己是否有MySQL的头文件和库,如果没有去官网下载一下检查命令,检查头文件和库是否存在find /usr/include/ -name mysql.hfind /usr/lib64/ -name libmysqlclient.*C语言调用MySQL库的下载地址下载好后将压缩包上传到Linux上(新建一个文件夹)使用tar xzf 安装包名解压,并使用mv命令将解压后的文件重原创 2022-05-25 23:04:32 · 536 阅读 · 0 评论 -
Linux_MySQL(核心) 事务(事务属性、隔离性与隔离级别、隔离性的理解、MVCC、隔离级别的实现ReadView)
文章目录1.事务的概念事务的提交方式2.隔离性1.事务的概念事务:是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。此外,事务还规定不同的客户端看到的数据是不相同的。(隔离性)事务主要用于处理数据量大,复杂度高的业务场景。这个操作需要多条 MySQL 语句构成,那么所有这些操作合起来,就构成了一个事务。(多条的MySQL之间存在逻辑相关性)注意:一个MySQL数据库不可能只有一条事务运行,在同一时间可能有大量的请求被包装成事务,在原创 2022-05-24 15:16:50 · 432 阅读 · 0 评论 -
Linux_MySQL(核心) 索引(MySQL与存储,磁盘构造,MySQL与磁盘的基本交互,索引的理解与构成B+树,B+树与页表,B树与B+树,聚簇索引与非聚簇索引,索引的建立)
文章目录1.索引2.MySQL与存储磁盘MySQL与磁盘的基本交互3.索引的理解(B+树索引结构)B+树与页表B树与B+树4.聚簇索引与非聚簇索引(MyISAM)5.索引的建立1.索引索引的目的:提高数据库查询的速度。索引实际上是将数据做了一些特殊的规制来提高查找效率。如果没有索引,大量数据查询时效率太低,耗时太长但是由于将数据以特定的数据结构保存,所以插入的速率会下降。所以使用索引需要看具体的业务。常见的索引:主键索引(primary key)唯一索引(unique)普通索引(ind原创 2022-05-22 18:45:46 · 388 阅读 · 0 评论 -
Linux_MySQL内外连接
表分为内连接和外连接文章目录1.内连接2.外连接1.内连接内连接其实就是利用where子句对多表形成的笛卡尔积进行筛选,之前的查询博客使用的就是内连接Linux_MySQL 复合查询select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;--表1 inner join 表2,将两表形成笛卡尔积设置条件:员工号与部门号相同这个信息才是有效的1.显示SMITH的名字和部门号这两种构造笛卡尔积的方式都可以。都是内连接,inner join更优雅一原创 2022-05-22 13:48:26 · 702 阅读 · 0 评论 -
Linux_MySQL 复合查询练习(多表查询、自连接、子查询、合并查询)
文章目录1.单表查询练习2.多表查询1.单表查询练习MySQL基本查询回顾这里主要学习MySQL复合查询。练习:1. 获取员工表中所有人的年薪,并排序。年薪=月薪*12+年底奖金。2.查询平均工资小于2000的部门和这个部门的平均工资3.显示每种岗位上的雇员总数和平均工资2.多表查询两张表的组合形式:从一张表中取出一条记录,和第二张表的所有记录进行组合如果不加过滤条件,得到的结果称为笛卡尔积。一般来讲,后续的多表查询都应该是笛卡尔积形成的新表的子集1.显示部门号为原创 2022-05-15 13:10:29 · 861 阅读 · 0 评论 -
Linux_MySQL内置函数(日期函数,字符串函数,数学函数,其他函数)
文章目录1.MySQL内置函数日期函数1.MySQL内置函数日期函数练习:创建一张留言板查询这个留言板2分钟以内发送的帖子原创 2022-05-02 18:01:16 · 751 阅读 · 0 评论 -
Linux_MySQL 聚合函数 group by子句练习
文章目录1.聚合函数1.聚合函数函数说明COUNT([DISTINCT] expr)返回查询到数据的数量SUM([DISTINCT] expr)返回查询到数字的总和,不是数字无意义AVG([DISTINCT] expr)返回查询到数字的平均值,不是数字无意义MAX([DISTINCT] expr)返回查询到数字的最大值,不是数字无意义MIN([DISTINCT] expr)返回查询到的数据的 最小值,不是数字没有意义测试:这个函数在执行时间原创 2022-04-30 20:47:41 · 1026 阅读 · 0 评论 -
Linux_MySQL表的基本操作 DML操作(表的插入,替换,查询数据,更新数据)
文章目录原创 2022-04-26 18:09:06 · 2661 阅读 · 0 评论 -
Linux_MySQL 表的约束(主键,唯一键,外键,主表,从表)
文章目录1.空属性 null/not null2.设置默认值default3.列描述符comment4.格式化输出zerofill5.主键primary key复合主键6.自增长 auto_incrementMySQL本质是一套存储数据的方案,除了解决基本的数据存储外,还需要一定的约束条件,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性,减少用户的误操作可能性。约束是MySQL通过限制用户操作的方式,来达到维护数据本身的安全和完整的一套方案。这里主要学习下面几种约束条件null/not n原创 2022-04-19 22:16:05 · 1724 阅读 · 0 评论 -
Linux_MySQL 数据类型
文章目录1.MySQL数据类型数值类型1.MySQL数据类型数据库中类型决定了储存这个数据所占用的大小,以及如何识别这个数据。数值类型数据类型说明bit(M)位类型,M指定位数,默认值1,范围1 ~ 64tinyint [unsigned]有符号范围-128 ~ 127,无符号0 ~ 255,默认无符号(char)smallint [unsigned]有符号范围 -215 ~215 -1,无符号 216 -1(short)int [unsigned]有符原创 2022-04-17 20:52:56 · 780 阅读 · 0 评论 -
Linux_MySQL表操作 DDL操作(建表,删表,改表,查表结构)
对表的操作分为两部分,这里先练习DDL操作。DDL:建表,删表,改表,查表结构DML:对表内部的信息进行增删查改文章目录1.DDL操作创建表查看表结构修改表删除表1.DDL操作创建表create table table_name(field1 datatype comment 'comment对这一列的批注可省略', field2 datatype, field3 datatype....)character set 字符集 collate 校验规则 engine 存储引擎;fiel原创 2022-04-13 14:58:24 · 963 阅读 · 0 评论 -
Linux_MySQL库的操作,数据库的备份与恢复
原创 2022-04-12 21:28:49 · 907 阅读 · 1 评论 -
Linux_MySQL数据库基础
文章目录1.基本使用注意一般情况下:MySQL服务并不暴露在公网上。MySQL一般会更改服务端口。1.基本使用连接服务器mysql -h "ip" -P端口 -u用户 -p密码端口默认3306号,密码项可以选填 ,ip默认本地其中,配置文件中的默认路径如下图数据库创建的文件默认储存在这个路径创建数据库:create database 数据库名称 ;删除数据库:drop database 数据库名称;删除默认路径下的文件夹使用数据库:use 数据库名称;原创 2022-04-12 17:34:51 · 1428 阅读 · 0 评论 -
Linux_MySQL Centos7安装并设置密码格式与完全卸载MySQL(2022年图文超级详细)以及再次安装报错The GPG keys listed for the解决
查看mariadb ps ajx |grep mariadb暂停mariadb服务后再查看mariadb服务systemctl stop mariadb.serviceps axj |grep mariadb服务已经暂停。显示出来mariadb/mysql安装包如果没有安装包可以试一试rpm -qa | grep mysql卸载这个安装包#卸载显示出来的mariadb/mysql安装包注意卸载前备份/etc/my.cnf,备份/var/lib/mysql数据,我.原创 2022-04-11 13:28:01 · 1454 阅读 · 3 评论 -
Linux_网络 IO多路转接poll与epoll、详解epoll(工作原理,参数解析,工作方式、优缺点对比)、实例poll服务器 epoll服务器、Reactor设计模式ET工作epoll服务器
IO多路转接之select文章目录IO多路转接 pollIO多路转接poll实例IO多路转接 pollpoll与select的区别:poll解决的select检测文件描述符数目有限的缺陷。poll解决了select需要重复添加文件描述符。poll将用户传递给内核结构体与内核给用户的结构体分开,不用每次调用poll时重新添加文件描述符。fds:需要管理的文件描述符。nfds:需要管理文件描述符的个数。timeout_ts:设置超时时间。设置1000:每1秒timeout一次。设置0原创 2022-04-10 19:42:08 · 1393 阅读 · 0 评论 -
Linux_网络_ 五种IO模型、非阻塞接口fcntl、IO多路转接之select,实例select回显服务器
文章目录IO一般分为两步进行的:等待IO就绪。拷贝IO数据到内核或外设。特定时间段,减少等待时间提高IO效率。如果在特定时间段等待时间相同,则IO效率相同(不考虑一次IO内容大小)。所以:...原创 2022-04-03 18:29:40 · 1758 阅读 · 0 评论 -
Linux_网络_总结与协议拓展_TCP/IP四层模型总结 DNS协议、ICMP协议、NAT技术(服务器向内网主机发送数据)、代理服务器(正向代理与反向代理)
Linux网络总结与网络协议拓展原创 2022-03-26 21:32:11 · 531 阅读 · 1 评论 -
Linux_网络_数据链路层协议 MAC帧/ARP协议 (以太网通信原理,MAC地址与IP地址的区分,MTU对IP/TCP/IP的影响,ARP协议及其通信过程)
文章目录1. 以太网TCP:提供数据传输的可靠性策略(丢包重传,流量控制,拥塞控制,滑动窗口等等)IP:提供数据传输的能力,让数据可以从主机A经过网络传输到主机B。IP协议在进行通信时,先将数据交付给下一跳主机(发送数据的主机A一定和下一跳网络处于同一网络段,一定是局域网通信)TCP的机制保证了IP传输数据的可靠性。MAC:负责局域网通信细节不同的局域网,他们使用的通信细节不同(以太网,令牌环网等)。1. 以太网以太网并不是具体的网络,而是技术标准,既包含数据链路层部分也包含物理层部分原创 2022-03-24 20:34:39 · 5360 阅读 · 2 评论 -
Linux_网络_网络层协议 IP(报文结构,报头字段,网段划分,子网掩码,公网IP与私网IP,路由转发)
网络层解决的问题:将数据从一台主机发送到另一台主机。路由器:配有IP地址,又能进行路由控制节点:主机与路由器的统称文章目录1. IP协议IP协议报头字段1. IP协议TCP协议:为IP协议提供策略支持,IP协议拥有通信的能力,TCP通过自己的决策,保证了IP协议在通信时的可靠性。同时TCP还负责将数据交付到上层的应用层。IP协议:知道目的IP地址,经过路径选择,将数据跨网络传送到对端主机的功能。路径选择是靠路由器实现的,前提是路由器的路由表已经建立。IP协议报头字段报文格式为:IP协原创 2022-03-21 21:19:20 · 4068 阅读 · 0 评论 -
Linux_网络_传输层协议 TCP通信滑动窗口(快重传),流量控制,拥塞控制(慢启动),延迟应答,捎带应答,TCP常见问题(字节流,粘包),Listen半连接队列
紧跟Linux_网络_传输层协议 TCP/UDP继续补充文章目录1. TCP通信时滑动窗口1. TCP通信时滑动窗口TCP在通信时存在确认应答机制,如果收到ACK后再发送下一个报文。类似串行发送,效率太低。TCP在发送消息时,一次发送多条数据就可以大大提高性能,这就是TCP滑动窗口。(多条发送时间重叠在一起,类似多线程发送)注意:TCP在发送数据时不能将数据一次全部发给对端,因为需要考虑对端接受缓冲区的大小滑动窗口:发送方不用等待ACK一次发送数据的最大量,滑动窗口大小与对端接受缓冲区的大小有原创 2022-03-15 12:23:15 · 3267 阅读 · 0 评论 -
Linux_网络_传输层协议 TCP/UDP(端口,报头,协议格式,通信细节,三次握手与四次挥手,TCP协议机制,连接管理机制)
紧跟网络应用层协议http等 应用层上层协议将自己的数据发送给下层传输层协议。文章目录端口端口数据经过网络传输到主机后,系统根据端口号确认数据给那个应用程序。端口存在与传输层,使用端口与应用层关系。在传输层的协议报头中可以看到端口号标记了一个主机上进行通信的不同程序在TCP/IP协议中使用源IP,源端口号,目的IP,目的端口号来标识一个通信(netstat -n)。...原创 2022-03-13 17:58:53 · 3695 阅读 · 2 评论 -
Linux_网络_应用层协议 http/https(协议格式,协议方法,状态码,常见Header)
文章目录原创 2022-03-07 12:12:52 · 1095 阅读 · 2 评论 -
Linux_套接字(C++_TCP回显服务器——多进程/线程池(生产者消费者模型)处理多链接请求)
文章目录1.多进程版本服务端启动服务端客户端启动客户端本地测试2.多线程版本3.模板线程池版本线程池代码:设计任务Task.h服务端代码1.多进程版本这里选择创建子进程,让子进程再创建子进程。父进程等待子进程,子进程的子进程处理业务逻辑。因为子进程是直接退出,子进程的子进程变成孤儿进程被系统管理,所以父进程在等待的时候不是阻塞等待的,所以可以处理多条链接请求。或者可以忽略SIGCHID信号让子进程不需要等待。服务端pragma once #include<iostream>#in原创 2022-02-21 21:46:14 · 2303 阅读 · 4 评论 -
Linux_网络套接字(C++_udp服务器,端口号,socket通信,网络字节序,sockaddr通用类型)
文章目录1.端口号(port)2.网络字节序3.sockaddr通用类型4.套接字系列函数socket函数创建套接字(sys/types.h sys/socket.h)bind绑定端口与ip(sys/types.h sys/socket.h)recvfrom函数读取网络数据(sys/socket.h sys/types.h)sendto函数发送数据到网络中5.udp实现服务端文件回显客户端服务端客户端本地测试6.代码位置1.端口号(port)端口号是一个2字节16位整数。任何网络数据通信,必须要通过端口原创 2022-01-26 23:50:08 · 1688 阅读 · 2 评论 -
Linux网络_从系统到网络(网络协议栈分层与功能,认识协议,OSI七层模型与TCPIP四层模型,网络通信流程(局域网,跨网络),MAC地址,IP地址)
文章目录1.网络在体系结构的位置与网络协议栈的层状结构2.协议栈各层的功能3.协议1.网络在体系结构的位置与网络协议栈的层状结构2.协议栈各层的功能协议栈分层设计达到了解耦目的,层与层之间只有接口之间的关系,提高了代码之间的可维护性与拓展性3.协议协议本质是一种约定,这种约定用计算机语言表达出。约定本身要可以通过某种数据标记出来,通信双方也可以识别。eg:...原创 2022-01-25 02:46:49 · 705 阅读 · 1 评论 -
Linux_线程池(线程池实现计算任务)
文章目录1.线程池:2.C++实现简单的线程池实现计算任务1.线程池:线程池: 一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着 监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利 用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。2.C++实现简单的线程池实现计算任务实现简单逻辑图:...原创 2022-01-24 01:31:32 · 1473 阅读 · 6 评论 -
Linux_文件系统(inode、磁盘结构寻址方案、EXT2文件系统、创建删除文件过程、软硬链接)
文章目录1.inode与inode编号2.文件系统磁盘的构成磁盘寻址方案磁盘的线性存储磁盘内存管理1.inode与inode编号根据Linux系统文件可知,文件=文件属性+文件内容。一般将文件属性称为元信息。保存元信息的结构称为inodeinode:任何一个文件的属性信息集合,Linux中几乎每一个文件都有inode。inode编号:区分不同inode,用inode编号来区分。eg:test.c文件的inode编号为924155文件内容直接储存在磁盘上(block)2.文件系统磁盘的构成原创 2022-01-08 21:42:01 · 1038 阅读 · 1 评论 -
Linux_系统文件IOopen、write、read、close、文件描述符(磁盘文件和内存文件)、files_struct结构体、文件描述符分配规则、重定向、FILE*与文件描述符的关系、缓冲区)
文章目录1.C语言文件IO*当前路径的概念标准输入、标准输出、标准错误2.Linux系统文件IO打开文件open(sys/types.h - sys/stat.h - fcntl.h)关闭文件close(unistd.h)*标志位(方便函数传参)从文件中读取文件read(unistd.h)向文件写入数据write(unistd.h)1.C语言文件IO*当前路径的概念在C语言文件操作时调用fopen函数以写的方式打开文件,会自动在当前路径下创建文件#include<stdio.h>in原创 2022-01-02 19:22:04 · 1427 阅读 · 3 评论 -
Linux_线程同步(条件变量(pthread_cond_t)实现线程同步_POSIX信号量sem_t实现线程同步互斥_生产者消费者模型(三种关系,两种角色,一个交易场所)阻塞队列模型_环形队列模型)
文章目录1.线程同步的重要性(避免线程饥饿问题)2.线程同步的定义3.条件变量(pthread_cond_t)初始化条件变量(pthread_cond_init(pthread.h))销毁条件变量(pthread_cond_destroy(pthread.h))等待条件满足(pthread_cond_wait(pthread.h))唤醒等待线程(pthread_cond_signal(pthread.h))demo1用主线程控制其他线程排队式轮循4.生产者消费者模型(三种关系,两种角色,一个交易场所)三种关原创 2021-12-21 21:29:07 · 1003 阅读 · 3 评论 -
Linux_线程互斥(原子性的解释_Linux互斥锁mutex(初始化与销毁)_mutex锁原子性的实现分析_可重入与线程安全_死锁_阻塞)
文章目录1.线程互斥背景知识(临界资源,互斥,原子性定义)2.对临界资源保护的重要性原子性的解释3.临界资源的保护(Linux互斥锁pthread_mutex_t)初始化互斥锁(pthread_mutex_init(pthread.h))互斥锁的销毁(pthread_mutex_destroy(pthread.h))临界资源加锁与解锁(pthread_mutex_lock/pthread_mutex_unlock)1.线程互斥背景知识(临界资源,互斥,原子性定义)临界资源:多执行流下共享的资源称为临界原创 2021-12-16 18:31:07 · 4574 阅读 · 2 评论 -
Linux_多线程(进程与线程的联系_pthread库_线程创建_线程等待_线程正常终止_线程取消_线程分离_pthread_t与LWP)
文章目录1.线程的定义,进程和线程的关系2.Linux下的线程Linux原生线程库(pthread库)1.线程的定义,进程和线程的关系线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程。根据上图可知:线程在进程内部运行,透过进程地址空间,可以看到进程的大部分资源每个线程是进程内部的一个独立的执行分支.上图的1 2 3 号都是当前进程的执行流进程是:task_struct +进程地址空间 + 页表(进程是承担系统分配资源的基本单位)。创建进程不仅要创建task_struct还要开辟进原创 2021-12-13 20:55:53 · 3328 阅读 · 5 评论 -
Linux_进程信号(进程信号生命周期_Core Dump调试_进程信号捕捉_系统调用向进程发送信号_阻塞信号_信号集函数_处理信号内核态与用户态_C语言volatile关键字_SIGCHLD信号)
文章目录原创 2021-12-04 17:53:56 · 2446 阅读 · 12 评论 -
Linux_System V进程通信_共享内存+命令查看共享内存
Linux SystemV通信包括:共享内存,消息队列,信号量其中信号量为了进程的同步与互斥而设计的共享内存和消息队列为了进程间传递数据设计这里讨论其中之一的共享内存文章目录1.共享内存原理2共享内存建立过程①申请共享内存shmget函数(sys/ipc.h -sys/shm.h)(创建共享内存)保证共享内存的唯一性ftok函数的代码(sys/types.h sys/ipc.h)shmflg:创建共享内存的选项。申请共享内存代码命令查看共享内存(ipcs -m)②共享内存挂接到进程空间(建立映射关原创 2021-11-13 18:23:59 · 1987 阅读 · 5 评论 -
Linux_Centos进程间通信_管道(匿名管道_命名管道)
文章目录1.管道是什么2.匿名管道(父子进程通信)①匿名管道原理②pipe函数 (unistd.h) 创建匿名管道确认读写进程,关闭对应读写端父子进程匿名管道通信代码1.管道是什么两个进程通过打开同一个”文件“来实现进程间通信。其中一个进程向文件里写入数据,另一个进程通过文件读取数据。或者一个进程向文件里读取数据,另一个进程通过文件写入数据。把从一个进程连接到另一个进程的一个这个“文件”称为一个管道根据上面的分析可知,管道只能单向通信2.匿名管道(父子进程通信)①匿名管道原理在我们创建子进原创 2021-11-06 17:30:07 · 1498 阅读 · 7 评论 -
Linux_动态库与静态库(制作与安装)
文章目录1.静态库和动态库的定义,库的命名规则2.静态库与动态库的优缺点Linux Centos下载C静态库命令生成静态链接C程序 -static查看可执行程序依赖的动态库(ldd)静态库与动态库的特征①动静态程序运行过程②动静态库的优缺点3.打包.o文件制作动静态库1.静态库和动态库的定义,库的命名规则动静态库类似与“半个可执行程序”程序在编译时会经历4步预处理->编译->汇编->链接分别生成三个临时文件.i->.s->.o,其中.o可重定向二进制文件。对于C语言,原创 2021-10-19 21:36:19 · 4301 阅读 · 8 评论 -
Linux_进程替换(execl、execlp、execv、execle)
当我们fork()生成子进程后,子进程的代码与数据可以来自其他可执行程序。把磁盘上其他程序的数据以覆盖的形式给子进程。这样子进程就可以执行全新的程序了,这种现象称为程序替换。文章目录1.替换函数(1.替换函数(<unistd.h>)...原创 2021-10-09 12:44:06 · 3776 阅读 · 6 评论 -
Linux_进程终止(进程退出,进程等待(阻塞与非阻塞等待))
进程终止的情况1.代码运行完毕,结果正确(主函数返回0)2.代码运行完毕,结果不正确(主函数返回对应错误值)以上都叫做正常退出3.代码异常终止(此时主函数的返回值没有意义)异常退出文章目录进程终止①进程退出1.正常退出(echo $?)(错误信息获取)2.进程退出exit函数(stdlib.h)3.进程退出_exit函数(unistd.h)4.异常退出(ctrl + c,信号终止)②进程等待(父进程)1.必要性2.wait函数等待进程终止①进程退出1.正常退出(echo $?)(错误信息获原创 2021-10-01 18:44:25 · 2555 阅读 · 8 评论 -
Linux_环境变量(添加删除修改)_(命令获取)
Windows下的环境变量文章目录1.环境变量概念1.环境变量概念环境变量:一般是指在操作系统中用来指定操作系统运行环境的一些参数如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性...原创 2021-09-25 18:05:19 · 2235 阅读 · 7 评论
分享