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

一、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'

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据挖掘:航空公司的客户价值分析

需求分析 理解并掌握聚类分析方法&#xff0c;掌握数据的标准化&#xff0c;掌握寻找最佳聚类数&#xff0c;掌握聚类的绘图&#xff0c;掌握聚类分析的应用场景。 系统实现 实验流程分析 借助航空公司数据&#xff0c;对客户进行分类对不同类别的客户进行特征分析&#xf…

对称加密与非对称加密

1、对称加密 对称加密&#xff0c;即采用对称的密码编码技术&#xff0c;他的特点是&#xff0c;加密和解密使用相同的秘钥。 常见的对称加密算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES。 优点&#xff1a;对称加密算法使用起来简单快捷&#xff0c;密钥较短&…

【Python】进阶学习:pandas--如何根据指定条件筛选数据

【Python】进阶学习&#xff1a;pandas–如何根据指定条件筛选数据 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望…

亿道信息轻工业三防EM-T195,零售、制造、仓储一网打尽

厚度仅10.5mm&#xff0c;重量仅0.65千克的EM-T195&#xff0c;其紧凑而纤薄的设计为以往加固型平板带来了全新的轻薄概念。尽管设计时尚、轻薄&#xff0c;但经过军用认证的强固性仍然能够承受所有具有挑战性的环境条件。随身携带无负担的轻便性加上抗震功能使其成为餐厅、酒店…

数据结构——Top-k问题

Top-k问题 方法一&#xff1a;堆排序&#xff08;升序&#xff09;&#xff08;时间复杂度O(N*logN)&#xff09;向上调整建堆&#xff08;时间复杂度&#xff1a;O(N * logN) &#xff09;向下调整建堆&#xff08;时间复杂度&#xff1a;O(N) &#xff09;堆排序代码 方法二&…

Linux信号【systemV】

目录 前言 正文&#xff1a; 1消息队列 1.1什么是消息队列&#xff1f; 1.2消息队列的数据结构 1.3消息队列的相关接口 1.3.1创建 1.3.2释放 1.3.3发送 1.3.4接收 1.4消息队列补充 2.信号量 2.1什么是信号量 2.2互斥相关概念 2.3信号量的数据结构 2.4…

【JSON2WEB】07 Amis可视化设计器CRUD增删改查

总算到重点中的核心内容&#xff0c;CRUD也就是增删改查&#xff0c;一个设计科学合理的管理信息系统&#xff0c;95%的就是CRUD&#xff0c;达不到这个比例要重新考虑一下你的数据库设计了。 1 新增页面 Step 1 启动amis-editor Setp 2 新增页面 名称和路径随便命名&#xf…

【谈一谈】我们所用的三种工厂模式优缺点

【谈一谈】我们所用的三种工厂模式优缺点 Hello!!大家好啊,好久也没有进行文章的更新了,原因嘛,最近的工作任务量有点大,导致摸鱼充电的时间大量减少,哈哈哈(你别说,这是借口嘛!) 不过,今天是星期六,难的能够在这里分享下最近在工作中,我用到的三种工厂模式(简工抽),有啥区别呢…

在线开源免费问卷调查系统

在线开源免费问卷调查系统 平台简介 本项目旨在提供一个简单易用的问卷调查平台&#xff0c;帮助用户创建、分享问卷&#xff0c;并收集、分析调查数据。我们希望能够为各行各业的调查需求提供一种高效、便捷的解决方案。 项目特点 用户友好&#xff1a;清晰直观的用户界面…

QT6 libModbus 用于ModbusTcp客户端读写服务端

虽然在以前的文章中多次描述过,那么本文使用开源库libModbus,可得到更好的性能&#xff0c;也可移植到各种平台。 性能&#xff1a;读1次和写1次约各用时2ms。 分别创建了读和写各1个连接指针&#xff0c;用于读100个寄存器和写100个寄存器&#xff0c;读写分离。 客户端&am…

5、DVWA代码审计(2)

