CentOS Linux release 7.9.2009 (Core)中安装配置Tomcat

一、安装JDK

部分内容可以参考我这篇文章:Windows11与CentOS7下配置与检测JDK与Maven环境变量 中的 2.2 安装jdk-8u371-linux-x64.tar.gz和配置环境变量/etc/profile

//1、安装redhat-lsb
yum install -y redhat-lsb//2、查看系统版本信息
lsb_release -a //3、查看系统位数
getconf LONG_BITcat /etc/redhat-release

参考我这篇文章:查看CentOS版本及系统位数与设置CentOS 7.9 2009 防火墙配置放开端口的命令与过程
在这里插入图片描述

//查看yum源中JDK版本
yum list java*//使用yum安装JDK1.8.0
yum -y install java-1.8.0-openjdk*//检查Java版本,查看是否安装成功
java -version//配置环境变量
//查看JDK安装的路径
find /usr/lib/jvm -name 'java-1.8.0-openjdk-1.8.0*'//编辑配置文件/etc/profile
//按i进入编辑模式
vim /etc/profile//添加以下信息
//按下Esc键,输入:wq并回车以保存并关闭文件。
#2023-9-2 23:28:12  djc配置JDK环境变量
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH--------------------注意-----------------------
//在本文目录5.1 NO such file or directory 中需要在tomcat脚本文件(即Tomcat-init脚本文件)中,
//需要配置使用JAVA_HOME
//之前执行了移动并重命名Tomcat-init的命令:mv Tomcat-init /etc/init.d/tomcat
//详情见  本文目录5.1 NO such file or directory 中
#Location of JAVA_HOME (bin files)
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64//tomcat脚本文件(即Tomcat-init脚本文件)中的PATH的值,
//是该项目作者默认配置成这样了export PATH=$JAVA_HOME/bin:$PATH
//,与JDK环境变量中的PATH=$PATH:$JAVA_HOME/bin 就是顺序颠倒了,作用应该是一样的
#Add Java binary files to PATH
export PATH=$JAVA_HOME/bin:$PATH
-------------------------------------------//最后刷新环境变量
source /etc/profile
修改环境变量后,可能会导致执行其他命令时,出现类似-bash: chmod: command not found这样的问题,
执行export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin即可。

查看yum源中JDK版本:yum list java*
在这里插入图片描述
使用yum安装JDK1.8.0:yum -y install java-1.8.0-openjdk*
在这里插入图片描述
在这里插入图片描述
检查Java版本,查看是否安装成功java -version

[root@freedom ~]# java -version
openjdk version "1.8.0_382"
OpenJDK Runtime Environment (build 1.8.0_382-b05)
OpenJDK 64-Bit Server VM (build 25.382-b05, mixed mode)
[root@freedom ~]# 

查看JDK安装的路径:find /usr/lib/jvm -name 'java-1.8.0-openjdk-1.8.0*'

[root@freedom ~]# find /usr/lib/jvm -name 'java-1.8.0-openjdk-1.8.0*'
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64
[root@freedom ~]# 

在这里插入图片描述
编辑配置文件/etc/profile
在这里插入图片描述
在这里插入图片描述
添加以下JDK环境变量信息:

#2023-9-2 23:28:12  djc配置JDK环境变量
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH

添加完JDK环境变量信息的/etc/profile

[root@freedom ~]# cat /etc/profile
# /etc/profile# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.pathmunge () {case ":${PATH}:" in*:"$1":*);;*)if [ "$2" = "after" ] ; thenPATH=$PATH:$1elsePATH=$1:$PATHfiesac
}if [ -x /usr/bin/id ]; thenif [ -z "$EUID" ]; then# ksh workaroundEUID=`/usr/bin/id -u`UID=`/usr/bin/id -ru`fiUSER="`/usr/bin/id -un`"LOGNAME=$USERMAIL="/var/spool/mail/$USER"
fi# Path manipulation
if [ "$EUID" = "0" ]; thenpathmunge /usr/sbinpathmunge /usr/local/sbin
elsepathmunge /usr/local/sbin afterpathmunge /usr/sbin after
fiHOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; thenexport HISTCONTROL=ignoreboth
elseexport HISTCONTROL=ignoredups
fiexport PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; thenumask 002
elseumask 022
fifor i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; doif [ -r "$i" ]; thenif [ "${-#*i}" != "$-" ]; then . "$i"else. "$i" >/dev/nullfifi
doneunset i
unset -f pathmunge#2023-9-2 23:28:12  djc配置JDK环境变量
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
刷新环境变量source /etc/profile
在这里插入图片描述
修改环境变量后,可能会导致执行其他命令时,出现类似-bash: chmod: command not found这样的问题,执行export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin即可。
在这里插入图片描述

