部署Discuz论坛项目

下篇:https://blog.csdn.net/Lzcsfg/article/details/138991340

源码链接:https://pan.baidu.com/s/1FnjxZWW7QjpdDirgYkvsvg?pwd=swx5
提取码:swx5


DIscuz 是由 PHP 语言开发的一款开源社交论坛项目。运行在典型的LNMP/LAMP 环境中。

安装MySQL数据库5.7
主机名IP地址操作系统硬件配置
discuz-db192.168.226.128CentOS 7-mini-20092 Core/4G Memory

修改主机名用来自己识别

hostnamectl set-hostname discuz-db
#重连远程更新或使用bash命令启动一个新的交互式的命令行界面以刷新主机名

下载 MySQL 仓库

rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

导入 GPG 密钥文件

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

安装 MySQL 软件包

yum install mysql-server -y

启动 MySQL 程序

systemctl enable mysqld --now

查看 MySQLroot 初始密码

grep -i password /var/log/mysqld.log

通过初始密码登录到数据库

 mysql -uroot -p'密码'

修改密码复杂度策略(即不验证复杂度)

mysql> SET GLOBAL validate_password_policy=LOW;

修改密码长度(用来短位数密码方便学习使用)

mysql> SET GLOBAL validate_password_length=4;

设置 root 本机登录密码(长度须满足8位)

mysql> alter user root@"localhost" identified by "1234";

退出数据库

mysql> exit

修改 /etc/my.cnf 文件,在文件中定义密码策略,让策略永久生效

vim /etc/my.cnf

#最后一行新增如下代码
validate_password_policy=0
#设置字符集支持中文
character-set-server=utf8

重启 MySQL 使配置生效

systemctl restart mysqld

登录数据库授权 root 账号可以远程登录,后边需要测试 PHP 与数据库的连接

mysql -uroot -p1234
#创建一个root用户用来远程访问用,这个root和登录本机登录数据库的root不是同一个哈,现在创建成功后数据库就有两个root用户拉。
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'admin123456';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'admin123456';
mysql> FLUSH PRIVILEGES;

创建对应的 discuz

mysql> create database discuz;

退出数据库

mysql> exit
安装Nginx web服务
主机名IP地址操作系统硬件配置
discuz01192.168.226.129CentOS 72 Core/4G Memory
discuz02192.168.226.130CentOS 72 Core/4G Memory

Nginx版本分为 Mainline (开发版本)、Stable (最新稳定版)和Legacy (旧的稳定版)。

修改主机名(记得初始化脚本对虚拟机初始设置)

#对192.168.226.129操作
hostnamectl set-hostname discuz01
#对192.168.226.130操作
hostnamectl set-hostname discuz02

准备 Nginx 稳定版仓库,仓库地址:https://nginx.org/en/linux_packages.html#RHEL

提示:在 discuz01discuz02 主机安装

vim /etc/yum.repos.d/nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

安装 Nginx 软件包

yum install nginx-1.20.2 -y

Nginx常用相关文件

/etc/nginx/nginx.conf #Nginx主配置文件

/usr/share/nginx/html #Nginx网页目录

/var/log/nginx/error.log #Nginx错误日志文件

/var/log/nginx/access.log #Nginx访问日志文件

/etc/nginx/conf.d/ #虚拟web主机目录

安装PHP相关软件

php #是php代码的解释器
php-fpm #管理php进程接收请求
php-mysql #与MySQL集成,连接MySQL数据库并进行增删改查
php-gd #帮助php处理图片的扩展,如生成图片、裁剪图片、缩放图片等

提示:在 discuz01discuz02 主机安装

yum install php php-fpm php-mysql php-gd -y

修改配置文件:/etc/php-fpm.d/www.conf,指定PHP程序运行时的用户与组,并开启PHP状态页面用于监控服务状态。

vim /etc/php-fpm.d/www.conf 
#...

#指定PHP程序运行时的用户和组为Nginx
#在第39行
user = nginx
#在第41行
group = nginx
 
#在第121行,取消 ;号注释,开启PHP状态页面,并改名为/php_status
pm.status_path = /php_status

