day4:tomcat—maven-jdk
一,java项目部署过程
- 编译:使用javac命令将.java源文件编译成.class宇节码文件
- 打包:使用工具如maven或Gradle将项目的依赖、资源和编译后的字节码打包成一个分发格式,如.jar文件,或者.war文件(用于web应用)
- 部署:将打包后的文件复制到服务器上指定的目录中,可能是Tomcat、JBoss、wildFly等应用服务器的deployments目录
二,jdk概述与安装配置
概述
JDK(Java Development Kit,Java 开发工具包)是开发 Java 应用程序所需的核心工具集合。它包含了运行 Java 应用程序和开发 Java 程序的各种工具和库。JDK 包括了 JRE(Java Runtime Environment,Java 运行时环境)和开发工具,如 编译器(javac
)、调试工具(jdb
)以及其他必要的工具和库。
J2SE, J2EE, J2ME 概述
版本 | 全称 | 定义 | 主要用途 | 适用对象 |
---|---|---|---|---|
J2SE | Java 2 Standard Edition | J2SE 是 Java 的标准版本,提供了核心类库和基础功能,适用于桌面和服务器应用。 | 提供开发桌面应用、命令行应用、图形界面(GUI)应用、控制台应用等。 | 开发桌面程序、简单的服务器应用等。 |
J2EE | Java 2 Enterprise Edition | J2EE 是 Java 的企业版,主要用于开发大型的企业级应用,提供了分布式计算、事务管理和安全功能。 | 用于开发 Web 应用、企业级应用、分布式系统、服务端应用等。 | 开发 Web 应用、大型企业应用、分布式系统等 |
J2ME | Java 2 Micro Edition | J2ME 是 Java 的微型版,主要用于开发嵌入式设备、移动设备、有限资源环境下的应用。 | 用于开发手机、嵌入式设备、物联网设备和其他资源受限的应用。 | 开发移动设备、嵌入式设备等应用。 |
JDK 版本选择指南
JDK 版本 | 适用场景 | 版本类型 | 建议选择的情况 |
---|---|---|---|
JDK 8 | 适合老旧项目、已使用 Lambda 表达式和 Stream API 的项目 | LTS(长期支持) | 如果你的项目基于 Java 8,或依赖于旧版 API,选择 JDK 8。 |
JDK 11 | 企业级应用、Web 服务、微服务架构等 | LTS(长期支持) | 适合现代化应用,支持微服务,长期稳定更新。 |
JDK 17 | 大型项目、长期支持、性能优化 | LTS(长期支持) | 对于新项目和生产环境中的长期应用,JDK 17 是首选。 |
JDK 12+ | 新特性、试验性功能、快速更新的应用 | 非 LTS(短期支持) | 对于快速追求新特性的开发,适合实验性和开发中应用。 |
推荐做法:
- 对于 生产环境 和 长期维护的项目,优先选择 LTS 版本,如 JDK 8, JDK 11 或 JDK 17。
- 对于需要 最新特性 或希望 提前体验新功能 的开发者,可以选择 非 LTS 版本,如 JDK 12、JDK 14 等,但需要注意这些版本会定期更新,且没有长期支持。
特性(运行在jvm上)
-
跨平台性: JDK 支持跨平台开发,Java 程序可以在不同的操作系统(Windows、Linux、macOS 等)上运行,无需修改代码。运行在jvm上
-
内存管理: JDK 提供了自动内存管理,包含垃圾回收机制,这大大简化了开发者的工作。
-
多线程支持: JDK 提供了内建的多线程支持,使得开发者可以高效地利用多核处理器。
-
丰富的库和 API: JDK 包含了大量的类库和 API,可以帮助开发者完成各种任务,例如网络通信、图形用户界面(GUI)开发、数据库操作等。
-
安全性: JDK 提供了多种安全特性,包括加密机制、安全类库、身份验证等,帮助开发者构建安全的应用程序。
-
支持最新的 Java 标准: JDK 支持 Java 的最新版本,包括最新的语言特性和标准库。
安装
yum安装
#查看是否安装java
rpm -qa java
#查看jdk的相关安装包
yum -y list java*
#安装jdk
yum install -y java-11-openjdk.x86_64
#测试验证(不需要配置环境变量)
java -version
源码安装(因为仓库不提供oracle的java)
#卸载之前的jdk
rpm -qa| grep java
yum remove java* -y
#下载JDK安装包:Java Archive Downloads - Java SE 17(这个版本 x64 Compressed Archive)
wget https://download.oracle.com/java/17/archive/jdk-17.0.12_linux-x64_bin.tar.gz
#上传源码包的centos机
# 解压缩源码包
tar -xf jdk-17_linux-x64_bin.tar.gz -C /usr/locat/
# 测试
java -version
配置(学了这么久我还不会自己配,现在开始学吧)
打开 /etc/profile
文件: 使用 vim
或任何文本编辑器打开 /etc/profile
文件:
sudo vim /etc/profile
在文件的最后面添加环境变量设置: 在文件的末尾添加以下内容:
# 设置 JAVA_HOME 和更新 PATH
export JAVA_HOME=/usr/local/jdk-17.0.12
export PATH=$JAVA_HOME/bin:$PATH
注意:
export JAVA_HOME=/usr/local/jdk-17.0.12
这行设置了JAVA_HOME
环境变量为您的 JDK 安装路径。export PATH=$JAVA_HOME/bin:$PATH
这行将 Java 的bin
目录加入到系统的PATH
环境变量中,这样您就可以在任何地方通过命令行调用 Java。
保存并退出 vim
: 按 Esc
键,然后输入 :wq
保存并退出。
使修改生效: 运行以下命令使 /etc/profile
文件的修改立即生效:
source /etc/profile
测试 Java 环境变量是否配置成功: 运行以下命令,查看 Java 版本来验证配置是否正确:
java -version
没有明确设置 java
这个变量,为什么仍然可以直接运行 java --version
命令呢?
原因总结:
-
JAVA_HOME
环境变量的作用:JAVA_HOME
用来指向 JDK 安装的根目录,例如/usr/local/jdk-17.0.12
。
-
PATH
环境变量的作用:PATH
变量定义了操作系统搜索可执行文件的目录。当您将$JAVA_HOME/bin
加入PATH
时,系统能够在该目录下查找 Java 的可执行文件(如java
、javac
等)。
-
为什么可以执行
java
命令:java
命令是 JDK 安装目录下的一个可执行文件,通常位于$JAVA_HOME/bin/java
。- 通过将
$JAVA_HOME/bin
添加到PATH
环境变量中,操作系统能够在$JAVA_HOME/bin
目录中找到java
命令。 - 结果就是您不需要显式设置
java
变量,系统能够自动找到并执行它。
关键点:
- 设置
JAVA_HOME
后,$JAVA_HOME/bin
目录会被添加到PATH
中,操作系统就能在该目录中找到 Java 可执行文件。 - 您可以通过执行
java -version
来确认java
命令是否正确运行,因为操作系统会根据PATH
来查找java
可执行文件。
命令
javac 文件.java #将源码编译为字节码文件
class wenjian{public static void main(String[] args){System.out.println("文件");} }
java 编译后的文件 #执行这个文件
三,maven安装装置使用
概述
Maven 是一个项目管理工具,主要用于 Java 项目的构建、管理和依赖管理。它基于 POM(Project Object Model)文件来描述项目的结构、依赖和插件配置,并且可以自动化执行构建、打包、部署等过程。
下载安装
- 访问 Apache Maven 官网下载页面:Download Apache Maven – Maven
- 选择适合的版本下载,例如:
apache-maven-3.x.x-bin.tar.gz
或apache-maven-3.x.x-bin.zip
。 - wget https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz(复制命令可能报错,我认为应该是csdn给链接加了什么)
- 选择适合的版本下载,例如:
- 解压文件
- tar -xzvf apache-maven-3.x.x-bin.tar.gz -C /usr/local/
- 设置环境变量
- vim /etc/profile
- source /etc/profile
- mvn -version 验证一下
配置仓库
Maven 默认使用中央仓库来下载依赖包,但我们通常会配置自己的本地仓库或私有仓库,以便在离线或代理时使用。配置文件为:apache-maven-3.9.9/conf/settings.xml(建议先备份在修改)
1. 配置本地仓库
默认情况下,Maven 会将依赖下载到本地仓库,即
~/.m2/repository
目录。如果你想自定义本地仓库的位置,可以通过修改 Maven 的配置文件settings.xml
来实现。步骤 1:修改
settings.xml
打开 Maven 配置文件
settings.xml
,该文件位于 Maven 安装目录下的conf
文件夹中,或位于用户的~/.m2/
目录下。修改或添加以下配置:
<localRepository>自己设置存放位置</localRepository>(注意:不写这句就是默认)
步骤 2:保存并退出
- 保存
settings.xml
文件后,Maven 会将所有依赖下载到你指定的目录中,而不是默认的~/.m2/repository
。2. 配置远程仓库
Maven 默认会连接 Maven Central Repository 来下载依赖包。你可以在
settings.xml
文件中配置其他远程仓库,例如私有仓库或镜像仓库。步骤 1:配置远程仓库
你可以在
settings.xml
文件中添加自定义远程仓库的配置信息:<mirrors> <!-- 定义镜像列表 --><mirror> <!-- 定义单个镜像 --><id>alimaven</id> <!-- 镜像的唯一标识 --><name>aliyun maven</name> <!-- 镜像的名称 --><url>http://maven.aliyun.com/nexus/content/groups/public/</url> <!-- 镜像的URL --><mirrorOf>central</mirrorOf> <!-- 指定这个镜像替代的仓库 --></mirror></mirrors>
步骤 2:添加远程仓库
你还可以在项目的
pom.xml
文件中添加远程仓库,以便 Maven 下载依赖时从指定的仓库获取。<repositories><repository><id>example-repo</id><url>https://repo.example.com/maven2</url></repository> </repositories>
本地仓库(Local Repository)主要用于存储从远程仓库下载的依赖包以及项目构建过程中生成的构件(例如 .jar
、.war
文件)。本地仓库的作用是缓存这些依赖,以便在以后进行构建时可以避免重复从远程仓库下载,提高构建效率和稳定性。(简单的说,本地仓库会存下远程仓库下载过得资源,并且下次直接先去本地看,没有在远程)
常用命令
mvn工程相关命令,需要在项目pom.xml同级的目录中运行
mvn clean:清理项目,删除
target/
目录中的所有文件(即编译生成的文件和构建产物)。解释:
clean
目标用于移除所有由 Maven 构建产生的文件,确保每次构建都从一个干净的状态开始。- 通常在执行构建前执行
clean
命令,避免使用旧的构建结果或缓存的文件。mvn validate:验证项目是否正确,是否有缺失的依赖。
mvn compile:编译源代码,生成
.class
文件。解释:
compile
目标将项目中的所有源代码编译为.class
文件,这些文件会被存放在target/classes/
目录下。- 这一步骤不会打包生成 JAR 文件,只是编译源代码。
mvn test:自动扫描并执行位于
src/test/java
目录下的所有测试类,并显示测试结果。mvn package:将编译后的代码打包成可部署的格式,如 JAR、WAR 或其他格式。
解释:
package
目标会将编译后的代码和资源文件打包成项目配置中指定的格式(例如 JAR 或 WAR 文件)。该文件会存放在target/
目录下。- 如果
pom.xml
中配置了打包成 JAR 文件,那么执行此命令后会生成一个.jar
文件。mvn install:将打包好的项目安装到本地 Maven 仓库中。
解释:
install
目标会将打包好的项目(JAR、WAR、EAR 等)安装到本地 Maven 仓库(通常是~/.m2/repository
)中。- 这使得其他项目可以引用这个已构建的项目作为依赖。
- 在执行
mvn install
后,本地仓库中会存储项目构建的产物,以便其他项目进行依赖。mvn deploy:将项目的构建产物上传到远程 Maven 仓库。
解释:
deploy
目标会将构建产物(JAR、WAR、EAR 等)上传到配置的远程 Maven 仓库。这通常用于共享构建产物,供其他开发者或项目使用。deploy
命令通常是在项目完成构建并准备发布时使用,它会将产物发布到中央仓库或私有仓库。
安装数据库(先看tomcat安装)
maven命令(待定)
四,Tomcat安装配置
概述(自带处理动态资源的功能)
Apache Tomcat 是一个轻量级的 Java Web 服务器,专门用于运行 Java Servlets 和 JavaServer Pages(JSP)。它作为一个 Servlet 容器,能够处理 Java Web 应用的请求并生成响应。
主要特点:
- 支持 Java Servlet 和 JSP 标准。
- 支持 HTTP 和 AJP 协议。
- 提供良好的性能和灵活的配置选项。
- 支持多种 Web 应用部署方式,包括 WAR 文件、目录部署等。
官网:Apache Tomcat® - Welcome!
下载安装
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98.tar.gz
解压:tar -zxvf apache-tomcat-<version>.tar.gz
设置环境变量:
export CATALINA_HOME=/xxx/tomcat-版本
export PATH=$CATALINA_HOME/bin:$PATH
开启访问,ip:8080
配置文件详解
Tomcat 配置文件位于 conf
目录下,主要的配置文件有:
1. server.xml
这是 Tomcat 的主配置文件,定义了整个服务器的行为,包括端口、线程池、虚拟主机等配置。
常见配置项:
-
Connector:配置 Tomcat 监听的端口,例如 HTTP 端口、AJP 端口等。
-
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
port
:监听的端口号(默认为 8080)。connectionTimeout
:连接超时时间,单位为毫秒。redirectPort
:当启用 SSL 时,会自动重定向的端口。
- Host:配置虚拟主机,可以在同一台服务器上运行多个应用。
-
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"><Context path="" docBase="/path/to/your/application"/> </Host>
name
:主机名(通常是localhost
)。appBase
:Web 应用的基础目录,通常是webapps
。unpackWARs
:是否自动解压 WAR 文件。
2. web.xml
web.xml
是每个 Java Web 应用的配置文件,位于 WEB-INF
目录下,定义了应用的 Servlet、过滤器、监听器等。
常见配置项:
- Servlet 配置:
-
<servlet><servlet-name>hello</servlet-name><servlet-class>com.example.HelloServlet</servlet-class> </servlet> <servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello</url-pattern> </servlet-mapping>
servlet-name
:Servlet 的名称。servlet-class
:Servlet 类的完整路径。url-pattern
:Servlet 映射的 URL。
3. context.xml
该文件配置每个 Web 应用的相关设置,通常位于应用的 META-INF/context.xml
中。
常见配置项:
- 数据源配置:
-
<Resource name="jdbc/MyDataSource" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000"username="user" password="password" driverClassName="com.mysql.cj.jdbc.Driver"url="jdbc:mysql://localhost:3306/mydb" />
部署项目
多实例部署
tomcat优化
五,java项目部署
相关文章:

day4:tomcat—maven-jdk
一,java项目部署过程 编译:使用javac命令将.java源文件编译成.class宇节码文件打包:使用工具如maven或Gradle将项目的依赖、资源和编译后的字节码打包成一个分发格式,如.jar文件,或者.war文件(用于web应用)…...

apache-tomcat-6.0.44.exe Win10
apache-tomcat-6.0.44.exe Win10...

Redis(2)常用命令
安装Redis 现在我们安装Redis 5,Redis安装在Linux上面安装,如果想在本机上面安装多个Redis的话,就要使用Docker。 在Ubuntu上面安装: 切换到root用户使用apt命令搜索相关的软件包(apt search redis)apt …...

【原生js案例】ajax的简易封装实现后端数据交互
ajax是前端与后端数据库进行交互的最基础的工具,第三方的工具库比如jquery,axios都有对ajax进行第二次的封装,fecth是浏览器原生自带的功能,但是它与ajax还是有区别的,总结如下: ajax与fetch对比 实现效果 代码实现 …...

安卓环境配置及打开新项目教程,2024年12月20日最新版
1.去官网下载最新的Android Studio,网址:https://developer.android.com/studio?hlzh-cn 2.下载加速器,注册账号,开启加速器。网址:放在文末。 3.下载安卓代码,项目的路径上不能有中文,特别是…...

