java Web学习笔记(一)

news2024/9/24 5:25:29

1. 前置学习知识

JavaScript学习笔记

CSS3学习笔记

html学习笔记

2. Tomcat介绍

前端App的运行环境:

服务器 --> JRE --> Tomcat --> App

Tomcat目录文件介绍

pkRfcDJ.png

  • bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat10.exe、tomcat10w,exe,前者是在控制台下启动Tomcat,后者是弹出GU川窗口启动Tomcat;,如果是解压版,那么会有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA_HOME环境变量才能启动,shutdawn.bat用来停止Tomcat;
  • conf : 配置文件
  • lib : jar包
  • logs : 日志文件,可删除
  • temp :临时文件,可删除
  • webapps : 存放web项目
    • WEB-INF文件夹(不可以直接访问的资源文件)
      • classes目录(字节码根路径)
      • lib目录(外部资源文件)
      • web.xml
    • static
  • work : jsp相关,现在不常用了

标准的可以部署在Tomcat中的app如上图中webapps的文件目录结构所示

URL的组成部分和项目资源的对应关系

http://127.0.0.1:8080/app/idnex.html

URL组成部分项目中资源
协议(http://)
ip地址(127.0.0.1)服务器-硬件 --> 操作系统
端口号(8080)服务器-服务软件 --> webapps
项目的上下文路径(/app)app
具体资源路径(index.html)具体资源路径

idea配置部署tomcat并成功运行一个app-web项目

详情见连接

视频57集

3. HTTP协议介绍(很重要)

HTTP协议和HTTPS的区别

在HTTP1.1到HTTP2.0之间出现了 HTTPS(安全超文本传输协议)。它是使用 SSL/TLS 进行安全加密通信的 HTTP 的安全版本。

HTTP协议的发展
  • 最初阶的http协议:HTTP/0.9,只能返回一个网页

  • 后续发展:HTTP/1.0,支持三种请求方式,有状态码、包含报文头、能够传输HTML以外的文件

  • HTTP/1.1:支持七种请求,另外有以下三个特性:

    • 虚拟主机允许从单个 IP 地址提供多个域
    • 持久连接和流水线连接允许 Web 浏览器通过单个持久连接发送多个请求
    • 缓存支持节省了带宽并使响应速度更快。
  • HTTP2和HTTP3,已经发布了,但是整体的使用并不突出

理解HTTP协议
  1. 客户端和服务端交互的方式

请求-响应模式

请求:永远是客户端向服务端发送

响应:永远是服务端向客户端发送

  1. 客户端和服务端交互数据的格式

报文(请求报文):请求时发送的数据

响应(响应报文):响应时返回的数据

报文的格式:

​ 报文首部:行信息 + 头信息

​ 报文主体

  1. HTTP的长链接和短链接问题

前置知识

网络信息传递过程:

pkRzuh8.png

TCP协议下的数据通信(三次握手和四次分手):

pkRzM9S.png

长链接和短链接分解:

html中存在<link>``<script>之类的标签

客户端需要通过这些标签中的地址重新向Tomcat抓取路径,所以需要重新经历三次握手和四次分手的过程。

报文格式

见资料

常见的请求头:

-主机虚拟地址
Host: localhost:8080   
-长连接
Connection: keep-alive 
-请求协议的自动升级[http的请求,服务器却是https的,浏览器自动会将请求协议升级为https的]
Upgrade-Insecure-Requests: 1  
- 用户系统信息
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36
- 浏览器支持的文件类型
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
- 当前页面的上一个页面的路径[当前页面通过哪个页面跳转过来的]:   可以通过此路径跳转回上一个页面, 广告计费,防止盗链
Referer: http://localhost:8080/05_web_tomcat/login.html
- 浏览器支持的压缩格式
Accept-Encoding: gzip, deflate, br
- 浏览器支持的语言
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7

注意

  • 如果是发送加密的信息最好是使用POST请求发送数据

  • 如果是发送非加密数据且不携带信息,最好是使用GET请求

常见的相应体:

Server: Apache-Coyote/1.1   服务器的版本信息
Accept-Ranges: bytes
ETag: W/"157-1534126125811"
Last-Modified: Mon, 13 Aug 2018 02:08:45 GMT
Content-Type: text/html    响应体数据的类型[浏览器根据类型解析响应体数据]
Content-Length: 157   响应体内容的字节数
Date: Mon, 13 Aug 2018 02:47:57 GMT  响应的时间,这可能会有8小时的时区差

报文响应的状态码

状态码状态码英文描述中文含义
1**
100Continue继续。客户端应继续其请求
101Switching Protocols切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
2**
200OK请求成功。一般用于GET与POST请求
201Created已创建。成功请求并创建了新的资源
202Accepted已接受。已经接受请求,但未处理完成
203Non-Authoritative Information非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204No Content无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205Reset Content重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206Partial Content部分内容。服务器成功处理了部分GET请求
3**
300Multiple Choices多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
301Moved Permanently永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303See Other查看其它地址。与301类似。使用GET和POST请求查看
304Not Modified未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305Use Proxy使用代理。所请求的资源必须通过代理访问
306Unused已经被废弃的HTTP状态码
307Temporary Redirect临时重定向。与302类似。使用GET请求重定向
4**
400Bad Request客户端请求的语法错误,服务器无法理解
401Unauthorized请求要求用户的身份认证
402Payment Required保留,将来使用
403Forbidden服务器理解请求客户端的请求,但是拒绝执行此请求
404Not Found服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405Method Not Allowed客户端请求中的方法被禁止
406Not Acceptable服务器无法根据客户端请求的内容特性完成请求
407Proxy Authentication Required请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408Request Time-out服务器等待客户端发送的请求时间过长,超时
409Conflict服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突
410Gone客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411Length Required服务器无法处理客户端发送的不带Content-Length的请求信息
412Precondition Failed客户端请求信息的先决条件错误
413Request Entity Too Large由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414Request-URI Too Large请求的URI过长(URI通常为网址),服务器无法处理
415Unsupported Media Type服务器无法处理请求附带的媒体格式
416Requested range not satisfiable客户端请求的范围无效
417Expectation Failed服务器无法满足Expect的请求头信息
5**
500Internal Server Error服务器内部错误,无法完成请求
501Not Implemented服务器不支持请求的功能,无法完成请求
502Bad Gateway作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503Service Unavailable由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504Gateway Time-out充当网关或代理的服务器,未及时从远端服务器获取请求
505HTTP Version not supported服务器不支持请求的HTTP协议的版本,无法完成处理

4. Servlet简介

动态资源和静态资源

静态资源:在代码运行之前已经写好的资源文件

动态资源:在代码运行过程中动态生成的资源文件

注意:动态资源的过程需要java代码生成需要响应的数据并且转换为响应的报文(参数如果不一样,响应的请求也不一样)

Tomcat接收到请求后的处理过程
  1. tomcat接收到请求后,会将请求报文信息转换为一个HttpServletRequest对象
    • 包含了请求中的所有信息 --> 请求头、请求行、请求体
  2. tomcat同时创建一个HttpServletResponse对象,该对象用于盛装要响应给客户端的信息,并且之后会被转换成响应的报文
    • 包含了响应中的所有信息 --> 响应行、响应头、响应体
  3. 创建自己的Servlet类并且要使其实现Servlet接口
    • 重写抽象方法:service(HttpServletRequest request,HttpServletResponse,response)
      • 从request参数中获取所有请求信息
      • 生成响应给客户端的数据
      • 将响应数据传入response参数
  4. tomcat根据请求中的资源路径找到对应的servlet,将servlet实例化,调用servlet()方法,同时将HttpServletRequest对象和HttpServletResponse对象传入
Tomcat对数据进行验证

Servlet API jar包导入问题

具体见Tomcat导入过程

Content-Type问题
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;

public class UserServlet extends HttpServlet {
    resp.setContentType("text/html");// 设置Content-Type类型
}

url-parttern特别说明

一个servlet-name可以映射多个url-parttern;但是每一个url-parttern只能对应一个servlet-name

在xml标签中表示为:一个servlet-mapping标签可以拥有多个url-pattern标签

url-parttern的精确匹配和模糊匹配

  1. 精确匹配

一般使用/作为通配符

  1. 模糊匹配

一般使用*作为通配符

xml文件映射路径 vs 注解映射路径
<servlet>
    <servlet-name>servlet1</servlet-name>
    <servlet-class>com.itchen.servlet.Servlet1</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>servlet1</servlet-name>
    <url-pattern>/servlet1</url-pattern>
    <url-pattern>/s1</url-pattern>
</servlet-mapping>
@WebServlet("/s2")

通用类

public class Servlet1 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("servlet执行了");
    }
}

