Tomcat+Http+Servlet

news2024/11/24 8:20:32

文章目录

    • 1.HTTP
      • 1.1 请求和响应
          • HTTP请求:请求行+请求头+请求体
          • HTTP响应:响应行(状态行)+响应头+响应体
    • 2. Apache Tomcat
      • 2.1 基本使用
      • 2.2 IDEA中创建 Maven Web项目
      • 2.3 IDEA中使用Tomcat
    • 3. Servlet
      • 3.1 Servlet快速入门
      • 3.2 Servlet执行流程
      • 3.3 Servlet 生命周期
      • 3.4 Servlet体系结构
        • 3.4.1 自定义Servlet类
      • 3.5 Servlet urlPattern配置
      • 3.6 XML配置方式编写Servlet

JAVAWeb技术栈

BS架构:
B/S架构(Browser/Server架构)是一种常见的软件架构模式,用于构建Web应用程序。在B/S架构中,浏览器(Browser)作为客户端,通过网络协议(通常是HTTP)与服务器(Server)进行通信,而服务器负责处理客户端的请求并生成响应。

  • 客户端(浏览器):客户端通常是用户使用的Web浏览器,如Chrome、Firefox或Safari。客户端负责向服务器发送请求,并将服务器返回的响应显示给用户。
  • 服务器:服务器是Web应用程序的核心组件,负责接收客户端的请求并生成响应。服务器通常运行在专用的硬件设备或计算机上,并提供处理请求的软件环境

通信

  • 网络通信:B/S架构依赖于网络通信来实现客户端和服务器之间的数据传输。通常使用HTTP协议进行通信,客户端发送HTTP请求到服务器,服务器处理请求并生成HTTP响应返回给客户端。
    数据交互(动态资源)
  • 数据交互:客户端通过发送请求参数(如表单数据、URL参数等)向服务器发送数据。服务器可以使用不同的技术(如JavaServlet、JSP、ASP.NET等)来处理这些数据,并对其进行验证、处理和存储。
    界面(静态资源)
  • 前端界面:B/S架构中的前端界面通常由HTML、CSS和JavaScript等技术来构建和呈现。

在这里插入图片描述

1.HTTP

HTTP(超文本传输协议)是一种用于在Web上进行通信的协议。

  • 它定义了客户端和服务器之间进行请求和响应的规范。
  • HTTP是基于TCP/IP协议栈的应用层协议,使用在Web浏览器和Web服务器之间。
  • HTTP基于请求和响应模型的,一次请求对应一次响应
  • HTTP是无状态的协议,即:每一次请求响应都是独立的
    • 缺点:多次请求不能共享数据
    • 优点: 速度快

1.1 请求和响应

url格式

http://www.itcast.cn:8080/news/index.html?uid=123&page=1
  • 协议:“http”,常见的协议有HTTP,HTTPS、FTP等
  • ip地址或域名:“www.itcast.cn”,也可以使用IP地址作为域名使用
  • 端口:“8080”,端口可以省略,默认端口(HTTP:80,HTTPS:443,FTP:21)
  • 资源路径:“/news/index.html”
  • 查询参数:“uid=123&page=1”,可以允许有多个参数,多个之间用“&”作为分隔符

http协议特点

  • 简单快速
  • 无连接
  • 无状态;
  • 灵活;
  • 支持C/S模式
HTTP请求:请求行+请求头+请求体

在这里插入图片描述

请求行:
说明请求方法、要访问的资源以及所使用的协议版本;

  • 请求方法:
    GET:从服务器获取资源(一项或多项)
    POST:在服务器新建一个资源
    PUT:在服务器更新资源(客户端提供改变后的完整资源)
    DELETE:从服务器删除资源

请求头:
紧接着请求行,请求头部由键值对组成,每行一对。 请求头部通知服务器有关于客户端请求的信息,典型 的请求头有:

  • Host:表示请求的主机名称
  • User-Agent:产生请求的浏览器类型
  • Accept:客户端(浏览器)可接受的资源类型
  • Content-Type:请求体数据的类型
  • Authorization:用于发送身份验证凭据。
  • Cookie:用于发送服务器分配的Cookie信息。

