当前位置: 首页 > news >正文

Centos7安装、各种环境配置和常见bug解决方案,保姆级教程(更新中)

文章目录

  • 前言
  • 一、Centos7安装
  • 二、各种环境配置与安装
    • 2.1 安装net-tools(建议)
    • 2.2 配置静态网络(建议)
    • 2.1 修改Centos7的时间(建议)
    • 2.2 Centos7系统编码问题
    • 2.3 vim安装(建议)
    • 2.4 解决Centos7命令错误发出蜂鸣警告声
    • 2.5 安装wegt命令
    • 2.6 Mysql8.0版本安装
    • 2.7 Redis6安装
      • 2.7.1 Redis安装与启动
      • 2.7.2 Redis客户端
      • 2.7.3 Redis卸载


前言

一、Centos7安装

因为网上关于Centos7安装教程实在是太多了,我这里就不重复造轮子了,直接上传送门
点击这里安装Centos7

二、各种环境配置与安装

安装好后就是各种要配置的东西了,我这里将各种有用的配置都记录了下来,方便以后重新安装的时候再查看

2.1 安装net-tools(建议)

centos7默认没有netstat命令,需要安装 net-tools 工具,

yum install -y net-tools

2.2 配置静态网络(建议)

1、进入虚拟机/设置,查看是否是NAT模式
在这里插入图片描述
在这里插入图片描述
2、查看虚拟网络编辑器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、进入etc/sysconfig/network-scripts目录,使用vi打开 ifcfg-ensXXX文件,进行编辑

cd /etc/sysconfig/network-scripts
vi ifcfg-ens33 

在这里插入图片描述
IPADDR中设置的ip地址以后就是这台虚拟机的默认ip地址
设置完后一点要记得重启服务

service network restart

ifconfig命令查看网络是否已经配置成功(如果命令找不到先安装net-tools)
在这里插入图片描述
ping百度
在这里插入图片描述

2.1 修改Centos7的时间(建议)

使用命令:

date -s "2022/5/13 23:50:22"

说明:以上为案例,请根据自己情况修改时间

2.2 Centos7系统编码问题

问题:刚刚安装的时候建议检查一下系统编码,因为后期可能会用到Xshell(比如我是用的是Xshell5),如果linux下编码和Xshell中编码不同可能会导致Xshell中出现中文乱码情况。

1、使用loacle命令查看Centos7中的系统编码

centos系统找不到locate命令(locate: command not found)
安装mlocate包,一开始安装了locate,结果发现没有这个包

yum -y install mlocate

更新数据库

updatedb 

这里需要注意一点:如果没有updatedb更新后台数据库,直接输入查找命令:locate,还是未能找到命令。原因是Linux不是实时更新它的后台数据库,所以我们并不能马上执行。
运行“locate inittab”(必须安装完,并执行updatedb之后执行此命令)

locate inittab
[root@localhost ~]# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

注意LANG=zh_CN.UTF-8,我这里是UTF-8格式是我后期修改好了的。如果需要修改请看下面

2、修改 /etc/locale.conf 文件
使用命令:

vi /etc/locale.conf

将里面的内容改为LANG=zh_CN.UTF-8即可

2.3 vim安装(建议)

问题:刚刚安装Cenots7时,常用编辑命令Vim并不会安装好,命令行输入vim会显示bash vim: command not found,接下来展示安装vim步骤。

1、先检查系统是否有安装完整的vim
使用命令:

rpm -qa|grep vim

如果已经正确安装的话,会显示如下三行:

vim-enhanced-7.0.109-7.el5
vim-minimal-7.0.109-7.el5
vim-common-7.0.109-7.el5

2、安装vim
使用命令:

yum -y install vim*

等待安装成功即可

命令行输入vim检测是否安装成功
在这里插入图片描述

2.4 解决Centos7命令错误发出蜂鸣警告声

问题:每次输入命令错误,用tab快速补全的时候总会有这种警告声

