Tomcat 应用服务 WEB服务

news2024/9/25 7:23:21

简述:

中间件产品介绍

目前来说IBM的WebSphere,Oracle的Weblogic占据了市场上Java语言Web站点的部分份额,该两种软件由于无与伦比的性能及可靠性等优势被广泛应用于大型互联网公司的Web场景中,但是其高昂的价格也使得中小型互联网公司对此望而却步。

Tomcat自5.x版本以来,其性能上已经得到很大幅度的提升,加上其开放性的框架和二次开发等特性,已经完全可以用在访问量不是很大的生产环境下,目前大多数用于JSP技术开发的电子商务网站基本上都应用了Tomcat。

中间件产品:RedHat JBoss、Oracle Tuxedo、caucho Resin

Tomcat软件简介

Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat最初是由Sun的软件构架师詹姆斯·邓肯·戴维森开发的。后来他将其变为开源项目,并由Sun贡献给Apache软件基金会。由于大部分开源项目O'Reilly都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为Tomcat(公猫)。而O'Reilly出版的介绍Tomcat的书籍的封面也被设计成了一个公猫的形象。而Tomcat的Logo兼吉祥物也被设计成了一只公猫。

其实Tomcat最早在开始研发的时候并不叫这个名字,早期的Tomcat的Logo项目的名字叫Catalina,所以当我们安装完Tomcat后会发现安装路径下有很多Catalina有关的目录和文件。这些文件是我们配置或使用Tomcat的重要文件所在。

Tomcat应用场景

Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,应用在中小型系统和并发访问用户不是很多的场合,是开发和调试JSP页面的首选,Tomcat也可处理静态的HTML页面但是能力不及Apache或Nginx,所以Tomcat通常作为一个servlet和JSP容器,单独运行在后端。Tomcat官网: http://tomcat.apache.org

JDK软件简介

在安装Tomcat之前必须先安装JDK,JDK全称是Java Development Kit,是SUN公司免费提供的java语言的软件开发工具包,其中包含Java虚拟机(JVM),编写好的java源程序经过编译可生产java字节码,只要安装了JDK,就可以利用JVM解释这些字节码文件,从而保证了Java的跨平台性。

在平台兼容性方面,JDK作为解释字节码文件并根据此调用操作系统的API实现对应功能的java虚拟机,与操作系统位数密切相关,因此存在不同类型的版本,Tomcat也具有上述特征,CentOS7系统中默认已经安装了JDK。

JDK中还包括完整的JRE(Java Runtime Environment),Java运行环境,也被称为private runtime。包括了用于产品环境的各种库类,如基础类库rt.jar,以及给开发人员使用的补充库,如国际化与本地化的类库、IDL库等等。JDK中还包括各种样例程序,用以展示Java API中的各部分。

环境:

四台主机

tomcat1             192.168.1.129

tomcat2             192.168.1.139

nginx                 192.168.1.127

所有主机

数据库                192.168.1.121

关闭防火墙

[root@bogon ~]# iptables -F
[root@bogon ~]# setenforce 0
[root@bogon ~]# systemctl stop firewalld

查看jdk版本
[root@bogon ~]# java -version
-bash: java: 未找到命令

卸载方法

rm -rf /usr/bin/java

或者

 rpm -qa | grep -i openjdk     查看
java-1.7.0-openjdk-1.7.0.171-2.6.13.2.el7.x86_64
java-1.7.0-openjdk-headless-1.7.0.171-2.6.13.2.el7.x86_64
java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.161-2.b14.el7.x86_64

[root@localhost ~]# rpm -e java-1.7.0-openjdk
[root@localhost ~]# rpm -e java-1.7.0-openjdk-headless
[root@localhost ~]# rpm -e java-1.8.0-openjdk --nodeps
[root@localhost ~]# rpm -e java-1.8.0-openjdk-headless

jdk安装

root@bogon ~]# tar xf jdk-8u191-linux-x64.tar.gz

[root@bogon ~]# mv jdk1.8.0_191/ /usr/local/java

[root@bogon ~]# vim /etc/profile

export JAVA_HOME=/usr/local/java        #设置java跟目录
export PATH=$PATH:$JAVA_HOME/bin        #在PATH环境变量中添加java跟目录的bin子目录

[root@bogon ~]# source /etc/profile

查看版本

[root@bogon ~]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

