tomcat部署和优化(二)----- 轻松搭建博客、状态页优化、虚拟主机配置

news2024/12/28 8:15:02

一、tomcat

1、自建博客           

[root@zzzcentos1 ~]#systemctl stop firewalld
[root@zzzcentos1 ~]#setenforce 0
[root@zzzcentos1 ~]#cd /data/
[root@zzzcentos1 data]#rz -E
rz waiting to receive.
[root@zzzcentos1 data]#ls
apache-tomcat-9.0.16  apache-tomcat-9.0.16.tar.gz  jdk-8u291-linux-x64.tar.gz  jpress-v3.2.1.war
[root@zzzcentos1 data]#systemctl start tomcat
[root@zzzcentos1 data]#cp jpress-v3.2.1.war /usr/local/tomcat/webapps/
[root@zzzcentos1 data]#cd /usr/local/tomcat/webapps/
[root@zzzcentos1 webapps]#ls
docs  examples  host-manager  jpress-v3.2.1  jpress-v3.2.1.war  manager  ROOT  test  test.html  test.jsp
[root@zzzcentos1 webapps]#ln -s jpress-v3.2.1 jpress
[root@zzzcentos1 webapps]#ll
[root@zzzcentos1 webapps]#cat >/etc/yum.repos.d/mysql.repo <<EOF
> [mysql57-community]
> name=MySQL 5.7 Community Server
> baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
> enabled=1
> gpgcheck=0
> EOF
[root@zzzcentos1 webapps]#yum -y install mysql-community-server
[root@zzzcentos1 webapps]#systemctl start mysqld
[root@zzzcentos1 webapps]#ss -ntap |grep 3306
LISTEN     0      80          :::3306                    :::*                   users:(("mysqld",pid=4082,fd=21))
[root@zzzcentos1 webapps]#mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@zzzcentos1 webapps]#grep password /var/log/mysqld.log  #过滤密码 
2024-03-01T05:34:17.775889Z 1 [Note] A temporary password is generated for root@localhost: R/nj%#.u3=5V
2024-03-01T05:39:18.713499Z 2 [Note] Access denied for user 'root'@'localhost' (using password: NO)
[root@zzzcentos1 webapps]#mysql -uroot -p'R/nj%#.u3=5V'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.44

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> set global validate_password_policy=0;  #修改密码策略
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=1;   #修改密码策略
Query OK, 0 rows affected (0.01 sec)

mysql> alter user root@'localhost' identified by 'Admin@123';  #设置用户密码
Query OK, 0 rows affected (0.00 sec)

mysql> quit;
Bye
[root@zzzcentos1 webapps]#mysql -uroot -p'Admin@123'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.44 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> CREATE DATABASE blog;
ERROR 1007 (HY000): Can't create database 'blog'; database exists
mysql> GRANT all ON blog.* TO 'bloguser'@'%' IDENTIFIED BY 'admin123';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> GRANT all ON blog.* TO 'bloguser'@'localhost' IDENTIFIED BY 'admin123';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> quit
Bye
[root@zzzcentos1 webapps]#

cat >/etc/yum.repos.d/mysql.repo <<EOF
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1
gpgcheck=0
EOF

set global validate_password_policy=0;
set global validate_password_length=1;
#修改密码策略

mysql> alter user root@'localhost' identified by 'Admin@123';

CREATE DATABASE blog;
GRANT all ON blog.* TO 'bloguser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON blog.* TO 'bloguser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;

去浏览器访问:

服务器可以查看图片上传的位置:

mysql 中 mysql 、admin 这些软件是工具,mysql端口号3306 

2、破解密码:

①进入配置文件:

看到密码被清空了

[root@zzzcentos1 webapps]#vim /etc/my.cnf
skip-grant-tables  # 末尾加入
[root@zzzcentos1 webapps]#systemctl restart mysqld
[root@zzzcentos1 webapps]#mysql -uroot
mysql> update mysql.user set authentication_string='' where user='root' and host='localhost';
Query OK, 1 row affected (0.04 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)