二、下载Tomcat

2.1 下载Tomcat

Tomcat官网
点击左侧的Download中的Tomcat 8:
在这里插入图片描述
选中右击后点击-复制链接地址
在这里插入图片描述
然后再服务器中使用wget命令,下载Tomcat包:

//链接修改成需要的版本
wget --no-check-certificate https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.96/bin/apache-tomcat-8.5.93.tar.gz

或者直接在浏览器中点击下载链接,下载完成后再将apache-tomcat-8.5.93.tar.gz,利用xftp等工具上传到服务器中

2.2 解压并移动

//解压 apache-tomcat-8.5.93.tar.gz
tar -zxvf apache-tomcat-8.5.93.tar.gz//移动并改名到Tomcat目录
mv apache-tomcat-8.5.93 /usr/local/tomcat/

在这里插入图片描述
在这里插入图片描述
移动并改名到Tomcat目录
/usr/local/tomcat/目录下:
bin:存放Tomcat的一些脚本文件,包含启动和关闭Tomcat服务脚本。
conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml。
webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录。
logs:存放Tomcat执行时的日志文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 创建一般用户

为保证系统安全性,建议创建一般用户运行Tomcat

//创建一般用户djc
useradd djc//运行命令,将文件的所属用户设置为djc
chown -R djc.djc /usr/local/tomcat/

在这里插入图片描述

三、配置server.xml文件

//运行命令,切换到/usr/local/tomcat/conf/目录。
cd /usr/local/tomcat/conf///运行以下命令,重命名server.xml文件
//server.xml_bk相当于把server.xml初始文件的备份
mv server.xml server.xml_bk//新建一个server.xml文件
//会创建并打开一个server.xml文件
//i键编辑,ESC键退出,:wq保存并退出
vi server.xml

server.xml的内容

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8006" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
<Listener className="org.apache.catalina.core.AprLifecycleListener"/>
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"type="org.apache.catalina.UserDatabase"description="User database that can be updated and saved"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml"/>
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"maxThreads="1000"minSpareThreads="20"acceptCount="1000"maxHttpHeaderSize="65536"debug="0"disableUploadTimeout="true"useBodyEncodingForURI="true"enableLookups="false"URIEncoding="UTF-8"/>
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="/data/wwwroot/default" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/data/wwwroot/default" debug="0" reloadable="false" crossContext="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>
</Server>

在这里插入图片描述
i键编辑,ESC键退出,:wq保存并退出
在这里插入图片描述
在这里插入图片描述
cat server.xml
/usr/local/tomcat/conf/server.xml
在这里插入图片描述
在这里插入图片描述

#四、设置JVM内存参数

//运行命令,创建并打开/usr/local/tomcat/bin/setenv.sh文件。
//i键编辑,ESC键退出,:wq保存并退出
vi /usr/local/tomcat/bin/setenv.sh//setenv.sh的内容
//指定JAVA_OPTS参数,用于设置JVM的内存信息以及编码格式。
JAVA_OPTS='-Djava.security.egd=file:/dev/./urandom -server -Xms256m -Xmx496m -Dfile.encoding=UTF-8'

在这里插入图片描述
在这里插入图片描述
cat setenv.sh:
在这里插入图片描述

四、设置Tomcat自启动脚本-Tomcat-init脚本

Tomcat-init

//获取Tomcat自启动脚本 Tomcat-init
//或者使用git clone(从Windows里clone完成后再上传到linux服务器)
//也可以在服务器中直接wget
wet https://github.com/oneinstack/oneinstack/blob/main/init.d/Tomcat-init//移动并重命名Tomcat-init
mv Tomcat-init /etc/init.d/tomcat//为/etc/init.d/tomcat添加可执行权限
chmod +x /etc/init.d/tomcat//设置启动脚本JAVA_HOME
//重要:脚本中JDK的版本信息必须与您安装的JDK版本信息一致,否则Tomcat会启动失败。
sed -i 's@^export JAVA_HOME=.*@export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64@' /etc/init.d/tomcat