tomcat1安装

解压apache-tomcat-8.5.16.tar.gz包

[root@bogon ~]# tar xf apache-tomcat-8.5.16.tar.gz

解压后移动到/usr/local/并改名tomcat8

[root@bogon ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat8

启动tomcat

[root@bogon ~]# /usr/local/tomcat8/bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat8
Using CATALINA_HOME:   /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.

默认运行端口8080

[root@bogon ~]# netstat -lnpt | grep :8080
tcp6       0      0 :::8080                 :::*                    LISTEN      53382/java   
      

浏览器访问测试

 tomcat 配置目录及文件说明

[root@bogon ~]# ll /usr/local/tomcat8

总用量 92

drwxr-x---. 2 root root  4096 7月   5 18:24 bin

drwx------. 3 root root   254 7月   5 18:26 conf

drwxr-x---. 2 root root  4096 7月   5 18:24 lib

-rw-r-----. 1 root root 57092 6月  22 2017 LICENSE

drwxr-x---. 2 root root   197 7月   5 18:26 logs

-rw-r-----. 1 root root  1723 6月  22 2017 NOTICE

-rw-r-----. 1 root root  7064 6月  22 2017 RELEASE-NOTES

-rw-r-----. 1 root root 15946 6月  22 2017 RUNNING.txt

drwxr-x---. 2 root root    30 7月   5 18:24 temp

drwxr-x---. 7 root root    81 6月  22 2017 webapps

drwxr-x---. 3 root root    22 7月   5 18:26 work

主目录介绍

bin //存放windows或linux平台上启动或关闭的Tomcat的脚本文件

conf //存放Tomcat的各种全局配置文件,其中最主要的是server.xml和web.xml

lib //存放Tomcat运行需要的库文件(JARS)

logs //存放Tomcat执行时的LOG文件

webapps //Tomcat的主要Web发布目录、类似于nginx的html(包括应用程实例)

work //存放jsp编译后产生的.class文件

temp //存放临时文件

webapps目录介绍

docs //tomcat帮助文档

examples //web应用实例

host-manager //主机管理

manager //管理

ROOT //默认站点根目录

[root@bogon ~]# ll /usr/local/tomcat8/conf

总用量 224

drwxr-x---. 3 root root     23 7月   5 18:26 Catalina

-rw-------. 1 root root  13816 6月  22 2017 catalina.policy

-rw-------. 1 root root   7376 6月  22 2017 catalina.properties

-rw-------. 1 root root   1338 6月  22 2017 context.xml

-rw-------. 1 root root   1149 6月  22 2017 jaspic-providers.xml

-rw-------. 1 root root   2358 6月  22 2017 jaspic-providers.xsd

-rw-------. 1 root root   3622 6月  22 2017 logging.properties

-rw-------. 1 root root   7511 6月  22 2017 server.xml

-rw-------. 1 root root   2164 6月  22 2017 tomcat-users.xml

-rw-------. 1 root root   2633 6月  22 2017 tomcat-users.xsd

-rw-------. 1 root root 168251 6月  22 2017 web.xml

catalina.policy   //权限控制配置文件

catalina.properties //Tomcat属性配置文件

context.xml   //context用于指定额外的web目录 

logging.properties  //日志log相关配置文件

server.xml   //主配置文件

tomcat-users.xml   //manager-gui管理用户配置文件(Tomcat安装后生成的管理界面,该文件可开启访问)

web.xml //Tomcat的servlet,servlet-mapping,filter,MIME等相关配置

server.xml 主要配置文件,可修改启动端口,设置网站根目录,虚拟主机,多实例、开启https加密等功能。

server.xml的结构构成:

<Server>

<Service>

<Connector />

<Engine>

<Host>

<Context> </Context>

</Host>

</Engine>

</Service>

</Server>

<!-- --> 内的内容是注视信息

//tomcat关闭端口,默认只对本机地址开放,可以在本机通过telnet 127.0.0.1 8005访问,对Tomcat进行关闭从操作。

<Server port="8005" shutdown="SHUTDOWN">

//tomcat启动的默认端口号8080,可以根据需要进行修改

    <Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

配置虚拟主机

[root@bogon ~]# vim  /usr/local/tomcat8/conf/server.xml

148       <Host name="localhost"  appBase="webapps"

149             unpackWARs="true" autoDeploy="true">

150

151       <Context docBase="/web/webapp" path="" reloadable="flase" >

152             </Context>

这段代码是Tomcat服务器的配置文件中的一部分,用于配置一个虚拟主机(Host)。在这个虚拟主机中,设置了一个上下文(Context)的路径为根路径(""),并指定了一个Web应用程序的目录(docBase)为"/web/webapp"。reloadable属性设置为false,表示不允许在运行时重新加载该Web应用程序。

定义网站默认目录

用于存放网站文件

[root@bogon ~]#  mkdir -pv /web/webapp

mkdir: 已创建目录 "/web"

mkdir: 已创建目录 "/web/webapp"

在webapp下建立测试页面

[root@bogon conf]# vim /web/webapp/index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<html>

        <head>

                <title>JSP test page</title>

        </head>

        <body>

                <% out.println("Welcome to test site,http://www.你好hhhhh.com");%>

        </body>

</html>

cp /usr/local/tomcat8/conf/server.xml{,.-$(date +%F)}     可以先做个备份

从新启动tomcat服务

[root@bogon conf]# /usr/local/tomcat8/bin/shutdown.sh

Using CATALINA_BASE:   /usr/local/tomcat8

Using CATALINA_HOME:   /usr/local/tomcat8

Using CATALINA_TMPDIR: /usr/local/tomcat8/temp

Using JRE_HOME:        /usr/local/java

Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar

[root@bogon conf]# /usr/local/tomcat8/bin/startup.sh

Using CATALINA_BASE:   /usr/local/tomcat8

Using CATALINA_HOME:   /usr/local/tomcat8

Using CATALINA_TMPDIR: /usr/local/tomcat8/temp

Using JRE_HOME:        /usr/local/java

Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar

Tomcat started.

可以看到服务启动都是Java命名的进程

[root@bogon conf]# tail -f /usr/local/tomcat8/logs/catalina.out

05-Jul-2023 18:49:02.986 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat8/webapps/docs] has finished in [10] ms

