javaEE-02-servlet

news2024/9/27 1:08:58

文章目录

  • Servlet 技术
    • servlet程序示例
      • 通过实现Servlet接口实现Servlet程序
      • 通过继承 HttpServlet 实现 Servlet 程序
    • Servlet的声明周期
  • ServletConfig 类
  • ServletContext 类
  • HttpServletRequest 类
    • 请求的转发
  • HttpServletResponse 类
    • 请求重定向
  • HTTP 协议
    • GET 请求
    • Post请求
    • 常用请求说明
    • 常用的响应码说明
    • MIME 类型说明
  • Web 中的相对路径和绝对路径
  • web 中 / 斜杠的不同意义

Servlet 技术

Servlet 是 JavaEE 规范之一,其是javaWeb中的三大组件之一,三大组件分别为Servlet 程序、Filter 过滤器、Listener 监听器,它可以接收客户端发送过来的请求,并响应数据给客户端。

servlet程序示例

通过实现Servlet接口实现Servlet程序

  1. 在WEB-INF下面创建一个lib目录,导入对应的jar包(javax.servlet.jar),这里要将该jar包添加至库。
    在这里插入图片描述

在这里插入图片描述

  1. 创建一个servlet程序HelloServlet
import javax.servlet.*;
import java.io.IOException;

public class HelloServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

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

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {

    }

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

    @Override
    public void destroy() {

    }
}

  1. 到 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 标签给Tomcat 配置Servlet 程序 -->
    <servlet>
    <!--servlet-name 标签 Servlet 程序起一个别名(一般是类名) -->
        <servlet-name>HelloServlet</servlet-name>
        <!--servlet-class 是Servlet 程序的全类名-->
        <servlet-class>HelloServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
    <!--servlet-name 标签的作用是告诉服务器,我当前配置的地址给哪个Servlet 程序使用-->
        <servlet-name>HelloServlet</servlet-name>
        <!--url-pattern 标签配置访问地址 <br/>
/ 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径	<br/>
/hello 表示地址为:http://ip:port/工程路径/hello	<br/>
-->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>
  1. 启动tomcat服务器,访问http://localhost:8080/javaee_tomcat_war_exploded/hello路径

在这里插入图片描述
这里我们可以看到访问到了,但是出现了乱码,下面我们来解决这个问题。

  1. 打开idea中tomcat的配置图形化界面中,在VM options里面加上一句-Dfile.encoding=utf-8这句话
    在这里插入图片描述

  2. 重新启动项目,然后重新访问http://localhost:8080/javaee_tomcat_war_exploded/hello这个地址。

在这里插入图片描述

通过继承 HttpServlet 实现 Servlet 程序

  1. 在刚才的项目中创建一个DemoServlet类
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class DemoServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("有人访问了servlet程序");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

  1. 配置对应的映射路径
<?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-name>DemoServlet</servlet-name>
        <servlet-class>DemoServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>DemoServlet</servlet-name>
        <url-pattern>/demo</url-pattern>
    </servlet-mapping>
</web-app>
  1. 启动服务器查看请求是否成功http://localhost:8080/javaee_tomcat_war_exploded/demo

在这里插入图片描述

Servlet的声明周期

1、执行 Servlet 构造器方法
2、执行 init 初始化方法
3、执行 service 方法
4、执行 destroy 销毁方法
第一、二步,是在第一次访问,的时候创建 Servlet 程序会调用。第三步,每次访问都会调用。第四步,在 web 工程停止的时候调用。

ServletConfig 类

Servlet 程序的配置信息类,Servlet 程序和 ServletConfig 对象都是由 Tomcat 负责创建,我们负责使用。创建一个servlet程序的时候就会创建一个对应ServletConfig对象。

作用:
1、可以获取 Servlet 程序的别名 servlet-name 的值
2、获取初始化参数 init-param
3、获取 ServletContext 对象

代码示例:

  1. 在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_4_0.xsd"
         version="4.0">
    
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>HelloServlet</servlet-class>

        <init-param>
            <param-name>username</param-name>
            <param-value>root</param-value>
        </init-param>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>DemoServlet</servlet-name>
        <servlet-class>DemoServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>DemoServlet</servlet-name>
        <url-pattern>/demo</url-pattern>
    </servlet-mapping>
