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

FilterListener组件

文章目录

  • Java Web三大组件
  • 一、Filter概述
  • 二、Filter开始
    • 1_过滤器API介绍
    • 2_过滤器开发步骤
    • 3_代码实现
    • 4_过滤器执行流程小结
  • 三、使用细节
    • 1_生命周期
    • 2_拦截路径
    • 3_过滤器链
  • 四、Listener
    • 1_Listener概述
    • 2_监听器举例
    • 3_Listener开始
    • 4_案例:模拟spring框架

Java Web三大组件


  1. 组件: 是一个系统的组成部件
  2. javaweb组件 : javaweb项目的组成部件
    1. servlet
    2. filter
    3. listener
组件作用实现接口
ServletServer Applet小应用程序,在JavaWeb中主要做为控制器来使用,可以处理用户的请求并且做出响应javax.servlet.Servlet
Filter过滤器,对用户发送的请求或响应进行集中处理,实现请求的拦截 javax.servlet.Filter
Listener监听器,在Web执行过程中,监听一些事件,当相应事件发生时, 进行处理 javax.servlet.XxxListener 每个事件有一个接口

一、Filter概述


生活中的过滤器

净水器、空气净化器、地铁安检

web中的过滤器

当用户访问服务器资源时,过滤器将请求拦截下来,完成一些通用的操作

F i l t e r Filter Filter 的作用

  1. 拦截客户端对web资源的请求 (重要!)
  2. 拦截web资源对客户端的响应

应用场景

如:登录验证、统一编码处理、敏感字符过滤

在这里插入图片描述


二、Filter开始


1_过滤器API介绍

F i l t e r Filter Filter 表示过滤器接口,我们想使用该接口必须自定义类实现接口并实现该接口中的所有抽象方法。

javax.Servlet.Filter接口下面的三个方法:

方法说明
void init(FilterConfig filterConfig)过滤器对象创建的时候调用的方法
void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)执行过滤的方法,每次访问被拦截的资源都会执行该方法
void destory()过滤器销毁的时候调用的方法

注意:doFilter第三个参数:FilterChain 表示过滤器链接口。

放行:使用 FilterChain 对象调用 FilterChain 中的方法:chain.doFilter(request,response);即可以让浏览器访问服务器资源。

不放行,那么不写上述代码,即不让浏览器访问服务器资源。


2_过滤器开发步骤

1.自定义过滤器类实现过滤器接口 F i l t e r Filter Filter

2.在自定义类中实现过滤器接口 F i l t e r Filter Filter中的所有抽象方法

3.在doFilter方法体中书写拦截资源的代码

F i l t e r Filter Filter 过滤器接口的关键方法说明:

void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

参数:

  • request:表示请求对象,不满足 h t t p http http协议

  • response:表示响应对象,不满足 h t t p http http协议

  • chain:属于 FilterChain 的接口,表示过滤器链。

    FilterChain 接口中具有一个放行方法:

    void doFilter(ServletRequest request, ServletResponse response)  
    
    • 如果放行,希望浏览器可以访问拦截的资源则执行该方法

      filterChain.doFilter(servletRequest,servletResponse);

    • 如果不放行,不希望浏览器访问拦截的资源则不执行该方法

4.配置过滤器

5.访问被拦截的资源


3_代码实现

过滤器类:

import javax.servlet.*;
import java.io.IOException;//1.自定义过滤器类实现过滤器接口Filter
public class MyFilter implements Filter {//2.在自定义类中实现过滤器接口Filter中的所有抽象方法@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 不要调用父类的初始化方法否则报错// Filter.super.init(filterConfig);}//3.在doFilter方法体中书写拦截资源的代码//每次访问被过滤的资源都要执行该方法@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("执行过滤器了...");//不放行/*Filter过滤器接口的:void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)参数:request:表示请求对象,不满足http协议response:表示响应对象,不满足http协议chain:属于FilterChain的接口,表示过滤器链。FilterChain接口中具有一个放行方法:void doFilter(ServletRequest request, ServletResponse response)如果放行,希望浏览器可以访问拦截的资源则执行该方法如果不放行,不希望浏览器访问拦截的资源则不执行该方法*///放行filterChain.doFilter(servletRequest, servletResponse);}@Overridepublic void destroy() {}
}

