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

# 利刃出鞘_Tomcat 核心原理解析(六)

利刃出鞘_Tomcat 核心原理解析(六)

一、Tomcat专题 - 内容

1、Web 应用配置

2、Tomcat 管理配置

3、JVM 配置

4、Tomcat 集群

5、Tomcat 安全

6、Tomcat 性能调优

7、Tomcat 附加功能。

二、Tomcat专题 - Web应用配置介绍

1、Web.xml 配置文件。

web.xml 是 web 应用的描述文件, 它支持的元素及属性来自于Servlet 规范定义 。 在 Tomcat 中, Web 应用的描述信息包括 tomcat/conf/web.xml 中默认配置 以及 Web 应用 WEB-INF/web.xml 下的定制配置。

2、Web 应用 WEB-INF/web.xml 下的定制配置参数。

tomcat-29.png

三、Tomcat专题 - Web应用配置 - context-param

1、打开 idea 创建 名为 servlet_demo01 的 Web Application 项目

--> idea --> File --> New --> Project --> Java Project SDK: ( 1.8(java version "1.8.0_131" ) --> Java EE : 勾选 ( Web Application )--> Next --> Project Name: ( servlet_demo01 )Project Location: ( ...\servlet_demo01\ )	--> Finish	

2、在项目 servlet_demo01 中,创建 Servlet 类 BbsServlet.java

/***  project_tomcat\servlet_demo01\src\djh\it\web\BbsServlet.java**  2024-8-13 创建 Servlet 类 BbsServlet.java*  Web应用配置 - context-param*/
package djh.it.web;import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet
public class BbsServlet extends HttpServlet {@Overrideprotected void doGet( HttpServletRequest req, HttpServletResponse resp ){System.out.println("------------>> GET : BbsServlet find all ...");String value = req.getServletContext().getInitParameter("project_param_01");System.out.println(value);}@Overrideprotected void doPost( HttpServletRequest req, HttpServletResponse resp ){System.out.println("------------>> POST : BbsServlet find all ...");}}

3、在项目 servlet_demo01 中, Web应用配置 - context-param

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><servlet><servlet-name>bbsServlet</servlet-name><servlet-class>djh.it.web.BbsServlet</servlet-class></servlet><servlet-mapping><servlet-name>bbsServlet</servlet-name><url-pattern>/bbs/findAll</url-pattern></servlet-mapping><context-param><param-name>project_param_01</param-name><param-value>dzs168</param-value></context-param></web-app>
<!-- project_tomcat\servlet_demo01\web\WEB-INF\web.xml -->

4、浏览器地址栏输入:localhost:8080/servlet_demo01/bbs/findAll 进行测试,观察控制台输出结果。

dzs168

四、Tomcat专题 - Web应用配置介绍 - 会话配置session-config

1、会话配置

用于配置Web应用会话,包括 超时时间、Cookie配置以及会话追踪模式。它将覆盖 server.xml 和 context.xml 中的配置。

    <!-- 会话配置session-config --><session-config><session-timeout>30</session-timeout><cookie-config><name>JESSIONID</name><domain>localhost</domain><path>/</path><comment>Session Cookie</comment><http-only>true</http-only><secure>false</secure><max-age>3600</max-age></cookie-config></session-config>

2、配置解析

1) session‐timeout : 会话超时时间,单位 分钟。

2) cookie‐config: 用于配置会话追踪 Cookie。

name:Cookie的名称
domain:Cookie的域名
path:Cookie的路径
comment:注释
http‐only:cookie 只能通过HTTP方式进行访问,JS无法读取或修改,此项可以增加网站访问的安全性。 secure:此cookie只能通过HTTPS连接传递到服务器,而HTTP 连接则不会传递该信息。注意是从浏览器传递到服务器,服务器端的Cookie对象不受此项影响。 max‐age:以秒为单位表示cookie的生存期,默认为‐1表示是会话Cookie,浏览器关闭时就会消失。

