RHCE【web服务器】

news2024/11/26 1:32:34

目录

一、web服务器简介

1、什么是www

2、网址及HTTP简介

3、http协议请求的工作过程:

二、web服务器的类型

1、仅提供用户浏览的单向静态网页

2、提供用户互动接口的动态网站

三、web服务器基本配置

四、虚拟主机配置实战

1、搭建静态网站--基于http协议的静态网站

实验1:搭建一个web服务器,访问该服务器时显示“hello world”欢迎界面 。

实验2:建立两个基于ip地址访问的网站,要求如下:

实验3:建立两个基于不同端口访问的网站,要求如下:

实验4:建立两个基于域名访问的网站,要求如下:

实验5:基于虚拟目录和用户控制的web网站


一、web服务器简介

1、什么是www

www world wide web 的缩写,也就是全球信息广播的意思。通常说的上网就是使用 www 来查询用户 所需要的信息。www 可以结合文字、图形、影像以及声音等多媒体,并通过可以让鼠标单击超链接的方 式将信息以Internet 传递到世界各处去。
与其他服务器类似,当你连接上 www 网站,该网站肯定会提供一些数据,而你的客户端则必须要使用可 以解析这些数据的软件来处理,那就是浏览器。
www 服务器与客户端浏览器之间的连接图:
(1)   www 所用的协议: 浏览器怎样向 web 服务器请求数据以及服务器怎样把文档传送给浏览器呢?这就是由http 协议来定义的,( Hyper Text Transport Protocol HTTP ,超文本传输协议)。
(2) www 服务器需要提供可让客户端浏览的平台。目前最主流的 Web 服务器是 Apache Microsoft 的Internet信息服务器( Internet Information Services IIS )和 unix nginx
(3) 服务器所提供的最主要数据是超文本标记语言( Hyper Text Markup Language HTML )、多媒体文件(图片、影像、声音、文字等,都属于多媒体或称为超媒体),HTML 只是一些纯文本数据,通过所谓的标记来规范所要显示的数据格式。
(4) 客户端收到服务器的数据之后需要软件解析服务器所提供的数据,最后将效果呈现在用户的屏幕上。那么著名的浏览器就有内建在Windows 操作系统内的 IE 浏览器了,还有 Firefox 浏览器和 Google 的chrome浏览器。

2、网址及HTTP简介

web 服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,在nginx 中,这个目录默认 在/usr/share/nginx/html/ 。浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据
的。
(1)URL Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
(2)网址格式: < 协议 >://< 主机或主机名 >[:port]/< 目录资源 , 路径 >
               [1] 浏览器常支持的协议有:http、 https ftp 等。
               [2]主机地址或者主机名:主机地址就是服务器在因特网所在的IP地址。如果是主机名的话,那么就需要域名解析了。
               [3]端口号(port): http 80 https 443 IANA :互联网数字分配机构)
                        
0-1023 :众所周知,永久地分配给固定的应用程序使用,特权端口(只有管理员有权限
启用并让进程监听)
1024-41951 :亦为注册端口,但要求不是特别严格,分配给程序注册为某应用使用:
3306/TCP
41952-60000 :客户端程序随机使用的端口,动态端口,或私有端口
(3)http 请求方法:在 http 通信中,每个 http 请求报文都包含一个方法,用以告诉 web 服务器端需要执行哪些具体的动作,这些动作包括:获取指定web 页面、提交内容到服务器、删除服务器上资源文件等。

 (4)状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

  1xx :指示信息 —— 表示请求已接收,继续处理
  2xx :成功 —— 表示请求已被成功接收、理解、接受
  3xx :重定向 —— 要完成请求必须进行更进一步的操作
  4xx :客户端错误 —— 请求有语法错误或请求无法实现
  5xx :服务器端错误 —— 服务器未能实现合法的请求
常见状态代码、状态描述的说明如下:
  200 OK :客户端请求成功
  400 Bad Request :客户端请求有语法错误,不能被服务器所理解
  401 Unauthorized :请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
  403 Forbidden :服务器收到请求,但是拒绝提供服务
  404 Not Found :请求资源不存在,举个例子:输入了错误的 URL
  500 Internal Server Error :服务器发生不可预期的错误
  503 Server Unavailable :服务器当前不能处理客户端的请求,一段时间后可能恢复正常