05-Jul-2023 18:49:02.987 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat8/webapps/examples]

05-Jul-2023 18:49:03.282 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat8/webapps/examples] has finished in [295] ms

05-Jul-2023 18:49:03.282 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat8/webapps/host-manager]

05-Jul-2023 18:49:03.327 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat8/webapps/host-manager] has finished in [45] ms

05-Jul-2023 18:49:03.327 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat8/webapps/manager]

05-Jul-2023 18:49:03.360 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat8/webapps/manager] has finished in [33] ms

05-Jul-2023 18:49:03.366 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]

05-Jul-2023 18:49:03.398 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]

05-Jul-2023 18:49:03.400 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in 838 m

浏览器访问测试

nginx+tomcat 负载均衡集群

tomcat 2    基本和tomcat1 相同

1)关闭防火墙,selinux

2)安装JDK,配置Java环境,版本保持一致

3)安装Tomcat,版本与Tomcat 1 保持一致

4)建立一个web目录,并在里面建立一个webapp目录,用于存放网站文件

5)在webapp目录下建立一个index.jsp的测试页面

[root@bogon ~]# iptables -F

[root@bogon ~]# setenforce 0

[root@bogon ~]# systemctl stop firewalld

[root@bogon ~]#  tar xf apache-tomcat-8.5.16.tar.gz

[root@bogon ~]# tar xf jdk-8u191-linux-x64.tar.gz

[root@bogon ~]#  mv apache-tomcat-8.5.16 /usr/local/tomcat8

[root@bogon ~]#  cp /usr/local/tomcat8/conf/server.xml{,.bak}

148       <Host name="localhost"  appBase="webapps"

149             unpackWARs="true" autoDeploy="true">

150             <Context docBase="/web/webapp" path="" reloadable="flase" >

151              </Context>

 mkdir -p /web/webapp/

[root@bogon ~]# vim /web/webapp/index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<html>

        <head>

                <title>JSP test2 page</title>

        </head>

        <body>

                <% out.println("Welcome to test site,http://www.hhh好好好.com");%>

        </body>

</html>

[root@bogon ~]#  mv jdk1.8.0_191/ /usr/local/java

[root@bogon ~]# vim /etc/profile

export JAVA_HOME=/usr/local/java        #设置java跟目录

export PATH=$PATH:$JAVA_HOME/bin        #在PATH环境变量中添加java跟目录的bin子目录