3) tracking‐mode :用于配置会话追踪模式,Servlet3.0 版本中支持的追踪模式:COOKIE、URL、SSL。
A. COOKIE : 通过HTTP Cookie 追踪会话是最常用的会话追踪机制, 而且Servlet规范也要求所有的Servlet规范都需要支持Cookie追踪。
B. URL : URL重写是最基本的会话追踪机制。当客户端不支持Cookie时,可以采用URL重写的方式。当采用URL追踪模式时,请求路径需要包含会话标识信息,Servlet容器会根据路径中的会话标识设置请求的会话信息。如: http://www.myserver.com/user/index.html;jessionid=1234567890。

C. SSL : 对于SSL请求, 通过SSL会话标识确定请求会话标识。

3、在 web.xml 配置文件中配置会话。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><servlet><servlet-name>bbsServlet</servlet-name><servlet-class>djh.it.web.BbsServlet</servlet-class></servlet><servlet-mapping><servlet-name>bbsServlet</servlet-name><url-pattern>/bbs/findAll</url-pattern></servlet-mapping><context-param><param-name>project_param_01</param-name><param-value>dzs168</param-value></context-param><!-- 会话配置session-config --><session-config><session-timeout>30</session-timeout><cookie-config><name>JESSIONID</name><domain>localhost</domain><path>/</path><comment>Session Cookie</comment><http-only>true</http-only><secure>false</secure><max-age>3600</max-age></cookie-config></session-config></web-app>
<!-- project_tomcat\servlet_demo01\web\WEB-INF\web.xml -->

4、在项目 servlet_demo01 中,修改 Servlet 类 BbsServlet.java