web.xml

<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/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><display-name>Archetype Created Web Application</display-name><!--配置过滤器--><!--表示关联的过滤器类--><filter><filter-name>myFilter</filter-name><!--过滤器类的全路径,底层获取这里使用反射技术调用无参构造方法创建过滤器类的对象--><filter-class>com.example.sh.MyFilter</filter-class></filter><filter-mapping><filter-name>myFilter</filter-name><!--配置被拦截的资源--><url-pattern>/filter01.html</url-pattern></filter-mapping></web-app>

被拦截的页面:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1>来拦截我啊</h1>
</body>
</html>

小结:

1.配置过滤器有两种方式:

  1. xml版本:

    <!--配置过滤器-->
    <!--表示关联的过滤器类-->
    <filter><filter-name>myFilter</filter-name><!--过滤器类的全路径,底层获取这里使用反射技术调用无参构造方法创建过滤器类的对象--><filter-class>com.example.sh.MyFilter</filter-class>
    </filter>
    <filter-mapping><filter-name>myFilter</filter-name><!--配置被拦截的资源--><url-pattern>/filter01.html</url-pattern>
    </filter-mapping>
    
  2. 注解版本配置

    使用注解必须去掉xml版本。

    在这里插入图片描述


4_过滤器执行流程小结


在这里插入图片描述

  1. 用户发送请求,请求Web资源(包括html, jsp, servlet等)。
  2. 如果Web资源的地址,是 f i l t e r filter filter 要拦截的地址,请求将先经过 f i l t e r filter filter,并执行doFilter()
  3. doFilter()方法中如果调用filterChain.doFilter(),则允许请求访问下一个Web资源。
  4. 访问Web资源,响应回来会再次经过 f i l t e r filter filter,执行过滤器中的代码,到达浏览器端。

三、使用细节


1_生命周期

生命周期:指的是一个对象从生(创建)到死(销毁)的一个过程

// 初始化方法
public void init(FilterConfig config);// 执行拦截方法
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain);// 销毁方法
public void destroy();
  • 创建

    服务器启动项目加载,创建 f i l t e r filter filter对象,执行init方法(只执行一次)

  • 运行(过滤拦截)

    用户访问被拦截目标资源时,执行doFilter方法

  • 销毁

    服务器关闭时,销毁 f i l t e r filter filter对象,执行destroy方法(只执行一次)

  • 补充:

    过滤器一定是优先于servlet创建的,后于 S e r v l e t Servlet Servlet 销毁

    复习:servlet默认是第一次访问的时候创建

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;/*Filter的生命周期方法1. initweb服务器启动时,此方法运行,就运行一次(早于Servlet)2. doFilter当请求经过过滤器,此方法就会运行(每经过一次,就运行一次) (早于servlet的service方法)3. destroytomcat关闭, 此方法运行一次 (晚于servlet的destroy)*/@WebFilter("/MyFilterLife")
public class MyFilterLife implements Filter {public MyFilterLife() {System.out.println("MyFilterLife的构造方法被调用了..........");}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("MyFilterLife init");}//当请求经过过滤器,此方法就会运行(每经过一次,就运行一次)@Overridepublic void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException, ServletException {System.out.println("MyFilterLife doFilter");//请求放行 (相当于请求转发)chain.doFilter(request, response);}@Overridepublic void destroy() {System.out.println("MyFilterLife destroy");}
}

总结:

  1. 过滤器是在 t o m c a t tomcat tomcat启动的时候 t o m c a t tomcat tomcat调用过滤器类中的无参构造方法创建对象,使用对象调用init方法,只会执行一次
  2. 当使用浏览器访问被过滤的资源的时候就会执行过滤器 F i l t e r Filter Filter中的doFilter方法,访问一次就会执行一次doFilter方法
  3. 当关闭 t o m c a t tomcat tomcat服务器就会使用对象调用销毁方法destroy,只会执行一次
  4. 过滤器优先于访问的资源执行

2_拦截路径