[root@bogon ~]# source /etc/profile

[root@bogon ~]# /usr/local/tomcat8/bin/startup.sh

Using CATALINA_BASE:   /usr/local/tomcat8

Using CATALINA_HOME:   /usr/local/tomcat8

Using CATALINA_TMPDIR: /usr/local/tomcat8/temp

Using JRE_HOME:        /usr/local/java

Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar

njinx服务器配置   192.168.1.127      安装解决依赖

[root@bogon ~]# yum -y install pcre-devel zlib-devel openssl-devel lrzsz   

[root@bogon ~]#  tar xf nginx-1.16.0.tar.gz -C /usr/src/

[root@bogon src]# cd /usr/src/nginx-1.16.0/

[root@bogon nginx-1.16.0]#  ./configure --prefix=/usr/local/nginx  --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module && make && make install

--prefix=/usr/local/nginx //指定安装目录

--user=nginx --group=nginx  //指定运行的用户和组

--with-file-aio //启用文件修改支持

--with-http_stub_status_module //启用状态统计

--with-http_ssl_module //启用ssl模块

--with-http_flv_module //启用flv模块,提供寻求内存使用基于时间的偏移量文件

--with-http_gzip_static_module //启用gzip静态压缩

[root@bogon nginx-1.16.0]# vim /usr/local/nginx/conf/nginx.conf       配置nginx

user  nginx;