/***  project_tomcat\servlet_demo01\src\djh\it\web\BbsServlet.java**  2024-8-13 创建 Servlet 类 BbsServlet.java*  Web应用配置 - context-param*/
package djh.it.web;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;//@WebServlet
public class BbsServlet extends HttpServlet {@Overrideprotected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException {System.out.println("------------>> GET : BbsServlet find all ...");String value = req.getServletContext().getInitParameter("project_param_01");System.out.println(value);//会话SessionIdString id = req.getSession().getId();System.out.println("sessionId : " + id);//        processRequest(req, resp);}@Overrideprotected void doPost( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException{System.out.println("------------>> POST : BbsServlet find all ...");
//        processRequest(req, resp);}//    private  void processRequest(HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException{
//        //设置响应的内容类型为HTML
//        resp.setContentType("text/html; charset=UTF-8");
//        //获取请示参数
//        String parameter = req.getParameter("param");
//        //向控制台打印请示参数
//        System.out.println("Received parameter : " + parameter);
//        //输出响应内容
//        PrintWriter writer = resp.getWriter();
//        writer.println("<h1>Hello,Servlet!</h1>");
//        writer.println("Received parameter : " + parameter);
//
//    }
//
}

4、浏览器地址栏输入:localhost:8080/servlet_demo01/bbs/findAll 进行测试,观察控制台输出结果。

tomcat-30.png

五、Tomcat专题 - Web应用配置介绍

1、Servlet配置

Servlet 的配置主要是两部分, servlet 和 servlet-mapping :

<servlet><servlet‐name>myServlet</servlet‐name><servlet‐class>djh.it.web.MyServlet</servlet‐class><init‐param><param‐name>fileName</param‐name><param‐value>init.conf</param‐value></init‐param><load‐on‐startup>1</load‐on‐startup><enabled>true</enabled>
</servlet>
<servlet‐mapping><servlet‐name>myServlet</servlet‐name><url‐pattern>*.do</url‐pattern><url‐pattern>/myservet/*</url‐pattern>
</servlet‐mapping>

2、servlet 和 servlet-mapping 配置说明:

1) servlet‐name : 指定servlet的名称, 该属性在web.xml中唯一。

2) servlet‐class : 用于指定servlet类名

3) init‐param: 用于指定servlet的初始化参数, 在应用中可以通过 HttpServlet.getInitParameter 获取。

4) load‐on‐startup: 用于控制在Web应用启动时,Servlet的加载顺序。 值小于0,web应用启动时,不加载该servlet, 第一次访问时加载。

5) enabled: true , false 。 若为false ,表示Servlet不处理任何请求。

6) url‐pattern: 用于指定URL表达式,一个 servlet‐mapping可以同时配置多个 url‐pattern。

3、Servlet 中文件上传配置:

<servlet><servlet‐name>uploadServlet</servlet‐name><servlet‐class>djh.it.web.UploadServlet</servlet‐class><multipart‐config><location>C://path</location><max‐file‐size>10485760</max‐file‐size><max‐request‐size>10485760</max‐request‐size><file‐size‐threshold>0</file‐size‐threshold></multipart‐config>
</servlet>

4、Servlet 中文件上传配置 配置说明:

1) location:存放生成的文件地址。

2) max‐file‐size:允许上传的文件最大值。 默认值为‐1, 表示没有限制。

3) max‐request‐size:针对该 multi/form‐data 请求的最大数量,默认值为‐1, 表示无限制。

4) file‐size‐threshold:当数量量大于该值时, 内容会被写入文件。

5、Listener配置

Listener用于监听servlet中的事件,例如context、request、session对象的创建、修改、删除,并触发响应事件。Listener是观察者模式的实现,在servlet中主要用于对context、request、session对象的生命周期进行监控。在servlet2.5规范中共定义了8中Listener。在启动时,ServletContextListener 的执行顺序与web.xml 中的配置顺序一致, 停止时执行顺序相反。

 <listener><listener‐class>org.springframework.web.context.ContextLoaderListener</listener‐class>
</listener>

6、Filter配置

filter 用于配置web应用过滤器, 用来过滤资源请求及响应。 经常用于认证、日志、加密、数据转换等操作, 配置如下:

<filter><filter‐name>myFilter</filter‐name><filter‐class>djh.it.web.MyFilter</filter‐class><async‐supported>true</async‐supported><init‐param><param‐name>language</param‐name><param‐value>CN</param‐value></init‐param>
</filter>
<filter‐mapping><filter‐name>myFilter</filter‐name><url‐pattern>/*</url‐pattern>
</filter‐mapping>

7、Filter 配置说明:

1) filter‐name: 用于指定过滤器名称,在web.xml中,过滤器名称必须唯一。 
2) filter‐class : 过滤器的全限定类名, 该类必须实现Filter接口。 
3) async‐supported: 该过滤器是否支持异步。
4) init‐param :用于配置Filter的初始化参数, 可以配置多个, 可以通过FilterConfig.getInitParameter获取。
5) url‐pattern: 指定该过滤器需要拦截的URL

六、Tomcat专题 - Web应用配置介绍 - 欢迎页面和错误页面

1、tomcat 欢迎页面配置

welcome-file-list 用于指定web应用的欢迎文件列表。

<welcome-file-list><welcome-file>index.html/welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file></welcome-file-list>

尝试请求的顺序,从上到下。

2、在 servlet_demo01 项目中,更改 index.jsp 欢迎页面为 登录页面 login.jsp

1) project_tomcat\servlet_demo01\web\index.jsp

<%--Created by IntelliJ IDEA.User: AdministratorDate: 2024/8/13Time: 14:42To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>$Title$</title></head><body><h3>index.jsp 欢迎页面,主页页面</h3>$END$</body>
</html>

2) project_tomcat\servlet_demo01\web\login.jsp

<%--Created by IntelliJ IDEA.User: AdministratorDate: 2024/8/13Time: 14:42To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>$Title$</title></head><body><h3>login.jsp 登录页面,变为主页</h3>$END$</body>
</html>

3) project_tomcat\servlet_demo01\web\WEB-INF\web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><servlet><servlet-name>bbsServlet</servlet-name><servlet-class>djh.it.web.BbsServlet</servlet-class></servlet><servlet-mapping><servlet-name>bbsServlet</servlet-name><url-pattern>/bbs/findAll</url-pattern></servlet-mapping><context-param><param-name>project_param_01</param-name><param-value>dzs168</param-value></context-param><!-- 会话配置session-config --><session-config><session-timeout>30</session-timeout><cookie-config><name>JESSIONID</name><domain>localhost</domain><path>/</path><comment>Session Cookie</comment><http-only>true</http-only><secure>false</secure><max-age>3600</max-age></cookie-config></session-config><welcome-file-list><welcome-file>login.jsp</welcome-file></welcome-file-list></web-app>
<!-- project_tomcat\servlet_demo01\web\WEB-INF\web.xml -->

4)浏览器地址栏输入: http://localhost:8080/servlet_demo01/

tomcat-31.png

3、tomcat 错误页面配置

1)error-page 用于配置Web应用访问异常时定向到的页面,支持HTTP响应码和异常类两种形式。

    <!-- 错误页面 --><error-page><error-code>404</error-code><location>/404.html</location></error-page><error-page><error-code>500</error-code><location>/500.html</location></error-page><error-page><exception-type>java.lang.Exception</exception-type><location>/error.jsp</location></error-page>

2)如果在 servlet_demo01 项目中,未配置错误页面,在 servlet 中添加模拟异常,访问时就会出现如下界面:

/***  project_tomcat\servlet_demo01\src\djh\it\web\BbsServlet.java**  2024-8-13 创建 Servlet 类 BbsServlet.java*  Web应用配置 - context-param*/
package djh.it.web;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;//@WebServlet
public class BbsServlet extends HttpServlet {@Overrideprotected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException {System.out.println("------------>> GET : BbsServlet find all ...");String value = req.getServletContext().getInitParameter("project_param_01");System.out.println(value);int i = 1/0;  //模拟异常。//会话SessionIdString id = req.getSession().getId();System.out.println("sessionId : " + id);//        processRequest(req, resp);}@Overrideprotected void doPost( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException{System.out.println("------------>> POST : BbsServlet find all ...");
//        processRequest(req, resp);}//    private  void processRequest(HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException{
//        //设置响应的内容类型为HTML
//        resp.setContentType("text/html; charset=UTF-8");
//        //获取请示参数
//        String parameter = req.getParameter("param");
//        //向控制台打印请示参数
//        System.out.println("Received parameter : " + parameter);
//        //输出响应内容
//        PrintWriter writer = resp.getWriter();
//        writer.println("<h1>Hello,Servlet!</h1>");
//        writer.println("Received parameter : " + parameter);
//
//    }
//
}

2)浏览器访问出现如下界面,是不安全的。

tomcat-31.png

4、在 servlet_demo01 项目中,配置错误页面 404.html 和 500.html

1) project_tomcat\servlet_demo01\web\404.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>404</title>
</head>
<body><h3>404! 您访问的页面不存在,请检查访问路径!</h3></body>
</html>

