Java Web-Tomcat Servlet
Web服务器-Tomcat
Web服务器简介
Web 服务器是一种软件程序,它主要用于在网络上接收和处理客户端(如浏览器)发送的 HTTP 请求,并返回相应的网页内容或数据。以下是关于 Web 服务器的详细介绍:
功能
- 接收请求:监听网络端口,等待客户端发送 HTTP 请求,一旦收到请求,它会解析请求的内容,包括请求的方法(如 GET、POST 等)、请求的 URL 以及请求头信息等。
- 处理请求:根据请求的 URL 和其他信息,查找对应的资源或执行相应的程序逻辑。如果请求的是静态资源(如 HTML 文件、图片、CSS 样式表等),Web 服务器会直接从本地文件系统中读取并返回这些资源;如果请求的是动态资源(如 JSP、PHP、ASPX 等脚本文件),Web 服务器会将请求传递给相应的脚本解释器或应用服务器进行处理,然后将处理结果返回给客户端。
- 响应请求:将处理后的结果以 HTTP 响应的形式发送回客户端,响应内容包括状态码(如 200 表示成功、404 表示未找到等)、响应头信息和响应体(即实际返回的网页内容或数据)。
- 管理连接:负责管理与客户端的连接,包括建立连接、保持连接状态、处理连接中断等情况。它可以同时处理多个并发的客户端连接,确保每个请求都能得到及时处理。
常见的 Web 服务器软件
- Apache HTTP Server:是一款广泛使用的开源 Web 服务器,具有高度的稳定性和丰富的功能。它支持多种操作系统,能够处理大量的并发请求,并且可以通过各种模块进行扩展,如支持 SSL 加密、CGI 脚本、PHP 等。
- Nginx:也是一款开源的高性能 Web 服务器,它以轻量级、高并发处理能力著称。Nginx 在处理静态资源方面效率极高,同时也可以作为反向代理服务器、负载均衡器等使用,常用于构建高性能的 Web 应用架构。
- Microsoft IIS(Internet Information Services):是微软开发的 Web 服务器软件,集成在 Windows 操作系统中。它提供了图形化的管理界面,易于配置和管理,支持 ASP、ASPX、.NET 等技术,适用于 Windows 环境下的 Web 应用部署。
- Tomcat:主要用于运行 Java Web 应用,支持 Servlet、JSP 等技术。它是一个轻量级的应用服务器,既可以作为独立的 Web 服务器使用,也可以与其他 Web 服务器(如 Apache)集成,共同提供更强大的 Web 服务。
作用
- 发布网站:将网站的各种文件(如 HTML、CSS、JavaScript、图片等)存储在服务器上,并通过 Web 服务器将这些文件发布到互联网上,使得用户可以通过浏览器访问网站。
- 运行 Web 应用程序:支持各种动态 Web 应用程序的运行,如电子商务系统、企业管理系统、在线论坛等。这些应用程序通常包含复杂的业务逻辑和数据库交互,Web 服务器负责协调各个组件之间的通信,处理用户请求并返回相应的结果。
- 提供数据服务:可以作为数据服务器,向客户端提供各种数据,如 JSON 数据、XML 数据等。这些数据可以被用于网页的动态加载、移动应用的数据获取等。