请求体
请求体不在GET方法中使用,经常在POST、PUT方法中使用

  • 请求体的数据可以是:表单数据、文本、XML、JSON
  • 与请求数据相关的最常使用的请求头是Content-Type和Content-Length
- - 注意事项:- - 
请求行中的请求方法指定了对资源的操作类型,如获取、创建、更新或删除。
请求头提供了关于请求的附加信息,如客户端特性、所接受的响应类型等。
请求体用于传输实际数据,通常在POST、PUT等方法中使用。

Q1: GET和POST请求的区别
- 语义方面:
GET方法用于从服务器获取资源。GET请求不应该对服务器产生副作用,即不应该修改服务器状态。
POST方法用于向服务器提交数据,通常用于创建新资源或发送更新请求。POST请求可以对服务器产生副作用,即可以修改服务器状态。
- 数据传输方面:
GET请求将数据附加在URL的查询参数中,以键值对的形式发送。
POST请求将数据放在请求体中进行传输,而不是作为URL的一部分。
这使得POST请求更适合传输大量数据或敏感数据,因为请求体中的数据不会直接暴露在URL中。
- 数据长度方面:
GET请求的数据传输长度通常受到URL长度的限制。
POST请求的数据传输长度没有特定的限制,但服务器和网络基础设施可能会设置其自己的限制。
- 缓存方面:
GET请求通常可以被浏览器缓存,浏览器可以缓存GET请求的响应并在下次请求相同资源时重用缓存的响应,以提高性能。
POST请求通常不被浏览器缓存,因为它们可能具有副作用,且每个POST请求可能会产生不同的结果。




HTTP响应:响应行(状态行)+响应头+响应体

HTTP响应也由三个部分组成,分别是:状态行、响应头、响应体
在这里插入图片描述

状态行

状态行由协议版本号、状态码、状态消息三部分组成

状态码有三位数字组成,第一个数字定义了响应的类别:
1xx:响应中--表示请求已接收,正常处理中或需要进一步操作;
2xx:成功--表示请求已被成功接收、理解、接受 
3xx:重定向--要完成请求必须进行更进一步的操作  
4xx:客户端错误--客户发送的请求存在问题有语法错误或请求无法实现 
5xx:服务器端错误--服务器在处理请求时出现了问题,服务器未能实现合法的请求
请求码说明
100 Continue(继续):表示服务器已经接收到了请求的头部,并且客户端应该继续发送请求的主体部分。
101 Switching Protocols(切换协议):表示服务器正在根据客户端的请求切换协议。例如,客户端可以发送Upgrade请求头,请求将连接从HTTP协议切换到WebSocket协议。
102 Processing(处理中):表示服务器正在处理请求,但尚未完成处理。
200 OK(成功):表示请求已成功处理,并且服务器返回了请求的内容。
201 Created(已创建):表示服务器成功创建了新的资源。通常在使用POST请求创建资源时返回.
300 Multiple Choices(多种选择):表示请求有多个可供选择的资源,需要客户端进行进一步的选择。
301 Moved Permanently(永久重定向):表示请求的资源已永久移动到新的URL。客户端应该使用新的URL进行后续的请求。
302 Found(临时重定向):表示请求的资源暂时移动到了新的URL。客户端应该继续使用原始的URL进行后续的请求。
400 Bad Request(错误请求):表示服务器无法理解客户端发送的请求,通常是由于请求语法错误或参数验证失败导致的。
401 Unauthorized(未授权):表示客户端需要进行身份验证才能访问请求的资源。需要在请求中提供有效的身份验证凭据。
404 Not Found(未找到):表示请求的资源在服务器上不存在,无法找到。这是最常见的客户端错误响应码。
500 Internal Server Error(服务器内部错误):表示服务器在处理请求时遇到了未知的内部错误,导致无法完成请求。
501 Not Implemented(未实现):表示服务器不支持或未实现请求的功能。通常用于指示服务器无法满足请求的特定功能

\

响应头

响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理响应数据