mysql> quit
Bye
[root@zzzcentos1 webapps]#pwd
/usr/local/tomcat/webapps
[root@zzzcentos1 webapps]#vim /etc/my.cnf
skip-grant-tables   #删除它
[root@zzzcentos1 webapps]#systemctl restart mysqld
[root@zzzcentos1 webapps]#pwd
/usr/local/tomcat/webapps
[root@zzzcentos1 webapps]#mysql -uroot

如果再想设置密码

show databases可以查看系统数据库有什么内容;存放了用户信息(用户名和用户密码)

3. 状态页

默认的管理页面被禁用

  • server status 状态页

  • manger app 管理项目

  • host manger 配置虚拟主机的设置

(一) server status 状态页

状态页比较重要,对权限有要求,不能通过远端进入

我们可以根据状态页的提示信息进入配置文件进行修改

①开启状态页  修改conf/conf/tomcat-users.xml

root@zzzcentos1 manager]#pwd
/usr/local/tomcat/webapps/manager
[root@zzzcentos1 manager]#cd /usr/local/tomcat/conf/
[root@zzzcentos1 conf]#vim tomcat-users.xml
[root@zzzcentos1 conf]#systemctl restart tomcat
[root@zzzcentos1 conf]#

<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>

②去浏览器访问

修改完之后,去浏览器看还是不可以,只允许通过安装Tomcat的服务器本地进行登录

然后我们去安装Tomcat的服务器的虚拟机看:

tomcat 开启允许远程状态页

[root@zzzcentos1 webapps]#cd manager/
[root@zzzcentos1 manager]#ls
images  index.jsp  META-INF  status.xsd  WEB-INF  xform.xsl
[root@zzzcentos1 manager]#cd META-INF/
[root@zzzcentos1 META-INF]#ls
context.xml
[root@zzzcentos1 META-INF]#pwd
/usr/local/tomcat/webapps/manager/META-INF
[root@zzzcentos1 META-INF]#vim context.xml
[root@zzzcentos1 META-INF]#systemctl restart tomcat
[root@zzzcentos1 META-INF]#

由于状态页比较重要,在设置登录权限时需要注意哪些地址可以访问,一般不建议开启远程登录

(二)manger app 管理项目

Apache Tomcat的Manager App界面是一个基于Web的管理工具,用于管理和监控部署在Tomcat服务器上的Web应用程序。访问路径为/manager/html

(三)host manger 配置虚拟主机的设置

解决办法与状态页一样

tomcat 开启允许远程登录

4.常见配置详解——端口安全

在conf/server.xml 有以下内容

[root@zzzcentos1 META-INF]#vim /usr/local/tomcat/conf/server.xml

8005是Tomcat的管理端口,默认监听在127.0.0.1上。无需验证就可发送SHUTDOWN (大小写敏感)这个字符串,tomcat接收到后就会关闭此Server

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
      </Host>
    </Engine>
  </Service>
</Server>

8005是Tomcat的管理端口,默认监听在127.0.0.1上。无需验证就可发送SHUTDOWN (大小写敏感)这个字符串,tomcat接收到后就会关闭此Server

[root@centos7 ~]#telnet 127.0.0.1 8005     #优雅的关闭
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SHUTDOWN      #执行命令关闭tomcat
Connection closed by foreign host.

此管理功能建议禁用,可将SHUTDOWN改为一串猜不出的字符串实现或者port修改成 0,会使用随机端口  如:36913

port设为-1等无效端口,将关闭此功能此行不能被注释,否则无法启动tomcat服务

一般不动,不修改

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

5.tomcat 端口号

8080: 默认接收 http 请求的端口

8005: 安全端口,可以关闭tomcat

8009: apache 和 tomcat 联动 AJP 协议

6.虚拟主机配置

就需要使用到 Tomcat 虚拟主机。例如现在新增两个域名 www.kgc.com,www.accp.com希望通过这两个域名访问到不同的项目内容。(即一台服务器有两个域名)