Tomcat
Tomcat 作为一款常用的 Web 服务器,在 Java Web 应用的开发和部署中发挥着重要作用,以下是关于它的详细介绍:
基本信息
Tomcat 是由 Apache 软件基金会开发和维护的开源轻量级 Web 应用服务器,支持 Servlet、JSP(JavaServer Pages)、WebSocket 等多种 Java Web 技术,为开发和部署动态 Web 应用提供了有力支持。
核心功能
- Servlet 容器:负责管理 Servlet 的生命周期,接收客户端请求并将其分配给相应的 Servlet 进行处理,然后将处理结果返回给客户端。
- JSP 引擎:能够将 JSP 页面转换为 Java Servlet 源代码,并进行编译和执行。在运行时,JSP 引擎会根据页面的更新情况自动重新编译 JSP 页面,确保应用程序能够及时反映出代码的变化。
- HTTP 服务器:具备基本的 HTTP 服务器功能,能够监听指定端口上的 HTTP 请求,解析请求信息,并返回相应的响应。
- 连接器:支持多种协议的连接,如 HTTP、HTTPS、AJP(Apache JServ Protocol)等,方便与其他服务器或应用程序进行通信。
工作原理
- 接收请求:作为 Web 服务器,Tomcat 监听指定端口(默认 8080)上的 HTTP 请求。当客户端发送请求时,Tomcat 接收并解析请求信息。
- Servlet 处理:如果请求的是一个 Servlet,Tomcat 会根据请求的 URL 找到对应的 Servlet,并创建一个 ServletRequest 和 ServletResponse 对象,将请求信息封装在 ServletRequest 中传递给 Servlet 的 service 方法进行处理。Servlet 根据业务逻辑生成响应数据,通过 ServletResponse 对象返回给客户端。
- JSP 处理:对于 JSP 页面请求,Tomcat 首先将 JSP 页面转换为 Java Servlet 源代码,然后编译成字节码。之后的处理过程与 Servlet 类似,生成的响应数据被发送回客户端。
优势
- 开源免费:遵循 Apache 许可协议,用户可以自由使用、分发和修改,降低了软件成本,尤其适合预算有限的项目和开发者。
- 轻量级:占用系统资源少,启动速度快,在各种规模的项目中,特别是中小型应用中表现出色,能够快速响应客户端请求。
- 可扩展性强:通过插件和扩展机制,方便添加新功能,如安全认证、集群支持、监控和管理工具等,以满足不同应用场景的需求。
应用场景
- Java Web 应用开发与测试:开发人员在开发过程中,可以将 Tomcat 作为本地服务器,方便进行代码调试和功能测试,快速验证应用程序的正确性和稳定性。
- 企业级应用部署:许多企业级应用选择 Tomcat 作为应用服务器,承载各种业务系统,如电子商务网站、企业资源规划(ERP)系统、客户关系管理(CRM)系统等,为企业的日常运营提供支持。
- 学习与教学:由于其开源和轻量级的特点,适合初学者学习 Java Web 开发和服务器配置相关知识,帮助他们快速上手并理解 Web 应用的运行原理。
安装与配置
- 下载安装:从 Tomcat 官方网站(Apache Tomcat® - Welcome!)下载适合你操作系统的版本,解压到指定目录即可完成安装。
- 配置环境变量:在系统环境变量中设置
CATALINA_HOME指向 Tomcat 的安装目录,方便在命令行中执行 Tomcat 相关命令。 - 端口配置:如果默认的 8080 端口被占用,可以在 Tomcat 安装目录的
conf文件夹下的server.xml文件中修改Connector元素的port属性来指定其他端口。 - 部署应用:将 Web 应用的 WAR 文件放置在 Tomcat 的
webapps目录下,Tomcat 会自动解压并部署应用。也可以通过修改server.xml文件或使用 Tomcat 的管理界面进行应用部署。
- Tomcat的常用Maven插件

Servlet
Servlet 简介:
Servlet 是运行在 Web 服务器上的小型 Java 程序,它扩展了服务器的功能,能够动态生成 Web 页面或处理客户端请求。它充当了客户端(通常是 Web 浏览器)和服务器之间的中间层,接收客户端的请求,进行相应的处理,并生成响应返回给客户端。
Servlet 的工作流程:
- 客户端发送请求到服务器。
- 服务器根据请求的 URL 查找相应的 Servlet。
- 服务器调用 Servlet 的
service()方法,根据请求类型调用doGet、doPost等方法。 - Servlet 处理请求并生成响应。
- 服务器将响应发送给客户端。