</web-app>
  1. 在HelloServlet类中的init()添加如下代码
import javax.servlet.*;
import java.io.IOException;

public class HelloServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        // 1、可以获取Servlet 程序的别名servlet-name 的值
        System.out.println("HelloServlet 程序的别名是:" + servletConfig.getServletName());
        // 2、获取初始化参数init-param
        System.out.println("初始化参数 username 的值是;" + servletConfig.getInitParameter("username"));
        // 3、获取ServletContext 对象
        System.out.println(servletConfig.getServletContext());
    }

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

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("有人访问了servlet程序。。。");
    }

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

    @Override
    public void destroy() {

    }
}

  1. 运行tomcat服务器,结果如图
    在这里插入图片描述

ServletContext 类

ServletContext 是一个接口,它表示 Servlet 上下文对象,一个 web 工程,只有一个 ServletContext 对象实例。并且它还是一个域对象,在 web 工程部署启动的时候创建。在 web 工程停止的时候销毁。

域对象:
可以像 Map 一样存取数据的对象,叫域对象。

存数据取数据删除数据
Mapput()get()remove()
域对象setAttribute()getAttribute()removeAttribute();

作用:
1、获取 web.xml 中配置的上下文参数 context-param
2、获取当前的工程路径,格式: /工程路径
3、获取工程部署后在服务器硬盘上的绝对路径
4、像 Map 一样存取数据

代码示例:

  1. 在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_4_0.xsd"
         version="4.0">
    
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>HelloServlet</servlet-class>

        <init-param>
            <param-name>username</param-name>
            <param-value>root</param-value>
        </init-param>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>DemoServlet</servlet-name>
        <servlet-class>DemoServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>DemoServlet</servlet-name>
        <url-pattern>/demo</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>password</param-name>
        <param-value>123456</param-value>
    </context-param>
</web-app>
  1. 在DemoServlet中添加如下代码
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class DemoServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 1、获取web.xml 中配置的上下文参数context-param
        ServletContext context = getServletConfig().getServletContext();

        String password = context.getInitParameter("password");
        System.out.println("context-param 参数 password 的值是:" + password);
        //	2、获取当前的工程路径,格式: /工程路径
        System.out.println("有人访问了servlet程序");
        System.out.println( "当前工程路径:" + context.getContextPath() );
        // 3、获取工程部署后在服务器硬盘上的绝对路径
        /**
         *	/ 斜杠被服务器解析地址为:http://ip:port/工程名/ 映射到IDEA 代码的web 目录<br/>
         */
        System.out.println(" 工 程 部 署 的 路 径 是 :" + context.getRealPath("/"));
        System.out.println("工程下 css 目录的绝对路径是:" + context.getRealPath("/css"));
        System.out.println("工程下 imgs 目录 1.jpg 的绝对路径是:" + context.getRealPath("/imgs/1.jpg"));
        // 4、像 Map 一样存取数据
        context.setAttribute("key1", "value1");
        System.out.println("Context1 中获取域数据 key1 的值是:"+ context.getAttribute("key1"));
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

  1. 启动项目,访问对应的路径http://localhost:8080/javaee_tomcat_war_exploded/demo

在这里插入图片描述

HttpServletRequest 类

通过 HttpServletRequest 对象,获取到所有请求的信息。
HttpServletRequest 类的常用方法:

  • getRequestURI(): 获取请求的资源路径
  • getRequestURL(): 获取请求的统一资源定位符(绝对路径)
  • getRemoteHost(): 获取客户端的 ip 地址
  • getHeader(): 获取请求头
  • getParameter():获取请求的参数
  • getParameterValues(): 获取请求的参数(多个值的时候使用)
  • getMethod(): 获取请求的方式GET 或POST
  • setAttribute(key, value): 设置域数据
  • getAttribute(key): 获取域数据
  • getRequestDispatcher(): 获取请求转发对象