[root@zzzcentos1 data]#mkdir /data/web{1,2,3}/ROOT/   -p
[root@zzzcentos1 data]#echo  web1  www.a.com > /data/web1/ROOT/index.html
[root@zzzcentos1 data]#echo  web2  www.b.com > /data/web2/ROOT/index.html
[root@zzzcentos1 data]#echo  web3  www.c.com > /data/web3/ROOT/index.html
[root@zzzcentos1 data]#cat /data/web1/ROOT/index.html
web1 www.a.com
[root@zzzcentos1 data]#cat /data/web2/ROOT/index.html
web2 www.b.com
[root@zzzcentos1 data]#cat /data/web3/ROOT/index.html
web3 www.c.com
[root@zzzcentos1 data]#vim /usr/local/tomcat/conf/server.xml
 </Host>
165       <Host name="www.a.com"  appBase="/data/web1"
166             unpackWARs="true" autoDeploy="true">
167       </Host>
168       <Host name="www.b.com"  appBase="/data/web2"
169             unpackWARs="true" autoDeploy="true">
170       </Host>
171       <Host name="www.c.com"  appBase="/data/web3"
172             unpackWARs="true" autoDeploy="true">
173       </Host>
[root@zzzcentos1 data]#systemctl restart tomcat.service 
[root@zzzcentos1 data]#

另一台机器
[root@zzzcentos2 ~]#systemctl stop firewalld
[root@zzzcentos2 ~]#setenforce 0
[root@zzzcentos2 ~]#vim /etc/hosts
[root@zzzcentos2 ~]#cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.246.7  www.a.com www.b.com www.c.com
[root@zzzcentos2 ~]#curl www.a.com:8080
web1 www.a.com
[root@zzzcentos2 ~]#curl www.b.com:8080
web2 www.b.com
[root@zzzcentos2 ~]#curl www.c.com:8080
web3 www.c.com
[root@zzzcentos2 ~]#

检测:

7.Context配置

Context作用:

  • 路径映射:将url映射至指定路径,而非使用appBase下的物理目录,实现虚拟目录功能

  • 应用独立配置,例如单独配置应用日志、单独配置应用访问控制

#映射指定路径
<Context path="/test" docBase="/data/test" reloadable="true" />
#映射站点的根目录
<Context path="/" docBase="/data/website" reloadable="true" />
#还可以添加日志等独立的配置
<Context path="/test" docBase="/data/test" reloadable="true" >
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_test_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Context>

说明:

  • path:指的是访问的URL路径,如果path与appBase下面的子目录同名,context的docBase路径优先更高

  • docBase:可以是磁盘文件的绝对路径,也可以是相对路径(相对于Host的appBase)

  • reloadable:true表示如果WEB-INF/classes或META-INF/lib目录下.class文件有改动,就会将WEB应用重新加载。生产环境中,建议使用false来禁用

去检测:

[root@zzzcentos1 data]#vim /usr/local/tomcat/conf/server.xml 

<Context path="/test" docBase="/data/test" reloadable="true" />
  #添加这一行,如果访问test就去/data/test下面
[root@zzzcentos1 data]#systemctl restart tomcat  #重启tomcat服务
[root@zzzcentos1 data]#systemctl status tomcat
[root@zzzcentos1 data]#mkdir test/
[root@zzzcentos1 data]#cd test/
[root@zzzcentos1 test]#echo welcome to test > index.html

另一台主机检测
[root@zzzcentos2 ~]#curl www.a.com:8080/test/
welcome to test
[root@zzzcentos2 ~]#

9.tomcat +nginx 动静分离

实验:  利用 nginx 反向代理实现全部转发至指定同一个虚拟主机

客户端curl www.a.com 访问nginx服务,nginx服务通过配置反向代理proxy_pass www.a.com:8080,最终客户端看到的是www.a.com

实验:7-3 做客户机,7-2做代理服务器,7-1 tomcat 服务器  数据传输从7-3到7-2到7-1