(5) HTTP 报文: http 报文中有很多行内容,这些行的字段内容都是由一些 ASCII 码串组成,但各个字段 的长度是不同的。 http 报文可分为两种,一种是从 web 客户端发往 web 服务器的 http 报文,称为请 求报文。另外一种是从 web 服务器发往 web 客户端的报文,称为响应报文 。
[1]http 请求报文由请求行、请求头部、空行和请求报文主体几个部分组成:
  1. 请求行:包括请求方法(如GET、POST)、请求URI和HTTP版本号。例如,GET /index.html HTTP/1.1
  2. 请求头部:包含若干个属性,格式为“属性名: 属性值”,提供客户端环境信息、请求体的大小、客户端支持的压缩类型等。常见的请求头包括Host、User-Agent、Accept、Accept-Encoding、Content-Length等。
  3. 空行:请求头和请求体之间的分隔符,表示请求头的结束。
  4. 请求体:在某些类型的HTTP
[2]http 响应报文由起始行、响应头部、空行和响应报文主体这几个部分组成:
  1. 起始行:包含协议版本、状态码和原因短语。例如,HTTP/1.1 200 OK
  2. 响应头部:包含服务器的基本信息以及数据的描述信息,使用key-value形式。例如,Content-Type: text/html表示返回的内容类型为HTML。
  3. 空行:用于分隔响应头和响应体,表示响应头的结束。
  4. 响应体:实际传输的数据,可以是文本、图片、视频等二进制数据

3、http协议请求的工作过程:

  1. 地址解析:客户端需要通过域名系统(DNS)将URL中的域名解析为对应的IP地址。例如,访问http://www.baidu.com时,DNS服务器会将该域名解析为对应的IP地址。

  2. 建立TCP连接:客户端与服务器之间需要建立TCP连接。这通常涉及“三次握手”过程,确保双方能够进行可靠的数据传输。

  3. 发送HTTP请求:客户端通过已建立的TCP连接向服务器发送HTTP请求报文。请求报文包括请求方法(如GET、POST)、请求的URL、协议版本以及可选的头部字段和主体内容。

  4. 服务器处理请求:服务器接收到请求后,会根据请求的内容进行处理。这可能包括查找资源、执行程序或生成响应数据等。

  5. 返回HTTP响应:服务器处理完请求后,会向客户端返回HTTP响应报文。响应报文包括状态行(包含协议版本、状态码和原因短语)、响应头部字段以及可选的响应体内容。

  6. 浏览器解析响应:客户端(通常是Web浏览器)接收到服务器的响应后,会根据响应状态码和响应内容进行解析和展示。如果状态码表示成功(如200 OK),则展示响应体中的内容;否则,显示错误信息。

  7. 关闭连接:在默认情况下,HTTP是无状态且短连接的,即每个请求完成后都会关闭TCP连接。不过,为了提高效率,也可以使用Keep-Alive头来保持连接,以便后续请求复用同一连接。

二、web服务器的类型

1、仅提供用户浏览的单向静态网页

单纯是由服务器单向提供数据给客户端, Server 不需要与 client 端有互动,所以你可以到该网站上去浏览,但是无法进行数据的上传。

2、提供用户互动接口的动态网站

这种类型的网站可以让服务器与用户互动,常见的例如留言板,博客。这种类型的网站需要通过 网页程序语言” 来实现与用户互动的行为。常见的例如: PHP 网页程序语言,配合数据库系统来进行数据的读、写。当你在向服务器请求数据时,其实是通过服务器端同一个网页程序在负责将数据读出或写入数据库,变动的是数据库的内容,网页程序并没有任何改变。
另外一种交互式的动态网页主要是在客户端实现。服务端将可执行的程序代码( JavaScript )传送给客户 端,客户端的浏览器如果提供 JavaScript 的功能,那么该程序就可以在客户端的计算机上面工作了;另外一种可在客户端执行的就是flash 动画格式,在这种动画格式内还可以进行程序设计。

