当前位置: 首页 > news >正文

tomcat调优配置

一. 设置账户进入管理页面

通过浏览器进入Tomcat7的管理模块页面:http://localhost:8080/manager/status

按照提示,在Tomcat7服务器指定的位置修改配置文件(conf/tomcat-users.xml),增加相应的用户和角色配置标签

<role rolename="admin-gui"/>

<role rolename="manager-gui"/>

<user username="admin" password="admin" roles="admin-gui,manager-gui"/>

重启服务器后,再次访问服务器管理模块页面:http://localhost:8080/manager/status

二. tomcat的启动调优

Tomcat7启动需要执行bin/catalina.sh文件,所以需要修改此文件,增加配置。

(修改文件前请事先做备份: cp catalina.sh catalina.sh.bk)

在文件开头处增加配置:

export JAVA_OPTS="-server -Xms1600M -Xmx1600M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true"

注:32位操作系统,无论你的内存有多大,最大只支持4G内存,所以,请一定要装64位操作系统

执行命令获取当前Tomcat服务的进程号PID :  ps -ef | grep tomcat

执行命令查看当前系统中jvm堆的内存详情 jmap –heap PID

-server : -server 启用jdk 的 server 版;

只要你的tomcat是运行在生产环境中的,这个参数必须添加

因为tomcat默认是以一种叫java–client的模式来运行的,server即意味着你的tomcat是以真实的production的模式在运行的,这也就意味着你的tomcat以server模式运行时将拥有:更大、更高的并发处理能力,更快更强捷的JVM垃圾回收机制,可以获得更多的负载与吞吐量

-Xms–Xmx

-Xms 初始堆大小;其初始空间(即-Xms)是物理内存的1/64,

-Xmx 最大堆大小; 最大空间(-Xmx)是物理内存的1/4。

-Xmn 年轻代堆内存大小,此处是(eden+ 2 survivor space),默认为物理内存的1/64.

可以利用JVM提供的-Xmn -Xms -Xmx等选项,

要加“m”说明是MB,否则就是KB了,在启动tomcat时会报内存不足。

把Xms与Xmx两个值设成一样是最优的做法

==================================================

一般设置-Xms、-Xmx相等以避免在每次GC后调整堆的大小。因为默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。

-Xss :是指设定每个线程的栈大小。一般设置不超过1M,要不然容易出现out of memory。

-XX:+AggressiveOpts:积极的、生猛的,也即可以将最新版的JDK优化后的新特性自动注入

-XX:+UseBiasedLocking:

启用一个优化了的线程锁,对于高并发访问很重要 ,太多的请求忙不过来它自动优化,对于各自长短不一的请求,出现的阻塞、排队现象,他自己优化。

-XX:PermSize -XX:MaxPermSize

-XX:PermSize设置Perm区的初始大小,默认是物理内存的1/64;

在数据量的很大的文件导出时,一定要把这两个值设置上,否则会出现内存溢出的错误。

-XX:MaxPermSize设置Perm区的最大值,默认是32M,建议达到物理内存的1/4。

 存放的都是jvm初始化时加载器加载的一些类型信息(包括类信息、常量、静态变量等),这些信息的生存周期比较长,GC不会在主程序运行期对PermGen Space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen Space错误。

上述两个参数值存在于jdk1.7之前,1.8后就没有了。

-XX:MaxNewSize:设置最大的年轻代大小,默认是16M

-XX:NewSize 设置年轻代大小

-XX:+DisableExplicitGC :

在程序代码中不允许有显示的调用”System.gc()”,避免内存的大起大落, 忽略手动调用GC的代码使得 System.gc()的调用就会变成一个空调用,完全不会触发任何GC

-XX:MaxTenuringThreshold:设置对象在新生代中存活的次数,设置垃圾最大年龄

1 如果设置为零的话,则年轻代对象不经过Survivor区直接进入年老代。对于年老代比较多的应用,可以提高效率。

2 如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概率。

这个值的设置是根据本地监控后得到的一个理想的值,不能一概而论原搬照抄。

默认为:15。

-XX:+UseConcMarkSweepGC :