2) project_tomcat\servlet_demo01\web\500.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>404</title>
</head>
<body><h3>500! 服务器出现异常,请联系管理员!</h3></body>
</html>

3) project_tomcat\servlet_demo01\web\error.jsp

<%--Created by IntelliJ IDEA.User: AdministratorDate: 2024/8/13Time: 14:42To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>$Title$</title></head><body><h3>error.jsp 错误页面</h3>$END$</body>
</html>

4) project_tomcat\servlet_demo01\web\WEB-INF\web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><servlet><servlet-name>bbsServlet</servlet-name><servlet-class>djh.it.web.BbsServlet</servlet-class></servlet><servlet-mapping><servlet-name>bbsServlet</servlet-name><url-pattern>/bbs/findAll</url-pattern></servlet-mapping><context-param><param-name>project_param_01</param-name><param-value>dzs168</param-value></context-param><!-- 会话配置session-config --><session-config><session-timeout>30</session-timeout><cookie-config><name>JESSIONID</name><domain>localhost</domain><path>/</path><comment>Session Cookie</comment><http-only>true</http-only><secure>false</secure><max-age>3600</max-age></cookie-config></session-config><!-- 欢迎页面 --><welcome-file-list><welcome-file>login.jsp</welcome-file></welcome-file-list><!-- 错误页面 --><error-page><error-code>404</error-code><location>/404.html</location></error-page><error-page><error-code>500</error-code><location>/500.html</location></error-page>
<!--    <error-page>-->
<!--        <exception-type>java.lang.Exception</exception-type>-->
<!--        <location>/error.jsp</location>-->
<!--    </error-page>--></web-app>
<!-- project_tomcat\servlet_demo01\web\WEB-INF\web.xml -->