搭建动态网站的需求通常包括以下几个方面:

  1. 服务器环境:需要一台或多台服务器来托管网站,服务器上需要安装操作系统(如Linux、Windows Server等)和Web服务器软件(如Apache、Nginx、IIS等)。
  2. 数据库支持:动态网站通常需要与数据库进行交互,因此需要安装数据库管理系统(如MySQL、PostgreSQL、Oracle、SQL Server等),并配置好数据库。
  3. 编程语言支持:需要选择一种或多种编程语言来编写网站的后端逻辑,常见的有PHP、Python、Java、Ruby、Node.js等。
  4. 框架和库:为了提高开发效率和代码质量,通常会使用一些Web开发框架和库,如Django(Python)、Spring(Java)、Laravel(PHP)、Express(Node.js)等。
  5. 前端技术:虽然动态网站主要依赖于后端技术,但也需要一些前端技术来构建用户界面,如HTML、CSS、JavaScript以及前端框架(如React、Vue.js、Angular等)。
  6. 安全性需求:需要考虑网站的安全性,包括数据加密、身份验证、权限控制、防止SQL注入、跨站脚本攻击(XSS)等。
  7. 性能优化:需要对网站进行性能优化,以提高响应速度和并发处理能力,如使用缓存、负载均衡、CDN等技术。
  8. 版本控制:为了管理代码和协作开发,需要使用版本控制系统(如Git、SVN等)来管理代码库。
  9. 部署和发布:需要一套自动化的部署和发布流程,以便快速将新功能或修复部署到生产环境中。
  10. 监控和维护:需要对网站进行实时监控,及时发现和解决问题,并进行定期维护和更新。

三、web服务器基本配置

服务器端:此处使用 nginx 提供 web 服务, RPM 包获取: http://nginx.org/packages/
#安装nginx软件包:
[root@server ~]# yum install nginx -y

#显示nginx的版本信息:
[root@server ~]# nginx -v

#显示Nginx的详细配置信息,包括编译时使用的所有参数和模块:
[root@server ~]# nginx -V

#显示nginx的用法和选项:
[root@server ~]# nginx -help
用法:nginx [-?hvVtTq] [-s信号][-p前缀]
[-e文件名][-c文件名][-g指令]

选项:
- - - - - - ?,-h:这有帮助
-v:显示版本并退出
-V:显示版本并配置选项,然后退出
-t:测试配置并退出
-T:测试配置,转储并退出
-q:在配置测试时抑制非错误信息
-s signal:向主进程发送信号:停止,退出,重新打开,重新加载
-p prefix:设置前缀路径(默认:/usr/share/nginx/)
-e文件名:设置错误日志文件(默认:/var/log/nginx/error.log)
-c filename:设置配置文件(默认:/etc/nginx/nginx.conf)
-g directives:将全局指令从配置文件中设置出来


#列出nginx中的所有文件:
[root@server ~]# rpm -ql nginx

#以树状图显示nginx配置文件目录:
[root@server ~]# tree /etc/nginx/
/etc/nginx/
├── conf.d            #子配置文件目录
├── default.d            
├── fastcgi.conf
├── fastcgi.conf.default
├── fastcgi_params            #用以翻译nginx的变量供php识别
├── fastcgi_params.default
├── koi-utf
├── koi-win
├── mime.types               #用以配置支持的媒体文件类型
├── mime.types.default
├── nginx.conf            #主配置文件
├── nginx.conf.default
├── scgi_params
├── scgi_params.default
├── uwsgi_params        #用以配置nginx的变量供python识别
├── uwsgi_params.default
└── win-utf

#以树状图显示nginx默认的网站根目录(通常包含静态网页文件)
[root@server ~]# tree /usr/share/nginx/html/

#以树状图显示nginx日志目录(通常包含访问日志和错误日志)
[root@server ~]# tree /var/log/nginx

#搜索匹配nginx的主配置文件中不以#开头的行(即非注释行)
[root@server ~]# grep ^[^#]  /etc/nginx/nginx.conf
#关闭防火墙并且立即生效:
[root@server ~]# systemctl disable firewalld --now

#将SELinux设置为宽容模式,并检查SELinux的状态:
[root@server ~]# setenforce 0
[root@server ~]# getenforce
Permissive

#重启nginx进程:
[root@server ~]# systemctl restart nginx

curl:这是一个命令行进行数据传输的工具,支持多种协议包括http、https、ftp等等
#获取HTTP响应的头部信息:
[root@server ~]# curl -I localhost
HTTP/1.1 200 OK                    #表示使用的HTTP协议版本
Server: nginx/1.20.1               #服务器软件的名称和版本。这里显示的是Nginx 1.20.1
Date: Thu, 24 Oct 2024 08:34:17 GMT 
Content-Type: text/html            #返回内容的MIME类型。这里表示返回的内容是HTML文档
Content-Length: 2713881            #返回内容的长度(以字节为单位)。这里表示返回的HTML文档大小为2,713,881字节。
Last-Modified: Tue, 04 Jun 2024 22:57:12 GMT
Connection: keep-alive             #连接管理方式。这里表示保持连接打开
ETag: "665f9bc8-296919"            #实体标签,用于缓存验证。ETag是一个唯一标识符,用于判断资源是否被修改
Accept-Ranges: bytes                #指示服务器是否接受范围请求。这里表示服务器接受按字节范围请求,允许客户端请求部分内容