使用CMS内存收集。即CMS gc,这一特性只有jdk1.5即后续版本才具有的功能,它使用的是gc估算触发和heap占用触发。

我们知道频频繁的GC会造面JVM的大起大落从而影响到系统的效率,因此使用了CMS GC后可以在GC次数增多的情况下,每次GC的响应时间却很短,比如说使用了CMS GC后经过jprofiler的观察,GC被触发次数非常多,而每次GC耗时仅为几毫秒

 添加该参数表示启动并发标识-清理(Mark-Sweep)回收器(CMS)

-XX:+UseParNewGC :设置年轻代为并行收集,对年轻代采用多线程并行回收,这样收得快

-XX:+CMSParallelRemarkEnabled :

在使用UseParNewGC 的情况下, 尽量减少mark 的时间,降低标记停顿

-XX:+UseCMSCompactAtFullCollection :

在使用concurrent gc 的情况下, 防止 memoryfragmention, 对live object 进行整理, 使 memory 碎片减少。

-XX:LargePageSizeInBytes :指定 Java heap的分页页面大小

-XX:+UseFastAccessorMethods :get,set 方法转成本地代码

-XX:+UseCMSInitiatingOccupancyOnly :

指示只有在 old generation 在使用了初始化的比例后concurrent collector 启动收集

-Djava.awt.headless=true

这个参数一般我们都是放在最后使用的, 在web网页中可能会输出GIF/JPG等图片流,在linux/unix环境下经常会碰到一个exception导致你在winodws开发环境下图片显示的好好可是在linux/unix下却显示不出来,因此加上这个参数以免避这样的情况出现。

-XX:+PrintGCDetails :打印GC详情

三. Tomcat并发优化

优化前

基础优化

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"

 maxThreads="600"

 minSpareThreads="100"

 maxSpareThreads="500"

 acceptCount="700"

 connectionTimeout="20000"

 redirectPort="8443" />

MaxThreads: 设定在监听端口的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数目。即最大并发数,默认值为200,建议修改为500以上。保守 600 ~ 900

minSpareThreads: Tomcat初始化时创建的线程数。默认值是10, 此处我们设置为100

maxSpareThreads: 一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。此处的值我们设置为500。

acceptCount: 当所有可以使用的处理请求的线程都被用光时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,而返回Connection refused错误;默认值100

connectionTimeout: 等待超时的时间数(以毫秒为单位),建议修改为20000以上;

高级优化

<Connector  port="8080"

    protocol="org.apache.coyote.http11.Http11NioProtocol"

    URIEncoding="UTF-8"

    minSpareThreads="25"

    maxSpareThreads="75"

    enableLookups="false"

    disableUploadTimeout="true"

    connectionTimeout="20000"

    acceptCount="300"

    maxThreads="300"

    maxProcessors="1000"

    minProcessors="5"

    useURIValidationHack="false"

    compression="on"

    compressionMinSize="2048"

 compressableMimeType="text/html,text/xml,text/JavaScript,text/css,text/plain"

    redirectPort="8443"/>

参数说明

URIEncoding=”UTF-8”

使得tomcat可以解析含有中文名的文件的url,在server.xml文件的Connector标签中增加URIEncoding="UTF-8"属性,解决中文参数乱码问题。

minSpareThreads:

maxSpareThreads

enableLookups

如果希望调用request.getRemoteHost()进行DNS查询,以返回远程客户的实际主机名,将enableLookups设为true。

如果希望忽略DNS查询,仅仅返回IP地址,设为false(这样提高了性能)。

缺省情况下,DNS查询是使能的。

一句话:是否反查域名,取值为: true 或 false 。为了提高处理能力,应设置为 false

disableUploadTimeout

类似于Apache中的keepalive一样,是否需要tomcat容器单独设置上传时间限制,这里是不用,还是使用标准的,不去给上传的附件单独做超时设置。

connectionTimeout :

acceptCount

acceptCount是当线程数达到maxThreads后,后续请求会被放入一个等待队列,这个acceptCount是这个队列的大小,如果这个队列也满了,就直接refuse connection一句话:acceptCount:当处理任务的线程数达到最大时,接受排队的请求个数,默认100