Tomcat-init脚本的内容:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          tomcat
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: tomcat-server daemon
# Description:       tomcat-server daemon
### END INIT INFO
#
# chkconfig: - 95 15
# description: Tomcat start/stop/status script#Location of JAVA_HOME (bin files)
export JAVA_HOME=#Add Java binary files to PATH
export PATH=$JAVA_HOME/bin:$PATH#CATALINA_HOME is the location of the configuration files of this instance of Tomcat
CATALINA_HOME=/usr/local/tomcat#TOMCAT_USER is the default user of tomcat
TOMCAT_USER=www#TOMCAT_USAGE is the message if this script is called without any options
TOMCAT_USAGE="Usage: $0 {\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;32mstatus\e[00m|\e[00;31mrestart\e[00m}"#SHUTDOWN_WAIT is wait time in seconds for java proccess to stop
SHUTDOWN_WAIT=20tomcat_pid() {echo `ps -ef | grep java | grep $CATALINA_HOME/ | grep -v grep | tr -s " "|cut -d" " -f2`
}start() {pid=$(tomcat_pid)if [ -n "$pid" ]; thenecho -e "\e[00;31mTomcat is already running (pid: $pid)\e[00m"elseecho -e "\e[00;32mStarting tomcat\e[00m"if [ `user_exists $TOMCAT_USER` = "1" ]; thensu $TOMCAT_USER -c $CATALINA_HOME/bin/startup.shelse$CATALINA_HOME/bin/startup.shfistatusfireturn 0
}status() {pid=$(tomcat_pid)if [ -n "$pid" ]; thenecho -e "\e[00;32mTomcat is running with pid: $pid\e[00m"elseecho -e "\e[00;31mTomcat is not running\e[00m"fi
}stop() {pid=$(tomcat_pid)if [ -n "$pid" ]; thenecho -e "\e[00;31mStoping Tomcat\e[00m"$CATALINA_HOME/bin/shutdown.shlet kwait=$SHUTDOWN_WAITcount=0;until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]doecho -n -e "\e[00;31mwaiting for processes to exit\e[00m\n";sleep 1let count=$count+1;doneif [ $count -gt $kwait ]; thenecho -n -e "\n\e[00;31mkilling processes which didn't stop after $SHUTDOWN_WAIT seconds\e[00m"kill -9 $pidfielseecho -e "\e[00;31mTomcat is not running\e[00m"fireturn 0
}user_exists() {if id -u $1 >/dev/null 2>&1; thenislogin=`cat /etc/passwd | grep ^${TOMCAT_USER}: | grep nologin$`if [ "${islogin: -7}" = "nologin" ]; thenecho "0"elseecho "1"	fielseecho "0"fi
}case $1 instart)start;;stop)stop;;restart)stopstart;;status)status;;*)echo -e $TOMCAT_USAGE;;
esac
exit 0

在这里插入图片描述
上传自启动脚本Tomcat-init
在这里插入图片描述
注意这里的etc的init.d文件夹是个快捷方式链接:
在这里插入图片描述
在这里插入图片描述
也就是说init.d实际指向rc.d下的init.d文件夹 里面有刚刚使用mv命令移动并重命名的Tomcat-init脚本文件,即tomcat脚本文件
在这里插入图片描述
设置启动脚本JAVA_HOME:
为/etc/init.d/tomcat添加可执行权限 (chmod +x /etc/init.d/tomcat),字体变色变粗(可以用来识别命令是否生效)
在这里插入图片描述

五、启动Tomcat

//设置Tomcat开机自启动
chkconfig --add tomcat
chkconfig tomcat on//启动Tomcat
service tomcat start

5.1 NO such file or directory

启动Tomcat:
报错:tomcat-NO such file or directory:
这是因为Tomcat-init脚本文件,也就是/etc/init.d/tomcat脚本文件 (之前执行了移动并重命名Tomcat-init脚本文件的命令mv Tomcat-init /etc/init.d/tomcat)这个文件中需要配置参数JAVA_HOMETOMCAT_USER=www 修改为TOMCAT_USER=djc (TOMCAT_USER is the default user of tomcat),