7-1参考tomcat虚拟主机配置

① 7-2做代理服务器配置

[root@zzzcentos2 ~]#systemctl stop firewalld
[root@zzzcentos2 ~]#setenforce 0
[root@zzzcentos2 ~]#rpm -q nginx
未安装软件包 nginx
[root@zzzcentos2 ~]#yum install epel-release.noarch -y
[root@zzzcentos2 ~]#yum install nginx -y
[root@zzzcentos2 ~]#systemctl start nginx
[root@zzzcentos2 ~]#systemctl status nginx

进入/etc/nginx/nginx.conf编辑

7-3客户机配置

[root@localhost ~]#rpm -q nginx
未安装软件包 nginx 
[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0
[root@localhost ~]#
[root@localhost ~]#yum install epel-release.noarch -y
[root@localhost ~]#yum install nginx -y       #安装nginx服务
[root@localhost ~]#systemctl start nginx      #开启nginx服务
[root@localhost ~]#systemctl status nginx 
[root@zzzcentos3 ~]#rpm -q nginx
nginx-1.20.1-10.el7.x86_64
[root@zzzcentos3 ~]#vim /etc/hosts
[root@zzzcentos3 ~]#cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.246.8 www.a.com www.b.com www.c.com

检测:

代理服务器那里写什么就显示什么

10.tomcat补充内容:

#这些为注释的信息。它定义了Tomcat服务器中的角色(roles)和用户(users),以及这些
#用户所归属的角色。(角色的含义相当于用户组)
 
<role rolename="tomcat"/> 
#定义了一个名为 "tomcat" 的角色,这个角色可以对应于Tomcat服务器预定义的一些权限,比如
#访问管理界面或部署应用等。
 
<role rolename="role1"/> 
#定义了一个名为 "role1" 的自定义角色,可以根据实际需求赋予特定权限。
 
<user username="tomcat" password="<must-be-changed>" roles="tomcat"/> 
#定义了一个用户名为 "tomcat" 的用户,并设置了初始密码(这里需要在实际使用时替换为强密码)
#该用户归属于 "tomcat" 角色,因此拥有与该角色关联的所有权限。
 
<user username="both" password="<must-be-changed>" roles="tomcat,role1"/> 
#定义了一个用户名为 "both" 的用户,同样设置了初始密码。这个用户同时属于 "tomcat" 
#和 "role1" 两个角色,因此拥有这两个角色合并后的所有权限。
 
<user username="role1" password="<must-be-changed>" roles="role1"/> 
#定义了一个仅属于 "role1" 角色的用户。

PS Eden Space
'这是年轻代(Young Generation)的一部分,主要用于存储新创建的对象。当前已使用的内
存大小为210.02 MB,占其总容量(225.50 MB)的约93%。'
 
PS Old Gen
'这是老年代(Old Generation),存放长期存活或晋升过来的对象。当前已使用的内存大小
为25.57 MB,占其总容量(629.50 MB)的4%。'
 
PS Survivor Space
'同样是年轻代的一部分,用于保存在年轻代中经历过一次GC但尚未被回收的对象。当前已使用的
内存大小为7.54 MB,占其总容量(45.00 MB)的16%。'
 
Code Cache
'非堆内存区域,用于存储JIT编译后的机器码。当前已使用的内存大小为12.97 MB,占其最大可
扩展容量(240.00 MB)的5%。'
 
Compressed Class Space
'另一个非堆内存区域,当类空间过大时,经过压缩的类会被存放到此区域以节省内存。当前已使
用的内存大小为6.58 MB,占其最大容量(1024.00 MB)的0%,这里的“0%”可能是显示错误,因
为已经使用了6.58 MB的空间。'
 
Metaspace
'从Java 8开始取代了永久代(PermGen),用于存储类元数据信息。这里显示的最大容量为“-0.00 MB”,
这意味着Metaspace的大小可以动态调整,不受固定上限限制;当前已使用的内存大小为54.99 MB'

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

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

相关文章

180基于matlab的频率切片小波变换程序(FTWT)

基于matlab的频率切片小波变换程序&#xff08;FTWT&#xff09;。从一种新的角度出发&#xff0c;通过自由选择频率切片函数、引进新尺度参数&#xff0c;在频率域实现小波变换&#xff0c;该变换能够很好地刻画信号各成分之间的相对能量关系。此外&#xff0c;频率切片小波变…

VirtualBox 桥接网卡 未指定 “未能启动虚拟电脑Ubuntu,由于下述物理网卡未找到:”

解决办法&#xff0c;安装虚拟网卡&#xff0c;win11查找方式&#xff1a;控制面板→网络和共享中心→更改适配器设置 此时出现下面情况就算安装成功 但是如果报错&#xff1a;找不到指定的模块 则按下面步骤删除干净垃圾重新上面操作 先安装CCleaner, 链接:CCleaner Makes Y…

latex报错I was expecting a `,‘ or a `}‘的解决办法