常见的响应头
Content-Type:响应内容的类型,例如"text/html"表示HTML文档,"application/json"表示JSON数据等。
Content-Length:指定响应体的字节长度,用于表示响应内容的大小。
Location:用于重定向响应中,指定重定向的目标URL。
Cache-Control:用于控制响应的缓存行为,例如设置缓存的有效期、是否可缓存等。
Set-Cookie:设置响应中的Cookie,用于在客户端存储数据或维持会话状态。
Server:指定服务器软件的名称和版本号。

响应体

响应体就是响应的消息体,数据可以是普通文本、XML、JSON、HTML源码

2. Apache Tomcat

Web服务器
Web服务器是一种软件或计算机程序,用于接收HTTP请求并返回HTTP响应。它在Web应用程序和客户端之间充当中间层,负责处理和传递网络请求,并提供所请求的资源或执行特定的操作。
//通俗的讲:Web服务器就是把我们自己本地写的html网页放到一个平台,这个平台其他用户通过输入你的IP地址和端口号等也可以访问到。
功能

  • 接收和解析HTTP请求:Web服务器监听指定的端口,接收来自客户端的HTTP请求,并解析请求中的方法、URL、请求头、请求体等信息。
  • 处理请求、生成和发送HTTP响应
  • 将web项目部署到服务器中,对外提供网上浏览服务

常见的Web服务器

  • Nginx:Nginx是一个高性能的开源Web服务器和反向代理服务器。它以轻量级和高并发性能著称,适用于处理大量并发连接
  • Apache HTTP Server:Apache是最流行的开源Web服务器软件之一。它具有稳定性、可靠性和灵活性,广泛用于各种Web应用和网站。

Tomcat是一个轻量级的Web服务器,支持Servlet/JSP少量JavaEE规范,也称为Web容器,Servlet容器。

注意:
Tomcat的启动与Java Development Kit (JDK) 的位置是相关的。Tomcat是一个Java Web应用服务器,它需要Java运行时环境来执行。当你启动Tomcat时,它会查找并使用Java命令来启动。
Tomcat在启动时会按照以下顺序查找JDK:

  1. 检查JAVA_HOME环境变量:Tomcat会首先查找JAVA_HOME环境变量,该变量指向JDK的安装目录。如果JAVA_HOME已经设置,并且指向有效的JDK路径,Tomcat将使用该JDK来启动。

  2. 检查系统路径:如果JAVA_HOME未设置,Tomcat会查找系统路径(PATH环境变量)中的可执行文件java来启动。它将使用找到的第一个java命令执行。

2.1 基本使用

下载:
在这里插入图片描述
配置环境变量
在这里插入图片描述