所以此处的tomcat实际上是一个脚本文件的名称,即Tomcat-init脚本文件。
在这里插入图片描述
在这里插入图片描述
cat tomcat脚本文件(即Tomcat-init脚本文件)
在这里插入图片描述
在这里插入图片描述

#Location of JAVA_HOME (bin files)
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64的值:

在这里插入图片描述
#CATALINA_HOME is the location of the configuration files of this instance of Tomcat
CATALINA_HOME=/usr/local/tomcat 的值:
在这里插入图片描述
修改后的tomcat脚本(即原来的Tomcat-init脚本,mv Tomcat-init /etc/init.d/tomcat):

#H<H<H<H<H<H<H<i!/bin/bash
### BEGIN INIT INFO
# Provides:          tomcat
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: tomcat-server daemon
# Description:       tomcat-server daemon
### END INIT INFO
#
# chkconfig: - 95 15
# description: Tomcat start/stop/status script#Location of JAVA_HOME (bin files)
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64#Add Java binary files to PATH
export PATH=$JAVA_HOME/bin:$PATH#CATALINA_HOME is the location of the configuration files of this instance of Tomcat
CATALINA_HOME=/usr/local/tomcat#TOMCAT_USER is the default user of tomcat
TOMCAT_USER=djc#TOMCAT_USAGE is the message if this script is called without any options
TOMCAT_USAGE="Usage: $0 {\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;32mstatus\e[00m|\e[00;31mrestart\e[00m}"#SHUTDOWN_WAIT is wait time in seconds for java proccess to stop
SHUTDOWN_WAIT=20tomcat_pid() {echo `ps -ef | grep java | grep $CATALINA_HOME/ | grep -v grep | tr -s " "|cut -d" " -f2`
}start() {pid=$(tomcat_pid)if [ -n "$pid" ]; thenecho -e "\e[00;31mTomcat is already running (pid: $pid)\e[00m"elseecho -e "\e[00;32mStarting tomcat\e[00m"if [ `user_exists $TOMCAT_USER` = "1" ]; thensu $TOMCAT_USER -c $CATALINA_HOME/bin/startup.shelse$CATALINA_HOME/bin/startup.shfistatusfireturn 0
}status() {pid=$(tomcat_pid)if [ -n "$pid" ]; thenecho -e "\e[00;32mTomcat is running with pid: $pid\e[00m"elseecho -e "\e[00;31mTomcat is not running\e[00m"fi
}stop() {pid=$(tomcat_pid)if [ -n "$pid" ]; thenecho -e "\e[00;31mStoping Tomcat\e[00m"$CATALINA_HOME/bin/shutdown.shlet kwait=$SHUTDOWN_WAITcount=0;until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]doecho -n -e "\e[00;31mwaiting for processes to exit\e[00m\n";sleep 1let count=$count+1;doneif [ $count -gt $kwait ]; thenecho -n -e "\n\e[00;31mkilling processes which didn't stop after $SHUTDOWN_WAIT seconds\e[00m"kill -9 $pidfielseecho -e "\e[00;31mTomcat is not running\e[00m"fireturn 0
}user_exists() {if id -u $1 >/dev/null 2>&1; thenislogin=`cat /etc/passwd | grep ^${TOMCAT_USER}: | grep nologin$`if [ "${islogin: -7}" = "nologin" ]; thenecho "0"elseecho "1"	fielseecho "0"fi
}case $1 instart)start;;stop)stop;;restart)stopstart;;status)status;;*)echo -e $TOMCAT_USAGE;;
esac
exit 0

5.2 service tomcat start-command not found

在这里插入图片描述
原因:shell脚本是在Windows下编写,通过工具软件传输到CentOS中。而Windows下行结尾符号为\r\nlinux下行结尾时\n,两者不同,所以无法识别,需要转换一下
参考我这篇文章:CentOS: $‘\r‘: command not found

Tomcat-init脚本文件,也就是/etc/init.d/tomcat脚本文件 (之前执行了移动并重命名Tomcat-init脚本文件的命令mv Tomcat-init /etc/init.d/tomcat)