一、csrf 1、csrf(low) 限制 复现 GET /vulnerabilities/csrf/?password_new123456&password_conf123456&ChangeChange HTTP/1.1 Host: ddd.com Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,…

手撸AI-3: Accelerate库分布式训练详解

一. 引言 Accelerate 是 Hugging Face 公司开发的一个 Python 库&#xff0c;旨在简化并优化在各种环境中进行深度学习训练的过程&#xff0c;包括单机、多 GPU、TPU 和各种分布式训练环境。这个库提供了一种通用的 API&#xff0c;可以方便地将原来只能在单个设备上运行的代码…

chromedriver,Chrome驱动的实时更新

发现自己的selenium项目跑不起来了 效验驱动版本 下载链接(可能需要魔法) https://registry.npmmirror.com/binary.html?pathchromedriver/ https://googlechromelabs.github.io/chrome-for-testing/ 找到驱动位置 1. 默认安装路径&#xff1a;Chrome驱动通常会默认安装在系…

智能驾驶规划控制理论学习02-基于搜索的路径规划方法

目录 一、路径搜索问题 二、图论基础 三、图搜索方法 1、广度优先搜索&#xff08;BFS&#xff09; bfs与dfs的区别 bfs的搜索过程 bfs的算法实现 2、迪杰斯特拉算法&#xff08;Dijkstra&#xff09; 核心思想 优先级队列 Dijkstra搜索过程 Dijkstra优缺点…

微服务day03-Nacos配置管理与Nacos集群搭建

一.Nacos配置管理 Nacos不仅可以作为注册中心&#xff0c;可以进行配置管理 1.1 统一配置管理 统一配置管理可以实现配置的热更新&#xff08;即不用重启当服务发生变更时也可以直接更新&#xff09; dataId格式&#xff1a;服务名-环境名.yaml&#xff0c;分组一般使用默认…

【比较mybatis、lazy、sqltoy、mybatis-flex操作数据】操作批量新增、分页查询(二)

orm框架使用性能比较 环境&#xff1a; idea jdk17 spring boot 3.0.7 mysql 8.0比较mybatis、lazy、sqltoy、mybatis-flex操作数据 测试条件常规对象 orm 框架是否支持xml是否支持 Lambda对比版本mybatis☑️☑️3.5.4sqltoy☑️☑️5.2.98lazy✖️☑️1.2.4-JDK17-SNAPS…

2024最新算法:鹦鹉优化算法(Parrot optimizer,PO)求解23个基准函数(提供MATLAB代码)

一、鹦鹉优化算法 鹦鹉优化算法&#xff08;Parrot optimizer&#xff0c;PO&#xff09;由Junbo Lian等人于2024年提出的一种高效的元启发式算法&#xff0c;该算法从驯养的鹦鹉中观察到的觅食、停留、交流和对陌生人行为的恐惧中汲取灵感。这些行为被封装在四个不同的公式中…

leetcode:37.解数独

题目理解&#xff1a;本题中棋盘的每一个位置都要放一个数字&#xff08;而N皇后是一行只放一个皇后&#xff09;&#xff0c;并检查数字是否合法&#xff0c;解数独的树形结构要比N皇后更宽更深。 代码实现&#xff1a;

2024免费mac苹果电脑的清理和维护软件CleanMyMac X

对于 Mac 用户来说&#xff0c;电脑的清理和维护是一件让人头疼的事情。但是&#xff0c;有了 CleanMyMac X&#xff0c;这一切都将变得轻松愉快。CleanMyMac X 是一款专为 Mac 设计的电脑清理软件&#xff0c;它以其强大的功能和简单的操作&#xff0c;让无数用户为之倾倒。 C…

数据结构开篇

目录 一. 如何学好数据结构二. 基本概念和术语2.1 区分数据、数据元素、数据项、数据对象2.2 数据结构2.2.1 逻辑结构2.2.2 存储结构 2.3 数据类型和抽象数据类型2.4 抽象数据类型的实现 \quad 一. 如何学好数据结构 勤于思考;多做练习;多上机;善于寻求帮助;不怕困难&#xff…