启动:双击bin\startup.bat
(控制台中文乱码解决:修改conf/logging.properties

java.util.logging.ConsoleHandler.encoding = GBK (utf-8改为GBK)

在这里插入图片描述
验证:在浏览器输入localhost:8080
在这里插入图片描述
修改配置:

1.修改启动端口号:conf/server.xml 在这里插入图片描述

部署项目

将项目放到webapps目录下,即部署完成。

2.2 IDEA中创建 Maven Web项目

项目结构
在这里插入图片描述

  • 编译后的Java字节码文件和resources的资源文件,放到WEB-INF下的classes目录下
  • pomxml中依赖坐标对应的jar包,放入WEB-INF下的lib目录下

IDEA创建Maven Web项目步骤

视频地址: https://www.bilibili.com/video/BV1Qf4y1T7Hx/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 IDEA中使用Tomcat

视频地址:https://www.bilibili.com/video/BV1Qf4y1T7Hxf

方法1:将本地的tomcat集成到IDEA中,然后进行项目部署;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方法2:在pom文件里添加插件

在这里插入图片描述


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.imooc</groupId>
  <artifactId>web-demo</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>

  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <!-- tomcat 插件 -->
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <port>81</port>
          <path>/</path>
        </configuration>
      </plugin>
    </plugins>
  </build>


</project>

3. Servlet

Servlet是一种Java语言编写的服务器端程序,用于处理客户端发起的请求并返回响应。

  • Servlet 是javaEE规范之一,其实就是一个接口,将来我们需要定义Servlet实现类,并由web服务器运行。
  • Servlet运行在支持Java Servlet规范的Web服务器中,可以接收HTTP请求、处理请求参数、生成动态内容、访问数据库等等。
  • Servlet是Java Web开发的核心技术之一,它可以与JSP、JavaBean等技术结合使用,构建出功能强大的Web应用程序。

3.1 Servlet快速入门

步骤:

  1. 创建web项目,导入Servlet依赖坐标;
  2. 定义一个类,实现Servlet接口,并重写里边的所有方法,并在service方法里输入一句话;
  3. 配置:在类上使用@WebServlet注解,配置该Servlet访问路径;
  4. 访问:启动Tomcat,浏览器输入url访问该Servlet;
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

在这里插入图片描述

//2. 定义一个类,实现Servlet接口,并重写里边的所有方法,并在service方法里输入一句话;
package com.itheima;

import javax.servlet.*;
import java.io.IOException;

public class web implements Servlet {
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    public ServletConfig getServletConfig() {
        return null;
    }

    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("servlet hello world");
    }

    public String getServletInfo() {
        return null;
    }

    public void destroy() {

    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 Servlet执行流程

在这里插入图片描述

Q1: Servlet 由谁创建? Servlet方法由谁调用?

  • Servlet由web服务器创建,Servlet方法由web服务器调用。

Q2:服务器怎么知道Servlet中一定有service方法?

  • 因为我们自定义的Servlet,必须实现Servlet接口并复写其方法,而Servlet接口中有service方法

3.3 Servlet 生命周期

在这里插入图片描述

//方法
1.service() 方法:
- Servlet接口中最重要的方法是service()方法。
- 该方法用于处理HTTP请求,并根据请求的方法(GET、POST、PUT、DELETE等)调用对应的doGet()、doPost()、doPut()、doDelete()等方法进行处理。
- 在service()方法中,开发人员可以根据具体的需求编写自己的处理逻辑。

2.init() 和 destroy() 方法:
- init()方法在Servlet被初始化时调用,可以在该方法中进行一些初始化操作,例如加载配置文件、建立数据库连接等。
- - destroy()方法在Servlet被销毁时调用,可以在该方法中进行一些资源释放操作,例如关闭数据库连接、释放内存等。

3.doGet() 和 doPost() 方法:
- 这两个方法是service()方法中被调用的具体处理HTTP请求的方法。
- doGet()方法用于处理GET请求,doPost()方法用于处理POST请求。

4.getServletConfig() 和 getServletInfo() 方法:
- 这两个方法用于获取Servlet的配置信息和信息描述。
- getServletConfig()方法返回一个ServletConfig对象,该对象包含了Servlet的配置参数。- getServletInfo()方法返回一个描述性字符串,用于描述Servlet的信息。

3.4 Servlet体系结构

Aim:简化开发
在这里插入图片描述

HttpServlet类
HttpServlet类是Java Servlet规范中的一个抽象类,它扩展自GenericServlet类,并提供了用于处理HTTP请求和响应的方法。
//通俗来说,我们开发B/S架构的web项目,都是针对HTTP协议,所以我们自定义Servlet都会继承HttpServlet

HttpServlet抽象类的方法及说明

方法说明
doGet() 和 doPost():这两个方法用于处理GET和POST请求。
service():根据请求的HTTP方法(GET、POST、PUT、DELETE等)自动调用对应的doGet()、doPost()、doPut()、doDelete()等方法。如果业务逻辑不依赖HTTP方法,可以直接重写service()方法。
init() 和 destroy():这两个方法用于Servlet的初始化和销毁。
getServletContext():该方法返回一个ServletContext对象,用于访问Servlet上下文。
//get和post
package com.itheima.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;

@WebServlet("/demo")
public class ServletDemo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.doGet(req, resp);
        System.out.println("get...");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.doPost(req, resp);
        System.out.println("post...");
    }
}

在这里插入图片描述
post
编写测试网页

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
<body>
<form action="/web-demo/demo" method="post">
    <input name="username"><input type="submit">
</form>
</body>
</html>