Docker 安装 禅道-21.2版本-外部数据库模式
Docker 安装系列 1、拉取最新版本(zentao 21.2) [rootTseng ~]# docker pull hub.zentao.net/app/zentao Using default tag: latest latest: Pulling from app/zentao 55ab1b300d4b: Pull complete 6b5749e5ef1d: Pull complete bdccb03403c1: Pul…...

写SQL太麻烦?免费搭建 Text2SQL 应用,智能写 SQL | OceanBase AI 实践
自OceanBase 4.3.3版本推出以来,向量检索的能力受到了很多客户的关注,也纷纷表达希望OB能拓展更多 多模数据库大模型 的AI应用实践。 在上篇文章 👉 OceanBase LLM,免费构建你的专属 AI 助手 ,我们介绍了如何去搭建一…...

数据分析实战—鸢尾花数据分类
1.实战内容 (1) 加载鸢尾花数据集(iris.txt)并存到iris_df中,使用seaborn.lmplot寻找class(种类)项中的异常值,其他异常值也同时处理 。 import pandas as pd from sklearn.datasets import load_iris pd.set_option(display.max_columns, N…...

【专题】2024抖音电商母婴行业分析报告汇总PDF洞察(附原数据表)
原文链接:https://tecdat.cn/?p38651 在数字化浪潮的席卷下,抖音电商母婴行业正经历着深刻变革。当下,年轻一代父母崛起,特别是 24 至 30 岁以及 18 至 23 岁的群体成为抖音母婴行业兴趣人群的主力军。他们带来全新育儿理念&…...

堆栈粉碎的原理与预防攻击措施
1、堆栈粉碎的原理 “堆栈粉碎”(stack smashing)指的是在计算机程序中利用缓冲区溢出漏洞来修改或破坏函数调用栈的过程。以下是其基本原理: 缓冲区溢出:当程序接收输入数据时,如果没有适当的边界检查和验证&#x…...

Flutter组件————AppBar
AppBar 是 Flutter 中用于创建应用程序顶部栏的组件,它遵循 Material Design 规范。 参数: 参数名称类型描述titleWidget设置 AppBar 中的标题文本或自定义标题小部件。automaticallyImplyLeadingbool决定是否自动添加返回按钮(如果页面不是…...

请问深度学习直接缝了别的模型,在论文中这种创新点应该如何描述呢?
作者:星辰 链接:https://www.zhihu.com/question/599461738/answer/3289126344 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 作为散养硕士,我们希望能早早发小论文,…...

微流控专题 | 微流体应用说明——藻酸盐微球生产简介
基于水凝胶的递送系统正被越来越多地应用于各个领域,包括封装、保护以及在制药、保健品、食品工业中释放生物活性物质,还用于细胞/细菌/微生物的培养与植入,以及生物研究中基于细胞的基因操作。 尺寸在 50m 范围内的高度单分散的藻酸盐微球 —…...

【前后端】HTTP网络传输协议
近期更新完毕,建议关注、收藏! http请求 URL 严格意义上应该是URI http or https http不加密不安全;https加密协议(公网使用) http端口号80 https端口号443GET or POST GET和POST是HTTP请求的两种基本方法. 因为POST需…...

Fastdfs V6.12.1集群部署(arm/x86均可用)
文章目录 一、 Fastdfs 介绍二、部署 信息三、步骤tracker/storage 机器的 compose 内容storage 机器的 composetracker 与 storage 启动目录层级与配置文件测试测试集群扩容与缩减注意事项 一、 Fastdfs 介绍 FastDFS 是一款高性能的分布式文件系统,特别适合用于存…...

【LeetCode每日一题】——434.字符串中的单词数
文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【时空频度】八【代码实现】九【提交结果】 一【题目类别】 字符串 二【题目难度】 简单 三【题目编号】 434.字符串中的单词数 四【题目描述】 统计字符串中的单词个…...

windows C#-使用构造函数
实例化类或结构时,将会调用其构造函数。 构造函数与该类或结构具有相同名称,并且通常初始化新对象的数据成员。 在下面的示例中,通过使用简单构造函数定义了一个名为 Taxi 的类。 然后使用 new 运算符对该类进行实例化。 在为新对象分配内存…...

[react]redux异步处理和重写useDispatch
异步代码 import { createAsyncThunk, createSlice } from reduxjs/toolkit; import { getBanner } from ../http/request; import store from /store; export const fetchBanner createAsyncThunk(recommend/banners,async (args, thunkAPI) > {const response await ge…...

基础数据结构---栈
顺序表实现 一、栈类的声明 栈是一种特殊的线性表,可以由顺序表来实现,也可以由链表来实现,这节课,我们采用顺序表来实现栈。 #include <iostream>#include <stdexcept>using namespace std;template<typename …...

【HarmonyOS之旅】DevEco Studio的安装与环境配置
目录 1 -> 下载与安装DevEco Studio 1.1 -> 运行环境要求 1.2 -> 下载和安装DevEco Studio 2 -> 配置环境变量 3 -> 配置开发环境 4 -> 开发项目准备 5 -> 实用小技巧 5.1 -> 中文插件 2 -> 简化工程目录栏 1 -> 下载与安装DevEco Stud…...

Liveweb视频融合共享平台在果园农场等项目中的视频监控系统搭建方案
一、背景介绍 在我国的大江南北遍布着各种各样的果园,针对这些地处偏僻的果园及农场等环境,较为传统的安全防范方式是建立围墙,但是仅靠围墙仍然无法阻挡不法分子的有意入侵和破坏,因此为了及时发现和处理一些难以察觉的问题&…...

Android4.4 在系统中添加自己的System Service
添加系统service时,源码限制只能添加以android开头的包名,如果不是android开头的,编译时会提示找不到对应的文件。 比如说在系统中添加一个包名为:tel.gateway.connservice的系统服务。 1.在framework/base目录下面创建如下路径&a…...

【C++】C++实现字符串大小写转换功能
在C中,实现字符串大小写转换可以通过标准库中的函数来完成。以下是两种常见的方法: 使用标准库函数std::transform std::transform是一个泛型算法,可以用来对序列中的每个元素应用一个给定的函数,并把结果存储到另一个序列中。这…...

【蓝桥杯】43696.小数第n位
小数第n位 题目描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。如果我们把有限小数的末尾加上无限多个0,那么有限小数和无限小数就都有了统一的形式。 本题的任务是:在上面的约定下,求整数除法…...

进程间通信方式---消息队列(System V IPC)
进程间通信方式—消息队列(System V IPC) 文章目录 进程间通信方式---消息队列(System V IPC)消息队列1.消息队列进程间通信原理2.msgget 系统调用3.msgsnd 系统调用4.msgrcv 系统调用5.msgctl 系统调用6.函数使用案例7.实现生产者…...

windows10 安装wsl、迁移到其他盘
介绍一下在windows10 安装和迁移wsl。由于公司发了通知不能在使用docker desktop,只能另找方法使用docker了,于是想安装一个wsl,然后在装一个docker。 安装wsl ## 查看wsl 版本 wsl.exe --list --online## 安装Ubuntu-22.04 wsl.exe --inst…...

el-divide(vue3总)
分割线 使用...

python —— 常用命令行的命令
目 录 python命令行查看安装版本查看安装路径升级pip工具安装包升级包卸载安装包查看包的信息详情查询已安装的包查询可升级的包显示包所在目录及信息搜索包使用指定版本运行脚本运行常见错误 python命令行 产品研发中通常需要使用一些小工具来辅助调试功能,比如采…...

C++ 23版的最新特性
C 23 是 C 编程语言的最新标准版本,于 2023 年正式发布,带来了诸多新特性与改进,以下是一些主要内容: 1.语言特性 1.显式对象参数(Deducing this):显式对象参数(Deducing this&…...

什么是 Memory-bound stalls,以及如何优化
Memory-bound stalls 是指在计算机系统中,程序的性能受到内存访问速度的限制,导致处理器无法高效执行指令。这种情况通常发生在 CPU 需要等待数据从内存中加载时,而不是在执行计算或处理指令时。 Memory-bound stalls 的成因 访问延迟&…...