代码示例:

  1. 创建一个html页面为login.html,内容如下
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="http://localhost:8080/javaee_tomcat_war_exploded//request" method="get">
  用户名:<input type="text" name="username"><br/>
  密码:<input type="password" name="password"><br/>
  兴趣爱好:<input type="checkbox" name="hobby" value="cpp">C++
  <input type="checkbox" name="hobby" value="java">Java
  <input type="checkbox" name="hobby" value="js">JavaScript<br/>
  <input type="submit">
</form>
</body>
</html>

在这里插入图片描述

  1. 创建一个新的servlet程序HttpRequestServlet
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;

public class HttpRequestServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取请求的资源路径
        System.out.println("URI => " + req.getRequestURI());
        //获取请求的统一资源定位符(绝对路径)
        System.out.println("URL => " + req.getRequestURL());
        //获取目标ip地址
        System.out.println("客户端 ip 地址 => " + req.getRemoteHost());
        //获取请求头
        System.out.println("请求头 User-Agent ==>> " + req.getHeader("User-Agent"));
        //	获取请求的方式GET 或POST
        System.out.println( "请求的方式 ==>> " + req.getMethod() );
        // 获取请求参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String[] hobby = req.getParameterValues("hobby");
        System.out.println(" 用 户 名 :" + username);
        System.out.println(" 密 码 :" + password);
        System.out.println("兴趣爱好:" + Arrays.asList(hobby));
    }

}

  1. 配置映射路径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_4_0.xsd"
         version="4.0">
	<servlet>
        <servlet-name>HttpRequestServlet</servlet-name>
        <servlet-class>HttpRequestServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>HttpRequestServlet</servlet-name>
        <url-pattern>/request</url-pattern>
    </servlet-mapping>
</web-app>
  1. 启动服务,访问对应的login.html输入信息之后查看请求结果
    在这里插入图片描述
    这里输入了用户名admin,密码为123456,兴趣爱好全选的结果为:
    在这里插入图片描述

请求的转发

服务器收到请求后,从一次资源跳转到另一个资源的操作叫请求转发。

代码示例:

  1. 创建一个servlet1和servlet2程序来分别处理俩个业务

Servlet1类:

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class Servlet1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取到点单的客户名
        String username = req.getParameter("username");
        System.out.println(username + "觉得天气太热了在古茗买了一杯果茶");
        // 买了奶茶给了一个纸片可以去柜台换奖品
        req.setAttribute("key1", "纸片");
        // 业务被请求转发到柜台
        RequestDispatcher requestDispatcher = req.getRequestDispatcher("/servlet2");

        // 走向Sevlet2(柜台)
        requestDispatcher.forward(req, resp);
    }
}

Servlet2类:

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class Servlet2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取到已经点单的客户名
        String username = req.getParameter("username");
        System.out.println(username + "在柜台等待奖品");

        // 查看 柜台1 是否有盖章
        Object key1 = req.getAttribute("key1");
        System.out.println("客户是否有纸片" + key1);

        // 处理自己的业务
        System.out.println("将奖品给了客户");
    }
}
  1. 配置对用的映射请求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_4_0.xsd"
         version="4.0">
 <servlet>
        <servlet-name>Servlet2</servlet-name>
        <servlet-class>Servlet2</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Servlet2</servlet-name>
        <url-pattern>/servlet2</url-pattern>
    </servlet-mapping>
</web-app>   
  1. 启动服务,发送请求http://localhost:8080/javaee_tomcat_war_exploded/servlet1?username=xiaoming

在这里插入图片描述

HttpServletResponse 类

设置返回给客户端的信息,都可以通过 HttpServletResponse 对象来进行设置

代码示例:

  1. 创建一个新的servlet程序ResponseServlet
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class ResponseServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    	resp.setContentType("text/html; charset=UTF-8");
        PrintWriter writer = resp.getWriter();
        writer.write("服务器成功接收到了数据");
    }
}

  1. 配置对应的映射文件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_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>ResponseServlet</servlet-name>
        <servlet-class>ResponseServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ResponseServlet</servlet-name>
        <url-pattern>/response</url-pattern>
    </servlet-mapping>