5)浏览器再次访问,如下:

  • http://localhost:8080/servlet_demo01/bbs/findAll

500! 服务器出现异常,请联系管理员!

  • http://localhost:8080/servlet_demo01/bbs/findAll666

404! 您访问的页面不存在,请检查访问路径!

上一节关联链接请点击
# 利刃出鞘_Tomcat 核心原理解析(五)

相关文章:

# 利刃出鞘_Tomcat 核心原理解析(六)

利刃出鞘_Tomcat 核心原理解析&#xff08;六&#xff09; 一、Tomcat专题 - 内容 1、Web 应用配置 2、Tomcat 管理配置 3、JVM 配置 4、Tomcat 集群 5、Tomcat 安全 6、Tomcat 性能调优 7、Tomcat 附加功能。 二、Tomcat专题 - Web应用配置介绍 1、Web.xml 配置文件…...

双亲委派模型

优质博文&#xff1a;IT-BLOG-CN 虚拟机设计团队把类加载阶段中的 “通过一个类的全限定名来获取描述此类的二进制字节流” 这个动作放到 Java虚拟机外部去实现&#xff0c;以便应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。 从Java虚拟机…...

Linux下ETCD安装、配置、命令

目录 1. ETCD简介 2. ETCD的安装 2.1 准备环境 2.2 下载ETCD 2.3 解压和移动文件 2.4 验证安装 3. ETCD的配置 3.1 基本配置 3.2 配置文件 3.3 集群配置 4. ETCD的常用命令 4.1 插入键值对 4.2 读取键值对 4.3 删除键值对 4.4 监视键的变化 4.5 列出所有键值 …...

【QT】静态库与动态库

文章目录 开始之前一、静态库(static Library)定义使用场景特点程序示例 二、动态库(dynamic Library)定义使用场景特点。程序示例第二种调用 开始之前 测试环境&#xff1a;Qt 5.15.2 Based on Qt 6.4.3(MSVC 2019, x86_64) 操作系统&#xff1a;Windows11 专业版 编程语言&am…...

R的行和列命名和类型的转换

下面内容摘录自&#xff1a; 4章8节&#xff1a;用R做数据重塑&#xff0c;行列命名和数据类型转换-CSDN博客 欢迎订阅我们专栏 一、行和列命名 在数据科学和统计分析中&#xff0c;命名是组织和管理数据的一个重要部分。尤其是在处理复杂的多维数据集时&#xff0c;为行和列命…...

某通用系统0day审计过程

前言 代码审计篇章都是自己跟几个师傅们一起审计的1day或者0day(当然都是小公司较为简单)&#xff0c;禁止未经允许进行转载&#xff0c;发布到博客的用意主要是想跟师傅们能够交流下审计的思路&#xff0c;毕竟审计的思路也是有说法的&#xff0c;或者是相互源码共享也OK&…...

windows C++-高级并发和异步(一)