3.4.1 自定义Servlet类

在service方法中,根据请求的不同方式(GET或POST),分别调用了doGet和doPost方法。这意味着你可以在这两个方法中编写处理GET请求和POST请求的逻辑

package com.itheima.web;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

public class MyHttpServlet implements Servlet {
    @Override
    public void init(ServletConfig config) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        // 根据请求方式的不同,进行分别的处理

        HttpServletRequest request = (HttpServletRequest) req;

        //1. 获取请求方式
        String method = request.getMethod();
        //2. 判断
        if("GET".equals(method)){
            // get方式的处理逻辑

            doGet(req,res);
        }else if("POST".equals(method)){
            // post方式的处理逻辑

            doPost(req,res);
        }
    }

    protected void doPost(ServletRequest req, ServletResponse res) {
    }

    protected void doGet(ServletRequest req, ServletResponse res) {
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

继承MyServlet

package com.itheima.web;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;

@WebServlet("/demo1")
public class ServletDemo1 extends MyHttpServlet{

    @Override
    protected void doPost(ServletRequest req, ServletResponse res) {
        System.out.println("post...!");
    }

    @Override
    protected void doGet(ServletRequest req, ServletResponse res) {
        System.out.println("get.....!");
    }
}

在这里插入图片描述
在这里插入图片描述

3.5 Servlet urlPattern配置

servlet urlpattern是指在web.xml文件中配置servlet时,用于指定servlet的访问路径的一种方式。

  • 它可以通过正则表达式来匹配不同的URL路径,从而将请求分发给不同的servlet处理。
    // 例如,可以将urlpattern设置为“/hello”,这样当用户访问“http://localhost:8080/hello”时,就会调用对应的servlet来处理请求。
  • 一个Servlet可以配置多个urlPattern
    //例如:@WebServlet(urlPattern = {“/demo1”,“/demo2”})
URL Pattern配置规则:

1.精确匹配:使用具体的URL路径来匹配。
例如,/hello表示只匹配路径为/hello的请求。

2.前缀匹配:使用通配符*来匹配路径的前缀。
例如,/api/*表示匹配以/api/开头的所有请求,如/api/users、/api/products等。

3.后缀匹配:使用通配符*来匹配路径的后缀。(注意不要写斜杠)
例如,*.html表示匹配以.html结尾的请求,如index.html、about.html等。

4.扩展名匹配:使用通配符*来匹配指定扩展名的请求。(注意不要加斜杠)
例如,*.do表示匹配以.do结尾的请求,如/login.do、/register.do等。

5.路径匹配:使用通配符**来匹配多级路径。
例如,/api/**表示匹配以/api/开头的所有请求,无论后面还有多少级路径
如/api/users/getAll、/api/products/getById等。

6.正则表达式匹配:使用正则表达式来匹配路径。
例如,/user/[0-9]+表示匹配以/user/后面跟着一个或多个数字的请求,如/user/123、/user/456等。

3.6 XML配置方式编写Servlet

步骤:

  1. 编写Servlet类
  2. 在web.xml中配置该类
package com.itheima.web;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;

public class ServletDemo13 extends MyHttpServlet {

    @Override
    protected void doGet(ServletRequest req, ServletResponse res) {

        System.out.println("demo13 get...");
    }
    @Override
    protected void doPost(ServletRequest req, ServletResponse res) {
    }
}

在web.xml中配置该Servlet

<?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_4_0.xsd"
         version="4.0">
    
    
    
    <!-- 
        Servlet 全类名
    -->
    <servlet>
        <!-- servlet的名称,名字任意-->
        <servlet-name>demo13</servlet-name>
        <!--servlet的类全名-->
        <servlet-class>com.itheima.web.ServletDemo13</servlet-class>
    </servlet>

    <!-- 
        Servlet 访问路径
    -->
    <servlet-mapping>
        <!-- servlet的名称,要和上面的名称一致-->
        <servlet-name>demo13</servlet-name>
        <!-- servlet的访问路径-->
        <url-pattern>/demo13</url-pattern>
    </servlet-mapping>
</web-app>

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

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

相关文章

Python 3 使用Hadoop 3之MapReduce总结

MapReduce 运行原理 MapReduce简介 MapReduce是一种分布式计算模型&#xff0c;由Google提出&#xff0c;主要用于搜索领域&#xff0c;解决海量数据的计算问题。 MapReduce分成两个部分&#xff1a;Map&#xff08;映射&#xff09;和Reduce&#xff08;归纳&#xff09;。…

yolov8训练进阶:从配置文件读入配置参数

yolov8官方教程提供了2种训练方式&#xff0c;一种是通过命令行启动训练&#xff0c;一种是通过写代码启动。 命令行的方式启动方便&#xff0c;通过传入参数可以方便的调整训练参数&#xff0c;但这种方式不方便记录训练参数和调试训练代码。 自行写训练代码的方式更灵活&am…

【Vue框架】用户和请求

前言 在上一篇 【Vue框架】Vuex状态管理 针对Vuex状态管理以getters.js进行说明&#xff0c;没有对其中state引入的对象进行详细介绍&#xff0c;因为整体都比较简单&#xff0c;也就不对全部做详细介绍了&#xff1b;但其中的user.js涉及到获取用户的信息、前后端请求的token…

今天来给大家聊一聊什么是Hierarchical-CTC模型

随着人工智能领域的不断发展&#xff0c;语音识别技术在日常生活和工业应用中扮演着越来越重要的角色。为了提高识别准确性和效率&#xff0c;研究人员不断探索新的模型和算法。在这个领域中&#xff0c;Hierarchical-CTC模型引起了广泛的关注和兴趣。本文将介绍什么是Hierarch…

JavaFx基础学习【二】:Stage

一、介绍 窗口Stage为图中标绿部分&#xff1a; 实际为如下部分&#xff1a; 不同的操作系统表现的样式不同&#xff0c;以下都是以Windows操作系统为例&#xff0c;为了使大家更清楚Stage是那部分&#xff0c;直接看以下图&#xff0c;可能更清楚&#xff1a; 有点潦草&…

MachineLearningWu_15/P70-P71_AdamAndConv

x.1 算法参数更新 我们使用梯度下降算法来自动更新参数&#xff0c;但是由于学习率的不好选择性&#xff0c;我们有时候会下降地很快&#xff0c;有时候下降地很慢&#xff0c;我们期望有一种方式能够自动调整学习率的变化&#xff0c;这里引入Adaptive Moment Estimation/Ada…

City Walk带动茶饮品牌售1200万,媒介盒子带你探究奥秘

年轻人生活趋势又出现了一个新鲜词——City Walk&#xff0c;简单来说&#xff0c;City Walk就是没有目的地&#xff0c;没有目标&#xff0c;只是出行&#xff0c;填充自己的生活。 其实这个词源于gap year&#xff0c;而这个说法一直是国外的一些毕业生&#xff0c;大多会在…

解决方案 | 法大大加速医疗器械行业创新升级

科技的不断进步&#xff0c;带动医疗器械产品不断创新升级。数字化、智能化的技术也开始广泛应用在医疗器械行业中。行业的蓬勃发展&#xff0c;进一步驱动了医疗器械行业规范化管理政策的出台&#xff0c;2019年&#xff0c;《医疗器械产品注册管理办法》&#xff08;2019&…

Mongodb (四十一)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、概述 1.1 相关概念 1.2 特性 二、应用场景 三、安装 四、目录结构 五、默认数据库 六、 数据库操作 6.1 库操作 6.2 文档操作 七、MongoDB数据库备份 7.1 备…

Mybatis-Plus(四 )--其他功能和ActiveRecord和MybatisX和AutoGenerator

一.其他功能 1.自动填充 有些时候我们可能会在插入或者更新数据时&#xff0c;希望有些字段可以自动填充数据&#xff0c;比如密码&#xff0c;version等。 【1】添加TableField注解 TableField(fillFieldFill.INSERT)//插入数据时进行填充 private String password; 除了…

【机密计算实践】OPEN Enclave SDK 安装与构建

机密计算是基于硬件支持的可信执行环境的&#xff0c;比如 Intel SGX 硬件技术上面的 enclave 以及 Arm Trustzone 上的 OT-TEE&#xff0c;不过这些异构的 TEE 之间差异还是蛮大的&#xff0c;所以亟需一种能够屏蔽 TEE 差异软件中间件或者 SDK&#xff0c;这就是本文将要提到…

我学会这些车载技术,是不是就可以进【小米】车企?

作者&#xff1a;阿刁 随着智能化和电动化的发展&#xff0c;车载开发领域的前景非常广阔。许多手机厂商也纷纷加入进来&#xff0c;华为、小米等手机巨头也相继推出新能源汽车。所以在未来&#xff0c;车载系统将成为汽车的核心部分&#xff0c;涵盖车辆的控制、信息娱乐、智能…

“先锋龙颜美学”,比亚迪宋L 完成工信部申报,单双电机正式上市

根据工信部最新发布的《道路机动车辆生产企业及产品公告》&#xff08;第 374 批&#xff09;&#xff0c;我们得知比亚迪汽车公司的新款车型宋 L 已经顺利完成申报&#xff0c;并成功获得核准。这款车型将会有两个版本&#xff0c;分别是单电机和双电机版本。 此外&#xff0c…

Redis——String类型详解

概述 Redis中的字符串直接按照二进制的数据存储&#xff0c;不会有任何的编码转换&#xff0c;因此存放什么样&#xff0c;取出来的时候就什么样。而MySQL默认的字符集是拉丁文&#xff0c;如果插入中文就会失败 Redis中的字符串类型不仅可以存放文本数据&#xff0c;还可以存…

GloVe、子词嵌入、BPE字节对编码、BERT相关知识(第十四次组会)

GloVe、子词嵌入、BPE字节对编码、BERT相关知识(第十四次组会) Glove子词嵌入上游、下游任务监督学习、无监督学习BERTGlove 子词嵌入 上游、下游任务 监督学习、无监督学习 BERT

强制Edge或Chrome使用独立显卡【WIN10】

现代浏览器通常将图形密集型任务卸载到 GPU&#xff0c;以改善你的网页浏览体验&#xff0c;从而释放 CPU 资源用于其他任务。 如果你的系统有多个 GPU&#xff0c;Windows 10 可以自动决定最适合 Microsoft Edge 自动使用的 GPU&#xff0c;但这并不一定意味着最强大的 GPU。 …

8.14 刷题【7道】

二叉树 1. 树中两个结点的最低公共祖先 原题链接 方法一&#xff1a;公共路径 分别找出根节点到两个节点的路径&#xff0c;则最后一个公共节点就是最低公共祖先了。 时间复杂度分析&#xff1a;需要在树中查找节点&#xff0c;复杂度为O(n) /*** Definition for a binary…

CUDA、cuDNN以及Pytorch介绍

文章目录 前言一、CUDA二、cuDNN三、Pytorch 前言 在讲解cuda和cuDNN之前&#xff0c;我们首先来了解一下英伟达&#xff08;NVIDA&#xff09;公司。 NVIDIA是一家全球领先的计算机技术公司&#xff0c;专注于图形处理器&#xff08;GPU&#xff09;和人工智能&#xff08;…

买机票系统---(java实现)

/* * 案例 * 卖机票 * 需求&#xff1a;机票价格按照淡季和旺季&#xff0c;头等舱和经济舱收费&#xff0c;输入机票原价&#xff0c;月份和头等舱或经济舱 * 旺季&#xff08;5-10月&#xff09;&#xff1a;头等舱9折&#xff0c;经济舱8.5折 * 淡季&#xff08;11-来年4月&…

小目标检测(5)——有线硬触发和有线软触发架构学习

文章目录 引言正文PLC介绍有线硬触发有线软触发硬件接口 总结引用 引言 之前花了很多时间也就是仅仅看懂了基本代码,最近和老师交流之后,发现还有很多东西都需要弄.最终的灯检机,并不是直接接上计算机就使用的,并不是单纯通过计算机控制的,还有一个叫做PLC(可编程逻辑控制器),…