解决办法——经过检查在ref22后面缺少一个逗号 总结 当你在使用LaTeX时遇到“I was expecting a , or a }”这样的错误&#xff0c;这通常意味着LaTeX在解析你的代码时&#xff0c;预期在某个位置看到一个逗号&#xff08;,&#xff09;或一个大括号&#xff08;}&#xff09;…

关于阿里云oss的冗余存储类型问题

不得不说一个问题&#xff0c;阿里云服务方便我们的同时 &#xff0c;他们的文档写的是真的差劲。 东一块&#xff0c;西一块的。非常不好系统的阅读&#xff0c;文档结构比较散。 关于阿里云oss的冗余存储类型问题&#xff0c;这里说一下&#xff0c;简直是个坑。 首页阿里…

(面试题)数据结构:链表相交

问题&#xff1a;有两个链表&#xff0c;如何判断是否相交&#xff0c;若相交&#xff0c;找出相交的起始节点 一、介绍 链表相交&#xff1a; 若两个链表相交&#xff0c;则两个链表有共同的节点&#xff0c;那从这个节点之后&#xff0c;后面的节点都会重叠&#xff0c;知道…

一些可以访问gpt的方式

1、Coze扣子是新一代 AI 大模型智能体开发平台。整合了插件、长短期记忆、工作流、卡片等丰富能力&#xff0c;扣子能帮你低门槛、快速搭建个性化或具备商业价值的智能体&#xff0c;并发布到豆包、飞书等各个平台。https://www.coze.cn/ 2、https://poe.com/ 3、插件阿里…

Android Compose - PlainTooltipBox(已废弃)的替代方案