worker_processes  1;

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

    #                  '$status $body_bytes_sent "$http_referer" '

    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;

    #tcp_nopush     on;

    #keepalive_timeout  0;

    keepalive_timeout  65;

    #gzip  on;

         upstream tomcat {

        server 192.168.1.129:8080 weight=1;

        server 192.168.1.139:8080 weight=1;

    }

    server {

        listen       80;

        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {

            root   html;

            index  index.html index.htm;

        }

       location ~ \.jsp$ {

            proxy_pass http://tomcat;

        }

 error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

看到ok成功

[root@bogon nginx-1.16.0]# /usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[root@bogon nginx-1.16.0]# /usr/local/nginx/sbin/nginx

查看端口

[root@bogon nginx-1.16.0]# netstat -anpt | grep :80

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      65592/nginx: master

[root@bogon nginx-1.16.0]# ps aux | grep nginx | grep -v grep

root      65592  0.0  0.0  45980  1152 ?        Ss   19:35   0:00 nginx: master process /usr/local/nginx/sbin/nginx

nginx     65593  0.0  0.1  46368  1908 ?        S    19:35   0:00 nginx: worker process

浏览器访问   不断刷新由于权重相同,页面会反复切换

tomcat1连接数据库

指定路径解压

[root@bogon conf]# tar xf SLSaleSystem.tar.gz -C /web/webapp/

[root@bogon conf]# ls /web/webapp/SLSaleSystem/

logs  META-INF  statics  WEB-INF

[root@bogon conf]#  vim /usr/local/tomcat8/conf/server.xml

添加路径

 <Context docBase="/web/webapp/SLSaleSystem" path="" reloadable="flase" >

            </Context>

从新启动

[root@bogon conf]# /usr/local/tomcat8/bin/shutdown.sh

Using CATALINA_BASE:   /usr/local/tomcat8

Using CATALINA_HOME:   /usr/local/tomcat8

Using CATALINA_TMPDIR: /usr/local/tomcat8/temp

Using JRE_HOME:        /usr/local/java

Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar

[root@bogon conf]#  /usr/local/tomcat8/bin/startup.sh

Using CATALINA_BASE:   /usr/local/tomcat8

Using CATALINA_HOME:   /usr/local/tomcat8

Using CATALINA_TMPDIR: /usr/local/tomcat8/temp

Using JRE_HOME:        /usr/local/java

Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar

Tomcat started.

浏览器访问

 数据库安装  单独一台安装  IP192.168.1.121

[root@bogon ~]# yum -y install mariadb-server mariadb   安装数据库

[root@bogon ~]# systemctl start mariadb                          启动

[root@bogon ~]# mysql                                                     进入

\Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>  create database slsaledb;                      

Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on slsaledb.* to admin@'%' identified by '123456';        创建并赋予权限

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>  flush privileges;                                                         刷新

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit

[root@bogon ~]# mysql -uroot < slsaledb-2014-4-10.sql                   导入数据

[root@bogon ~]# vim /web/webapp/SLSaleSystem/WEB-INF/classes/jdbc.properties            更改配置文件

driverClassName=com.mysql.jdbc.Driver

url=jdbc\:mysql\://192.168.1.121\:3306/slsaledb?useUnicode\=true&characterEncoding\=UTF-8

uname=admin

password=123456

minIdle=10

maxIdle=50

initialSize=5

maxActive=100

maxWait=100

removeAbandonedTimeout=180

removeAbandoned=true

重启服务

[root@bogon ~]# /usr/local/tomcat8/bin/shutdown.sh

[root@bogon ~]#  /usr/local/tomcat8/bin/startup.sh

 访问

 

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

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

相关文章

DL-FWI:数据(第二次培训作业)

代码&#xff1a; import scipy.io import matplotlib import numpy as np import matplotlib.pylab as plt matplotlib.use(TkAgg) from mpl_toolkits.axes_grid1 import make_axes_locatable import cv2font21 {family: Times New Roman,weight: normal,size: 21,}font18 …

【通览一百个大模型】LaMDA(Google)

【通览一百个大模型】LaMDA&#xff08;Google&#xff09; 作者&#xff1a;王嘉宁&#xff0c;本文章内容为原创&#xff0c;仓库链接&#xff1a;https://github.com/wjn1996/LLMs-NLP-Algo 订阅专栏【大模型&NLP&算法】可获得博主多年积累的全部NLP、大模型和算法干…

图像金字塔、滑动条、鼠标事件响应

1、拉普拉斯图像金字塔 1.1 原理 1.2 实现 //拉普拉斯图像金字塔 void test1() {//高斯图像金字塔构建Mat img imread("F:/testMap/lena.png");vector<Mat> Guass;int level 3;Guass.push_back(img);for (int i 0; i < level; i){Mat guass;pyrDown(Gua…

蓝桥杯每日一练专栏导读2

之前一直更新的是C、C相关的题目&#xff0c;但作为一名前端工程师&#xff0c;还是对Js了解的更多一些&#xff0c;所以从此以后停止更新C/C相关内容&#xff0c;改为更新Js相关的练习题。 内容 更新的内容依旧是蓝桥杯大赛官网提供的习题。每一道题都会提供详细的解题思路&a…

方案编制要求--模版--可以借鉴

写方案的标题要求的编写&#xff0c;可以参照这个进行编写&#xff1b; 附录2&#xff1a;方案编制要求及模板 一、封面格式要求 封面内容应包括项目名称、需求单位&#xff08;盖章&#xff09;、建设单位&#xff08;盖章&#xff09;、设计单位&#xff08;盖章&#xff0…

线段树:一遍通透线段树

线段树有关的操作&#xff08;先大体上知道什么意思&#xff09;: 1 2 3 4 5 线段树前置知识&#xff1a; 由于线段树是一个完美二叉树&#xff0c;所以我们选择的是一维数组来存储线段树的相关知识&#xff1a; 所以&#xff1a; 1如果一个结点是X&#xff0c;则父节…

基于MATLAB的简单线性回归详解

概要 在机器学习领域中大多数任务通常都与预测&#xff08;prediction&#xff09;有关。当我们想预测一个数值时&#xff0c;就会涉及到回归问题。常见的例子包括&#xff1a;预测价格&#xff08;房屋、股票等&#xff09;、预测住院时间&#xff08;针对住院病人等&#xff…

如何用python编写3D游戏

Vizard是一款虚拟现实开发平台软件&#xff0c;从开发至今已走过十个年头。它基于C/C&#xff0c;运用新近OpenGL拓展模块开发出的高性能图形引擎。当运用Python语言执行开发时&#xff0c;Vizard同时自动将编写的程式转换为字节码抽象层(LAXMI)&#xff0c;进而运行渲染核心。…

当型循环和直到型循环(精讲)

目录 背景概念当型循环直到型循环 二维表对比图示与代码当型循环流程图N-S图&#xff08;盒图&#xff09; 直到型循环流程图N-S图&#xff08;盒图&#xff09; 例子当型图示代码 直到型图示代码 Do–Loop 和For –Next相同点&#xff1a;不同点&#xff1a;代码 总结 背景 两…

day02 重新学python——判断语句和循坏语句

文章目录 一、python中的判断语句1.布尔类型和比较运算符2.if语句的基本格式3.if else 语句4.if elif else 语句5.判断语句的嵌套6.实战案例 二、循环语句1.while循环的基础语法2.while循环的基础案例3.while循环的嵌套应用4.while循环的嵌套案例5.for循环的基础语法6.for循环的…

【计算机网络】第三章 数据链路层(点对点协议 媒体介入控制)

文章目录 3.5 点对点协议PPP3.6 媒体接入控制3.6.1 媒体接入控制的基本概念3.6.2 媒体接入控制——静态划分信道3.6.3 随机接入——CSMA/CD协议3.6.4 随机接入——CSMA/CA协议 3.5 点对点协议PPP 点对点协议是目前使用最广泛的点对点数据链路层协议。PPP协议为在点对点链路传输…

JAVA Email

Email就是电子邮件。电子邮件的应用已经有几十年的历史了&#xff0c;我们熟悉的邮箱地址比如aaaa22222163.com&#xff0c;邮件软件比如Outlook、网易闪电邮、Foxmail都是用来收发邮件的。当然&#xff0c;使用Java程序也可以收发电子邮件。 传统的邮件就是通过邮局投递&#…

目标检测+车道线识别+追踪+测距(代码+部署运行)

目标检测车道线识别追踪测距 本文主要讲述项目集成&#xff1a;从车道线识别、测距、到追踪&#xff0c;集各种流行模型于一体&#xff01; 不讲原理&#xff0c;直接上干货&#xff01; 把下文环境配置学会&#xff0c;受益终生&#xff01; 各大项目皆适用&#xff01; …

具有音调控制功能的25W混合式Hi—Fi放大器

现代电子技术应用中电子管的使用虽然已经较少&#xff0c;但由于电子管有晶体管不可替代的一些优越特性&#xff0c;所以在部分领域特别是音响电路中还受到人们的亲睐。这是一款由“靓”音电子管和音响集成电路联合组成的混合放大器。该放大器由电子管作前级&#xff0c;音响专…

7.8(wmi命令+ServiceName+CobaltStrike Loader)

优先级&#xff0c;进程ID&#xff0c;线程计数 优先级&#xff08;Priority&#xff09;是操作系统对进程或线程分配处理器资源的重要性排序。较高的优先级意味着进程或线程更有可能在竞争处理器资源时被调度执行。 进程ID&#xff08;Process ID&#xff09;是唯一标识系统中…

Python读取Excel文件并复制指定的数据行

本文介绍基于Python语言&#xff0c;读取Excel表格文件数据&#xff0c;并基于其中某一列数据的值&#xff0c;将这一数据处于指定范围的那一行加以复制&#xff0c;并将所得结果保存为新的Excel表格文件的方法。 首先&#xff0c;我们来明确一下本文的具体需求。现有一个Excel…

【Java】Netty中closeFuture添加监听事件示例

1. 需求 客户端向服务端发送信息&#xff0c;服务端将信息打印客户端接收键盘输入到信息循环向服务端发送信息客户端接收键盘输入‘q’时关闭 2.服务端代码 import io.netty.bootstrap.ServerBootstrap;在这里插入代码片 import io.netty.buffer.ByteBuf; import io.netty.c…

新开普智慧校园系统RCE漏洞复现(0day)

0x01 产品简介 新开普智慧校园体系基于业务、数据双中台理念&#xff0c;建立共享开放能力平台&#xff0c;实现能力开放和服务与数据的全生命周期治理&#xff1b;基于一云多端&#xff0c;混合云服务模式&#xff0c;覆盖管理、生活、教学、科研和社会化服务全场景&#xff0…

【网络】HTTPS协议原理

目录 “加密”相关概念 为什么要加密 常见加密方式 对称加密 非对称加密 HTTPS工作过程探究 方案1-只使用对称加密 方案2-只使用非对称加密 方案3-客户端和服务端双方都使用非对称加密 方案4-非对称加密 对称加密 上述方案问题分析 方案5-证书认证 非对称加密对…

代码随想录二刷day46 | 动态规划之139.单词拆分

day46 139.单词拆分1.确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp[i] 139.单词拆分 题目链接 解题思路&#xff1a;单词就是物品&#xff0c;字符串s就是背包&#xff0c;单词能否组成字符串s&#xff0c;就是问物品能不能把背包装满…