maxThreads :

maxProcessors

在 Java中线程是程序运行时的路径,是在一个程序中与其它控制线程无关的、能够独立运行的代码段。它们共享相同的地址空间。多线程帮助程序员写出CPU最大利用率的高效程序,使空闲时间保持最低,从而接受更多的请求。

通常Windows是1000个左右,Linux是2000个左右。

minProcessors

useURIValidationHack:减少它对一些url的不必要的检查从而减省开销,为提高性能可以设置为false

compression

compression :设置是否开启GZip压缩,HTTP压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,压缩效率惊人。

compressionMinSize

compressionMinSize="2048" 启用压缩的输出内容大小,这里面默认为2KB

compressableMimeType:哪些类型需要压缩,默认是text/html,text/xml,text/plain

最后不要忘了把8443端口的地方也加上同样的配置,因为如果我们走https协议的话,我们将会用到8443端口这个段的配置。

修改conf/web.xml文件,增加服务器会话超时时间

四.tomcat 内存优化

查看%TOMCAT_HOME%\logs文件夹下,日志文件是否有内存溢出错误

错误提示:java.lang.OutOfMemoryError: Java heap space

Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,有可能导致系统无法运行。

常见的问题是报Tomcat内存溢出错误,Out of Memory(系统内存不足)的异常,从而导致客户端显示500错误,

一般调整Tomcat的使用内存即可解决此问题。

windows环境下修改

“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:

set JAVA_OPTS=-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC

Linux环境下修改

“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:

JAVA_OPTS=-Xms2048m -Xmx2048m

错误提示:java.lang.OutOfMemoryError: PermGen space

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre-compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了

windows环境下修改

%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:

set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m - XX:MaxPermSize=256m

linux环境下修改

“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:

export JAVA_OPTS=-Xms256m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m XX:MaxPermSize=256m

五.

Tomcat 之BIO/NIO/APR的三大模式

BIO

BIO是最稳定最老的一个连接器,是采用阻塞的方式,意味着每个连接线程绑定到每个

Http请求,直到获得Http响应返回,如果Http客户端请求的是keep-Alive连接,那么这些连接也许一直保持着直至达到timeout时间,这期间不能用于其它请求。性能差但是最稳定

NIO

NIO是使用Java的异步IO技术,不产生阻塞。nio(new I/O),是Java SE1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。

直接修改server.xml里的Connector节点,修改protocol为 :

protocol="org.apache.coyote.http11.Http11NioProtocol"

APR

APR(Apache Portable Runtime)是使用原生C语言编写的非堵塞I/O,利用了操作系统的网络连接功能,速度很快,从操作系统层面解决IO问题。但是需先安装apr和native,若直接启动就支持apr,能大幅度提升性能。

     直接修改server.xml里的Connector节点,修改protocol为:

protocol=" org.apache.coyote.http11.Http11AprProtocol "

安装APR

安装APR

  • 解压缩apr-1.5.2.tar.gz

  • 在目录/opt/apr/apr-1.5.2 下执行:./configure --prefix=/usr/local/apr

  • make

  • make install

安装apr-iconv

  • 解压缩apr-iconv-1.2.1.tar.gz

  • 在目录/opt/apr/apr-iconv-1.2.1下执行

./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr

  • make

  • make install

安装apr-util

  • 解压缩apr-util-1.5.4.tar.gz

  • 在目录/opt/apr/apr-util-1.5.4下执行:

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv

  • make

  • make install

安装tomcat-native

  • 进入tomcat7的bin目录

  • 解压缩tomcat-native.tar.gz文件

  • 在目录/opt/tomcat7/bin/tomcat-native-1.2.7src/native下执行:

  • make

  • make install

设置apr的环境变量

  • vim /opt/tomcat7/bin/catalina.sh

  • 编辑添加如下内容

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib export LD_LIBRARY_PATH

保存退出

 

修改Apr的默认配置

  • /opt/tomcat7/conf目录下的server.xml文件内容:

增加配置:<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"

URIEncoding="UTF-8"

maxConnections="10000"