Servlet的生命周期(了解)

生命周期对应方法执行时机执行次数
构造对象构造器第一次请求或者容器启动1
初始化init()构造完毕后1
处理服务service(HttpServletRequest req,HttpServletResponse resp)每次请求多次
销毁destory()容器关闭1

Servlet接口的继承结构(了解)

pkWJEWV.md.png

Servlet接口中存在的一些方法:

  • void init(ServletConfig var1)
  • ServletConfig getServletConfig();
  • void service(ServletRequest var1, ServletResponse var2)
  • String getServletInfo();
  • void destroy();

GenericServlet类:实现一些基本的Tomcat配置

HttpServlet类:1. 主要的Service方法,方便调用子类的API(相较于父类的API更丰富)

​ 2. 重载的Service方法,获取请求的方式;根据请求方式调用响应的方法(请求的分发 状态码:405 )。

自己的Servlet类:重新实现Service方法 或者 重写doGet()方法和doPost()方法

​ 1. 接收用户的请求信息

​ 2. 做出响应( 状态码:200 )

ServletConfig对象(了解)

作用:为某一个Servlet提供独立的配置参数;表现形式为:获取init-param参数。(可以有多个)

方式:xml配置文件和注解两种方式

ServletContext对象(掌握)

作用:为所有Servlet提供信息(唯一)