四、虚拟主机配置实战

1、搭建静态网站--基于http协议的静态网站

实验1:搭建一个web服务器,访问该服务器时显示“hello world”欢迎界面 。


#输出字符串"hello world"到标准输出,重定向操作符,将标准输出的内容写入到Nginx服务器的默认网页文件index.html中:
[root@server ~]# echo "hello world" > /usr/share/nginx/html/index.html

#使用curl工具向本地主机(即运行在当前机器上的Web服务器)发送HTTP请求:
[root@server ~]# curl localhost
hello world

#使用curl工具向IP地址为192.168.88.5的服务器发送HTTP请求:
[root@server ~]# curl 192.168.88.5
hello world

 实验成功!!!

实验2:建立两个基于ip地址访问的网站,要求如下:

该网站 ip 地址的主机位为 100 ,设置首页目录为 /www/ip/100 ,网页内容为: this is 100
该网站 ip 地址主机位为 200 ,设置首页目录为 /www/ip/200 ,网页内容为: this is 200

 

nmtui:这是NetworkManager的命令行文本用户界面(TUI)。它提供了一个基于文本的界面来管理网络连接。运行这个命令会启动一个交互式的菜单,允许您配置和管理网络连接。

nmcli:这是NetworkManager的命令行接口工具。它允许您通过命令行与NetworkManager进行交互。

#进入图形界面更改网络连接:
[root@server ~]# nmtui

#激活名为ens160的网络连接:
[root@server ~]# nmcli connection up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)

#显示所有网络接口的信息,包括IP地址、MAC地址等:
[root@server ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:37:d2:d7 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.88.5/24 brd 192.168.88.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.88.100/24 brd 192.168.88.255 scope global secondary noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.88.200/24 brd 192.168.88.255 scope global secondary noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe37:d2d7/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

 

#递归创建目录,并且显示每一个被创建的目录:
[root@server ~]# mkdir -pv /www/ip/{1,2}00
mkdir: created directory '/www'
mkdir: created directory '/www/ip'
mkdir: created directory '/www/ip/100'
mkdir: created directory '/www/ip/200'

#将内容写入到指定文件中:
[root@server ~]# echo this is 100 > /www/ip/100/index.html
[root@server ~]# echo this is 200 > /www/ip/200/index.html

#更改SELinux设置:
[root@server ~]# setenforce 0
[root@server ~]# getenforce
Permissive

#编辑nginx配置文件下的ip测试文件:
[root@server ~]# vim /etc/nginx/conf.d/test_ip.conf

server {

        listen 192.168.88.100:80;
        root /www/ip/100;
        location / {
        }
}
server {

        listen 192.168.88.200:80;
        root /www/ip/200;
        location / {
        }
}

#重启nginx服务:
[root@server ~]# systemctl restart nginx

#使用curl向配置文件中写入的IP地址发送HTTP请求:
[root@server ~]# curl 192.168.88.100
this is 100
[root@server ~]# curl 192.168.88.200
this is 200

 

实验成功!!!

实验3:建立两个基于不同端口访问的网站,要求如下:

建立一个使用 web 服务器默认端口的网站,设置网站首页目录为 /www/port/80 ,网页内容为: the
port is 80
建立一个使用 10000 端口的网站,设置网站首页目录为 /www/port/10000 ,网页内容为: the port
is 10000

#递归创建目录,并且显示每一个被创建的目录:
[root@server ~]# mkdir -pv /www/port/{80,10000}
mkdir: created directory '/www/port'
mkdir: created directory '/www/port/80'
mkdir: created directory '/www/port/10000'

#创建对应的网页文件并写入内容:
[root@server ~]# echo this port is 80 > /www/port/80/index.html
[root@server ~]# echo this port is 10000 > /www/port/10000/index.html

#进入图形界面更改网络连接,并且激活网络:
[root@server ~]# nmtui
[root@server ~]# nmcli connection up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

#编辑nginx的配置文件:
[root@server ~]# vim /etc/nginx/conf.d/test_port.conf
server {
        listen 192.168.88.120:80;
        root /www/port/80;
        location / {
        }
}
server {
        listen 192.168.88.120:10000;
        root /www/port/10000;
        location / {
        }
}

#重启nginx服务:
[root@server ~]# systemctl restart nginx

#向指定端口的IP地址进行HTTP的请求测试:
[root@server ~]# curl 192.168.88.120
this port is 80
[root@server ~]# curl 192.168.88.120:80
this port is 80
[root@server ~]# curl 192.168.88.120:10000
this port is 10000

实验成功!!!

实验4:建立两个基于域名访问的网站,要求如下:

新建一个网站,域名为 www.ceshi.com ,设置网站首页目录为 /www/name ,网页内容为 this is
test
新建一个网站,域名为 rhce.first.day ,同时可通过 ce.first.day 访问,设置网站首页目录
/www/ce, 网页内容为: today is first day of class
基于域名的网站,需要用到域名解析。 域名 ------->ip 地址
浏览器如何通过域名去查询 URL 对应的 IP (对应服务器地址):
1 、浏览器缓存:浏览器会按照一定的频率缓存 DNS 记录。
2 、操作系统缓存:如果浏览器缓存中找不到需要的 DNS 记录,那就去操作系统中的 hosts 文件
找。 hosts 是一个没有扩展名的系统文件,其作用就是将一些常用的网址域名与其对应的 IP 地址建
立一个关联 " 数据库 " ,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从 Hosts
件中寻找对应的 IP 地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址
提交 DNS 域名解析服务器进行 IP 地址的解析。
windows 下的 hosts 文件路径: C:\Windows\System32\drivers\etc\hosts
Linux 下的 hosts 文件路径 :/etc/hosts
3 、路由缓存:路由器也有 DNS 缓存。
4 ISP DNS 服务器: ISP 是互联网服务提供商 (Internet Service Provider) 的简称, ISP 有专门的
DNS 服务器应对 DNS 查询请求。
5 、根服务器: ISP DNS 服务器还找不到的话,它就会向根服务器发出请求,进行递归查询
DNS 服务器先问根域名服务器 .com 域名服务器的 IP 地址,然后再问 .com 域名服务器,依次类
推)

 