</web-app>
  1. 启动服务器,输入指定路径http://localhost:8080/javaee_tomcat_war_exploded/response
    在这里插入图片描述

注意:
resp.setContentType("text/html; charset=UTF-8");这句代码是来解决乱码问题的,保证了输出的字符是指定格式的字符。

请求重定向

客户端给服务器发请求,然后服务器告诉客户端说。我给你一些地址。你去新地址访问。

代码示例:

  1. 创建一个新的servlet程序RedirectServlet
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class RedirectServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.sendRedirect("index.jsp");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

  1. 增加对应的映射文件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_4_0.xsd"
         version="4.0">
	<servlet>
        <servlet-name>RedirectServlet</servlet-name>
        <servlet-class>RedirectServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>RedirectServlet</servlet-name>
        <url-pattern>/redirect</url-pattern>
    </servlet-mapping>
</web-app>
  1. 启动服务器,访问对应请求http://localhost:8080/javaee_tomcat_war_exploded/redirect
    在这里插入图片描述

HTTP 协议

客户端和服务器之间通信时,发送的数据,需要遵守的规则,叫 HTTP 协议。

GET 请求

请求行:

  • 请求的方式 GET
  • 请求的资源路径[+?+请求参数]
  • 请求的协议的版本号HTTP/1.1

请求头:

  • key : value 组成 不同的键值对,表示不同的含义。

请求的方式:

  • form 标签 method=get
  • a 标签
  • link 标签引入 css
  • Script 标签引入 js 文件
  • img 标签引入图片
  • iframe 引入 html 页面
  • 在浏览器地址栏中输入地址后敲回车

Post请求

请求行:

  • 请求的方式 POST
  • 请求的资源路径[+?+请求参数]
  • 请求的协议的版本号 HTTP/1.1

请求头:

  • key : value 组成 不同的键值对,表示不同的含义。

请求体:

  • 就是发送给服务器的数据

请求的方式:

  • form 标签 method=post

常用请求说明

  • Accept: 表示客户端可以接收的数据类型
  • Accpet-Languege: 表示客户端可以接收的语言类型
  • User-Agent: 表示客户端浏览器的信息
  • Host: 表示请求时的服务器 ip 和端口号

常用的响应码说明

  • 200 表示请求成功
  • 302 表示请求重定向
  • 404 表示请求服务器已经收到了,但是你要的数据不存在(请求地址错误)
  • 500 表示服务器已经收到请求,但是服务器内部错误(代码错误)

MIME 类型说明

MIME 的英文全称是"Multipurpose Internet Mail Extensions" 多功能 Internet 邮件扩充服务。MIME 类型的格式是“大类型/小类型”,并与某一种文件的扩展名相对应。

文件MIME 类型
超文本标记语言文本.html , .htm text/html
普通文本.txt text/plain
RTF 文本.rtf application/rtf
GIF 图形.gif image/gif
JPEG 图形.jpeg,.jpg image/jpeg
au 声音文件.au audio/basic
MIDI 音乐文件mid,.midi audio/midi,audio/x-midi
RealAudio 音乐文件.ra, .ram audio/x-pn-realaudio
MPEG 文件.mpg,.mpeg video/mpeg
AVI 文件.avi video/x-msvideo
GZIP 文件.gz application/x-gzip
TAR 文件.tar application/x-tar

Web 中的相对路径和绝对路径

在实际开发中,路径都使用绝对路径,而不简单的使用相对路径。
相对路径:

  • .	表示当前目录
    
  • ..	表示上一级目录
    
  • 资源名	表示当前目录/资源名
    

绝对路径:

  • http://ip:port/工程路径/资源路径

web 中 / 斜杠的不同意义

在 web 中 / 斜杠 是一种绝对路径。
对于浏览器:

  • 得到的地址是:http://ip:port/

对于服务器:

  • 得到的地址是:http://ip:port/工程路径

对于特殊情况:response.sendRediect(“/”);

  • 得到http://ip:port/

