CentOS 7 Apache服务的安装与配置(转)

 

https://blog.51cto.com/13525470/2070375

 

 

一、Apache简介

Apache 是一个知名的开源Web服务器。
早期的Apache服务器由Apache Group来维护,直到1999年6月Apache Group在美国德拉瓦市成立了非盈利性组织的公司,即Apache软件基金会(Apache Software Foundation,ASF)。
网站需要web服务器来架构,网页设计美工人员(flash,dreamweaver,firework,photoshop等),网页开发人员(php,.net,jsp等),网站建立好后,需要我们维护,优化,排错,架构延伸扩容等。
简单点说就是我们如果要浏览一个网页的话,基本上所有的网站都使用的是http协议来进行数据传输的!至于怎么样传输,我们做为运维来说就没有必要去深究了,那是做html前端开发人员要去考虑的事情!
Apache由内核、标准模块和第三方提供的模块三个层次组成。
CentOS 7 Apache服务的安装与配置
通常Apache在默认安装时,只安装图中的1、2两部分。根据用户需要,用户可以通过修改配置去掉一些默认安装的标准模块;也可以通过修改配置安装一些默认不安装的模块。
同时,如果用户需要,也可以安装一些第三方提供的模块。

[survey.netcraft.net此网站会有每月份的世界上网站使用的WEB服务器的使用率统计](https://news.netcraft.com/archives/category/web-server-survey/)
Apache是世界上应用最广泛的web服务器之一
[www.apache.org Apache官网](http://www.apache.org/)   

二、CentOS下的Apache

1. 网站分为两种

  • 静态网站:Apache,Nginx,html
  • 动态网站:php/perl/python,jsp(java), .net

2. Apache服务概览

软件包: httpd, httpd-devel, httpd-manual
服务类型:由systemd启动的守护进程
配置单元: /usr/lib/systemd/system/httpd.service
守护进程: /usr/sbin/httpd
端口: 80(http), 443(https)
配置: /etc/httpd/
Web文档: /var/www/html/

Apache日志记录目录:/var/log/httpd/
该目录下有两种文件:

access_log      # 记录客户端访问Apache的信息,比如客户端的ip
error_log       # 记录访问页面错误信息

Apache服务启动的记录日志:

/var/log/messages   # 这个日志是系统的大集合

3. 配置Apache服务器的准备工作

系统平台: CentOS 7.3
DHCP Server: 192.168.1.20
第1步:服务器设置静态IP
第2步:更改主机名,写/etc/hosts记录

[root@Apache ~]# echo "192.168.1.20  Apache" >> /etc/hosts         --往/etc/hosts添加ip和主机名
[root@Apache ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.20 Apache

第3步:关闭防火墙

[root@Apache ~]# systemctl stop firewalld         --临时关闭防火墙 
[root@Apache ~]# systemctl disable firewalld    --永久关闭防火墙

第4步:关闭selinux

临时关闭:
[root@Apache ~]# setenforce 0
setenforce: SELinux is disabled永久关闭:
[root@Apache ~]# vim /etc/selinux/config
SELINUX=disabled                 # 将enforcing改为disabled[root@Apache ~]# reboot --重启系统永久生效

三、Apache服务的搭建与配置

1. 使用yum包安装Apache软件

[root@Apache ~]# yum -y install httpd*
[root@Apache ~]# rpm -qa | grep httpd     --查看安装的http包
httpd-manual-2.4.6-67.el7.centos.6.noarch httpd-tools-2.4.6-67.el7.centos.6.x86_64 httpd-2.4.6-67.el7.centos.6.x86_64 httpd-devel-2.4.6-67.el7.centos.6.x86_64

安装成功后,会产生下面两个文件

/etc/httpd/conf/httpd.conf  # 主配置文件
/var/www/html                   # 默认网站家目录

2. 认识配置文件里的主要参数

[root@Apache ~]# vim /etc/httpd/conf/httpd.conf31 serverRoot "/etc/httpd"           # 存放配置文件的目录42 Listen 80 # Apache服务监听端口 66 User apache # 子进程的用户 67 Group apache # 子进程的组 86 ServerAdmin root@localhost # 设置管理员邮件地址 119 DocumentRoot "/var/www/html" --网站家目录 # 设置DocumentRoot指定目录的属性 131 <Directory "/var/www/html"> # 网站容器开始标识 144 Options Indexes FollowSymLinks # 找不到主页时,以目录的方式呈现,并允许链接到网站根目录以外 151 AllowOverride None # none不使用.htaccess控制,all允许 156 Require all granted # granted表示运行所有访问,denied表示拒绝所有访问 157 </Directory> # 容器结束 164 DirectoryIndex index.html # 定义主页文件,当访问到网站目录时如果有定义的主页文件,网站会自动访问 316 AddDefaultCharset UTF-8 # 字符编码,如果中文的话,有可能需要改为gb2312或者gbk,因你的网站文件的默认编码而异

3. 启动Apache网站

[root@Apache ~]# systemctl start httpd.service
[root@Apache ~]# lsof -i:80         --查看httpd服务是否启动
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd   20585   root    4u  IPv6 402909 0t0 TCP *:http (LISTEN) httpd 20586 apache 4u IPv6 402909 0t0 TCP *:http (LISTEN) httpd 20587 apache 4u IPv6 402909 0t0 TCP *:http (LISTEN) httpd 20588 apache 4u IPv6 402909 0t0 TCP *:http (LISTEN) httpd 20589 apache 4u IPv6 402909 0t0 TCP *:http (LISTEN) httpd 20590 apache 4u IPv6 402909 0t0 TCP *:http (LISTEN)

启动成功后使用浏览器:输入自己的IP地址会看到一个红帽的欢迎页面:

[root@Apache ~]# firefox 192.168.1.20

每次打开浏览器不是很方便,因此我们可以使用文本浏览器,方便测试。

[root@Apache ~]# yum -y install elinks --安装elinks文本浏览器 [root@Apache ~]# elinks 192.168.5.20 --按ctrl + c退出 [root@Apache ~]# curl 192.168.1.20 --或者使用curl

例1:建立网站主页,在网站根目录下建立一个主页文件
格式1:

[root@Apache ~]# echo 'main page' > /var/www/html/index.html   --往index.html添加内容
[root@Apache ~]#systemctl restart httpd.service      --重启服务
[root@Apache ~]# firefox http://192.168.1.20             --在浏览器进行测试,显示的信息为刚才我们输入的内容main page

格式2:

[root@Apache ~]# vim /var/www/html/index.html        --把主页文件写成html标签的格式,添加一下内容
<html>
<head>
<title>测试站点</title> </head> <body> <center><h1>欢迎来到测试站点!@_@</h1></center> </body> </html> [root@Apache ~]# systemctl restart httpd.service --重启服务 [root@Apache ~]# firefox http://192.168.1.20 --在浏览器进行测试,显示的信息为刚才我们输入的内容main page

例2:将网站家目录修改成:/www目录

[root@Apache ~]# mkdir /www      --创建/www目录[root@Apache ~]# vim /etc/httpd/conf/httpd.conf
119  DocumentRoot "/www"            --修改网站根目录为/www
131 <Directory "/www"> --把这个也对应的修改为/www [root@Apache ~]# systemctl restart httpd.service --重新启动apache服务 [root@Apache ~]# echo "这是新修改的网站家目录/www" > /www/index.html --往index.html添加内容 [root@Apache ~]# firefox http://192.168.1.20 --访问网站,看到新网站根目录下的刚添加的信息

例3:修改主页类型或者主页名

[root@Apache ~]# vim /etc/httpd/conf/httpd.conf
164 DirectoryIndex index.php              --将index.html改成index.php[root@Apache ~]# systemctl reload httpd.service     --重新加载服务或重启[root@Apache ~]# echo 'php main page' > /www/index.php      --这时我们创建一个index.php页面,再使用浏览器访问就能看到了[root@Apache ~]# elinks 192.168.1.20

四、编译安装Apache服务

1. 安装编译所需要的信赖软件包

[root@Apache ~]# yum -y install gcc* make* apr apr-util pcre apr-devel apr-util-devel  pcre-devel

2. 安装OpenSSL和Apache

安装Open SSL

[root@Apache ~]# wget https://www.openssl.org/source/openssl-1.0.2m.tar.gz      --下载openssl软件包
[root@Apache ~]# tar xf ./openssl-1.0.2m.tar.gz -C /usr/src       --解压到/usr/src目录
[root@Apache ~]# cd /usr/src/openssl-1.0.2m/        --切换路径到/usr/src目录
[root@Apache ~]# ./config --prefix=/usr/local/ssl --shared          --检查配置,指定路径
[root@Apache ~]# make && make install --编译,安装 [root@Apache ~]# echo /usr/local/ssl/lib >> /etc/ld.so.conf [root@Apache ~]# ldconfig --使库文件生效

安装Apache

[root@Apache ~]# wget http://archive.apache.org/dist/httpd/httpd-2.4.28.tar.gz    --下载apache软件包
[root@Apache ~]# tar xf httpd-2.4.28.tar.gz -C /usr/src      --解压到/usr/src目录
[root@Apache ~]# cd /usr/src/httpd-2.4.28/          --cd到解压路径[root@Apache ~]# ./configure -help        --查看参数帮助[root@Apache ~]# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --enable-ssl --with-ssl=/usr/local/ssl --with-mpm=prefork [root@Apache ~]# make [root@Apache ~]# make install

--prefix 指定安装路径
--enable-so 让apache核心装载DSO(动态共享目标)
--enable-rewrite 启用重写功能
--enable-modules 将模块编译到apache中
--enable-ssl 打开ssl协议
--with-mpm 指定运行模型

运行模式:/etc/httpd/conf.modules.d/00-mpm.conf
多进程模型:prefork(预派生)
多进程多线程混合模型:worker(工作者)、event(事件)

编译安装成功后,安装在:/usr/local/apache2/ 目录下
配置文件:/usr/local/apache2/conf/httpd.conf
启动命令:/usr/local/apache2/bin/apachectl
默认网站家目录:/usr/local/apache2/htdcos

3. 修改家目录

[root@Apache ~]# vim /usr/local/apache2/conf/httpd.conf  --修改配置文件
220 DocumentRoot "/www"     --修改网站家目录,由/usr/local/apache2/htdocs改成/www
221 <Directory "/www"> --家目录这里建议一同修改 [root@Apache ~]# mkdir /www --创建网站家目录 [root@Apache ~]# echo "main page" > /www/index.html 先停掉rpm包安转的http [root@Apache ~]# systemctl stop httpd.service 启动源码包安装的http [root@Apache ~]# /usr/local/apache2/bin/apachectl start

4. 配置支持中文

[root@Apache ~]# vim /usr/local/apache2/conf/httpd.conf
# 在文件的最后新增以下参数
AddDefaultCharset UTF-8       # 默认以utf-8编码显示中文

5. 启动源码包版Apache

[root@Apache ~]# /usr/local/apache2/bin/apachectl restart       --重新启动apache

6. 测试

[root@Apache ~]# echo "<h1>Apache源码包版,测试</h1>" > /www/index.html
[root@Apache ~]# firefox http://192.168.1.20

五、Apache配置虚拟主机

在一台Web服务器上,通过多个独立的IP地址、域名或端口号提供不同的Web站点。
基于IP地址的虚拟主机:
每个网站拥有不同的 IP 地址
通过访问服务器上不同的IP地址访问不同的网站
基于域名的虚拟主机:
所有的虚拟主机可以共享同一个IP地址
使用不同的域名来访问不同的网站
基于端口的虚拟主机:
所有的虚拟主机可以共享同一个IP地址
各虚拟主机之间通过不同的端口号进行区分

准备工作:

[root@Apache ~]# vim /usr/local/apache2/conf/htttpd.conf52 #Listen 80         # 将这行注释掉
220 #DocumentRoot "/usr/local/apache2/htdocs" # 将这行注释掉

1. Apache基于IP的虚拟主机配置

第一步:使用ifconfig设置3个虚拟ip

[root@Apache ~]# ifconfig ens33:1 192.168.1.11/24
[root@Apache ~]# ifconfig ens33:2 192.168.1.12/24
[root@Apache ~]# ifconfig ens33:3 192.168.1.13/24[root@Apache ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.20 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::20c:29ff:fe14:1fb9 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:14:1f:b9 txqueuelen 1000 (Ethernet) RX packets 216515 bytes 207352525 (197.7 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 109646 bytes 23077100 (22.0 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.11 netmask 255.255.255.0 broadcast 192.168.1.255 ether 00:0c:29:14:1f:b9 txqueuelen 1000 (Ethernet) ens33:2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.12 netmask 255.255.255.0 broadcast 192.168.1.255 ether 00:0c:29:14:1f:b9 txqueuelen 1000 (Ethernet) ens33:3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.13 netmask 255.255.255.0 broadcast 192.168.1.255 ether 00:0c:29:14:1f:b9 txqueuelen 1000 (Ethernet)

第二步:配置主机的hosts文件,便于测试

[root@Apache ~]# echo "192.168.1.11  test1.com" >> /etc/hosts
[root@Apache ~]# echo "192.168.1.12  test2.com" >> /etc/hosts
[root@Apache ~]# echo "192.168.1.13  test3.com" >> /etc/hosts[root@Apache ~]# tail -3 /etc/hosts
192.168.1.11 test1.com 192.168.1.12 test2.com 192.168.1.13 test3.com

第三步:建立虚拟主机存放网页的根目录,并创建首页文件index.html

[root@Apache ~]# cd /www
[root@Apache ~]# mkdir 11
[root@Apache ~]# mkdir 12
[root@Apache ~]# mkdir 13
[root@Apache ~]# echo "192.168.1.11" > 11/index.html [root@Apache ~]# echo "192.168.1.12" > 12/index.html [root@Apache ~]# echo "192.168.1.13" > 13/index.html

第四步:修改httpd.conf在文件末尾加入以下配置

[root@Apache ~]# vim /usr/local/apache2/conf/httpd.conf    --文件末尾加入以下配置
Listen 192.168.1.11:80 Listen 192.168.1.12:80 Listen 192.168.1.13:80 Include conf/vhost/*.conf # 文件包含vhost目录下所有以.conf结尾的文件

第五步:编辑每个ip的配置文件

[root@Apache ~]# mkdir  /usr/local/apache2/conf/vhost
[root@Apache ~]# cd /usr/local/apache2/conf/vhost
[root@Apache ~]# vim test11.conf        --一定要以.conf为后缀,这是第一台机器
<VirtualHost 192.168.1.11:80> ServerName test11.com DocumentRoot /www/11 <Directory "/www/11/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>

参数介绍:

虚拟主机配置格式:
<VirtualHost 主机ip:端口>
配置内容
</VirtualHost>

指定虚拟主机使用的域名
ServerName 域名

指定虚拟主机的主目录
DocumentRoot 目录

虚拟目录的格式:
<Directory 目录的路径>
目录相关的配置参数和指令
</Directory>

Options Indexes FollowSymLinks --找不到主页时,以目录的方式呈现,并允许链接到网站根目录以外

是否允许.htaccess文件覆盖httpd.conf文件中关于虚拟主机目录的配置。
AllowOverride None # 不使用
AllowOverride all # 使用

允许、拒绝所有访问指令
Require all granted # 允许
Require all denied # 拒绝

[root@Apache ~]# vim test12.conf          --这是第二台机器
<VirtualHost 192.168.1.12:80>ServerName test12.comDocumentRoot "/www/12"<Directory "/www/12/">Options Indexes FollowSymLinksAllowOverride NoneRequire all granted</Directory>
</VirtualHost>[root@Apache ~]# vim test13.conf --这是第三台机器 <VirtualHost 192.168.1.13:80> ServerName test13.com DocumentRoot "/www/13" <Directory "/www/13/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>

第六步:启动服务并测试

[root@Apache ~]# /usr/local/apache2/bin/apachectl -t        --检查配置文件是否正确
Syntax OK
[root@Apache ~]# /usr/local/apache2/bin/apachectl restart    --重新启动Apache
检查虚拟主机是否运行
[root@Apache ~]# curl 192.168.1.11
192.168.1.11 [root@Apache ~]# curl 192.168.1.12 192.168.1.12 [root@Apache ~]# curl 192.168.1.13 192.168.1.13

2. Apache基于端口的虚拟主机配置

第一步:使用ifconfig设置1个虚拟ip

[root@Apache ~]# ifconfig ens33:4 192.168.1.14/24

第二步:配置主机的hosts文件,便于测试

[root@Apache ~]# echo "192.168.1.14  test4.com" >> /etc/hosts

第三步:建立虚拟主机存放网页的根目录,并创建首页文件index.html

[root@Apache ~]# cd /www
[root@Apache ~]# mkdir port
[root@Apache ~]# cd port
[root@Apache ~]# mkdir 6081
[root@Apache ~]# mkdir 7081 [root@Apache ~]# mkdir 9081 [root@Apache ~]# echo "port 6081" > 6081/index.html [root@Apache ~]# echo "port 7081" > 7081/index.html [root@Apache ~]# echo "port 9081" > 9081/index.html

第四步:修改httpd.conf在文件末尾加入以下配置

[root@Apache ~]# vim /usr/local/apache2/conf/httpd.conf      --文件末尾加入以下配置
Listen 192.168.1.14:6081 Listen 192.168.1.14:7081 Listen 192.168.1.14:9081 Include conf/vhost/*.conf

第五步:编辑每个端口的配置文件

[root@Apache ~]# cd /usr/local/apache2/conf/vhost
[root@Apache ~]# vim test14.6081.conf       --一定要以.conf为后缀,这是第一台机器
<VirtualHost 192.168.1.14:6081> ServerName test14.com DocumentRoot "/www/port/6081" <Directory "/www/port/6081/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost> [root@Apache ~]# vim test14.7081.conf --这是第二台机器 <VirtualHost 192.168.1.14:7081> ServerName test14.com DocumentRoot "/www/port/7081" <Directory "/www/port/7081/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost> [root@Apache ~]# vim test14.9081.conf --这是第三台机器 <VirtualHost 192.168.1.14:9081> ServerName test14.com DocumentRoot "/www/port/9081" <Directory "/data/port/9081/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>

第六步:启动服务并测试

[root@Apache ~]# /usr/local/apache2/bin/apachectl -t              --检查配置文件是否正确
Syntax OK
[root@Apache ~]# /usr/local/apache2/bin/apachectl restart    --重新启动apache
检查虚拟主机是否运行
[root@Apache ~]# curl 192.168.1.14:6081
port 6081
[root@Apache ~]# curl 192.168.1.14:7081 port 7081 [root@Apache ~]# curl 192.168.1.14:9081 port 9081

3. Apache基于域名的虚拟主机配置

第一步:使用ifconfig设置1个虚拟ip

[root@Apache ~]# ifconfig ens33:5 192.168.1.15/24

第二步:配置主机的hosts文件,便于测试

[root@Apache ~]# echo "192.168.1.15  www.aa.com" >> /etc/hosts
[root@Apache ~]# echo "192.168.1.15  www.bb.com" >> /etc/hosts
[root@Apache ~]# echo "192.168.1.15  www.cc.com" >> /etc/hosts

第三步:建立虚拟主机存放网页的根目录,并创建首页文件index.html

[root@Apache ~]# cd /www
[root@Apache ~]# mkdir www.aa.com
[root@Apache ~]# mkdir www.bb.com
[root@Apache ~]# mkdir www.cc.com
[root@Apache ~]# echo "www.aa.com" > www.aa.com/index.html [root@Apache ~]# echo "www.bb.com" > www.bb.com/index.html [root@Apache ~]# echo "www.cc.com" > www.cc.com/index.html

第四步:修改httpd.conf在文件末尾加入以下配置

[root@Apache ~]# vim /usr/local/apache2/conf/httpd.conf      --文件末尾加入以下配置
Listen 192.168.1.15:80 Include conf/vhost/*.conf

第五步:编辑每个域名的配置文件

[root@Apache ~]# cd /usr/local/apache2/conf/vhost
[root@Apache ~]# vim www.aa.com.conf        --一定要以.conf为后缀,这是第一台机器
<VirtualHost 192.168.1.15:80> ServerName www.aa.com DocumentRoot "/www/www.aa.com" <Directory "/www/www.aa.com/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost> [root@Apache ~]# vim www.bb.com.conf --这是第二台机器 <VirtualHost 192.168.1.15:80> ServerName www.bb.com DocumentRoot "/www/www.bb.com" <Directory "/www/www.bb.com/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost> [root@Apache ~]# vim www.cc.com.conf --这是第三台机器 <VirtualHost 192.168.1.15:80> ServerName www.cc.com DocumentRoot "/www/www.cc.com" <Directory "/www/www.cc.com/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>

第六步:启动服务并测试

[root@Apache ~]# /usr/local/apache2/bin/apachectl -t              --检查配置文件是否正确
Syntax OK
[root@Apache ~]# /usr/local/apache2/bin/apachectl restart    --重新启动apache
检查虚拟主机是否运行
[root@Apache ~]# curl www.aa.com
www.aa.com
[root@Apache ~]# curl www.bb.com
www.bb.com
[root@Apache ~]# curl www.cc.com www.cc.com

转载于:https://www.cnblogs.com/xiaohanlin/p/10691508.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第二十九期:全球首部AI交响变奏曲问世,AI技术应用再拓边界

人工智能技术&#xff0c;史上第一次升级到了复杂音乐的创作领域&#xff1a;交响曲。 全球首部 AI 交响变奏曲《我和我的祖国》&#xff0c;昨晚已由深圳交响乐团全球首演&#xff0c;它的出品方是中国平安人工智能研究院。 此前&#xff0c;你可能了解过 Google 的 Magenta、…

第三十期:BAT 为什么都看上了重庆?

一个城市朝向智能化创新的方向发展&#xff0c;一把手的重视是非常重要的。 文&#xff1a;I/O 重庆&#xff0c;作为我国中西部地区唯一的直辖市和国家中心城市&#xff0c;正在新一轮科技发展浪潮中扮演着越来越亮眼的角色。 尤其是近两个月来&#xff0c;重庆在推动科技创新…

第三十一期:世界上有四类人永远不可能成为编程界牛人(个人见解,欢迎补充)

本人歌谣&#xff0c;出来工作也有两年了。大学挂科无数&#xff0c;出来想搞技术。平时也就是以工作学习的知识为主&#xff0c;无聊的时候就会学习一些关于科技的知识。 在这本人给大家传授一些学习编程的心得体会&#xff0c;供大家分享交流&#xff1a; 1.没有专注力和恒心…

[Java]==和equals()的区别(按照数据类型区分)

背景知识 【引用类型】 复合数据类型是引用类型 **1.基本数据类型&#xff0c;也称原始数据类型。**byte,short,char,int,long,float,double,boolean 他们之间的比较&#xff0c;应用双等号&#xff08;&#xff09;,比较的是他们的值。 基本数据类型比较&#xff0c; 和 …

第三十二期:如何摆脱「技术思维」的惯性?

虽然从标题上看&#xff0c;这篇文章是写给“技术人”的&#xff0c;但 从广义上来说&#xff0c;只要你是一位以理性见长的人&#xff0c;那么这篇文章要讲的东西可能会与你有关。 虽然从标题上看&#xff0c;这篇文章是写给“技术人”的&#xff0c;但 从广义上来说&#xff…

[Leetcode][第207题][JAVA][课程表][拓扑排序][DFS]

【问题描述】[中等] 【解答思路】 1. 拓扑排序 复杂度分析 HashSet[] 数组 import java.util.HashSet; import java.util.LinkedList; import java.util.Queue;public class Solution {public boolean canFinish(int numCourses, int[][] prerequisites) {if (numCourses &l…

RabbitMQ(1) - win+rabbitMQ

rabbitMQ是一个在AMQP协议标准基础上完整的&#xff0c;可服用的企业消息系统。它遵循Mozilla Public License开源协议&#xff0c;采用 Erlang 实现的工业级的消息队列(MQ)服务器&#xff0c;Rabbit MQ 是建立在Erlang OTP平台上。 1.安装Erlang 所以在安装rabbitMQ之前&…

[周赛][Leetcode][第5457题][JAVA][动态规划][和为奇数的子数组数目]

【问题描述】5457. 和为奇数的子数组数目[中等] 【解答思路】 1. 动态规划 第 1 步&#xff1a;设计状态 dp[i][0] 记录以arr[i]结尾的和为奇数数量 dp[i][1] 记录以arr[i]结尾的和为偶数数量 第 2 步&#xff1a;状态转移方程 for(int i1;i<n;i){if(arr[i]%20){dp[i][0]…

第九期: 阿里巴巴程序员常用的15款开发者工具

阿里巴巴将自身在各类业务场景下的技术积淀&#xff0c;通过开源、云上实现或工具等形式对外开放&#xff0c;本文将精选了一些阿里巴巴的开发者工具&#xff0c;希望能帮助开发者们提高开发效率、更优雅的写代码。 从人工到自动化&#xff0c;从重复到创新&#xff0c;技术演进…

第三十三期:对于人工智能的恐惧及其5个解决方法

实施人工智能技术的IT领导人可能会感到一些恐惧&#xff0c;这有着充分的理由。人工智能在拥有数十年发展和应用历史的同时却有着奇怪的定位&#xff0c;但对于许多人来说&#xff0c;人工智能仍然是一种未来主义的感觉。 实施人工智能技术的IT领导人可能会感到一些恐惧&#x…

[Leetcode][第392题][JAVA][判断子序列][动态规划][双指针]

【问题描述】[简单] 【解答思路】 1. 双指针 时间复杂度&#xff1a;O(NM) 空间复杂度&#xff1a;O(1) class Solution { public:bool isSubsequence(string s, string t) {int n s.length(), m t.length();int i 0, j 0;while (i < n && j < m) {if (s[…

权限分配之权限的展示

最后就是权限的展示了&#xff1a;对前面的 总结&#xff1a;  1. 一级菜单列表&#xff0c;是我对 menu表的&#xff0c;增删改查。  2. 二级菜单列表&#xff0c;是我对Permission表中&#xff0c; 可以作为二级菜单存在&#xff0c;如 客户列表、账单列表的 增删改查  …

优先队列----堆

问题 打印机打印作业一般是放在队列中的。如果按照先来先打印的顺序&#xff0c;有一个100页的打印任务&#xff0c;那么会让后面短小的任务等待很长时间。更合理的做法也许是最后处理最耗时的打印任务&#xff0c;不管它是不是最后提交上来的。 在多用户操作系统中&#xff…

第三十四期:游戏开发中常见的10种编程语言

游戏开发是非常有经验和熟练的程序员的工作。 它可能花费数亿美元。 这是一项非常有创意的工作&#xff0c;也需要技术水平。 他们需要具有特定需求的编程语言。 游戏开发是非常有经验和熟练的程序员的工作。 它可能花费数亿美元。 这是一项非常有创意的工作&#xff0c;也需要…

[Leetcode][第5458题][JAVA][字符串的好分割数目][双指针][HashSet]

【问题描述】5458. 字符串的好分割数目[中等] 【解答思路】 1. 双指针 前面的搜索前面的个数和&#xff0c;后面的搜索后面的个数和 时间复杂度&#xff1a;O(N^2) 空间复杂度&#xff1a;O(1) class Solution {/*双指针做法&#xff0c;前面的搜索前面的个数和&#xff0c;…

第三十五期:AI核心难点之一:情感分析的常见类型与挑战

情感分析或情感人工智能&#xff0c;在商业应用中通常被称为意见挖掘&#xff0c;是自然语言处理(NLP)的一个非常流行的应用。文本处理是该技术最大的分支&#xff0c;但并不是唯一的分支。情绪AI有三种类型及其组合。 情感分析或情感人工智能&#xff0c;在商业应用中通常被称…

[Leetcode][第104题][JAVA][二叉树的最大深度][递归][BFS]

【问题描述】[简单] 【解答思路】 1. 递归 终止条件/基本情况 root null 递推关系 max(l,r)1 时间复杂度&#xff1a;O(N) 空间复杂度&#xff1a;O(height) class Solution {public int maxDepth(TreeNode root) {if (root null) {return 0;} else {int leftHeight ma…

第三十六期:人工智能统计调查:86%的消费者更喜欢人工客服

美国消费者越来越不愿意与聊天机器人聊天&#xff0c;人们对人工智能作为关键业务组成部分的期望越来越高&#xff0c;由于部署这项新技术导致员工技能差距越来越大。 最近一些人工智能的健康和进展状况相关调查、研究、预测和其他定量评估突显出以下几点&#xff1a;美国消费者…

[Leetcode][第111题][JAVA][BFS][二叉树的最小深度][BFS][递归]

【问题描述】[简单] 【解答思路】 1. 递归 自下而上 基本情况/结束条件 &#xff1a; 叶子节点的定义是左孩子和右孩子都为 null 时叫做叶子节点 当 root 节点左右孩子都为空时&#xff0c;返回 1 当 root 节点左右孩子有一个为空时&#xff0c;返回不为空的孩子节点的深度 当…

75 jsp基础语法汇总

JSP语法 脚本程序 脚本程序可以包含任意量量的Java语句句、变量量、⽅方法或表达式&#xff0c;只要它们在脚本语⾔言 中是有效的。 脚本程序的语法格式&#xff1a; <% 代码⽚片段 %>或者&#xff0c;您也可以编写与其等价的XML语句句&#xff0c;就像下⾯面这样&#…