修改配置文件指定php时区:/etc/php.ini

vim /etc/php.ini +878
#...

#在第878行取消注释,并修改PHP时区
date.timezone ="Asia/shanghai"

修改 Nginx 虚拟web主机配置文件,定义网站信息:/etc/nginx/conf.d/

#清空该路径默认文件
rm -rf /etc/nginx/conf.d/*
vim /etc/nginx/conf.d/discuz.conf

server {
    listen       80;
    server_name  localhost;
    
    #开启nginx状态页面
    location = /status {    
    stub_status;
   }
   
    location / {
        root   /usr/share/nginx/html;
        index  index.php index.html index.htm;  
    }
    
    #配置nginx连接php
    location ~ \.php$ {
        root           /usr/share/nginx/html; 
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    
    #开启php页面
    location /php_status {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        fastcgi_params;
    }
}

启动 NginxPHP

systemctl start nginx php-fpm
systemctl enable nginx php-fpm

测试 NginxPHP 之间的连接

vim /usr/share/nginx/html/phpinfo.php

<?php
phpinfo();
?>

重启Nginx和PHP

systemctl restart nginx php-fpm

访问页面测试(你需要改成你的IP):访问正确页面则会显示php默认页面

http://192.168.226.129/phpinfo.php

http://192.168.226.130/phpinfo.php

测试 PHPMySQL 之间的连接

vim /usr/share/nginx/html/mysql.php 
#这里面的ip要修改成你配数据库的虚拟机的ip,root密码就是添加的一个root用户的admin123456的密码
#在数据库哪里新增创建拉一个root专门用来远程访问的,这里迷惑拉去看数据库那
<?php
$con=mysql_connect("192.168.226.128","root","admin123456");
if(!$con){
        die("could not connect to the db:\n".mysql_error());
}
else{
        echo "success";
}
mysql_close($con);
?>

访问页面测试:正确页面会显示 success

http://192.168.226.129/mysql.php

http://192.168.226.130/mysql.php

上线Discuz论坛项目

discuz01 主机切换到Nginx网页目录并删除自带的页面文件

cd /usr/share/nginx/html/
rm -rf *

自行将项目源码包上传

下载解压工具

yum -y install zip unzip

解压项目到网页目录

unzip Discuz_X3.3_SC_UTF8.zip 

upload 下的页面文件移动到至当前 html 目录

mv upload/* .

修改项目文件权限,确保 Nginx 用户对所有项目文件具备完全权限

chown -R nginx.nginx .

访问Discuz:

http://192.168.226.129/

http://192.168.226.130/

两个ip都能看到如下页面就表示成功

如下页面安uz01操作安装。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
discuz01 主机的 html 目录同步给 discuz02 主机(此时项目中已经包含了连接数据库的相关信息)

[root@discuz01 ~]# scp -r /usr/share/nginx/html 192.168.226.130:/usr/share/nginx/

discuz02 主机修改 html 目录下项目文件权限

[root@discuz02 ~]# cd /usr/share/nginx/html/
[root@discuz02 html]# chown -R nginx.nginx .

访问 discuz02 测试:http://192.168.226.130/

上面我只对discuz01安装拉这个项目,而discuz02没有安装,将主机discuz01的html目录拷贝到discuz02,现在主机discuz02

没有安装也可以访问到项目网页,这样就完成拉集群操作,同理,可以部署更多的服务主机用不同的主机都可以访问同一个网站。

在这里插入图片描述

Redis为论坛提供缓存

通过 Redis 缓存数据库将论坛数据存储在内存中,使其能够处理高并发的读写操作,每秒可以执行高达数十万次的读写操作,来提高论坛的性能。

discuz-db 主机安装Redis数据库

[root@discuz-db ~]# yum install redis -y

Redis 默认只允许本地访问,需要修改 Redis 配置文件允许远程访问

[root@discuz-db ~]# vim /etc/redis.conf +61

#查找 bind 127.0.0.1 这一行修改为0.0.0.0 监听所有接口。如下所示:
bind 0.0.0.0

启动 Redis 服务

[root@discuz-db ~]# systemctl start redis
[root@discuz-db ~]# systemctl enable redis

Discuz 中检查是否支持 Redis
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

默认不支持 Redis 缓存,Discuzphp 语言开发,如需通过 Redis提供缓存,需要安装 php 连接 Redis 的扩展模块。

discuz01和discuz02 主机安装 php-pecl-redis 扩展模块

yum -y install php-pecl-redis

两台都重启 php-fpm 并检查是否支持 redis

systemctl restart php-fpm
php -m | grep redis

再次刷新Discuz页面检查是否支持Redis

在这里插入图片描述

但是现在 DiscuzRedis 之间还没有建立连接,接下来配置Discuz连接 Redis

discuz01discuz02 主机修改文件:/usr/share/nginx/html/config/config_global.php

vim /usr/share/nginx/html/config/config_global.php +19
#...

#指定Redis服务器地址
$_config['memory']['redis']['server'] = '192.168.226.128'; 

再次刷新页面可看到Discuz已经成功与Redis连接,并且已经利用Redis存储了数据。

在这里插入图片描述

Nginx为Discuz实现负载均衡

负载均衡通过分散流量到多台服务器,避免单一服务器负载过重,提高系统性能和响应速度

配置多个负载均衡节点,当其中一个节点发生故障,其他节点可以接管其工作,避免业务中断。

主机名IP地址操作系统硬件配置
master-proxy192.168.226.131CentOS 72 Core/4G Memory
backup-proxy192.168.226.132CentOS 72Core/4G Memory

再准备两台虚拟机分别修改主机名修改主机名

#对192.168.226.131操作
hostnamectl set-hostname master-proxy
#对192.168.226.132操作
hostnamectl set-hostname backup-proxy

两台机器安装 Nginx 软件包

vim /etc/yum.repos.d/nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
yum install nginx-1.20.2 -y

创建 Nginx 代理配置文件,实现代理功能

rm -rf /etc/nginx/conf.d/*
vim /etc/nginx/conf.d/proxy.conf

upstream web {
    server 192.168.226.129:80;   #这里你要修改成discuz01的IP 注意改成你的
    server 192.168.226.130:80;   #这里改成discuz02的IP
}

server {
    listen       80;
    server_name  web.discuz.com;

    #开启nginx状态页面
    location = /status {    
    stub_status;
    }
   
    location / {
        proxy_pass http://web;
    }

    location ~ .* {
        proxy_pass http://web;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

两台代理主机都启动 Nginx 程序

systemctl start nginx
systemctl enable nginx

访问两台代理测试:

http://192.168.226.131/

http://192.168.226.132/

在这里插入图片描述

Keepalived为Nginx实现高可用

通过 keepalivedNginx 代理实现高可用,当其中一个代理节点发生故障,keepalived 可以实现故障自动切换,避免业务中断。

在两台代理节点安装 keepalived 软件包

yum install keepalived -y

master-proxy 主机修改 keepalived 配置文件

vim /etc/keepalived/keepalived.conf
 
! Configuration File for keepalived
global_defs {
    router_id LVS_DEVEL
script_user root
    enable_script_security
}
vrrp_script chk_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 5
    weight -5
    fall 2
rise 1
}
vrrp_instance VI_1 {
    state MASTER               
    interface ens33      #这里的ens33是我的网卡,你要注意你的网卡是什么,再修改         
    virtual_router_id 51
    priority 101          #这里是优先级 和备用代理节点的优先级数字不能一样    
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass abc123
    }
    virtual_ipaddress {
        192.168.226.111/24    #这个虚拟IP自定义,但需要在同一个网段并没有占用的IP 
    }
    track_script {
       chk_nginx        
    }
}

backup-proxy 主机修改keepalived配置文件

vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived
global_defs {
    router_id LVS_DEVEL
script_user root
    enable_script_security
}
vrrp_script chk_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 5
    weight -5
    fall 2
rise 1
}
vrrp_instance VI_1 {
    state BACKUP               
    interface ens33       #这里的ens33是我的网卡,你要注意你的网卡是什么,再修改         
    virtual_router_id 51
    priority 99             #这里是优先级 和主代理机的优先级数字不能一样   
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass abc123
    }
    virtual_ipaddress {
        192.168.226.111/24   #这个虚拟IP自定义,但需要在同一个网段并没有占用的IP
    }
    track_script {
       chk_nginx        
    }
}

keepalived的配置文件详解

#定义一个自定义脚本,名称为chk_nginx
vrrp_script chk_nginx {
    #脚本所在的路径及名称
    script "/etc/keepalived/check_nginx.sh"
    #监控检查的时间间隔,单位秒
    interval 5
    #健康检查的次数,连续2次健康检查失败,服务器将被标记为不健康
    fall 2
    #连续健康检查成功的次数,有1次健康检查成功,服务器将被标记为健康
    rise 1
}

#配置了一个名为VI_1VRRP实例组
vrrp_instance VI_1 {
    #该节点在VRRP组中的身份,Master节点负责处理请求并拥有虚拟IP地址
    state MASTER
    #实例绑定的网络接口,实例通过这个网络接口与其他VRRP节点通信,以及虚拟IP地址的绑定
    interface ens32
    #虚拟的路由ID,范围1255之间的整数,用于在一个网络中区分不同的VRRP实例组,但是在同一个VRRP组中的节点,该ID要保持一致
    virtual_router_id 51
    #实例的优先级,范围1254之间的整数,用于决定在同一个VRRP组中哪个节点将成为Master节点,数字越大优先级越>高
    priority 101
    #Master节点广播VRRP报文的时间间隔,用于通知其他Backup节点Master节点的存在和状态,在同一个VRRP组中,所有>节点的advert_int参数值必须相同
    advert_int 2
    #实例之间通信的身份验证机制
    authentication {
        #PASS为密码验证
        auth_type PASS
	#此密码必须为18个字符,在同一个VRRP组中,所有节点必须使用相同的密码,以确保正确的身份验证和通信
        auth_pass abc123
    }
	
    #定义虚拟IP地址
    virtual_ipaddress {
        192.168.0.111/24      
    }

    #引用自定义脚本,名称与上方vrrp_script中定义的名称保持一致
    track_script {
       chk_nginx
    }
}

在两台主机的 /etc/keepalived/ 目录准备 check_nginx.sh 脚本

vim /etc/keepalived/check_nginx.sh

#!/bin/bash
conut=`ps -C nginx | grep -v PID | wc -l`
if [ $conut -eq 0 ];then
        systemctl stop keepalived
fi

为脚本添加执行权限

chmod +x /etc/keepalived/check_nginx.sh

两台主机启动 keepalived 服务

systemctl start keepalived
systemctl enable keepalived

master-proxy 主机查看 keepalived 虚拟IP地址

[root@master-proxy ~]# ip a
#...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
    #本机IP
    inet 192.168.226.131/24 brd 192.168.226.255 
	#keepalived虚拟IP
    inet 192.168.226.111/24 scope global secondary ens33

windows 的 hosts 文件中配置本地解析:C:\Windows\System32\drivers\etc\hosts

注:建议用记事本的管理员身份运行去修改这个配置文件,普通身份可能会失败

192.168.226.111 web.discuz.com

访问域名测试:http://web.discuz.com/

在这里插入图片描述

测试备用代理,当主代理的Nginx挂掉,Keepalived会将使用备用代理

将master-proxy主机关闭nginx,观察备用代理的IP

#关闭nginx服务
systemctl stop nginx   
#查看keepalived  正常是同时关闭拉
systemctl status keepalived    

在备用代理backup-proxy查看IP

[root@master-proxy ~]# ip a
#...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
    #本机IP
    inet 192.168.226.132/24 brd 192.168.226.255 
	#keepalived虚拟IP
    inet 192.168.226.111/24 scope global secondary ens33 ~]# ip a
#可以看到虚拟IP现在成功切换到拉备用代理主机上拉

现在再切换回master-proxy主机开启nginx和keepalived并查看master-proxy的IP

systemctl start nginx keepalived

[root@master-proxy ~]# ip a
#...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
    #本机IP
    inet 192.168.226.131/24 brd 192.168.226.255 
	#keepalived虚拟IP
    inet 192.168.226.111/24 scope global secondary ens33

可以发现,当主代理nginx挂掉,就成功让keepalived也关闭,从而使虚拟IP成功切换到备用代理机上,当主代理机恢复nginx和keepalived服务后,主代理机又拿回拉虚拟IP,至此成功实现了高可用。

将master-proxy主机关闭nginx,观察备用代理的IP

#关闭nginx服务
systemctl stop nginx   
#查看keepalived  正常是同时关闭拉
systemctl status keepalived    

在备用代理backup-proxy查看IP

[root@master-proxy ~]# ip a
#...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
    #本机IP
    inet 192.168.226.132/24 brd 192.168.226.255 
	#keepalived虚拟IP
    inet 192.168.226.111/24 scope global secondary ens33 ~]# ip a
#可以看到虚拟IP现在成功切换到拉备用代理主机上拉

现在再切换回master-proxy主机开启nginx和keepalived并查看master-proxy的IP

systemctl start nginx keepalived

[root@master-proxy ~]# ip a
#...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
    #本机IP
    inet 192.168.226.131/24 brd 192.168.226.255 
	#keepalived虚拟IP
    inet 192.168.226.111/24 scope global secondary ens33

可以发现,当主代理服务器发生故障后,Keepalived会自动把IP切换到备用代理服务器上,当主代理恢复服务后,又从新换回来,从而达到代理服务器的高可用效果。

  • 13
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
越的访问速度和负载能力 Discuz! 从创立之初即以提高产品效率为突破口,随着编译模板,语法生成内核,数据缓存和自动更新机制等独创或独有技术的应用,和坚固的数据结构及最少化数据库查询设计,使得 Discuz! 可以在极为繁忙的服务器环境下快速稳定运行,切实节约企业成本,提升企业形象。 强大而完善的功能 除了一般论坛所具有的功能外, Discuz! 还提供了很大限度的个性化设定。众多功能在后台预留开关,可按企业需要启用。前台全部采用编译模板技术构建,更换界面易如反掌。完善的权限设定,使管理员可控制到每个用户,每个组及所在每个分论坛的各种权限。 国际化和标准化的产品架构 目前发布的版本分为简体中文,繁体中文和英文三个版本。自 Discuz! 2.0 以来,因其高效国际化内核的应用,使其成功走出国门,步入海外市场,商业客户遍及中国大陆,香港,台湾,北美,欧洲,澳洲,马来西亚等国家和地区。 周密的安全部署和攻击防护 Discuz! 能有效处理页面格式,保证页面及表格的完整性。安全检查应用于每一个 Discuz! 代码中,可自动屏蔽贴子及签名等中的恶意代码和跨站脚本攻击。独有的全程操作记录,使论坛运行情况随时有据可查。 持久的创新和广阔的前景 Discuz! 拥有一支富于创新的开发队伍,持续性的技术优势和不断增长的市场经验,除了强化已有的市场竞争力以外,更增强了已有和潜在客户的信心,我们并不满足于现有成果,我们时刻关注国内外相关领域内的最新进展和动态,不断的进步和创新,已使越来越多的人相信 Discuz! 辉煌的明天。 操作系统要求 Discuz! 具备跨平台特性,可以运行于 Linux/FreeBSD/Unix 及微软 Windows 2000/2003 等各种操作系统环境下。我们已在软件中针对上述操作系统做了大量的测试和实地检验,保证 Discuz! 可以在上述系统中安全稳定的运行,但您仍然需要做好服务器操作系统级的安全防备措施,例如Windows用户需更改 MySQL for Windows 的初始 root 密码,避免跨目录的文件读写。类 Unix 用户需避免使用过于简单的密码,避免跨用户目录的文件读写,做好服务器上其他相关软件(如 Sendmail、ftpd、httpd)等的安全防范,使用较新的软件版本等。 如果您租用虚拟主机,一般正规和技术力量较强的虚拟主机提供商会已经做好操作系统的各项准备,用户可不必关注此部分。 推荐使用 Linux/FreeBSD 操作系统,不仅完全免费,而且可以获得更好的稳定性和负载能力。如果使用Windows 系统,请将 PHP 以 ISAPI(非 CGI)方式安装。 语言及数据库支撑环境要求 Discuz! 需要服务器上装有如下软件: 可用的httpd服务器(如 Apache、Zeus、IIS 等) PHP 4.1.0 及以上 Zend Optimizer 2.5.7 及以上 MySQL 3.23 及以上(仅针对 MySQLDiscuz! ) 以上软件除了 httpd 软件有可能需要购买以外,其余均为跨平台的免费软件,推荐使用以上软件的最新稳定版本,不仅拥有更多的功能,而且通常已修复了已知老版本的安全漏洞。 如果您租用虚拟主机,请咨询虚拟主机提供商,您的空间服务器是否已安装了上述软件。由于 Discuz! 的数据表具有前缀设计,因此通常情况下可以将 Discuz! 与其他软件安装在同一个数据库中,或采用不同的前缀名从而在同一个数据库中安装多个 Discuz! 论坛而不产生冲突。 您的 MySQL 数据库账号应当拥有 CREATE、DROP、ALTER等执行权限,同时文件空间需不低于 2M,数据库空间不低于 5M,通常您的虚拟空间都会满足这个条件,以满足包括 Discuz! 在内的绝大多数网络软件的正常运行。如果您不了解具体情况,请咨询您的空间提供商。 Discuz! 7.0.0 更新日志 【全新】社区 UI 设计,开创性操作引导和页面布局,大幅度提升会员使用体验 【全新】风格模板体系,打造个性化论坛风格更容易,论坛展现效果更突出 【全新】论坛风格可视化编辑器,支持在线设计风格,可实时预览设计效果 【全新】论坛风格管理系统,风格安装、卸载一键完成,支持风格效果图 【内置】16 款精心设计的炫酷风格和 7 套模板,供各种类型的站点选用,个性十足 【全新】论坛任务系统,进一步增强社区会员的互动行为,可利用任务增强社区的粘性、增加活跃度 【内置】会员类、帖子类、红包类、推广类、头像类 5 种论坛任务,轻松设计各种论坛任务 【支持】任务衍生,每类任务可根据申请条件、完成条件、奖励内容衍生出无数种任务 【支持】自定义任务脚本,内置自定义任务的安装、升
基于C++&OPENCV 的全景图像拼接 C++是一种广泛使用的编程语言,它是由Bjarne Stroustrup于1979年在新泽西州美利山贝尔实验室开始设计开发的。C++是C语言的扩展,旨在提供更强大的编程能力,包括面向对象编程和泛型编程的支持。C++支持数据封装、继承和多态等面向对象编程的特性和泛型编程的模板,以及丰富的标准库,提供了大量的数据结构和算法,极大地提高了开发效率。12 C++是一种静态类型的、编译式的、通用的、大小写敏感的编程语言,它综合了高级语言和低级语言的特点。C++的语法与C语言非常相似,但增加了许多面向对象编程的特性,如类、对象、封装、继承和多态等。这使得C++既保持了C语言的低级特性,如直接访问硬件的能力,又提供了高级语言的特性,如数据封装和代码重用。13 C++的应用领域非常广泛,包括但不限于教育、系统开发、游戏开发、嵌入式系统、工业和商业应用、科研和高性能计算等领域。在教育领域,C++因其结构化和面向对象的特性,常被选为计算机科学和工程专业的入门编程语言。在系统开发领域,C++因其高效性和灵活性,经常被作为开发语言。游戏开发领域中,C++由于其高效性和广泛应用,在开发高性能游戏和游戏引擎中扮演着重要角色。在嵌入式系统领域,C++的高效和灵活性使其成为理想选择。此外,C++还广泛应用于桌面应用、Web浏览器、操作系统、编译器、媒体应用程序、数据库引擎、医疗工程和机器人等领域。16 学习C++的关键是理解其核心概念和编程风格,而不是过于深入技术细节。C++支持多种编程风格,每种风格都能有效地保证运行时间效率和空间效率。因此,无论是初学者还是经验丰富的程序员,都可以通过C++来设计和实现新系统或维护旧系统。3

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值