// 示例
ServletContext servletContext = getServletContext();

// 获取不同电脑的文件路径
String path = servletContext.getRealPath("upload");
System.out.println(path);

// 获取项目的上下文路径
String contextPath = servletContext.getContextPath();
System.out.println(contextPath);
通过ServletContext对象进行数据的交互(Service方法中)
// 发送数据
ServletContext servletContext = getServletContext();
servletContext.setAttribute("ka","va");
//servletContext.removeAttribute("ka")
// 接收数据
ServletContext servletContext1 = getServletContext();
String ka = (String)servletContext1.getAttribute("ka");
System.out.println(ka);

HttpServletRequest对象

各种API见阿里网盘-备份盘-大学经历-java Web文档

通过URI和URL了解 ip锁定代理服务器

pkWti80.md.png

HttpServletResponse对象

各种API见阿里网盘-备份盘-大学经历-java Web文档

请求转发

通过HttpServletRequest对象实现,服务端内部将请求发送给另一个处理类

请求转发特点(基础,重要)
  • 请求转发通过HttpServletRequest对象获取请求转发器实现
  • 请求转发是服务器内部的行为,对客户端是屏蔽的
  • 客户端只发送了一次请求,客户端地址栏不变
  • 服务端只产生了一对请求和响应对象,这一对请求和响应对象会继续传递给下一个资源
  • 因为全程只有一个HttpServletRequset对象,所以请求参数可以传递,请求域中的数据也可以传递
  • 请求转发可以转发给其他Servlet动态资源,也可以转发给一些静态资源以实现页面跳转
  • 请求转发可以转发给WEB-INF下受保护的资源
  • 请求转发不能转发到本项目以外的外部资源