并发和异步的由来已经很久了&#xff0c;对于从xp开始编程的人来说&#xff0c;这个概念并不陌生&#xff0c;但问题在于&#xff0c;在早期&#xff0c;这两个技术被认为是操作系统提供的服务&#xff0c;而非编程语言的概念。 事情发生变化的原因&#xff0c;和C标准不断变迁…...

Java FX 学习

声明&#xff1a;参考视频 一. Stage与Scene 舞台与场景&#xff1a;JavaFX应用程序将Ul容器定义为舞台&#xff08;Stage&#xff09;与场景&#xff08;Scene&#xff09;Stage类是顶级容器&#xff0c;它对应于窗体&#xff0c;其内容由Scene决定。Scene类是所有可视化内容…...

【走迷宫】

题目 DFS代码 #include<bits/stdc.h> using namespace std; const int N 110; int matrix[N][N]; int n, m; int dx[4] {-1, 0, 1, 0}, dy[4] {0, 1, 0, -1}; int dis[N][N]; void dfs(int x, int y, int cnt) {if(cnt > dis[n-1][m-1]) return;if(x n-1 &&a…...

linux(debian)迁移var数据到已分配逻辑卷的物理盘

文章目录 0 背景1 查看当前情况1.1 查看磁盘空间1.2 列出所有可用块设备的信息&#xff0c;而且还能显示他们之间的依赖关系1.3 查看可用磁盘1.4 查看卷组 2 卷组中创建逻辑卷3 创建文件系统4 创建临时文件夹并挂载&#xff0c;然后备份源文件5 修改开机挂载配置5.1 查看原配置…...

【产品那些事】什么是应用程序安全态势管理(ASPM)?

文章目录 前言当前应用安全(AppSec)推进遇到的问题关于ASPM的定义 为什么需要ASPM&#xff1a;B端客户核心需求ASPM产品关键策略理想状态下的ASPMASPM与CSPM的区别国内外产品参考 前言 随着现代软件开发实践的快速演变&#xff0c;特别是在敏捷开发和 DevOps 的推动下&#xf…...

cocosUI多分辨率适配

需求&#xff1a;由于各个设备的分辨率和尺寸并不一样&#xff0c;所以需要一套适配系统去很好的针对不同的设备分辨率或尺寸进行适配&#xff0c;以给玩家一个很好的游戏体验。 目前的主流适配方案 目前&#xff0c;针对不同设备的适配&#xff0c;主流的方案通常包括以下几种…...

无法加载到主类

说明&#xff1a;记录一次项目启动错误&#xff0c;如下&#xff1a; 错误信息&#xff1a;错误: 找不到或无法加载主类 com.hezy.App 原因: java.lang.ClassNotFoundException: com.hezy.App 解决&#xff1a;首先&#xff0c;在项目中勾选这个&#xff0c;显示target文件夹 …...

深入理解Kafka核心设计与实践原理_03

深入理解Kafka核心设计与实践原理_03 03_消费者3.1消费者与消费者组3.2客户端开发3.2.1 必要的参数配置3.2.2 订阅主题与分区 草稿 03_消费者 与生产者对应的是消费者&#xff0c;应用程序可以通过KafkaConsumer来订阅主题&#xff0c;并从订阅的主题中拉取消息。不过在使用Ka…...

MySQL- 覆盖索引

覆盖索引&#xff08;Covering Index&#xff09;是 MySQL 中的一种优化技术&#xff0c;它能够显著提高查询性能。在使用覆盖索引的情况下&#xff0c;查询操作只需要访问索引即可获取所需的数据&#xff0c;而不必再访问表的实际数据行&#xff08;即不需要回表&#xff09;。…...

JSON与EXL文件互转

功能&#xff1a;实现json到excel文件的相互转换(支持json多选版) 目的&#xff1a;编码与语言对应&#xff0c;方便大家使用 页面设计&#xff1a; 介绍&#xff1a; 1.选择文件栏目选择想要转换的文件 2.生成路径是转换后文件所在目录 3.小方框勾选与不勾选分别代表exl到…...