#进入图形界面更改网络连接,并且激活网络:
[root@server ~]# nmtui
[root@server ~]# nmcli connection up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

#以递归的方式创建文件,并且显示被创建的文件:
[root@server ~]# mkdir -pv /www/{name,ce}
mkdir: created directory '/www/name'
mkdir: created directory '/www/ce'

#向指定文件写入内容:
[root@server ~]# echo this is a test > /www/name/index.html
[root@server ~]# echo today is first day of class > /www/ce/index.html

#编辑nginx网页配置文件:
[root@server ~]# vim /etc/nginx/conf.d/test_servername.conf

server {
        listen 192.168.88.130:80;
        server_name www.ceshi.com;
        root /www/name;
        location / {
        }
}
server {
        listen 192.168.88.130:80;
        server_name rhce.first.day ce.first.day;
        root /www/ce;
        location / {
        }
}


[root@server ~]# vim /etc/hosts
192.168.88.130  www.ceshi.com rhce.first.day ce.first.day

#更改SELinux状态,并且检查其状态:
[root@server ~]# setenforce 0
[root@server ~]# getenforce
Permissive

使用curl进行测试:
[root@server ~]# curl www.ceshi.com
this is a test
[root@server ~]# curl rhce.first.day
today is first day of class
[root@server ~]# curl ce.first.day
today is first day of class

测试成功!!!

实验5:基于虚拟目录和用户控制的web网站

 

#进入图形界面更改网络连接,并且激活网络:
[root@server ~]# nmtui
[root@server ~]# nmcli connection up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

[root@server ~]# mkdir /www/real/
[root@server ~]# echo real_virtual > /www/real/index.html
[root@server ~]# systemctl restart nginx
[root@server ~]# vim /etc/nginx/conf.d/test_virtualdir.conf
server {
        listen 192.168.88.140:80;
        root /usr/share/nginx/html;
        location /real {
                alias /www/real;
                auth_basic on;
                auth_basic_user_file /etc/nginx/conf.d/auth-password;
        }
}

#使用yum安装httpd-tools包
[root@server ~]# yum install httpd-tools -y

htpasswd:生成或更新HTTP基本认证密码文件的工具