maxThreads="2000"

acceptCount="2000"

minSpareThreads="100"

compression="on"

compressionMinSize="2048"

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

enableLookups="false"

disableUploadTimeout="true"

connectionTimeout="20000"

redirectPort="8443" />

压力测试

ab -n1000 -c100 http://localhost:8080/

相关文章:

tomcat调优配置

一. 设置账户进入管理页面 通过浏览器进入Tomcat7的管理模块页面&#xff1a;http://localhost:8080/manager/status 按照提示&#xff0c;在Tomcat7服务器指定的位置修改配置文件&#xff08;conf/tomcat-users.xml&#xff09;&#xff0c;增加相应的用户和角色配置标签 <…...

基于深度学习的点云三维目标检测方法综述

论文标题&#xff1a;基于深度学习的点云三维目标检测方法综述 作者&#xff1a;郭毅锋&#xff11;&#xff0c;&#xff12;†&#xff0c;吴帝浩&#xff11;&#xff0c;魏青民&#xff11; 发表日期&#xff1a; 2023 1 阅读日期 &#xff1a;2023 11 29 研究背景&…...

Linux命令中的符号

目录 1 管道符 | 1.1 | grep [要检索的东西] 1.2 echo | tee 2 重定向 2.1 输出重定向覆盖 > 2.2 输出重定向添加 >> 2.3 文件输入重定向 < 2.4 多行文本输入重定向 << 2.5 常用搭配 2.5.1 终端不显示 > /dev/null 1 管道符 | 我们…...

BTCPay Server:免费、安全、开源的比特币支付处理器 | 开源日报 No.90

MunGell/awesome-for-beginners Stars: 58.0k License: NOASSERTION 这个项目是一个收集开源项目的列表&#xff0c;旨在帮助初学者找到可以贡献代码的机会。该列表按编程语言分类&#xff0c;并列出了每个项目以及其标签 (如 “good-first-issue”、“beginner” 等)。主要功…...

【数据挖掘】国科大刘莹老师数据挖掘课程作业 —— 第三次作业

Written Part 1. 基于表 1 1 1 回答下列问题&#xff08;min_sup40%, min_conf75%&#xff09;&#xff1a; Transaction IDItems Bought0001{a, d, e}0024{a, b, c, e}0012{a, b, d, e}0031{a, c, d, e}0015{b, c, e}0022{b, d, e}0029{c, d}0040{a, b, c}0033{a, d, e}0038…...

Windows挂载NFS

ubuntu开启nfs 安装 sudo apt install nfs-kernel-server编辑 /etc/exports /data/share *(rw,no_root_squash)重启服务 sudo systemctl restart nfs-server.service验证 showmount -e localhostwindows连接NFS 选择控制面板 > 程序 > 启用或关闭 Windows 功能 添加…...

数据结构第五课 -----二叉树的代码实现

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…...

优橙内推北京专场——5G网络优化(中高级)工程师

可加入就业QQ群&#xff1a;801549240 联系老师内推简历投递邮箱&#xff1a;hrictyc.com 内推公司1&#xff1a;西安长河通讯有限责任公司 内推公司2&#xff1a;北京电旗通讯技术股份有限公司 内推公司3&#xff1a;润建股份有限公司 西安长河通讯有限责任公司 西安长河…...

Mysql DDL语句建表及空字符串查询出0问题

DDL语句建表 语法&#xff1a; create table 指定要建立库的库名.新建表名 &#xff08;... 新建表的字段以及类型等 ...&#xff09;comment 表的作用注释 charset 表编译格式 row_format DYNAMIC create table dev_dxtiot.sys_url_permission (id integer …...

深入ArkTS:应用状态管理与LocalStorage装饰器详解【鸿蒙专栏-11】

文章目录 ArkTS 应用状态管理详解LocalStorage: 页面级 UI 状态存储使用规则概述:装饰器详解:限制条件:使用场景:1. 应用逻辑使用 LocalStorage2. 从 UI 内部使用 LocalStorageArkTS 应用状态管理进阶LocalStorage 装饰器详解1. @LocalStorageProp2. @LocalStorageLink观察…...