后台管理权限自定义按钮指令v-hasPermi

第一步:在src下面建立一个自定义指令文件,放自定义指令方法 permission.js文件: /*** v-hasPermi 操作权限处理*/import store from "/store";export default {inserted(el, binding) {const { value } binding;//从仓库里面获取到后台给的数组const permission s…...

【Python绘制散点图并添加趋势线和公式以及相关系数和RMSE】

在Python中&#xff0c;绘制散点图并添加趋势线&#xff08;通常是线性回归线&#xff09;、公式、以及相关系数&#xff08;Pearson Correlation Coefficient&#xff09;和均方根误差&#xff08;RMSE&#xff09;可以通过结合matplotlib用于绘图&#xff0c;numpy用于数学运…...

linux bridge VLAN

TP-Link 支持 Linux 桥接&#xff08;bridge&#xff09;和 VLAN 功能的产品主要包括其高端的交换机和一些企业级路由器&#xff1a; TP-Link JetStream 系列交换机&#xff1a; TL-SG3424: 24端口千兆交换机&#xff0c;支持 VLAN 和桥接。TL-SG3210: 24端口千兆管理型交换机&…...

Java进阶篇之深入理解多态的概念与应用

引言 在Java面向对象编程&#xff08;OOP&#xff09;中&#xff0c;多态&#xff08;Polymorphism&#xff09;是一个关键概念&#xff0c;它允许相同类型的对象在不同的场景中表现出不同的行为。多态不仅增强了代码的灵活性和可扩展性&#xff0c;还极大地提高了代码的可维护…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

高保真组件库:开关

一:制作关状态 拖入一个矩形作为关闭的底色:44 x 22,填充灰色CCCCCC,圆角23,边框宽度0,文本为”关“,右对齐,边距2,2,6,2,文本颜色白色FFFFFF。 拖拽一个椭圆,尺寸18 x 18,边框为0。3. 全选转为动态面板状态1命名为”关“。 二:制作开状态 复制关状态并命名为”开…...

运行vue项目报错 errors and 0 warnings potentially fixable with the `--fix` option.

报错 找到package.json文件 找到这个修改成 "lint": "eslint --fix --ext .js,.vue src" 为elsint有配置结尾换行符&#xff0c;最后运行&#xff1a;npm run lint --fix...

[C++错误经验]case语句跳过变量初始化

标题&#xff1a;[C错误经验]case语句跳过变量初始化 水墨不写bug 文章目录 一、错误信息复现二、错误分析三、解决方法 一、错误信息复现 write.cc:80:14: error: jump to case label80 | case 2:| ^ write.cc:76:20: note: crosses initialization…...

分布式光纤声振传感技术原理与瑞利散射机制解析

分布式光纤传感技术&#xff08;Distributed Fiber Optic Sensing&#xff0c;简称DFOS&#xff09;作为近年来迅速发展的新型感知手段&#xff0c;已广泛应用于边界安防、油气管道监测、结构健康诊断、地震探测等领域。其子类技术——分布式光纤声振传感&#xff08;Distribut…...

Python[数据结构及算法 --- 栈]

一.栈的概念 在 Python 中&#xff0c;栈&#xff08;Stack&#xff09;是一种 “ 后进先出&#xff08;LIFO&#xff09;”的数据结构&#xff0c;仅允许在栈顶进行插入&#xff08;push&#xff09;和删除&#xff08;pop&#xff09;操作。 二.栈的抽象数据类型 1.抽象数…...

C++ 使用 ffmpeg 解码 rtsp 流并获取每帧的YUV数据

一、简介 FFmpeg 是一个‌开源的多媒体处理框架‌&#xff0c;非常适用于处理音视频的录制、转换、流化和播放。 二、代码 示例代码使用工作线程读取rtsp视频流&#xff0c;自动重连&#xff0c;支持手动退出&#xff0c;解码并将二进制文件保存下来。 注意&#xff1a; 代…...