1、修改inputrc文件

vi /etc/inputrc

在这里插入图片描述
2、 修改bashrc文件

vi /etc/bashrc

在这里插入图片描述
3、重启

reboot

2.5 安装wegt命令

yum -y install wget

2.6 Mysql8.0版本安装

需要准备:mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar
1、将mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar用Xftp工具从Window传送到linux系统下。
在这里插入图片描述
700多M,等待传送完即可
2、创建“mysql”目录,并将解压的文件放到这个目录下

进入到/opt/目录下

cd /opt/

注意:当文件传送成功后,在linux的/opt/目录下就会存在该压缩包
在这里插入图片描述
在当前目录(/opt/)下创建“mysql”目录

mkdir mysql

将解压后的文件放在“mysql”目录下(当前目录要为/opt/)

tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar -C mysql

在这里插入图片描述
解压完成!
进入到mysql目录下查看,会发现有以下这些安装包
在这里插入图片描述

3、用rpm指令解压“mysql”目录下安装rpm安装包
注意一定要先cd到mysql目录下!(下面所有指令按顺序执行)

cd mysql  (如果当前是mysql目录下可以不用输入这行)rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm rpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm  (这里出错,解决见下方①)rpm -ivh mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpmyum install openssl-develrpm -ivh  mysql-community-devel-8.0.26-1.el7.x86_64.rpmrpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpmrpm -ivh  mysql-community-server-8.0.26-1.el7.x86_64.rpm(这里出错,解决见下方②)

rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm执行失败
出错详情:
在这里插入图片描述
解决方案:
输入以下命令

yum remove mysql-libs

紧接着遇到询问,输入y
执行完后,重新输入:rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm
在这里插入图片描述
问题解决!

rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm执行失败
出错详情:
在这里插入图片描述
解决方案:
安装net-tools(server安装需要依赖net-tools)

yum -y install net-tools

在这里插入图片描述
重新输入:rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm
在这里插入图片描述
成功解决,并无报错!

4、启动MySQL服务
启动服务

systemctl start mysqld

重启服务

systemctl restart mysqld

停止服务

systemctl stop mysqld

在这里插入图片描述
5、查询自动生成的root用户密码

grep 'temporary password' /var/log/mysqld.log

在这里插入图片描述
命令行执行指令 :

mysql -u root -p

然后输入上述查询到的自动生成的密码, 完成登录
在这里插入图片描述

6、修改root用户密码

登录到MySQL之后,需要将自动生成的不便记忆的密码修改了,修改成自己熟悉的便于记忆的密码。
修改密码指令如下:

ALTER  USER  'root'@'localhost'  IDENTIFIED BY '1234';

执行上述的SQL会报错,原因是因为设置的密码太简单,密码复杂度不够,会对长度和特殊字符等进行校验,所以我们先把校验复杂度调低一点,0代表只校验长度,不校验特殊字符

set global validate_password.policy = 0;

当然也可以指定密码长度(如下指定密码长度为4)

set global validate_password.length = 4;

设置完后,重新输入修改密码指令即可!

如果遇到“-bash: ALTER: command not found”错误,那是因为没有登录进MySQL,登录方法见第5步

到了这mysql配置基本上已经ok了,下面选择性配置,用于让DataGrip连接到linux上的mysql

7、创建用户(选)

默认的root用户只能当前节点localhost访问,是无法远程访问的,我们还需要创建一个root账户,用户远程访问。我设置密码长度为6以便自己后续使用;set global validate_password.length = 6;

create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '111111';

8、并给root用户分配权限(选)

grant all on *.* to 'root'@'%';

9、重新连接MySQL(选)

mysql -u root -p

然后输入密码

10、通过DataGrip远程连接MySQL(选)
在这里插入图片描述
测试连接
在这里插入图片描述
如果成功那就没问题了。如果失败,可能原因是linux上的防火墙没有开放3306端口
要么关闭防火墙
1、关闭防火墙