Android Compose - PlainTooltipBox 的替代方案 TooltipBox(positionProvider TooltipDefaults.rememberPlainTooltipPositionProvider(),tooltip {PlainTooltip {Text(/* tooltip content */)}},state rememberTooltipState(), ) {// tooltip anchorIconButton(onClick {…

Linux多线程服务端编程:使用muduo C++网络库 学习笔记 附录B 从《C++ Primer(第4版)》入手学习C++

这是作者为《C Primer&#xff08;第4版&#xff09;&#xff08;评注版&#xff09;》写的序言&#xff0c;文中“本书”指的是这本书评注版。 B.1 为什么要学习C 2009年本书作者Stanley Lippman先生应邀来华参加上海祝成科技举办的C技术大会&#xff0c;他表示人们现在还用…

手势识别应用介绍

目录 一、功能介绍 二、安装部署说明 2.1 文件目录说明 2.2 手势识别部分 一、功能介绍 这是一个通过摄像头捕获手势&#xff0c;根据不同的手势来做出不同操作的计算机程序。目前可以识别9种手势&#xff0c;可以根据识别到的手势&#xff0c;进行打开应用、增大音量、减小音量…

抖音视频批量采集软件|视频评论下载工具

在日常工作中&#xff0c;需要频繁下载抖音视频&#xff0c;但逐个复制分享链接下载效率太低&#xff1f;别担心&#xff01;我们推出了一款专业的抖音视频批量采集软件&#xff0c;基于C#开发&#xff0c;满足您的需求&#xff0c;让您通过关键词搜索视频并自动批量抓取&#…

swoole

php是单线程。php是靠多进程来处理任务&#xff0c;任何后端语言都可以采用多进程处理方式。如我们常用的php-fpm进程管理器。线程与协程,大小的关系是进程>线程>协程,而我们所说的swoole让php实现了多线程,其实在这里来说,就是好比让php创建了多个进程,每个进程执行一条…

SMBGhost漏洞技术分析与防御方案

事件分析 最近国内外各安全厂商都发布了SMBGhost(CVE-2020-0796)漏洞的预警报告和分析报告&#xff0c;笔者利用周末休息时间也研究了一下&#xff0c;就算是做一个笔记了&#xff0c;分享给大家一起学习下&#xff0c;目前外面研究的POC大部分是通过SMB压缩数据包长度整数溢出…

腾讯云幻兽帕鲁服务器操作系统选择Windows还是Linux?哪个比较好?

选择Windows和Linux作为腾讯云幻兽帕鲁服务器的操作系统&#xff0c;主要取决于用户的熟悉程度和对服务器性能的需求。 如果用户对Linux系统有较深的了解&#xff0c;并且追求服务器的性能和速度&#xff08;因为Linux通常使用命令行或面板管理&#xff0c;系统文件占用较小&a…

数据分析-Pandas数据的探查蜂窝图

数据分析-Pandas数据的探查蜂窝图 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据表&…

【双指针】合并两个有序数组O(N)

合并两个有序数组 链接 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/merge-sorted-array/ 题目 题解 采用双指针…

怎么优雅地访问ChatGPT

ChatGPT&#xff0c;这颗璀璨的智能结晶&#xff0c;在2022年岁末之际&#xff0c;由OpenAI实验室倾力铸就&#xff0c;犹如夜空中跃动的智慧星辰&#xff0c;点亮了人工智能领域的新纪元。犹如汪洋中的一座灯塔&#xff0c;ChatGPT以其独特的智慧光辉引人注目&#xff0c;然而…

【hive Hadoop】踩坑 记录

【hive & Hadoop】踩坑 记录 平台部署知识 本文记录的配置 hive Hadoop 时可能会出现的问题以及解决方案。 目录 文章目录 【hive & Hadoop】踩坑 记录目录Hive记录hive 启动报错 Permission denied Unable to determine Hadoop version information.原因解释本次的解…

Compiling from source on UNIX(cmake doxygen ant maven ccache)

前言 源码链接 cmake-3.18.0 https://cmake.org/files/v3.18/cmake-3.18.0.tar.gzdoxygen-1.10.0 https://www.doxygen.nl/files/doxygen-1.10.0.src.tar.gzapache-ant-1.10.8-bin https://archive.apache.org/dist/ant/binaries/apache-ant-1.10.8-bin.tar.gzapache-maven-3…

MySQL相关知识汇总

MySQL是一个广泛使用的开源关系型数据库管理系统&#xff0c;它以其高性能、稳定性和易用性而备受开发者喜爱。在软件开发领域&#xff0c;无论是大型项目还是小型应用&#xff0c;MySQL都扮演着重要的角色。本文将对MySQL的一些关键知识点进行汇总&#xff0c;帮助读者更好地了…

【MySQL】表的约束——空属性、默认值、列描述、zerofill、主键、自增长、唯一键、外键

文章目录 MySQL表的约束1. 空属性2. 默认值3. 列描述4. zerofill5. 主键6. 自增长7. 唯一键8. 外键 MySQL 表的约束 MySQL中的表的约束是一种规则&#xff0c;用于限制或保护表中数据的完整性和合法性。约束可以确保数据在插入、更新或删除时满足特定的条件&#xff0c;从而维护…