在开发时,我们可以指定过滤器的拦截路径来定义拦截目标资源的范围

  • 精准匹配

    用户访问指定目标资源(/demo01.html)时,过滤器进行拦截

  • 目录匹配

    用户访问指定目录下(/user/*)所有资源时,过滤器进行拦截

  • 后缀匹配

    用户访问指定后缀名(*.html)的资源时,过滤器进行拦截,不能加/

  • 匹配所有

    用户访问该网站所有资源(/*)时,过滤器进行拦截

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;//@WebFilter({"/xx","/yy"})
//@WebFilter("/xx") // 精准匹配
//@WebFilter("/user/*") // 目录匹配
//@WebFilter("*.do") // 后缀匹配
@WebFilter("/*") // 匹配所有
public class MyFilterPath implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("doFilter");}@Overridepublic void destroy() {}
}

注意: 在过滤器中,如果多个过滤器过滤同一个资源,那么要执行所有满足条件的过滤器。


3_过滤器链

在一次请求中,若我们请求匹配到了多个 f i l t e r filter filter,通过请求就相当于把这些 f i l t e r filter filter串起来了,形成了过滤器链。

问题:如果多个过滤器都对相同路径进行匹配,执行顺序该是什么?

F i l t e r Filter Filter 默认是按照字母顺序执行的,如果过滤器名字第一个字母相同,再看过滤器名字的第二个字母,以此类推。从而形成一个执行链条。

前提:多个过滤器过滤同一个资源,并且多个过滤器是在同一下。

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebFilter("/apple")
public class AFilter implements Filter {public void destroy() {}public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) resp;System.out.println("AFilter....放行前");chain.doFilter(request, response);System.out.println("AFilter....放行后");}public void init(FilterConfig config) throws ServletException {}}
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebFilter("/apple")
public class BFilter implements Filter {public void destroy() {}public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) resp;System.out.println("BFilter....放行前");chain.doFilter(request, response);System.out.println("BFilter....放行后");}public void init(FilterConfig config) throws ServletException {}}
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;@WebServlet("/apple")
public class AppleServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("AppleServlet....");}
}

在这里插入图片描述

在这里插入图片描述

总结:

  1. 如果同一个包下多个过滤器拦截同一个资源,那么按照过滤器类的名字字母升序来依次执行(针对注解开发)

    AFilter ---- BFilter

  2. 执行完拦截资源后依次在按照相反顺序执行

  3. 如果是xml配置方式,那么按照从上往下配置的顺序执行


四、Listener


1_Listener概述

说明:

javaweb中的监听器是监听 S e r v l e t C o n t e x t ServletContext ServletContext H t t p S e s s i o n HttpSession HttpSession H t t p S e r v l e t R e q u e s t HttpServletRequest HttpServletRequest三个对象创建和销毁的,同时监听是哪个对象中数据的变化,就是监听属性的变化setAttributeremoveAttribute

  1. S e r v l e t C o n t e x t ServletContext ServletContext 是在 t o m c a t tomcat tomcat启动创建,关闭 t o m c a t tomcat tomcat销毁

  2. H t t p S e s s i o n HttpSession HttpSession 是在浏览器第一次访问执行request.getSession()创建,销毁时间:1)30min 2) 执行invalidate()

  3. H t t p S e r v l e t R e q u e s t HttpServletRequest HttpServletRequest 是浏览器第一次访问创建,浏览器接收到服务器的响应就销毁

生活中的监听器

我们很多商场有摄像头,监视着客户的一举一动。如果客户有违法行为,商场可以采取相应的措施。

javaweb中的监听器

在我们的 java 程序中,有时也需要监视某些事情,一旦被监视的对象发生相应的变化,我们应该采取相应的操作。

监听 web 三大域对象: H t t p S e r v l e t R e q u e s t HttpServletRequest HttpServletRequest H t t p S e s s i o n HttpSession HttpSession S e r v l e t C o n t e x t ServletContext ServletContext (创建和销毁)

场景

历史访问次数、统计在线人数、系统启动时初始化配置信息

监听器的接口分类

事件源监听器接口时机
ServletContextServletContextListener上下文域创建和销毁
ServletContextServletContextAttributeListener上下文域属性增删改的操作
HttpSessionHttpSessionListener会话域创建和销毁
HttpSessionHttpSessionAttributeListener会话域属性增删改的操作
HttpServletRequestServletRequestListener请求域创建和销毁
HttpServletRequestServletRequestAttributeListener请求域属性增删改的操作

2_监听器举例


监听的关键要素:

  1. 设置监听器的人
  2. 监听器
  3. 监听器目标: 被监听的对象
  4. 监听器工作: 被监听的对象执行某种行为,监听器就开始工作

web 中监听的关键要素:

  1. 雇佣人 : web程序开发者

  2. 监听器例子A

    1. 监听器A:ServletContextListener
    2. 目标 : 监听 S e r v l e t C o n t e x t ServletContext ServletContext 对象
    3. 执行 : 监听 S e r v l e t C o n t e x t ServletContext ServletContext 对象创建和销毁
  3. 监听器例子B

    1. 监听器A:HttpSessionListener
    2. 目标: H t t p S e s s i o n HttpSession HttpSession 对象
    3. 执行:监听 H t t p S e s s i o n HttpSession HttpSession 对象创建和销毁
  4. 监听器例子C

    1. 监听器A:HttpRequestListener
    2. 目标: H t t p R e q u e s t HttpRequest HttpRequest 对象
    3. 执行:监听 H t t p R e q u e s t HttpRequest HttpRequest 对象创建和销毁
  5. 监听器例子D

    1. 监听器A: ServletContextAttributeListener

    2. 目标 : S e r v l e t C o n t e x t ServletContext ServletContext对象

    3. 执行 : 监听 S e r v l e t C o n t e x t ServletContext ServletContext对象增删改数据 (add,remove)

      当我们向 S e r v l e t C o n t e x t ServletContext ServletContext对象中添加数据setAttribute()和删除数据removeAttribute()就会被ServletContextAttributeListener 监听器监听。

  6. 其他监听器

    HttpSessionAttributeListenerHttpRequestAttributeListener


3_Listener开始

监听器在web开发中使用的比较少,见的机会就更少了,我们使用ServletContextListenner对监听器快速了解,因为这个监听器是监听器中使用率最高的一个,且监听器的使用方式都差不多。

我们使用这个监听器可以在项目启动和销毁的时候做一些事情,例如:在项目启动的时候加载配置文件。

步骤分析

  1. 创建一个普通类,实现ServletContextListenner

  2. 重写方法

    • 监听 S e r v l e t C o n t e x t ServletContext ServletContext创建

    • 监听 S e r v l e t C o n t e x t ServletContext ServletContext销毁

  3. 配置

    • web.xml

    • 注解

① xml版本

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;/*设置监听器的人: 开发者监听器 : MyListener监听器目标 : ServletContext 对象监听器的工作:1). 当ServletContext 对象创建的时候就会执行contextInitialized方法ServletContext是tomcat启动时就会创建 (早于Filter和Servlet)2). 当ServletContext 对象销毁的时候就会执行contextDestroyed方法ServletContext是tomcat关闭时销毁 (晚于Filter和Servlet)这两个方法是事件驱动*/
public class MyListener implements ServletContextListener {//tomcat一启动,此方法就会运行//运用场景: spring底层封装了一个ServletContextListener加载配置文件@Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println("contextInitialized");}@Overridepublic void contextDestroyed(ServletContextEvent sce) {System.out.println("contextDestroyed");}
}
<!--    配置监听器   -->
<listener><listener-class>com.example.sh.MyListener</listener-class>
</listener>

② 注解版本

//3.配置监听器
@WebListener
//1. 创建一个普通类,实现ServletContextListener
public class MyListener implements ServletContextListener {//2.重写方法//当上下文对象ServletContext创建就执行该方法@Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println("contextInitialized");}//当上下文对象ServletContext销毁就执行该方法@Overridepublic void contextDestroyed(ServletContextEvent sce) {System.out.println("contextDestroyed");}
}

4_案例:模拟spring框架

需求:可以在项目启动时读取配置文件,获取配置文件的名字。

步骤:

  1. web.xml进行配置文件的配置

  2. 创建自定义监听器类监听 S e r v l e t C o n t e x t ServletContext ServletContext的创建和销毁

  3. 在自定义监听器类中实现监听器的方法

  4. 实现的方法体中读取web.xml文件中关于当前项目配置文件的信息

  5. 输出结果

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;//2.创建自定义监听器类监听ServletContext的创建和销毁
//别忘记注册监听器
@WebListener
public class SpringContextListener implements ServletContextListener {//3.在自定义监听器类中实现监听器的抽象方法@Overridepublic void contextInitialized(ServletContextEvent servletContextEvent) {//4.实现的方法体中读取web.xml文件中关于当前项目配置文件的信息//4.1根据事件类对象servletContextEvent调用方法获取ServletContext上下文对象ServletContext servletContext = servletContextEvent.getServletContext();//4.2使用上下文对象调用方法获取web.xml配置文件中的数据/*<context-param><param-name>jdbc</param-name><param-value>jdbc.properties</param-value></context-param>*/String str = servletContext.getInitParameter("jdbc");System.out.println("str = " + str);}@Overridepublic void contextDestroyed(ServletContextEvent servletContextEvent) {System.out.println("释放资源....销毁。。。。");}
}
<!--配置当前项目的配置文件信息-->
<!--1.在web.xml进行配置文件的配置-->
<context-param><param-name>jdbc</param-name><param-value>jdbc.properties</param-value>
</context-param>

相关文章:

FilterListener组件

文章目录 Java Web三大组件一、Filter概述二、Filter开始1_过滤器API介绍2_过滤器开发步骤3_代码实现4_过滤器执行流程小结 三、使用细节1_生命周期2_拦截路径3_过滤器链 四、Listener1_Listener概述2_监听器举例3_Listener开始4_案例:模拟spring框架 Java Web三大组件 组件: 是…...

使用Ubuntu快速部署MinIO对象存储

想拥有自己的私有云存储&#xff0c;安全可靠又高效&#xff1f;MinIO是你的理想选择&#xff01;这篇文章将手把手教你如何在Ubuntu 22.04服务器上部署MinIO&#xff0c;并使用Nginx反向代理和Let’s Encrypt证书进行安全加固。 即使你是新手&#xff0c;也能轻松完成&#xf…...

基于Liquid State Machine的时间序列预测:利用储备池计算实现高效建模

Liquid State Machine (LSM) 是一种 脉冲神经网络 (Spiking Neural Network, SNN) ,在计算神经科学和机器学习领域中得到广泛应用,特别适用于处理 时变或动态数据。它是受大脑自然信息处理过程启发而提出的一种 脉冲神经网络 。 设想你正处于一片平静的湖面,四周环绕着高山,你向…...

oracle使用CTE递归分解字符串

oracle使用CTE递归分解字符串 背景 给定一个不定长度字符串 并且以&#xff0c;分割例如 ‘1&#xff0c;2&#xff0c;3&#xff0c;4’ 使用sql查询 返回1&#xff0c;2&#xff0c;3&#xff0c;4四行 如果‘1&#xff0c;2’ 则返回 1&#xff0c;2 两行 使用sql实现 实…...

华为HarmonyOS借助AR引擎帮助应用实现虚拟与现实交互的能力5-识别平面语义

对于检测到的平面&#xff0c;您可以通过AR Engine识别该平面的语义&#xff0c;包括墙面、地面、座椅面、桌面、天花板、门面、窗面、床面。 创建AR会话 创建AR会话并配置为平面语义识别模式。 AREngine_ARSession *arSession nullptr;// 创建AR会话。HMS_AREngine_ARSessi…...

MAC 安装 brew及其常用命令

​文章&#xff1a;Mac安装brew的四种方法&#xff08;指定能行&#xff09; 以下是在 Mac 上使用 Homebrew 清理缓存和无用包的详细指南&#xff1a; 1. 查看系统状态 # 诊断系统问题 brew doctor# 查看已安装的包 brew list# 查看系统占用空间 brew cleanup -n # 预览需要…...

nVisual标签打印模块的部署与使用

部署 标签打印模块部署需要注意的是 前置条件 标签打印模块是以外部模块形式依附于nVisual主模块的&#xff0c;所以要先部署好nVisual主模块的前后端程序。 部署文件下载 标签打印模块也分前端文件和后端文件&#xff0c;从微盘->软件发布->nVisual official relea…...

python NLTK快速入门

目录 NLTK简介安装NLTK主要模块及用法 词汇与语料库分词与词性标注句法分析情感分析文本分类综合实例&#xff1a;简单的文本分析项目总结 1. NLTK简介 NLTK&#xff08;Natural Language Toolkit&#xff09;是一个强大的Python库&#xff0c;专门用于自然语言处理&#xff…...

技术速递|.NET 9 中 System.Text.Json 的新增功能

作者&#xff1a;Eirik Tsarpalis - 首席软件工程师 排版&#xff1a;Alan Wang System.Text.Json 的9.0 版本包含许多功能&#xff0c;主要侧重于 JSON 架构和智能应用程序支持。它还包括一些备受期待的增强功能&#xff0c;例如可空引用类型支持、自定义枚举成员名称、无序元…...

LLM 使用 Elastic 实现可观察性:Azure OpenAI (二)

作者&#xff1a;来自 Elastic Muthukumar Paramasivam•Lalit Satapathy 我们为 Azure OpenAI GA 包添加了更多功能&#xff0c;现在提供提示和响应监控、PTU 部署性能跟踪和计费洞察&#xff01; 我们最近宣布了 Azure OpenAI 集成的 GA。你可以在我们之前的博客 LLM 可观察性…...

数据库基础(2) . 安装MySQL

0.增加右键菜单选项 添加 管理员cmd 到鼠标右键 运行 reg文件 在注册表中添加信息 这样在右键菜单中就有以管理员身份打开命令行的选项了 1.获取安装程序 网址: https://dev.mysql.com/downloads/mysql/ 到官网下载MySQL8 的zip包, 然后解压 下载后的包为: mysql-8.0.16-…...

高效自动化测试,引领汽车座舱新纪元——实车篇

引言 作为智能网联汽车的核心组成部分&#xff0c;智能座舱不仅是驾驶者与车辆互动的桥梁&#xff0c;更是个性化、智能化体验的源泉。实车测试作为验证智能座舱功能实现、用户体验、行车安全及法规符合性的关键环节&#xff0c;能够最直接地模拟真实驾驶场景&#xff0c;确保…...

GitHub中搜索项目方法

0 Preface/Foreword 1 搜索方法 1.1 项目介绍 如上截图&#xff0c;一个项目包含的基本信息&#xff1a; 项目名项目简介项目介绍Watch数量&#xff0c;接收邮件提醒Star数量&#xff0c;关注&#xff0c;subscribeFork数量&#xff0c;在repo中创建分支 1.2 限定项目名查找…...

浅谈串口服务器的作用

串口服务器是一种网络设备&#xff0c;它允许通过TCP/IP网络远程访问串行设备。它的作用主要包括&#xff1a; 1、远程访问&#xff1a;通过将串行通信转换为以太网通信&#xff0c;串口服务器使得远程访问串行设备成为可能&#xff0c;这对于远程监控和控制非常有用。 2、数据…...

Spark 的Standalone集群环境安装与测试

目录 一、Standalone 集群环境安装 &#xff08;一&#xff09;理解 Standalone 集群架构 &#xff08;二&#xff09;Standalone 集群部署 二、打开监控界面 &#xff08;一&#xff09;master监控界面 &#xff08;二&#xff09;日志服务监控界面 三、集群的测试 &a…...

在Java中,实现数据库连接通常使用JDBC

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技巧(编写中……&#xff09; 5、面经吐血整理的 面试技…...

Git 测验

Git 测验 引言 Git 是一款强大的分布式版本控制系统,它由Linus Torvalds创建,主要用于帮助多人协作开发项目。Git 的设计目标是速度、数据完整性以及分布式支持。自从2005年发布以来,Git 已经成为全球最流行的版本控制系统之一,被广泛应用于各种规模的软件开发项目中。 …...

L1G3000 提示工程(Prompt Engineering)

什么是Prompt(提示词)? Prompt是一种灵活、多样化的输入方式&#xff0c;可以用于指导大语言模型生成各种类型的内容。什么是提示工程? 提示工程是一种通过设计和调整输入(Prompts)来改善模型性能或控制其输出结果的技术。 六大基本原则: 指令要清晰提供参考内容复杂的任务拆…...

【SQL50】day 1

目录 1.可回收且低脂的产品 2.寻找用户推荐人 3.使用唯一标识码替换员工ID 4.产品销售分析 I 5.有趣的电影 6.平均售价 7.每位教师所教授的科目种类的数量 8.平均售价 1.可回收且低脂的产品 # Write your MySQL query statement below select product_id from Products w…...

jmeter脚本-请求体设置变量and请求体太长的处理

目录 1、查询接口 1.1 准备组织列表的TXT文件&#xff0c;如下&#xff1a; 1.2 添加 CSV数据文件设置 &#xff0c;如下&#xff1a; 1.3 接口请求体设置变量&#xff0c;如下&#xff1a; 2、创建接口 2.1 见1.1 2.2 见1.2 2.3 准备创建接口的请求体TXT文件&#xff…...

基于java+SpringBoot+Vue的旅游管理系统设计与实现

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven mysql5.7或8.0等等组成&#x…...

SD3模型的部署(本地部署)

文章目录 模型权重的下载需要注意的地方推理代码生成的效果图 模型的结构图 模型权重的下载 SD3&#xff1a;huggingface的权重 我们需要把huggingfaceface下的这些文件都下载到一个文件加下&#xff0c;然后在后面的pipe StableDiffusion3Pipeline.from_pretrained(“stabil…...

讲解DFD和ERD

DFD、ERD 1. DFD&#xff08;数据流图&#xff0c;Data Flow Diagram&#xff09;DFD的主要元素&#xff1a;DFD的层次结构&#xff1a;举例&#xff1a;1. 上下文图&#xff1a;2. 分解图&#xff1a; DFD的应用&#xff1a; 2. ERD&#xff08;实体关系图&#xff0c;Entity …...

TVM计算图分割--LayerGroup

文章目录 介绍Layergroup调研TVM中的LayergroupTVM Layergroup进一步优化MergeCompilerRegions处理菱形结构TVM中基于Pattern得到的子图TPUMLIR地平线的Layergroup介绍 Layergroup目前没找到严格、明确的定义,因为不同厂家的框架考虑的因素不同,但是基本逻辑是差不多的。一般…...

OPPO开源Diffusion多语言适配器—— MultilingualSD3-adapter 和 ChineseFLUX.1-adapter

MultilingualSD3-adapter 是为 SD3 量身定制的多语言适配器。 它源自 ECCV 2024 的一篇题为 PEA-Diffusion 的论文。ChineseFLUX.1-adapter是为Flux.1系列机型量身定制的多语言适配器&#xff0c;理论上继承了ByT5&#xff0c;可支持100多种语言&#xff0c;但在中文方面做了额…...

Spring 设计模式之责任链模式

Spring 设计模式之责任链模式 责任链模式用到的场景java举例 责任链模式 责任链模式&#xff08;Chain of Responsibility&#xff09;是一种行为设计模式&#xff0c;它允许你将请求沿着处理者链进行传递。 每个处理者可以对请求进行处理&#xff0c;也可以将请求传递给链中的…...

简单的 docker 部署ELK

简单的 docker 部署ELK 这是我的运维同事部署ELK的文档&#xff0c;我这里记录转载一下 服务规划 架构: Filebeat->kafka->logstash->ES kafka集群部署参照: kafka集群部署 部署服务程序路径/数据目录端口配置文件elasticsearch/data/elasticsearch9200/data/elas…...

四款主流的3D创作和游戏开发软件的核心特点和关系

四款主流的3D创作和游戏开发软件的核心特点和关系 3D建模软件&#xff1a; Blender&#xff1a; 开源免费&#xff0c;功能全面优点&#xff1a; 完全免费持续更新优化社区活跃&#xff0c;学习资源丰富功能全面(建模、动画、渲染等) 缺点&#xff1a; 学习曲线陡峭界面操作…...

聚划算!Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型多变量回归预测

聚划算&#xff01;Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型多变量回归预测 目录 聚划算&#xff01;Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 聚划算&#xff01;Tran…...

信息安全工程师(76)网络安全应急响应技术原理与应用

前言 网络安全应急响应&#xff08;Network Security Incident Response&#xff09;是针对潜在或已发生的网络安全事件而采取的网络安全措施&#xff0c;旨在降低网络安全事件所造成的损失并迅速恢复受影响的系统和服务。 一、网络安全应急响应概述 定义&#xff1a;网络安全应…...