systemctl stop firewalld.service

2、查看防火墙状态

firewall-cmd --state

确认下是否关闭,然后再试试Test Connection,成功页面如下
在这里插入图片描述
要么在防火墙上开放3306端口
1、先检查一下防火墙上所有的开放端口

firewall-cmd --zone=public --list-ports

在这里插入图片描述
有显示3306那就没问题,如果没有接下来就开放3306端口
2、防火墙开通3306端口:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

3、重新加载防火墙配置文件:

firewall-cmd   --reload

接下来就测试连接,按理来说已经可以连上了~

2.7 Redis6安装

2.7.1 Redis安装与启动

1、安装Redis所需要的gcc依赖

yum install -y gcc tcl

2、下载安装包并解压

wget https://download.redis.io/releases/redis-6.2.6.tar.gz

回到linux命令行下,进入/usr/local/src/目录(/usr/local/src/为下载时的目录,根据情况修改)

cd /usr/local/src/
ll

在这里插入图片描述
解压文件

tar -zxvf redis-6.2.6.tar.gz 

解压后进入到radis目录

cd redis-6.2.6

运行编译命令:

make && make install

如果没有出错,应该就安装成功了。默认的安装路径是在 /usr/local/bin目录下:
启动radis

redis-server

这种启动方式属于前台启动,如果想要连接的话,需要另外再开一个连接,所以我们要对其进行设置一下

3、指定配置启动

如果要让Redis以后台方式启动,则必须修改Redis配置文件,就在我们之前解压的redis安装包下(/usr/local/src/redis-6.2.6),名字叫redis.conf:
我们先将这个配置文件备份一份:
在这里插入图片描述

进入到/usr/local/src/redis-6.2.6目录下

cd /usr/local/src/redis-6.2.6

进行备份

cp redis.conf redis.conf.bck

然后对这个配置文件进行修改

vi redis.conf

然后修改redis.conf文件中的一些配置:
因为查找起来比较麻烦,所以推荐在命令行esc下用/(关键字)来搜索,按n是继续查找下一个,N是上一个。

# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes 
# 密码,设置后访问Redis必须输入密码
requirepass 123321

Redis的其它常见配置:

# 监听的端口
port 6379
# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 1
# 设置redis能够使用的最大内存
maxmemory 512mb
# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"

4、启动Redis
修改完配置后,开始启动Redis

# 进入redis安装目录 
cd /usr/local/src/redis-6.2.6
# 启动
redis-server redis.conf

查看一下redis是否成功运行

ps -ef | grep redis

在这里插入图片描述
启动成功
如果要停止服务,可以杀死进程(6341是我这里显示的进程id)

kill -9 6341

4、开机自启radis

我们也可以通过配置来实现开机自启。

首先,新建一个系统服务文件(还是在之前的目录):

vi /etc/systemd/system/redis.service

内容如下:

[Unit]
Description=redis-server
After=network.target[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
PrivateTmp=true[Install]
WantedBy=multi-user.target

保存

然后重载系统服务:

systemctl daemon-reload

现在,我们可以用下面这组命令来操作redis了:

# 启动
systemctl start redis
# 停止
systemctl stop redis
# 重启
systemctl restart redis
# 查看状态
systemctl status redis

执行下面的命令,可以让redis开机自启:

systemctl enable redis

2.7.2 Redis客户端

安装完成Redis,我们就可以操作Redis,实现数据的CRUD了。这需要用到Redis客户端,这里演示命令行客户端用法

Redis命令行客户端

Redis安装完成后就自带了命令行客户端:redis-cli,
它就在下图所示位置
在这里插入图片描述
使用方式如下:

redis-cli [options] [commonds]

其中常见的options有:

  • -h 127.0.0.1:指定要连接的redis节点的IP地址,默认是127.0.0.1
  • -p 6379:指定要连接的redis节点的端口,默认是6379
  • -a 123321:指定redis的访问密码

其中的commonds就是Redis的操作命令,例如:

  • ping:与redis服务端做心跳测试,服务端正常会返回pong

在这里插入图片描述
这种进入方式带密码,不太安全,可以用下面这种方式
另外:退出命令行指令是 ctrl+c
在这里插入图片描述
AUTH后面跟用户名密码即可,我这里没有用户名,则直接输入密码。

2.7.3 Redis卸载

卸载redis非常的简单,只需要简单的三步
1、停止redis服务器
首先,通过下面的命令查看redis服务是否在运行
[root@centos101 ~]# ps aux|grep redis
[root@centos101 ~]# redis-cli shutdown
[root@centos101 ~]# ps aux|grep redis

2、删除make的时候生成的几个redisXXX的文件
[root@centos101 ~]# rm -rf /usr/local/bin/redis*

3、顺便也删除掉解压后的文件目录和所以文件
rm -rf reids的解压目录

相关文章:

Centos7安装、各种环境配置和常见bug解决方案,保姆级教程(更新中)

文章目录前言一、Centos7安装二、各种环境配置与安装2.1 安装net-tools(建议)2.2 配置静态网络(建议)2.1 修改Centos7的时间(建议)2.2 Centos7系统编码问题2.3 vim安装(建议)2.4 解决…...

【C++进阶】智能指针

文章目录为什么需要智能指针?内存泄漏什么是内存泄漏,内存泄漏的危害内存泄漏分类(了解)如何避免内存泄漏智能指针的使用及原理smart_ptrauto_ptrunique_ptrshared_ptr线程安全的解决循环引用weak_ptr删除器为什么需要智能指针&am…...

软件测试面试题 —— 整理与解析(3)

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:🌎【Austin_zhai】🌏 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能&#xf…...

springboot常用的20个注解

Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务框架SpringCloud集成, 而Spring Boot 之所以能够轻松地实现应的创建及与…...

USB组合设备——带鼠标功能的键盘

文章目录带鼠标功能的键盘一个接口实现报告描述符示例多个接口实现复合设备和组合设备配置描述符集合的实现报告的返回附 STM32 枚举日志复合设备:Compound Device 内嵌 Hub 和多个 Function,每个 Function 都相当于一个独立的 USB 外设,有自…...

数据结构与算法基础-学习-18-哈夫曼编码

一、个人理解在远程通讯中,需要把字符转成二进制的字符串进行传输,例如我们需要传输ABCD,我们可以用定长的字符串进行表示,例如:A:00B:01C:02D:03这样可能就造成空间的浪费,我们多存储了一个0号位。那用变长呢&#xf…...

ZMC408CE | 实现“8通道独立PSO”应用场景

一、ZMC408SCAN产品亮点 1.高性能处理器,提升运算速度、响应时间和扫描周期等; 2.一维/二维/三维、多通道视觉飞拍,高速高精; 3.位置同步输出PSO,连续轨迹加工中对精密点胶胶量控制和激光能量控制等; 4…...

QuickJS中JS_SetClassProto方法把JavaScript对象指定为某个类的原型对象

在 QuickJS 中,JS_SetClassProto 方法用于设置一个类的原型对象。这个方法的作用是将一个 JavaScript 对象指定为该类的原型对象,从而定义该类的属性和方法。 具体来说,JS_SetClassProto 方法的第一个参数是指向 QuickJS 引擎执行上下文的指…...

泰克信号发生器特点

泰克信号发生器是一种用于产生各种类型的电子信号的仪器,可以广泛应用于电子、通信、自动化、医疗等领域。泰克信号发生器具有以下特点:多种信号类型:泰克信号发生器可以产生多种类型的电子信号,包括正弦波、方波、三角波、脉冲等…...

贯穿设计模式第四话--里氏替换原则

🥳🥳🥳 茫茫人海千千万万,感谢这一刻你看到了我的文章,感谢观赏,大家好呀,我是最爱吃鱼罐头,大家可以叫鱼罐头呦~🥳🥳🥳 从今天开始,将…...

6501: 鸡兔同笼

描述 一个笼子里面关了鸡和免子(鸡有两只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物&#xff0c;至多有多少只动物。 输入 一个正整数a(a<32768)。 输出 包含两个正整数&#xff0c;第一个是最少的动物数&#xff0c;第二个是最多的…...

Linux项目自动化构建工具-make/makefile 介绍及使用

使用背景 在工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义一系列 规则来指定什么文件需要先编译&#xff0c;什么文件需要后编译&#xff0c;哪些文件需要重新编译&#xff0c;或者更复杂 的功能操作 makefile带来的好处…...

【云原生|Docker】06-dokcerfile详解

目录 前言 Dockerfile基础示例 Dockerfile简介 1. Dockerfile概念 2. Dokcer镜像分层理解 ​3. Doker build构建原理 Dockerfile参数解析 1. Dokcerfile组成 2. 指令说明 2.1 FROM引入基础镜像 2.2 LABEL 2.3 ENV 2.4 RUN 2.5 COPY 2.6 ADD 2…...

【SCL】博图——先入先出排序法

使用博图SCL语言来实现先入先出排序 前言 使用SCL完成一个先入先出排序 具体要求&#xff1a;最先输入的一个数值&#xff0c;最先输出出来&#xff0c;下面的数自动向前填充&#xff1b; 注&#xff1a;这里可能有两种理解&#xff1a;一是第一个输入的第一个出来&#xff…...

OSPF----特殊区域

目录 OSPF----特殊区域 第一大类----末梢区域&#xff08;Stub Area&#xff09; 完全末梢区域&#xff08;(Totally Stub Area) 第二大类特殊区域----非完全末梢区域&#xff08;NSSA&#xff09; OSPF----特殊区域 第一大类----末梢区域&#xff08;Stub Area&#xff09…...

JVM-类加载

1&#xff1a;类加载机制&#xff1a; 加、验、准、解、初、使、卸 加、烟、准、姐、初、湿、鞋 加载、将class 文件转化为二进制流加载 JVM 内存中并生成一个该类的Class对象验证、Class 文件的字节流中包含的信息是否符合当前虚拟机的要求准备、在方法区中分配这些变量所…...

超详细讲解C语言文件操作!!

超详细讲解C语言文件操作&#xff01;&#xff01;什么是文件文件名文件的打开和关闭文件指针文件的打开和关闭文件的顺序读写文件的随机读写fseekftellrewind文本文件和二进制文件文件读取结束的判定文件缓冲区什么是文件 磁盘上的文件是文件。但是在程序设计中&#xff0c;我…...

linxu学习之进程

文章目录进程程序和进程产生进程销毁进程多进程高并发设计孤儿僵尸守护进程孤儿进程&#xff1a;守护进程(重点)僵尸进程&#xff1a;进程 程序和进程 操作系统可以运行多个程序&#xff0c;那他是如何运行的&#xff1f;实际上&#xff0c;CPU的执行是很快的&#xff0c;而待…...

蓝桥杯真题2

[蓝桥杯 2013 省 B] 连号区间数 题目描述 小明这些天一直在思考这样一个奇怪而有趣的问题&#xff1a; 在 111 ~ NNN 的某个全排列中有多少个连号区间呢&#xff1f;这里所说的连号区间的定义是&#xff1a; 如果区间 [L,R][L, R][L,R] 里的所有元素&#xff08;即此排列的…...

PWM互补输出,以及死区时间计算

本文基于野火例程进行解说 实验内容 本次实验输出一对互补的pwm波&#xff0c;且进行死区时间的计算说明。 代码 互补输出对应的定时器初始化代码&#xff1a; bsp_advance_tim.c /********************************************************************************* fi…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...