响应重定向

通过HttpServletResponse对象实现,服务端先返回一个响应,让客户端再发送一个请求,然后服务端的处理类再处理之后发送的请求,并返回响应。

乱码和路径问题

产生原因:

  1. 数据的编码和解码不属于一个字符集
  2. 使用了不支持某种语言的字符集

乱码问题1

对于使用Tomcat中参数获取的时候的因为编码的字符集和解码的字符集有差异,所以会导致Tomcat乱码问题

解决:

  • get请求:在Tomcat配置中对解码字符集进行修改
  • post请求:在源码调用参数前对请求体内的参数的编码方式进行修改

乱码问题2

在页面显示的时候,前端的编码方式不一定和后端的相同。

解决:

  • 在响应头中设置编码方式(甩锅给前端)
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    resp.setContentType("text/html;charset=UTF-8");
}

请求转发时的编码问题

受保护的资源需要通过请求转发来获取,但是请求转发时不会改变资源的访问路径。这造成了资源的字节码文件路径和在编码中的磁盘结构路径不一致,最终导致了资源访问失败。

相对路径和绝对路径

重定向中的路径问题

和上面文档中的一致

请求转发时的路径问题

相对路径和上面文档一致,绝对路径不需要再添加项目的上下文

绝对路径通解:将项目的上下文环境设置为/

出现hamcrest错误是因为Test测试的问题,老版本mysql记得在连接url上加上设置

5. 会话管理

客户端和服务端之间的多次请求和响应

会话管理是服务器端通过客户端的状态来对客户端进行管理和记录

技术手段:

通过cookie和session配合记录请求状态

cookie的使用

cookie是一个键值型的对象,它在服务器产生,随着响应传会浏览器,如果浏览器对软件中的地址再次访问,cookie将在每次请求中携带。除非浏览器关闭过后再次使用,这个cookie才会消失。

cookie的分类

会话级cookie 直到浏览器关闭结束

持久化cookie 自定义最大时效时间

Session的使用

先获取session对象

HttpSession session = req.getSession();

向Session中存入数据

session.setAttribute("username",username);

注意: Session被用于存储在浏览器中,如果打开另一个客户端,将不会存储原客户端中的Session

客户端每次申请Session对象,服务器都会产生并发送给服务器端
Session每次请求的时效性只有30分钟,可以在web-config中修改

三大域对象
  • web项目中,我们一定要熟练使用的域对象分别是请求域,会话域,应用域

  • 请求域对象是HttpServletRequest,传递数据的范围是一次请求之内及请求转发

  • 会话域对象是HttpSession,传递数据的范围是一次会话之内,可以跨多个请求

  • 应用域对象是ServletContext,传递数据的范围是本应用之内,可以跨多个会话

API功能
void setAttribute(String name,String value)向域对象中添加、修改数据
Object getAttribute(String name)从域对象中获取数据
removeAttribute(String name)移除域对象中的数据
三大域对象一般存放数据
请求域本次业务有关数据
会话域本次会话客户端有关数据
应用域本程序有关数据,eg.Spring框架的IOC容器

6. 过滤器

过滤器是作用目标资源请求的技术规范。javaEE技术规范,javaWeb项目中最最使用的技术之一。

应用场景:登录……

对于一个请求过滤器不止能有一个,多个过滤器会形成过滤器链

生命周期

  1. 构造(X)
  2. 初始化
  3. 过滤
  4. 销毁

注意:filter和servlet不同点在于:filter不能由java控制构造和初始化;而servlet可以

过滤器链

在web.xml中配置filter-mapping的顺序决定了过滤器的工作顺序

使用注解的形式取代xml配置文件

@WebFilter(
    filterName = "loggingFilters",
    initParams = {@WebInitParam(name="dateTimePattern",value="yyyy-MM-dd HH:mm:ss")},
    urlPatterns = {"/servletA","*.html"},
    servletNames = {"servletBName"}
)