所以此处的tomcat实际上是一个脚本文件的名称,即Tomcat-init脚本文件,内容见5.1 NO such file or directory 中的【修改后的tomcat脚本(即原来的Tomcat-init脚本,mv Tomcat-init /etc/init.d/tomcat):

//执行sh  deploy.sh base,报错$'\r': command not found
//sh  deploy.sh base
//这里修改为service tomcat start
service tomcat start//1、dos2unix 脚本名,此处是dos2unix deploy.sh
//如果执行dos2unix deploy.sh报-bash:dos2unix:command not found,就使用yum install -y dos2unix 安装dos2unix
//如果执行成功,会报一个dos2unix: converting file deploy.sh to Unix format ...
//dos2unix deploy.sh  
//这里改为dos2unix tomcat 
dos2unix tomcat //2、安装dos2unix
yum install -y dos2unix//3、再次执行dos2unix deploy.sh命令
//如果dos2unix deploy.sh执行成功,会报一个dos2unix: converting file deploy.sh to Unix format ...
//如果dos2unix deploy.sh执行成功后,再次执行sh  deploy.sh base还不行,依旧报 $'\r': command not found,就执行下面的sed命令
//这里改为再次执行dos2unix tomcat 
dos2unix tomcat //4、sed -i 's/\r//' 脚本名
//sed -i 's/\r//' deploy.sh
//这里改为sed -i 's/\r//' tomcat
sed -i 's/\r//' tomcat//5、再次执行sh  deploy.sh base
//sh  deploy.sh base
//这里改为 service tomcat start
service tomcat start

在这里插入图片描述
启动成功
在这里插入图片描述

[root@freedom init.d]# service tomcat start
Starting tomcat
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
Tomcat is running with pid: 852

在这里插入图片描述

六、参考

【ECS生长万物之开源】手动部署Java Web环境(CentOS 7)
Tomcat官网
Windows11与CentOS7下配置与检测JDK与Maven环境变量
CentOS: $‘\r‘: command not found

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

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

相关文章

结构体——C语言初阶

一.结构体的声明&#xff1a; &#xff08;1&#xff09;结构的基础知识&#xff1a; 结构体是一种构造数据类型把不同类型的数据组合成一个整体结构体是一些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量需要注意的是&#xff0c;结构体是一种…

【C++入门】拷贝构造运算符重载

目录 1. 拷贝构造函数 1.1 概念 1.2 特征 1.3 常用场景 2. 赋值运算符重载 2.1 运算符重载 2.2 特征 2.3 赋值运算符 前言 拷贝构造和运算符重载是面向对象编程中至关重要的部分&#xff0c;它们C编程中的一个核心领域&#xff0c;本期我详细的介绍拷贝构造和运算符重载。 1. …

Transformer中WordPiece/BPE等不同编码方式详解以及优缺点

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

FPGA设计时序约束八、others类约束之Set_Case_Analysis

目录 一、序言 二、Set Case Analysis 2.1 基本概念 2.2 设置界面 2.3 命令语法 2.4 命令示例 三、工程示例 四、参考资料 一、序言 在Vivado的时序约束窗口中&#xff0c;存在一类特殊的约束&#xff0c;划分在others目录下&#xff0c;可用于设置忽略或修改默认的时序…

人工智能-深度学习之文本预处理

文本预处理 对于序列数据处理问题&#xff0c; 这样的数据存在许多种形式&#xff0c;文本是最常见例子之一。 例如&#xff0c;一篇文章可以被简单地看作一串单词序列&#xff0c;甚至是一串字符序列。 本节中&#xff0c;我们将解析文本的常见预处理步骤。 这些步骤通常包括…

Java 语言关键字有哪些

Java 语言关键字有哪些 分类关键字访问控制privateprotectedpublic类&#xff0c;方法和变量修饰符abstractclassextendsfinalimplementsinterfacenativenewstaticstrictfpsynchronizedtransientvolatileenum程序控制breakcontinuereturndowhileifelseforinstanceofswitchcase…

uniapp 微信小程序登录 新手专用 引入即可

预览 第一步导入插件 在引入的页面的登录按钮下拷贝一下代码 <template><view class"content"><button type"primary" click"login">微信登录</button></view><TC-WXlogin :wxloginwxlogin /> </templ…

05-Spring Boot工程中简化开发的方式Lombok和dev-tools