欢迎java热爱者了解文章,作者将会持续更新中,期待各位友友的关注和收藏,另外对编程感兴趣的友友们可以加以下群共同学习。群号:127871664

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

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

相关文章

三维影像系统PACS源码,图像存储与传输系统,应用于医院中管理医疗设备如CT,MR等产生的医学图像的信息系统

PACS&#xff0c;即图像存储与传输系统&#xff0c;是应用于医院中管理医疗设备如CT&#xff0c;MR等产生的医学图像的信息系统。目标是支持在医院内部所有关于图像的活动&#xff0c;集成了医疗设备&#xff0c;图像存储和分发&#xff0c;数字图像在重要诊断和会诊时的显示&a…

unity ui toolkit的使用

UIToolkitExamples (github)样例 GitHub - ikewada/UIToolkitExamples: チュートリアル動画「使ってみようUI Toolkit」のためのサンプルプロジェクトです官网 Unity - Manual: UI Toolkit视频教程 使用 UI Toolkit - 上集_哔哩哔哩_bilibili 使用 UI Toolkit - 下集_哔哩哔哩_…

vue3前端开发-小兔鲜项目-使用pinia插件完成token的本地存储

vue3前端开发-小兔鲜项目-使用pinia插件完成token的本地存储&#xff01;实际业务开发中&#xff0c;token是一个表示着用户登录状态的重要信息&#xff0c;它有自己的生命周期。因此&#xff0c;这个参数值必须实例化存储在本地中。不能跟着pinia。因为pinia是基于内存设计的模…

go语言day18 reflect反射