Servlet 的主要作用:
-
处理 HTTP 请求:
- Servlet 可以处理多种 HTTP 请求方法,如
GET、POST、PUT、DELETE等。
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 MyServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 处理 GET 请求response.getWriter().println("This is a GET request.");}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 处理 POST 请求response.getWriter().println("This is a POST request.");} }在这个例子中,
MyServlet类继承自HttpServlet,并重写了doGet和doPost方法,分别处理GET和POST请求。 - Servlet 可以处理多种 HTTP 请求方法,如
-
动态生成内容:
- Servlet 可以根据请求的不同,动态生成 HTML、XML、JSON 等内容。
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 DynamicContentServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<html><body>");out.println("<h1>Hello, " + request.getParameter("name") + "</h1>");out.println("</body></html>");} }上述 Servlet 接收一个
name参数,并在 HTML 页面中动态显示欢迎信息。 -
会话管理:
- Servlet 可以使用
HttpSession进行会话管理,维护用户的会话状态。
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException;public class SessionServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {HttpSession session = request.getSession(true);session.setAttribute("username", "John");String username = (String) session.getAttribute("username");response.getWriter().println("Username: " + username);} }在这个例子中,使用
HttpSession存储和获取用户的username。 - Servlet 可以使用
Servlet 的生命周期:
-
初始化阶段:
- 当 Servlet 容器启动或首次请求 Servlet 时,会调用 Servlet 的
init()方法进行初始化。
import javax.servlet.ServletConfig; 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 LifeCycleServlet extends HttpServlet {@Overridepublic void init(ServletConfig config) throws ServletException {super.init(config);System.out.println("Servlet is initialized.");} }在上述 Servlet 中,重写
init方法,当 Servlet 被初始化时会输出一条消息。 - 当 Servlet 容器启动或首次请求 Servlet 时,会调用 Servlet 的
-
请求处理阶段:
- 当接收到客户端的请求时,会调用
service()方法,根据请求的类型,调用doGet、doPost等方法。
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 LifeCycleServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println("Processing a GET request.");response.getWriter().println("GET request processed.");} }这个 Servlet 会在处理
GET请求时输出消息并向客户端发送响应。
- 当接收到客户端的请求时,会调用
-
销毁阶段:
- 当 Servlet 容器关闭或 Servlet 长时间未使用时,会调用
destroy()方法销毁 Servlet。
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 LifeCycleServlet extends HttpServlet {@Overridepublic void destroy() {System.out.println("Servlet is destroyed.");} } - 当 Servlet 容器关闭或 Servlet 长时间未使用时,会调用
Servlet 的配置方式:
注意,在配置urlPattern时,要确保路径的唯一性,避免出现冲突。如果多个 Servlet 的urlPattern匹配到同一个请求,可能会导致不确定的行为。
-
在 Servlet 中,
urlPattern用于配置 Servlet 的访问路径,它可以通过注解或web.xml文件进行配置。注解方式(Servlet 3.0 及以上版本支持)
在 Servlet 类上使用
@WebServlet注解来指定urlPattern。例如:import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet;@WebServlet("/hello") public class HelloServlet extends HttpServlet {// Servlet的具体实现 }上述代码中,
@WebServlet("/hello")表示该 Servlet 的访问路径为/hello。还可以指定多个
urlPattern,例如:@WebServlet({"/hello", "/hi"}) public class HelloServlet extends HttpServlet {// Servlet的具体实现 }这样,该 Servlet 可以通过
/hello和/hi两个路径进行访问。web.xml 方式(传统方式)

在
web.xml文件中使用<servlet>和<servlet-mapping>标签来配置urlPattern。例如:<web-app><servlet><servlet-name>HelloServlet</servlet-name><servlet-class>com.example.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping> </web-app>这里通过
<servlet-name>标签关联<servlet>和<servlet-mapping>,并在<url-pattern>中指定访问路径。同样,可以为一个 Servlet 配置多个<url-pattern>。urlPattern的匹配规则
- 精确匹配:如
/hello,只有访问路径完全为/hello时才会匹配到对应的 Servlet。 - 目录匹配:以
/开头并以/*结尾,例如/user/*,表示匹配/user路径下的所有请求。如/user/list、/user/add等都会被该 Servlet 处理。 - 扩展名匹配:以
*开头并以扩展名结尾,例如*.do,表示匹配所有以.do为扩展名的请求,如login.do、register.do等。 - 默认匹配:
/,用于处理其他未被精确匹配或目录匹配的请求,通常作为默认 Servlet 的配置。
Servlet体系结构
Servlet 容器
- 概念:也称为 Servlet 引擎,是运行 Servlet 的环境,负责加载、实例化、初始化、调用和销毁 Servlet。常见的 Servlet 容器有 Apache Tomcat、Jetty、JBoss 等。
- 功能:管理 Servlet 的生命周期,接收和处理客户端的请求,并将请求转发给相应的 Servlet 进行处理。它还提供了一些底层的服务,如网络通信、线程管理、安全管理等。
Servlet 接口
- 概念:所有 Servlet 都必须实现的接口,定义了 Servlet 的基本行为和生命周期方法。
- 方法:
init:在 Servlet 被创建后初始化时调用,用于执行一次性的初始化操作。service:处理客户端请求的主要方法,根据请求的 HTTP 方法(GET、POST 等)来调用相应的处理方法(如 doGet、doPost 等)。destroy:在 Servlet 被销毁前调用,用于释放资源。getServletConfig:返回 Servlet 的配置信息。getServletContext:返回 Servlet 上下文对象,用于获取服务器的相关信息和共享资源。
GenericServlet 类
- 概念:是一个抽象类,实现了 Servlet 接口,提供了与协议无关的 Servlet 的通用框架。
- 特点:定义了一些通用的方法和属性,使得开发人员可以更方便地创建 Servlet,而不必关注底层的协议细节。它将 Servlet 的初始化、服务和销毁等操作进行了抽象,开发人员只需要关注具体的业务逻辑实现。
HttpServlet 类
生命周期
下面是一个简单的HttpServlet示例,用于处理用户的登录请求:
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 LoginServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 获取用户名和密码String username = request.getParameter("username");String password = request.getParameter("password");// 这里可以进行数据库验证等操作,假设用户名和密码都是admin时登录成功if ("admin".equals(username) && "admin".equals(password)) {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<html><body>");out.println("<h1>登录成功</h1>");out.println("</body></html>");} else {response.sendRedirect("login.html");}}
}
-
HttpServlet类是 Java Servlet API 中的一个重要类,它是GenericServlet类的子类,专门用于处理 HTTP 请求。以下是对HttpServlet类的详细介绍:主要方法
doGet方法:用于处理 HTTP GET 请求。当客户端通过 GET 方法请求资源时,服务器会调用这个方法。在这个方法中,通常会从请求中获取参数,然后根据这些参数执行相应的操作,并将结果以 HTML 或其他格式返回给客户端。doPost方法:用于处理 HTTP POST 请求。当客户端通过 POST 方法提交数据时,服务器会调用这个方法。与 GET 请求不同,POST 请求的数据通常包含在请求体中,而不是 URL 中。在这个方法中,可以从请求体中获取提交的数据,并进行处理,如将数据插入到数据库中。doPut方法:用于处理 HTTP PUT 请求。PUT 请求通常用于更新服务器上的资源。在这个方法中,可以根据请求中的数据更新服务器上的相应资源。doDelete方法:用于处理 HTTP DELETE 请求。DELETE 请求用于删除服务器上的资源。在这个方法中,可以根据请求中的信息删除服务器上的相应资源。- 初始化阶段:当 Servlet 容器启动或者第一次请求该 Servlet 时,会创建
HttpServlet的实例,并调用init方法进行初始化。在这个阶段,可以进行一些资源的加载、配置的读取等操作。 - 服务阶段:在初始化完成后,
HttpServlet就可以处理客户端的请求了。当有 HTTP 请求到达时,Servlet 容器会根据请求的方法(GET、POST 等)来调用相应的doXXX方法进行处理。 - 销毁阶段:当 Servlet 容器关闭或者该 Servlet 长时间未被使用时,容器会调用
destroy方法来销毁HttpServlet实例。在这个阶段,可以进行一些资源的释放、清理工作。
ServletContext 接口
- 概念:代表 Servlet 上下文,是一个全局的共享对象,用于在整个 Web 应用程序中共享信息和资源。
- 功能:可以获取 Web 应用程序的初始化参数、服务器的相关信息、资源文件的路径等。它还可以用于注册监听器和过滤器等。
ServletConfig 接口
- 概念:用于获取 Servlet 的配置信息,每个 Servlet 都有一个对应的 ServletConfig 对象。
- 功能:可以获取在 web.xml 文件中为 Servlet 配置的初始化参数等信息。
过滤器(Filter)
- 概念:是一种特殊的 Servlet 组件,它可以在请求到达 Servlet 之前或响应返回客户端之前对请求和响应进行拦截和处理。
- 功能:用于实现一些通用的功能,如字符编码过滤、权限验证、日志记录等。可以在不修改 Servlet 代码的情况下,对 Web 应用程序的请求和响应进行统一的处理和增强。
监听器(Listener)
- 概念:用于监听 Servlet 上下文、会话和请求等对象的创建、销毁和属性变化等事件。
- 功能:可以在事件发生时执行相应的操作,如在 Servlet 上下文启动时加载资源、在会话创建时记录日志等。通过监听器可以实现对 Web 应用程序的生命周期和状态变化的监控和管理。
Servlet的优点
- 跨平台性:由于 Java 的跨平台特性,Servlet 可以在不同的操作系统和 Web 服务器上运行,具有很强的可移植性。
- 安全性高:Java 语言本身具有较强的安全性,Servlet 运行在 Servlet 容器中,受到容器的安全管理,可以有效防止各种安全漏洞。
- 可扩展性强:Servlet 可以方便地与其他 Java 技术(如 JavaBean、EJB 等)集成,也可以与数据库、消息队列等后端服务进行交互,能够满足各种复杂的业务需求。
- 性能高效:Servlet 容器对 Servlet 的处理进行了优化,能够高效地处理大量并发请求,提供较好的性能。
Servlet的应用场景
- 动态 Web 页面生成:可以根据用户的请求动态生成 HTML 页面,实现个性化的内容展示。
- 表单处理:接收和处理用户在 Web 表单中提交的数据,进行验证、存储和后续处理。
- HTTP 请求处理:处理各种 HTTP 请求,如文件下载、数据上传、RESTful API 接口实现等。
- 会话管理:通过 Servlet 可以管理用户的会话,跟踪用户的登录状态、购物车信息等。
Servlet 是 Java Web 开发中的重要组成部分,它为开发动态的、交互式的 Web 应用程序提供了强大的基础,通过处理请求和响应,可以实现各种功能,并且可以和其他 Java EE 技术(如 JSP、EJB 等)结合使用,以构建完整的企业级应用程序。
相关文章:
Java Web-Tomcat Servlet
Web服务器-Tomcat Web服务器简介 Web 服务器是一种软件程序,它主要用于在网络上接收和处理客户端(如浏览器)发送的 HTTP 请求,并返回相应的网页内容或数据。以下是关于 Web 服务器的详细介绍: 功能 接收请求&#…...
寒假学web--day09
简介 一些魔法函数与php反序列化漏洞 tips 反序列化和类的方法无关,不能把类的方法序列化 将php.exe所在目录放到环境变量中,就可以在终端里通过php.exe ./命令来执行php代码 魔术方法 __construct() 在实例化一个对象时会自动调用,可…...
深度解析:基于Vue 3的教育管理系统架构设计与优化实践
一、项目架构分析 1. 技术栈全景 项目采用 Vue 3 TypeScript Tailwind CSS 技术组合,体现了现代前端开发的三大趋势: 响应式编程:通过Vue 3的Composition API实现细粒度响应 类型安全:约60%的组件采用TypeScript编写 原子化…...
CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测(Matlab完整源码和数据)
CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测(Matlab完整源码和数据) 目录 CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测(Matlab完整源码和数据)预测效果基本介绍 CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测一…...
mysql_store_result的概念和使用案例
mysql_store_result() 是 MySQL C API 中的一个函数,用于检索一个完整的结果集到一个客户端。当执行一个查询(通常是 SELECT 查询)并希望处理所有返回的数据时,可以使用此函数。 概念 mysql_store_result() 函数的原型如下&…...
docker安装MySQL8:docker离线安装MySQL、docker在线安装MySQL、MySQL镜像下载、MySQL配置、MySQL命令
一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令 docker pull mysql:8.0.41 2、离线包下载 两种方式: 方式一: -)在一台能连外网的linux上安装docker执行第一步的命令下载镜像 -)导出 # 导出镜…...
黑盒/白盒运维监控
运维监控分为黑盒和白盒 黑盒:不深入代码,在系统角度看TPS,延迟等指标 白盒:深入代码分析,通过日志捕捉,以及主动上报告警等来进行监控 黑盒监控: 1. 页面功能:域名是否可访问&…...
奖励模型:解析大语言模型的关键工具
标题:奖励模型:解析大语言模型的关键工具 文章信息摘要: 奖励模型是理解和审核大语言模型(LLM)的重要工具,通过简单的评估方式提供了模型内部表征和性能的深入洞察。它不仅能静态比较模型表现,还可帮助诊断训练问题&a…...
Boot 系统选择U启动
1.进入Boot 系统 F2 或 Del Boot --->Boot 0ption Priorities #4 KingstwongDataTravele 是U盘 调整搭到#1 2.保持重启就好...
001 mybatis入门
文章目录 mybatis是什么ORM是什么ORM框架和MyBatis的区别#{}和${}的区别编码流程UserDaoImpl.javaUserDao.javaUser.javadb.propertiesSqlMapConfig.xmlUserMapper.xmlMybatisTest.javapom.xmluser.sql 表现层 SpringMVC 业务层 Spring 持久层 Mybatis https://mybatis.org/myb…...
【前端SEO】使用Vue.js + Nuxt 框架构建服务端渲染 (SSR) 应用满足SEO需求
Nuxt.js 是一个基于 Vue.js 的通用应用框架,它简化了使用 Vue 构建服务端渲染 (SSR) 应用的流程。除了 SSR 之外,Nuxt.js 还支持静态站点生成(Static Site Generation, SSG),渐进式网络应用(Progressive We…...
sysbench压力测试工具mysql以及postgresql
sysbench压力测试工具mysql以及postgresql sysbench工具安装 [postgresoradb sysbench-1.0.20]$ ./autogen.sh ./autogen.sh: running libtoolize --copy --force libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, config. libtoolize: copying file config/ltm…...
9.中断系统、EXTI外部中断
中断系统原理 中断 中断系统是管理和执行中断的逻辑结构,外部中断是众多能产生中断的外设之一,所以本节我们就借助外部中断来学习一下中断系统。在以后学习其它外设的时候,也是会经常和中断打交道的。 中断:在主程序运行过程中…...
Oracle 12c 中的 CDB和PDB的启动和关闭
一、简介 Oracle 12c引入了多租户架构,允许一个容器数据库(Container Database, CDB)托管多个独立的可插拔数据库(Pluggable Database, PDB)。本文档旨在详细描述如何启动和关闭CDB及PDB。 二、容器数据库 (CDB) 2.1…...
RocketMQ原理—4.消息读写的性能优化
大纲 1.Producer基于队列的消息分发机制 2.Producer基于Hash的有序消息分发 3.Broker如何实现高并发消息数据写入 4.RocketMQ读写队列的运作原理分析 5.Consumer拉取消息的流程原理分析 6.ConsumeQueue的随机位置读取需求分析 7.ConsumeQueue的物理存储结构设计 8.Cons…...
【C++动态规划 网格】2328. 网格图中递增路径的数目|2001
本文涉及知识点 C动态规划 LeetCode2328. 网格图中递增路径的数目 给你一个 m x n 的整数网格图 grid ,你可以从一个格子移动到 4 个方向相邻的任意一个格子。 请你返回在网格图中从 任意 格子出发,达到 任意 格子,且路径中的数字是 严格递…...
Web3.0时代的挑战与机遇:以开源2+1链动模式AI智能名片S2B2C商城小程序为例的深度探讨
摘要:Web3.0作为互联网的下一代形态,承载着去中心化、开放性和安全性的重要愿景。然而,其高门槛、用户体验差等问题阻碍了Web3.0的主流化进程。本文旨在深入探讨Web3.0面临的挑战,并提出利用开源21链动模式、AI智能名片及S2B2C商城…...
MySQL(高级特性篇) 12 章——数据库其它调优策略
一、数据库调优的措施 (1)调优的目标 尽可能节省系统资源,以便系统可以提供更大负荷的服务(吞吐量最大)合理的结构设计和参数调整,以提高用户操作的响应速度(响应速度更快)减少系统…...
单片机基础模块学习——DS18B20温度传感器芯片
不知道该往哪走的时候,就往前走。 一、DS18B20芯片原理图 该芯片共有三个引脚,分别为 GND——接地引脚DQ——数据通信引脚VDD——正电源 数据通信用到的是1-Wier协议 优点:占用端口少,电路设计方便 同时该协议要求通过上拉电阻…...
掌握长尾关键词优化技巧提升SEO效果与流量增长策略
内容概要 长尾关键词是指由三个或更多个词组成的关键词,这类关键词通常搜索量相对较低,但在搜索引擎优化(SEO)中的作用却不可忽视。它们能够精确定位用户的需求,因为长尾关键词往往反映了用户更具体的搜索意图。掌握长…...
AAAI2024论文解读|HGPROMPT Bridging Homogeneous and Heterogeneous Graphs
论文标题 HGPROMPT: Bridging Homogeneous and Heterogeneous Graphs for Few-shot Prompt Learning 跨同构异构图的小样本提示学习 论文链接 HGPROMPT: Bridging Homogeneous and Heterogeneous Graphs for Few-shot Prompt Learning论文下载 论文作者 Xingtong Yu, Yuan…...
高频 SQL 50 题(基础版)_620. 有趣的电影
高频 SQL 50 题(基础版)_620. 有趣的电影 一级目录 表:cinema id 是该表的主键(具有唯一值的列)。 每行包含有关电影名称、类型和评级的信息。 评级为 [0,10] 范围内的小数点后 2 位浮点数。 编写解决方案,找出所有影片描述为 …...
git的理解与使用
本地的git git除了最经典的add commit push用来做版本管理,其实他的分支管理也非常强大 可以说你学好了分支管理,就可以完成团队的配合协作了 git仓库 我们可以使用git init来初始化一个git仓库,只要能看见.git文件夹,就代表这…...
Java进阶(一)
目录 一.Java注解 什么是注解? 内置注解 元注解 二.对象克隆 什么是对象克隆? 为什么用到对象克隆 三.浅克隆深克隆 一.Java注解 什么是注解? java中注解(Annotation)又称java标注,是一种特殊的注释。 可以添加在包,类&…...
zookeeper的介绍和简单使用
1 zookerper介绍 zookeeper是一个开源的分布式协调服务,由Apache软件基金会提供,主要用于解决分布式应用中的数据管理、状态同步和集群协调等问题。通过提供一个高性能、高可用的协调服务,帮助构建可靠的分布式系统。 Zookeeper的特点和功能…...
【学习笔记】深度学习网络-深度前馈网络(MLP)
作者选择了由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大佬撰写的《Deep Learning》(人工智能领域的经典教程,深度学习领域研究生必读教材),开始深度学习领域学习,深入全面的理解深度学习的理论知识。 在之前的文章中介绍了深度学习中用…...
使用Java技术开发软件详细流程
1. 需求分析 与客户沟通:与客户或项目负责人交流,了解需要开发的软件目标、功能需求、性能要求、使用场景等。例如,如果要开发一个在线购物系统,需要明确用户是否可以浏览商品、添加到购物车、下单支付等功能。收集和整理需求&am…...
Kubectl 与 Helm 详解
在 Kubernetes 生态中,kubectl 和 Helm 是两个核心工具,分别用于直接管理 Kubernetes 资源和简化应用的部署与管理。本文将深入探讨 kubectl 和 Helm 的功能、使用场景、部署与更新方式,并对比它们的优缺点。 1. Kubectl 详解 1.1 什么是 Kubectl? kubectl 是 Kubernetes…...
uni-app 程序打包 Android apk、安卓夜神模拟器调试运行
1、打包思路 云端打包方案(每天免费次数限制5,最简单,可以先打包尝试一下你的程序打包后是否能用): HBuilderX 发行App-Android云打包 选择Android、使用云端证书、快速安心打包本地打包: HBuilderX …...
全面评测 DOCA 开发环境下的 DPU:性能表现、机器学习与金融高频交易下的计算能力分析
本文介绍了我在 DOCA 开发环境下对 DPU 进行测评和计算能力测试的一些真实体验和记录。在测评过程中,我主要关注了 DPU 在高并发数据传输和深度学习场景下的表现,以及基本的系统性能指标,包括 CPU 计算、内存带宽、多线程/多进程能力和 I/O 性…...