7.监听器

在域对象中发生一些事件的时候自动触发一些代码的执行

ServletContextListener监听器在springspringMVC中使用最多

监听对象作用域的相应类或接口
域对象本身变化ServletContextListener
域对象中数据的变化ServletContextAttributeListener
监听Session域的变化HttpSessionListener

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

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

相关文章

Java-链表中倒数最后k个结点

题目&#xff1a; 输入一个长度为 n 的链表&#xff0c;设链表中的元素的值为 ai &#xff0c;返回该链表中倒数第k个节点。 如果该链表长度小于k&#xff0c;请返回一个长度为 0 的链表。 数据范围&#xff1a;0≤&#x1d45b;≤1050≤n≤105&#xff0c;0≤&#x1d44e;…

【Qt5】入门Qt开发教程,一篇文章就够了(详解含qt源码)

目录 一、Qt概述 1.1 什么是Qt 1.2 Qt的发展史 1.3 Qt的优势 1.4 Qt版本 1.5 成功案例 二、创建Qt项目 2.1 使用向导创建 2.2 一个最简单的Qt应用程序 2.2.1 main函数中 2.2.2 类头文件 2.3 .pro文件 2.4 命名规范 2.5 QtCreator常用快捷键 三、Qt按钮小程序 …

69岁的Java之父-------宣布退休了?

文章目录 高斯林的编程之路Java的诞生与Oracle的分道扬镳从Google到AWS退休生活 &#x1f389;欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章专栏&#x…

基于泰坦尼克号生还数据进行 Spark 分析

基于泰坦尼克号生还数据进行 Spark 分析 在这篇博客中&#xff0c;我们将展示如何使用 Apache Spark 分析著名的泰坦尼克号数据集。通过这篇教程&#xff0c;您将学习如何处理数据、分析乘客的生还情况&#xff0c;并生成有价值的统计信息。 数据解析 • PassengerId &#…

C语言笔记30 •单链表经典算法OJ题-2.移除链表元素•

移除链表元素 1.问题 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 2.代码实现&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h&g…

私人订制:模块化沙箱

沙箱技术&#xff0c;作为一种在计算机安全领域广泛应用的技术手段&#xff0c;其核心目的是为应用程序或进程提供一个隔离的运行环境&#xff0c;以限制其对系统资源的访问和潜在的安全风险。随着技术的不断发展&#xff0c;沙箱技术逐渐实现了模块化&#xff0c;这种模块化的…

反向代理概念

反向代理概念 代理&#xff1a; 简单来说&#xff0c;找一个中间人代替我去做一件事情&#xff0c;只要他给我结果就可以。 正向代理: 隐藏客户端的身份&#xff0c;通过代理获取结果 案例1&#xff1a; 1、入职了中国j建设银行&#xff0c;做开发 2、自己电脑不能上网&#x…

2024年全国青少年信息素养大赛复赛及决赛、我知道的有这些

周末两天2024年全国青少年信息素养大赛复赛部分赛区已经结束&#xff0c;还没有考试的同学加紧备考后面的2次&#xff0c;成绩预计&#xff08;7月13日、7月20日两次考试&#xff09;结束之后的2周左右出&#xff0c;2024年全国青少年信息素养大赛决赛将在2024年8月16日-20日在…

程序设计方法论总结

程序设计的所有原则和方法论都是追求一件事——简单——功能简单、依赖简单、修改简单、理解简单。因为只有简单才好用&#xff0c;简单才好维护。因此&#xff0c;不应该以评论艺术品的眼光来评价程序设计是否优秀&#xff0c;程序设计的艺术不在于有多复杂多深沉&#xff0c;…

Vue89-Vuex中多组件共享数据

一、需求 1-1、count组件读取persons数据 借助mapState映射。 1-2、personList组件读取sum数据