Golang-100-Days/Day16-20(Go语言基础进阶)/day19_Go语言反射.md at master rubyhan1314/Golang-100-Days (github.com) 一、interface接口 接口类型内部存储了一对pair(value,Type) type interface { type *Type // 类型信息 data unsafe.Pointer // 指向具体数据 } 1)创建R…

Git基本原理讲解、常见命令、Git版本回退、Git抛弃本地分支拉取仓库最新分支

借此机会写篇博客汇总一下自己去公司实习之后遇到的一些常见关于Git的操作。 Git基本认识 Git把数据看作是对小型文件系统的一组快照&#xff0c;每次提交更新&#xff0c;或在Git中保存项目状态时&#xff0c;Git主要对当时的全部文件制作一个快照并保存这个快照的索引。同时…

嵌入式C++、MQTT、数据库、Grafana、机器学习( Scikit-learn):智能建筑大数据管理平台(代码示例)

项目概述 智能建筑管理系统&#xff08;Intelligent Building Management System, IBMS&#xff09;是一个集成多种技术的复杂系统&#xff0c;旨在通过智能化手段提升建筑的管理效率、节能效果和居住舒适度。该系统涉及嵌入式系统、物联网&#xff08;IoT&#xff09;、大数据…

数据库-触发器,存储过程

按照题目要求完成下列题目&#xff1a; 1.触发器 mysql> use mydb16_trigger; Database changed mysql> create table goods(-> gid char(8) primary key,-> name varchar(10),-> price decimal(8,2),-> num int); Query OK, 0 rows affected (0.01 sec)my…

01 Redis引入和概述

Redis引入和概述 一、Redis的历史和发展过程 ​ Redis是在2008年由意大利的一家创业公司Merzia的创始人Salvatore Sanfilippo(萨尔瓦托.圣菲利波)创造的。 ​ 当时&#xff0c;Salvatore 正在开发一款基于MySQL的网站实时统计系统LLOOGG&#xff0c;然而他发现MySQL的性能并…

VAE、GAN与Transformer核心公式解析

VAE、GAN与Transformer核心公式解析 VAE、GAN与Transformer&#xff1a;三大深度学习模型的异同解析 【表格】VAE、GAN与Transformer的对比分析 序号对比维度VAE&#xff08;变分自编码器&#xff09;GAN&#xff08;生成对抗网络&#xff09;Transformer&#xff08;变换器&…

计算机网络(四)数字签名和CA认证

什么是数字签名和CA认证&#xff1f; 数字签名 数字签名的过程通常涉及以下几个步骤&#xff1a; 信息哈希&#xff1a;首先&#xff0c;发送方使用一个哈希函数&#xff08;如SHA-256&#xff09;对要发送的信息&#xff08;如电子邮件、文件等&#xff09;生成一个固定长度…

GIS场景升级:支持多种影像协议与天气效果

在GIS场景编辑领域&#xff0c;升级视效的需求日益增加。有一款名为山海鲸可视化的免费工具&#xff0c;本人亲测能够完美满足这一需求。山海鲸可视化不仅支持多种GIS影像协议&#xff08;如TMS、WMS、WMTS等&#xff09;&#xff0c;还能一键添加天气效果&#xff0c;瞬间提升…

【Unity】 HTFramework框架(五十三)使用 Addressables 可寻址系统

更新日期&#xff1a;2024年7月25日。 Github源码&#xff1a;[点我获取源码] Gitee源码&#xff1a;[点我获取源码] 索引 Addressables 可寻址系统使用 Addressables 可寻址系统一、导入 Addressables二、切换到 Addressables 加载模式三、切换资源加载助手四、加载资源五、注…

【全面介绍Python多线程】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🦇目录 1. 🦇前言2. 🦇threading 模块的基本用法3. 🦇Thre…

编程类精品GPTs

文章目录 编程类精品GPTs前言种类ChatGPT - GrimoireProfessional-coder-auto-programming 总结 编程类精品GPTs 前言 代码类的AI, 主要看以下要点: 面对含糊不清的需求是否能引导出完整的需求面对完整的需求是否能分步编写代码完成需求编写的代码是否具有可读性和可扩展性 …

【个人亲试最新】WSL2中的Ubuntu 22.04安装Docker

文章目录 Wsl2中的Ubuntu22.04安装Docker其他问题wsl中执行Ubuntu 报错&#xff1a;System has not been booted with systemd as init system (PID 1). Can‘t operate. 参考博客 &#x1f60a;点此到文末惊喜↩︎ Wsl2中的Ubuntu22.04安装Docker 确定为wsl2ubuntu22.04&#…

57 数据链路层

用于两个设备&#xff08;同一种数据链路节点&#xff09;之间传递 目录 对比理解“数据链路层” 和 “网络层”以太网 2.1 认识以太网 2.2 以太网帧格式MAC地址 3.1 认识MAC地址 3.2 对比理解MAC地址和IP地址局域网通信MTU 5.1 认识MTU 5.2 MTU对ip协议的影响 5.3 MTU对UDP的…

vue elementui 在table里使用el-switch

<el-table-columnprop"operationStatus"label"状态"header-align"center"align"center"><template slot-scope"scope"><el-switch active-value"ENABLE" inactive-value"DISABLE" v-mod…

Java OpenCV 图像处理40 图形图像 图片裁切ROI

Java OpenCV 图像处理40 图形图像 图片裁切 在 OpenCV 中&#xff0c;Rect 类是用来表示矩形的数据结构&#xff0c;通常用于定义图像处理中的感兴趣区域&#xff08;Region of Interest&#xff0c;ROI&#xff09;&#xff0c;或者指定图像中的某个区域的位置和大小。Rect 类…

【深度学习】大模型GLM-4-9B Chat ,微调与部署(3) TensorRT-LLM、TensorRT量化加速、Triton部署

文章目录 获取TensorRT-LLM代码&#xff1a;构建docker镜像并安装TensorRT-LLM&#xff1a;运行docker镜像&#xff1a;安装依赖魔改下部分package代码&#xff1a;量化&#xff1a;构建图&#xff1a;全局参数插件配置常用配置参数 测试推理是否可以代码推理CLI推理 性能测试小…

Python爬虫技术 第09节 状态码

在使用Python进行网络爬虫开发时&#xff0c;理解HTTP状态码是至关重要的。HTTP状态码是由服务器返回给客户端的响应状态指示&#xff0c;通常用于告知客户端请求是否成功、失败或需要采取进一步的操作。下面是一些常见的HTTP状态码及其含义&#xff1a; 常见的HTTP状态码 1xx…