#添加一个新用户,并且创建一个密码文件从命令行中读取密码:
[root@server ~]# htpasswd -cb /etc/nginx/conf.d/auth-password user1 123
Adding password for user user1
[root@server ~]# systemctl restart nginx
[root@server ~]# curl 192.168.88.140
hello world
[root@server ~]# curl 192.168.88.140/real/
<html>
<head><title>401 Authorization Required</title></head>
<body>
<center><h1>401 Authorization Required</h1></center>
<hr><center>nginx/1.20.1</center>
</body>
</html>
[root@server ~]# curl 192.168.88.140/real/ -u user1
Enter host password for user 'user1':
real_virtual

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

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

相关文章

草地杂草数据集野外草地数据集田间野草数据集YOLO格式VOC格式目标检测计算机视觉数据集

一、数据集概述 数据集名称&#xff1a;杂草图像数据集 数据集是一个包含野草种类的集合&#xff0c;其中每种野草都有详细的特征描述和标记。这些数据可以包括野草的图片、生长习性、叶片形状、颜色等特征。 1.1可能应用的领域 农业领域: 农业专家和农民可以利用这一数据集来…

Spring Boot:植物健康监测的智能先锋

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了植物健康系统的开发全过程。通过分析植物健康系统管理的不足&#xff0c;创建了一个计算机管理植物健康系统的方案。文章介绍了植物健康系统的系统分析部分&…

VScode分文件编写C++报错 | 如何进行VScode分文件编写C++ | 不懂也能轻松解决版

分文件编写遇到的问题 分文件编写例子如下所示&#xff1a; 但是直接使用 Run Code 或者 调试C/C文件 会报错如下&#xff1a; 正在执行任务: C/C: g.exe 生成活动文件 正在启动生成… cmd /c chcp 65001>nul && D:\Librarys\mingw64\bin\g.exe -fdiagnostics-col…

RabbitMQ常见问题持续汇总

文章目录 消息分发不公平分发限流-basic.qos主要功能使用场景示例代码 消费者默认concurrency数量prefetch和concurrency结合&#xff1f; spring.rabbitmq.template.retry.enabledtrue和spring.rabbitmq.listener.simple.retry.enabledtrue有什么区别1. spring.rabbitmq.templ…

中药大数据(二)中药方剂表设计与导入

中药大数据&#xff08;二&#xff09;中药方剂表设计与导入 最近在做一个中药大数据的单子&#xff0c;已经爬取到了中药和方剂的数据&#xff0c;现在根据爬取到的数据设计数据库和导入neo4j形成知识图谱。 1 中药方剂数据表设计 爬取到的字段有 方剂名 title 处方 presc…

自动化部署-01-jenkins安装

文章目录 前言一、下载安装二、启动三、问题3.1 jdk版本问题3.2 端口冲突3.3 系统字体配置问题 四、再次启动五、配置jenkins5.1 解锁5.2 安装插件5.3 创建管理员用户5.4 实例配置5.5 开始使用5.6 完成 总结 前言 spingcloud微服务等每次部署到服务器上&#xff0c;都需要本地…

【判断推理】逻辑论证之数量论证

3.1 比例类论证 看比例而不是单看分子&#xff01; 逻辑类似于抛开剂量谈毒性没有价值。不明确基数大小&#xff0c;单纯比较数量没有价值。 本题中&#xff0c;平民总数可能有1000万&#xff0c;军队综述可能就50万&#xff0c;死亡率不可能相似。 论点&#xff1a;家人吸…

利用Pixabay API获取免费图片和视频的完整指南

视觉内容在吸引受众和有效传达信息方面发挥着举足轻重的作用。然而&#xff0c;获取这些内容往往需要付出高昂的代价。 幸运的是&#xff0c;Pixabay 提供了 440 多万种免费资产&#xff0c;从令人惊叹的照片到引人入胜的视频&#xff0c;所有这些都可以通过其 API 访问。 在…

处理Hutool的Http工具上传大文件报OOM

程序环境 JDK版本&#xff1a; 1.8Hutool版本&#xff1a; 5.8.25 问题描述 客服端文件上传主要代码&#xff1a; HttpRequest httpRequest HttpUtil.createPost(FILE_UPLOAD_URL); Resource urlResource new UrlResource(url, fileName); httpRequest.form("file&q…

nrm之npm镜像源管理工具(NPMRegistryManager)