聚观早报 | 蚁天鉴2.0发布;理想汽车推送无图NOA

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 7月8日消息 蚁天鉴2.0发布 理想汽车推送无图NOA 特斯拉推送FSD v12.4.3 iQOO Neo9s Pro配色公布 百川智能AI健康…

python--实验7 函数(1)

知识点 函数的定义与调用 函数分类&#xff1a;内置函数和自定义函数。函数定义&#xff1a;使用def关键字定义函数&#xff0c;包括函数名、参数列表和函数体。注意&#xff1a; &#xff08;1&#xff09;即使该函数不需要接收任何参数&#xff0c;也必须保留一对空的圆括号…

探索多模态预训练:MAnTiS、ActionCLIP、CPT与CoOp的Prompt技巧

上一篇博文整理了 预训练新范式&#xff08;Prompt-tuning&#xff0c;Prefix-tuning&#xff0c;P-tuning&#xff09; &#xff0c;主要是围绕NLP上的成果&#xff0c;具体的概念本文也不做过多赘述。本篇文章将主要整理几篇有代表性的Prompt方法在多模态领域中的应用。 Mult…

收银系统源代码-收银端UI风格

智慧新零售收银系统是一套线下线上一体化收银系统&#xff0c;给商户提供含线下收银称重、线上商城、精细化会员管理、ERP进销存、丰富营销活动、移动店务助手等一体化的解决方案。 如Windows版收银&#xff08;exe安装包&#xff09;、安卓版收银&#xff08;apk安装包&#…

“创新电商营销:‘精选返现‘模式引领购物新风尚“

在电子商务领域的蓬勃发展中&#xff0c;创新营销模式层出不穷&#xff0c;其中“精选返现”模式凭借其创新的互动机制与激励机制&#xff0c;赢得了广大消费者的青睐。该模式通过优化价格策略、融入社交互动及构建梯度回馈体系&#xff0c;有效激发了消费者的购买动力&#xf…

从零开始学LangChain(7):Callback模块

回调模块允许接到LLM应用程序的各个阶段&#xff0c;鉴于LLM的幻觉问题&#xff0c;这对于日志记录、监视、流式处理和其他任务非常有用&#xff0c;现在也有专用的工具Helicone&#xff0c;Arize AI等产品可用&#xff0c;下面我们开始看代码&#xff1a; 自定义回调对象 所…

Labview_压缩文件

调用顺序 源文件 生成后的文件 1.新建ZIP文件 生成ZIP文件的路径&#xff1a;为最终生成ZIP文件的路径&#xff0c;需要提供ZIP文件的名称和类型 2.添加文件到压缩文件 源文件路径&#xff1a;为需要压缩的文件路径&#xff0c;非文件夹路径 生成ZIP文件时的路径&#x…

uniapp 数据父传子

文章目录 可能出现的问题 在uni-app中&#xff0c;父组件向子组件传递数据主要通过属性绑定的方式实现。这里提供一个简单的示例来说明如何进行父传子的数据传递&#xff1a; 父组件 准备数据: 在父组件的data中定义要传递的数据。 export default {data() {return {parentMe…

AE-图层

目录 图层初体验 项目、合成和图层的关系 图层的通用参数 锚点&#xff08;快捷键A&#xff09; 位置&#xff08;快捷键P&#xff09; 缩放&#xff08;快捷键S&#xff09; 旋转&#xff08;快捷键R&#xff09; 不透明度&#xff08;快捷键T&#xff09; 向后平移锚…

参数手册 : PXIe-1095

PXIe-1095 起售价 RMB 97,950.00 产品详细信息 PXI机箱类型: PXIe 机箱电源类型: 交流 混合插槽数量: 5 PXI Express插槽数量: 11 冗余硬件选项: 是 最大系统带宽: 24 GB/s 插槽数量: 18 PXI插槽数量: 0 系统定时插槽: 是 槽冷却能力: 82 瓦 简介 PXIe&#xff0c;18槽&am…