简化开发的方式Lombok和dev-tools Lombok常用注解 Lombok用标签方式代替构造器、getter/setter、toString()等重复代码, 在程序编译的时候自动生成这些代码 注解名功能NoArgsConstructor生成无参构造方法AllArgsConstructor生产含所有属性的有参构造方法,如果不希望含所有属…

[C/C++]数据结构 栈和队列()

一:栈 1.1 栈的概念及结构 栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈底,栈中的数据元素遵守先进后出的原则. 压栈:栈的插入操作叫做进栈/压栈/入栈,将数据插入栈顶 出栈:栈的删除操作也叫出…

【PTA题目】7-3 冰雹猜想。 分数 10

7-3 冰雹猜想。 分数 10 全屏浏览题目 切换布局 作者 赵静静 单位 浙江工贸职业技术学院 冰雹猜想的内容是&#xff1a;任何一个大于1的整数n&#xff0c;按照n为偶数则除等2&#xff0c;n为奇数则乘3后再加1的规则不断变化&#xff0c;最终都可以变化为1。 例如&#xff…

Redis新操作

1.Bitmaps 1.1概述 Bitmaps可以对位进行操作&#xff0c;实际上它就是一个字符串&#xff0c;可以将Bitmaps想象为一个以位为单位的数组&#xff0c;数组中的每个元素只能存储0或者1&#xff0c;数组的下标在Bitmaps被称为偏移量。 setbit key offset value&#xff1a;设置o…

游戏中的资源动态加载

动态加载的优势 游戏中的资源动态加载是指在游戏运行时根据需要加载和卸载资源的过程&#xff0c;而不是在游戏启动时一次性加载所有资源。这种方法对于管理大型游戏中的资源尤其重要。以下是动态加载的一些关键方面和优势&#xff1a; 1. 内存管理&#xff1a; 动态加载资源…

uni-app下,页面跳转后wacth持续监听的问题处理

uni-app下&#xff0c;页面跳转后wacth持续监听的问题处理 好久没写博客了&#xff0c;最近碰到了一个uni-app&#xff08;vue2&#xff09;开发小程序的问题&#xff0c;个人觉得很典型&#xff0c;所以拿出来给各位做个参考。 需求场景&#xff1a; 全局轮询用户权限。简单…

MIB 6.S081 System calls(1)using gdb

难度:easy In many cases, print statements will be sufficient to debug your kernel, but sometimes being able to single step through some assembly code or inspecting the variables on the stack is helpful. To learn more about how to run GDB and the common iss…

十二.Jenkins持续集成

十二.Jenkins持续集成 一.安装jenkins 1.下载 Jenkins下载地址&#xff1a;http://jenkins-ci.org/ 或 https://mirrors.jenkins-ci.org/redhat/2.安装 可以通过官网的安装方式来安装 安装完后&#xff0c;需要修改以下的配置 vim /usr/lib/systemd/system/jenkins.servic…

git常用命令和参数有哪些?【git看这一篇就够了】

文章目录 前言常用命令有哪些git速查表奉上常用参数后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;git操作相关 &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出…

什么是AIGC

1 定义 "AIGC"代表“人工智能生成内容”&#xff08;Artificial Intelligence Generated Content&#xff09;&#xff0c;它指的是使用人工智能&#xff08;AI&#xff09;技术自动生成的内容&#xff0c;这些内容可以包括文本、图像、音乐、视频或其他多媒体形式。…

记录一个困难

Mysql加插件 create table tb_xuesheng1 as select * from tb_xuesheng; 会报如下错误 SQL 错误 [3185] [HY000]: Cant find master key from keyring, please check in the server log if a keyring is loaded and initialized successfully.当我去搜寻答案网上都说缺少插件…

Borland编辑器DOS系统快捷键应用

在项目中接触到DOS系统&#xff0c;该系统距离当下已经接近20年时间&#xff0c;网络上资源较少&#xff0c;因为需要用到C语言编辑器BorlandC,每次应用时难免会忘记快捷键使用&#xff0c;给使用造成很大的不便。 于是把现有收集的快捷键做出整理便于使用&#xff0c;供大家参…

Git企业开发级讲解(五)

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、bug 分⽀二、删除临时分支三、小结 一、bug 分⽀ 假如我们现在正在 dev2 分⽀上进⾏开发…