1. Whats is nrm? 1. 官网地址 https://github.com/Pana/nrm https://www.npmjs.com/package/nrm 2. 关于nrm nrm can help you easy and fast switch between different npm registries, now include: npm, cnpm, taobao, nj(nodejitsu). nrm可以帮助您在不同的 npm 注册表…

智能AI监测系统燃气安全改造方案的背景及应用价值

随着燃气行业的迅速发展和城市化进程的加快&#xff0c;燃气安全管理成为企业运营和城市管理中不可忽视的关键领域。燃气泄漏、管道破损等事故的发生不仅会造成严重的经济损失&#xff0c;还威胁到人民生命财产安全。传统的安全管理方法往往依赖人工巡检和手动监测&#xff0c;…

Discuz发布原创AI帖子内容生成:起尔 | AI原创帖子内容生成插件开发定制

Discuz发布原创AI帖子内容生成&#xff1a;起尔 | AI原创帖子内容生成插件开发定制 在当今互联网快速发展的时代&#xff0c;内容创作成为了网站运营、社交媒体管理和个人博客维护不可或缺的一部分。然而&#xff0c;高质量内容的创作往往耗时耗力&#xff0c;特别是对于需要频…

webpack 老项目升级记录:从 node-sass 限制的的 node v8 提升至支持 ^node v22

老项目简介 技术框架 vue 2.5.17webpack 4.16.5"webpack-cli": "3.1.0""node-sass": "^4.7.2" 几个阶段 第一步&#xff1a;vue2 升级到最新 第一步&#xff1a;升级 vue2 至最新版本&#xff0c;截止到目前&#xff08;2024-10-…

用js+css实现圆环型的进度条——js+css基础积累

如果用jscss实现圆环型的进度条&#xff1a; 直接上代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><met…

通信协议——UART

目录 基础概念串行&并行串行的优缺点 单工&双工 UART基本概念时序图思考&#xff1a;接收方如何确定01和0011 基础概念 串行&并行 串行为8车道&#xff0c;并行为1车道 串行的优缺点 通行速度快浪费资源布线复杂线与线之间存在干扰 单工&双工 单工&#xf…

vite脚手架中安装和按需引入vuetify

最近想尝试以下vuetify&#xff0c;然后根据chatgpt的引导安装上了&#xff0c;但是谁知道呢&#xff0c;最后打包后的项目&#xff08;里面什么都没写&#xff0c;只是一个vuetify测试页面&#xff09;大小已经超过了5mb&#xff0c;然后我找了很多资料&#xff0c;最终学会了…

【LeetCode】1297、子串的最大出现次数

【LeetCode】1297、子串的最大出现次数 文章目录 一、定长滑动窗口1.1 定长滑动窗口 二、多语言解法 一、定长滑动窗口 1.1 定长滑动窗口 参考 本题, 只需要 考虑 minSize, 而不需要考虑 maxSize 以例1为例: s “aababcaab”, maxLetters 2, minSize 3, maxSize 4 结论: …

[Linux网络编程]05-TCP状态和端口复用,shutdown函数(主动方建立/关闭连接状态,被动方建立/关闭连接状态,2MSL时长,TCP其他状态)

一.TCP状态图表示 netstat -apn | grep client 查看客户端网络连接状态 netstat -apn | grep port 查看端口的网络连接状态 二.主动方&#xff0c;被动方TCP连接状态 1. 主动发起连接请求端&#xff1a; CLOSE – 发送SYN – SEND_SYN – 接收 ACK、SYN – SEND_SYN – 发送 A…

关于VSCode 一运行终端显示一行以后就剩光标的情况

在配置VSCode C的时候&#xff0c;我发现我每次点击运行&#xff0c;终端那显示&#xff1a; 终端被任务重用&#xff0c;按任意键关闭。 然后&#xff0c;后面终端就什么都没有了剩下一个终端在那里瑟瑟发抖&#xff1a; 然后紧接着弹出一个框&#xff1a; 这段说实话&…

Cursor零基础小白教程系列「技巧」 - Cursor 白嫖方案

最适合小白零基础的Cursor教程 网站lookai.top相同作者&#xff0c;最新文章会在网站更新&#xff0c;欢迎收藏书签 Cursor 白嫖方案 - 低调行事 Cursor简介及定价 前面我们提到了cursor 账户有三种性质 Hobby&#xff1a;免费计划&#xff0c;包括两周 Pro 试用期、每月 200…