管理Android12系统的WLAN热点

大家好!我是编码小哥,欢迎关注,持续分享更多实用的编程经验和开发技巧,共同进步。 要创建一个APK管理Android 12系统的WLAN热点,你需要遵循以下步骤: 1. 获取必要的权限和API访问权限。在AndroidManifest.xml文件中添加以下权限: ```xml <uses-permission android:…...

从0开始学习JavaScript--JavaScript 中 `let` 和 `const` 的区别及最佳实践

在JavaScript中&#xff0c;let 和 const 是两个用于声明变量的关键字。尽管它们看起来很相似&#xff0c;但它们之间有一些重要的区别。本篇博客将深入探讨 let 和 const 的用法、区别&#xff0c;并提供一些最佳实践&#xff0c;以确保在代码中正确使用它们。 let 和 const …...

【上海大学数字逻辑实验报告】二、组合电路(一)

一、 实验目的 熟悉TTL异或门构成逻辑电路的基本方式&#xff1b;熟悉组合电路的分析方法&#xff0c;测试组合逻辑电路的功能&#xff1b;掌握构造半加器和全加器的逻辑测试&#xff1b;学习使用可编程逻辑器件的开发工具 Quartus II设计电路。 二、 实验原理 异或门是数字…...

lodash中foreach踩坑

什么是lodash Lodash 是一个 JavaScript 实用工具库&#xff0c;提供了很多用于处理数据、简化开发等方面的功能。它提供了一组常用的工具函数&#xff0c;用于处理数组、对象、字符串等常见数据结构&#xff0c;同时也包含了一些函数式编程的工具。对于前端开发来说&#xff…...

Unity C++交互

一、设置Dll输出。 两种方式&#xff1a; 第一&#xff1a;直接创建动态链接库工程第二&#xff1a;创建的是可执行程序&#xff0c;在visual studio&#xff0c;右键项目->属性(由exe改成dll) 二、生成Dll 根据选项Release或Debug&#xff0c;运行完上面的生成解决方案后…...

人工智能-优化算法之动量法

对于嘈杂的梯度&#xff0c;我们在选择学习率需要格外谨慎。 如果衰减速度太快&#xff0c;收敛就会停滞。 相反&#xff0c;如果太宽松&#xff0c;我们可能无法收敛到最优解。 泄漏平均值 小批量随机梯度下降作为加速计算的手段。 它也有很好的副作用&#xff0c;即平均梯度…...

【MySQL】InnoDB中的索引

目录标题 索引底层的数据结构&#xff1a;B树B树与B树的区别InnoDB与MyISAM在B树使用索引结构的不同&#xff1f; 聚簇索引非聚簇索引联合索引 B树索引适用的条件查询全值匹配匹配左边的列匹配列前缀匹配范围的值精确匹配某一列并范围匹配另外一列避免使用隐式转换 排序必须按照…...

《软件工程原理与实践》复习总结与习题——软件工程

软件生命周期 软件生命周期分为三个时期、八个阶段 软件定义时期&#xff1a; 1&#xff09;问题定义阶段&#xff1a;要解决什么问题 2&#xff09;可行性研究阶段&#xff1a;确定软件开发可行 3&#xff09;需求分析阶段&#xff1a;系统做什么 软件开发时期&#xff1a;…...

软工2021上下午第六题(组合模式)

阅读下列说明和Java代码&#xff0c;将应填入&#xff08;n&#xff09;处的字句写在答题纸的对应栏内。 【说明】 层叠菜单是窗口风格的软件系统中经常采用的一种系统功能组织方式。层叠菜单中包含的可能是一个菜单项&#xff08;直接对应某个功能&#xff09;&#xff0c;也可…...

在Spring Boot中使用不同的日志

前言&#xff0c;本篇就是介绍在Java中使用相关的日志&#xff0c;适合初学者看&#xff0c;如果对这篇不感兴趣的可以移步了&#xff0c;本篇主要围绕我们Java中的几种日志类型&#xff0c;也说不上有多深入&#xff0c;算的上浅入浅出吧&#xff0c;如果你有一段时间的开发经…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...