Java零基础教学文档servlet(1)

news2024/11/17 1:28:38

【Web开发和HTTP协议】

1. Web开发概述

1.1 web概述
万维网(英语:World Wide Web)亦作WWW、Web、全球广域网,是一个透过互联网访问的,由许多互相链接的超文本组成的信息系统。英国科学家蒂姆·伯纳斯-李于1989年发明了万维网。1990年他在瑞士CERN的工作期间编写了第一个网页浏览器。网页浏览器于1991年1月向其他研究机构发行,并于同年8月向公众开放。

万维网是信息时代发展的核心,也是数十亿人在互联网上进行交互的主要工具。网页主要是文本文件格式化和超文本置标语言(HTML)。除了格式化文字之外,网页还可能包含图片、视频、声音和软件组件,这些组件会在用户的网页浏览器中呈现为多媒体内容的连贯页面。

蒂姆·伯纳斯-李的另一个才华横溢的突破是将超文本嫁接到因特网上。在他的《编织万维网》一书中解释,他曾多次向技术社群的成员暗示这两种技术结合是可行的,但是却没有任何人接受他的建议,他最后只好自己解决了这个计划。他发明了三项关键技术:

  1. 一个全球网络资源唯一认证的系统,统一资源标志符(URI)

  2. 超文本标记语言(HTML)

  3. 超文本传输协议(HTTP)

1.2 B/S架构的诞生
B是浏览器(Web Browser)的缩写。S是(Application Server)应用服务器的缩写

网页浏览器(英语:Web Browser,常简称为浏览器)是一种用于检索并展示万维网信息资源的应用程序。这些信息资源可为网页、图片、影音或其他内容,它们由统一资源标志符标识。信息资源中的超链接可使用户方便地浏览相关信息。网页浏览器虽然主要用于使用万维网,但也可用于获取专用网络中网页服务器之信息或文件系统内之文件。

蒂姆·伯纳斯-李于1990年发明了第一个网页浏览器WorldWideWeb。然后伯纳斯-李雇用了妮可拉·佩洛编写LMB浏览器,能在哑终端上显示网页,于1991年发行。

1993年,马克·安德森发布Mosaic——“世界上最流行的浏览器”,进一步推动了浏览器的创新,这使得万维网更易于使用。安德森的浏览器引发了1990年代的互联网热潮。安德森是NCSA中Mosaic团队的领导者,他不久后辞职并成立了自己的公司——Netscape,发布了受Mosaic影响的Netscape Navigator。Netscape Navigator很快便成为世界上最流行的浏览器,市占率一度达到90%。也标志着BS架构的时代到来。

作为应对,错失了互联网浪潮的微软匆促购入了Spyglass公司的技术,发布Internet Explorer。这引发了第一轮浏览器大战。因捆绑于Windows,Internet Explorer于网页浏览器市场获取了主导地位,其市占率于2002年达到最高时超过95%。

1.3 web通信
Web通信采用B/S模式,即浏览器服务器通信。通过超文本传输协议(HTTP,HyperText Transfer Protocol)进行通信。通过浏览器地址栏编写 URL,向服务器发送一个请求,服务器端对该请求做出相应的处理,处理完毕后会向浏览器作出一个响应,将数据发送给浏览器。浏览器做出响应渲染呈现在用户浏览器界面。
在这里插入图片描述

存在于 web 应用服务器可供外界访问的资源就是 web 资源,它分为如下两种:

  1. 静态资源:指 web 页面中供人们浏览的数据始终是不变。比如:HTML、CSS、JS、图片、多媒体。

  2. 动态资源:指 web 页面中供人们浏览的数据是由程序产生的,不同时间点访问web 页面看到的内容各不相同。比如:JSP/Servlet、ASP、PHP。

2.WEB开发基石-HTTP协议

2.1 HTTP协议背景 ip dns ftp
超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。

设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。

HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1。

2014年12月,互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小组将HTTP/2标准提议递交至IESG进行讨论,于2015年2月17日被批准。HTTP/2标准于2015年5月以RFC 7540正式发表,取代HTTP 1.1成为HTTP的实现标准。

2.2 HTTP协议概述
HTTP是一个客户端(用户)和服务端(网站)之间请求和应答的标准,通常使用TCP协议。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个“中间层”,比如代理服务器、网关或者隧道(tunnel)。

尽管TCP/IP协议是互联网上最流行的应用,但是在HTTP协议中并没有规定它必须使用或它支持的层。事实上HTTP可以在任何互联网协议或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用,所以其在TCP/IP协议族使用TCP作为其传输层。

通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。

2.3 HTTP请求协议
2.3.1 格式
在这里插入图片描述
在这里插入图片描述

2.3.2 代码示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:9999/test" method="post">
    <input type="text" name="username"> </br>
    <button>提交</button>
</form>
</body>
</html>

package com.powernode.server;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;


public class HttpRequestDataFormat {


    public static void main(String[] args) throws IOException {
        //1. 创建服务
        ServerSocket server = new ServerSocket(9999);
        //2. 监听客户端请求
        while(true){
            Socket client = server.accept();
            // 获取请求数据
            InputStream in = client.getInputStream();
            byte[] b = new byte[1024];
            int len = -1;

            while ((len = in.read(b)) != -1){
                System.out.print(new String(b,0,len));
            }
            in.close();
        }
    }
}

在这里插入图片描述

2.4 HTTP响应协议
2.4.1 格式
在这里插入图片描述
在这里插入图片描述

2.4.2 代码示例

package com.powernode.server;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/*
 *  根据请求的路径,查找到相应的资源  将资源放回给浏览器
 *  1. 规定资源文件夹
 *  2. 根据请求的路径去资源文件夹查找文件
 *  3. 将资源文件使用流数据 返回给浏览器
 * 注意:
 *   资源文件夹路径 : D:\webapps
 *
 *
 */
public class MyServer {

    // 资源目录 根目录
    static  final String BASE_PATH = "D:\\webapps";

    public static void main(String[] args) throws Exception {
        //1. 创建服务
        ServerSocket server = new ServerSocket(9999);
        //2. 监听客户端请求
        while(true){
            Socket client = server.accept();
            // 获取请求数据
            InputStream inputStream = client.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
            // 根据请求路径 查找资源  : 请求路径在 请求行中
            // 读取请求行  请求方法   资源路径   协议
            String requestLine = br.readLine();
            // 根据空格进行分割
            String[] line = requestLine.split(" ");
            // 请求方法
            String method = line[0];
            // 资源路径
            // /test?name=123   test   去掉 ? 后面  ? 后面是查询参数
            String path = line[1]; //   /test/xxx
            // 找到  ? 索引
            int index = path.indexOf("?");
            // 不带查询参数的资源路径
            //  由于 网络路径的分隔是  /  但是 磁盘路径的分隔是  \\
            // 将网络路径 / 转化为  \\
            if (index != -1){
                path = path.substring(0,index);
            }
            // 将网络路径转化为 磁盘路径
            path = path.replaceAll("\\/", "\\\\");
            // 文件绝对路径  : BASE_PATH + path
            path = BASE_PATH + path;
            // 资源绝对路径
            File file = new File(path);
            // 使用输出流 将数据输出
            /**
             *  1. 将磁盘文件读取到内存中
             *  2. 将内存中的数据 利用网络进行输出
             */
            //1. 输入流
            FileReader fis = new FileReader(file);
            BufferedReader reader = new BufferedReader(fis);
            //2. 循环读写
            /*
             *   写数据 给浏览器 必须遵循HTTP协议  返回数据  属于 响应
             *  响应行
             * 响应头
             * 空行
             * 响应体
             * */
            // 输出流 要向客户端的网络输出
            // 跟 客户端绑定的输出流
            OutputStream outputStream = client.getOutputStream();
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(outputStream));
            // 响应行
            bw.write("HTTP/1.1 200 OK");
            //换行
            bw.newLine();
            //响应头
            // key:value 换行
            bw.write("Content-Type:text/html;charset=utf-8");
            bw.newLine();
            //空行
            bw.newLine();
            bw.flush();
            //响应体 : 响应体就是具体的文件数据
            //循环 读 和 输出
            String data = null;
            while ((data = reader.readLine()) != null){
                bw.write(data);
                bw.newLine();
                bw.flush();
            }

            bw.close();
            reader.close();
        }

    }


}



<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>Hello  Client!</h1>
</body>
</html>
 

 

在这里插入图片描述

3.应用服务器

3.1 应用服务器的诞生
应用程序服务器(英语:application server)是一种软件框架,提供一个应用程序执行的环境。用于为应用程序提供安全、数据、事务支持、负载平衡大型分布式系统管理等服务。

这个名词最初是用来讨论主从式架构系统时,用来区分数据库服务器、文件服务器等的不同。但现今常指能运行Web应用程序的Web服务器。

为什么会出现应用服务器呢?从程序复用性及架构角度思考。

3.2 Tomcat应用服务器
3.2.1 Tomcat应用服务器概述
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好 Apache 服务器,可利用它响应 HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上 Tomcat 部分是 Apache 服务器的扩展,但它是独立运行的,所以当你运行 tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。另外,Tomcat 和 IIS 等 Web 服务器一样,具有处理 HTML 页面的功能,另外它还是一个 Servlet 和 JSP 容器,独立的 Servlet 容器是 Tomcat 的默认模式。不过,Tomcat 处理静态 HTML 的能力不如 Apache 服务器。目前 Tomcat 最新版本为10。

官网:https://tomcat.apache.org/
在这里插入图片描述

当前最新版本是 Tomcat10,我们课程中使用 Tomcat9。Tomcat7 支持Servlet3.0,而 Tomcat6 只支持 Servlet2.5!

Servlet,JSP 规范与 Tomcat 版本的对应
在这里插入图片描述

3.2.2 Tomcat下载、安装、启动
1.官方下载地址:http://tomcat.apache.org

2.Tomcat 分为安装版和解压版:

安装版是.exe 形式的安装包,双击安装到我们的电脑上,一台电脑上只能安装一个,用的比较少。

解压版,即绿色版,解压后直接使用,解压份数无限制,用的比较多。注意要解压到一个没有中文及空格的文件夹中。例如:D:\soft\tomcat\apache-tomcat-7.0.78

3.启动 Tomcat 服务器:

A.启动前必须配置 JAVA_HOME 环境变量,变量值为 JDK 安装目录。因为 Tomcat 程序本身是用 java 写的,需要用到 JDK。

B.进入到 Tomcat 解压目录下的 bin\startup.bat, 双击可启动 Tomcat 服务器

在这里插入图片描述

C.进入到 Tomcat 解压目录下的 bin\shutdown.bat 双击即可关闭 Tomcat 服务器

D.启动完成后可以在浏览器地址栏输入:http://localhost:8080 来检查 Tomcat 是否

启动成功,如果看到如下页面。则恭喜你成功了
在这里插入图片描述

4.启动问题:如果启动有问题,首先检查 JAVA_HOME 环境变量配置是否正确,再检查8080 端口是否被别的应用程序占用。(Tomcat 默认使用端口号为 8080)

3.2.3 Tomcat目录结构
在这里插入图片描述

3.2.3.1 bin
该目录下存放二进制可执行文件,有 startup.bat 和 shutdown.bat 文件(其余文件无需理会),startup.bat 用来启动 Tomcat,但需要先配置JAVA_HOME 环境变量才能启动,shutdown.bat 用来停止 Tomcat

3.2.3.2 conf
这是一个非常非常重要的目录,这个目录下有四个最为重要的文件:

server.xml:配置整个服务器信息。例如修改端口号,添加虚拟主机等;以后会详细介绍这个文件;

端口配置:

<Connector port="8080" protocol="HTTP/1.1"

           connectionTimeout="20000"

           redirectPort="8443"   />

context.xml:容器默认配置

<?xml version="1.0" encoding="UTF-8"?>

<!-- The contents of this file will be loaded for each web application -->

<Context>



    <!-- Default set of monitored resources. If one of these changes, the    -->

    <!-- web application will be reloaded.                                   -->

    <WatchedResource>WEB-INF/web.xml</WatchedResource>

    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>

    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>



    <!-- Uncomment this to disable session persistence across Tomcat restarts -->

    <!--

    <Manager pathname="" />

    -->

</Context>

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">



  <!-- ======================== Introduction ============================== -->

  <!-- This document defines default values for *all* web applications      -->

  <!-- loaded into this instance of Tomcat.  As each application is         -->

  <!-- deployed, this file is processed, followed by the                    -->

  <!-- "/WEB-INF/web.xml" deployment descriptor from your own               -->

  <!-- applications.                                                        -->

  <!--                                                                      -->

<!-- “雷锋” servlet配置 -->

    <servlet>

        <servlet-name>default</servlet-name>

        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>

        <init-param>

            <param-name>debug</param-name>

            <param-value>0</param-value>

        </init-param>

        <init-param>

            <param-name>listings</param-name>

            <param-value>false</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

 <servlet>

        <servlet-name>jsp</servlet-name>

        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>

        <init-param>

            <param-name>fork</param-name>

            <param-value>false</param-value>

        </init-param>

        <init-param>

            <param-name>xpoweredBy</param-name>

            <param-value>false</param-value>

        </init-param>

        <load-on-startup>3</load-on-startup>

    </servlet>

<servlet-mapping>

        <servlet-name>default</servlet-name>

        <url-pattern>/</url-pattern>

    </servlet-mapping>



    <!-- The mappings for the JSP servlet -->

    <servlet-mapping>

        <servlet-name>jsp</servlet-name>

        <url-pattern>*.jsp</url-pattern>

        <url-pattern>*.jspx</url-pattern>

    </servlet-mapping>

<!-- session有效期 -->

 <session-config>

        <session-timeout>30</session-timeout>

 </session-config>

<!-- 媒体映射类型 -->

<mime-mapping>

        <extension>jpg</extension>

        <mime-type>image/jpeg</mime-type>

 </mime-mapping>

<!--  欢迎页面 -->

    <welcome-file-list>

        <welcome-file>index.html</welcome-file>

        <welcome-file>index.htm</welcome-file>

        <welcome-file>index.jsp</welcome-file>

    </welcome-file-list>

</web-app>

3.2.3.3 lib
Tomcat 的类库,里面是tomcat运行时需要的相关 jar 文件
在这里插入图片描述

3.2.3.4 logs
这个目录中都是日志文件,记录了 Tomcat 启动和关闭的信息,如果启动 Tomcat 时有错误,那么异常也会记录在日志文件中。

3.2.3.5 temp
存放 Tomcat 的临时文件,这个目录下的东西可以在停止 Tomcat 后删除!

3.2.3.6 webapps
存放 web 项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是 tomcat 自带的项目。其中 ROOT 是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是 ROOT 项目。

http://localhost:8080/examples,进入示例项目。其中 examples 就是项目名,即文

件夹的名字。

3.2.3.7 work
运行时生成的文件,最终运行的文件都在这里。通过 webapps 中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成 work 目录。当客户端用户访问一个 JSP 文件时,Tomcat 会通过 JSP 生成 Java 文

件,然后再编译 Java 文件生成 class 文件,生成的 java 和 class 文件都会存放到这个目录下。

3.2.4 创建静态web应用
创建静态 web 应用并访问的步骤如下:

1.在 tomcat 的 webapps 下创建一个 hello 目录;

2.在 webapps\hello\下创建 hello.html,内容如下:
在这里插入图片描述

3.启动 tomcat;

4.打开浏览器访问 http://localhost:8080/hello/hello.html
在这里插入图片描述

5.在同一个教室内,大家可以通过:http://192.168.137.1:8080/hello/hello.html这个地址访问服务。

具体ip查看: cmd—>ipconfig

  1. 查看下请求与响应的信息

  2. 静态web应用于动态web应用

    静态应用:数据在html页面写死

    动态应用:页面中的数据是从数据库中获取

8、tomcat闪退问题:

  1. tomcat软件存放在中文目录下

  2. 计算机名为中文

  3. jdk配置问题:必须配置JAVA_HOME、不要去配置classpath

4.IDEA与Tomcat

给 IDEA配置 Tomcat 服务器后,我们可以把服务器的启动和停止交给 IDEA来管理,简化我们开发,提高开发效率。

4.1 IDEA集成Tomcat
4.1.1 在磁盘的某个根目录解压tomcat
在这里插入图片描述

4.1.2 在IDEA中配置tomcat
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

推荐一款通过ssh连接linux服务的开源工具WindTerm

文章目录 前言WindTerm介绍WindTerm使用主密码和锁屏总结 前言 工作一入门便是游戏服务器开发&#xff0c;所以常常有连接Linux服务器的需求&#xff0c;之前用的最多的是Xshell&#xff0c;最近这个软件个人版只能免费使用一个月了&#xff0c;超过时间会提示更新无法正常使用…

FX110网:保加利亚外汇牌照FSC,进入欧盟市场的另一扇大门

汇市经纪商们对欧盟金融工具市场法规&#xff08;MiFID&#xff09;都不会陌生。通过MiFID体系&#xff0c;欧盟所有国家的监管机构连成了一张网络。因此&#xff0c;任何想要进入欧洲市场的汇商&#xff0c;都希望获得加入MiFID监管机构的牌照&#xff0c;其中最受欢迎的莫过于…

什么是充放电振子理论?

CHAT回复&#xff1a;充放电振子模型&#xff08;Charging-Reversal Oscillator Model&#xff09;是一种解释ENSO现象的理论模型&#xff0c;这个模型把ENSO现象比喻成一个“热力学振荡系统”。 在这个模型中&#xff0c;ENSO现象由三个组成部分&#xff1a;充电&#xff08;C…

web开发学习笔记(2.js)

1.引入 2.js的两种引入方式 3.输出语句 4.全等运算符 5.定义函数 6.数组 7.数组属性 8.字符串对象的对应方法 9.自定义对象 10.json对象 11.bom属性 12.window属性 13.定时刷新时间 14.跳转网址 15.DOM文档对象模型 16.获取DOM对象&#xff0c;根据DOM对象来操作网页 如下图…

JavaScript采集各大电商平台关于预制菜酸菜鱼销售量

因为我喜欢吃酸菜鱼&#xff0c;但是自己弄又弄不来&#xff0c;想从网上找找看看&#xff0c;但是种类多&#xff0c;自己逐个选择又太浪费时间。索性利用自己专业爬虫知识&#xff0c;一边检验我最近代码水平&#xff0c;另一方面还能选择到满意的年货。过去写个各大平台预制…

YOLOv8 Ultralytics:使用Ultralytics框架进行FastSAM图像分割

YOLOv8 Ultralytics&#xff1a;使用Ultralytics框架进行FastSAM图像分割 前言相关介绍前提条件实验环境安装环境项目地址LinuxWindows 使用Ultralytics框架进行FastSAM图像分割参考文献 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容…

射频天线信号防雷器的行业应用解决方案

射频天线信号防雷器&#xff08;信号SPD防雷浪涌保护器&#xff09;是一种用于保护射频信号系统免受雷电和电涌干扰的装置&#xff0c;它可以有效地吸收和分散过电压&#xff0c;保证信号的稳定传输和设备的安全运行。射频天线信号防雷器广泛应用于无线通信、广播电视、卫星导航…

一篇搞明白微信的基本授权功能

一、介绍 由于部分接口需要经过用户授权同意才能调用。我们把这些接口按使用范围分成多个 scope , 用户选择对 scope 来进行授权&#xff0c;当授权给一个 scope 之后&#xff0c;其对应的所有接口都可以直接使用。 此类接口调用时&#xff1a; 如果用户未接受或拒绝过此权限…

elasticsearch[二]-DSL查询语法:全文检索、精准查询(term/range)、地理坐标查询(矩阵、范围)、复合查询(相关性算法)、布尔查询

ES-DSL查询语法&#xff08;全文检索、精准查询、地理坐标查询&#xff09; 1.DSL查询文档 elasticsearch 的查询依然是基于 JSON 风格的 DSL 来实现的。 1.1.DSL 查询分类 Elasticsearch 提供了基于 JSON 的 DSL&#xff08;Domain Specific Language&#xff09;来定义查…

基于WebRTC技术的EasyRTC视频云服务系统在线视频客服解决方案

一、需求分析 随着互联网技术的发展&#xff0c;视频客服也成为服务行业的标配体验&#xff0c;基于WebRTC实时通信技术&#xff0c;客服人员与用户可以建立实时双向的视频交互与沟通。借助视频客服功能可以更加直观地了解用户的需求&#xff0c;提高沟通效率&#xff0c;并帮…

三种连接因特网的方式

拨号上网dial-up Internet Access 是用Modern接电话线&#xff0c;拔一个特定号码&#xff0c;才能接入到因特网&#xff0c;此时电话处于占线状态&#xff0c;网速56Kbps左右 基于PPPoE协议的ADSL(虚拟拨号) ADSL(非对称数字用户环路):是线路传输技术(硬件),是基于电话线上…

基于Java SSM框架实现摄影器材租赁系统项目【项目源码+论文说明】

基于java的SSM框架实现摄影器材租赁系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&a…

架构训练营,2024年怎么突围进大厂

2024年其实也是内耗和内卷比较严重的一年&#xff0c;可以说从互联网开始内卷的那天开始就不会停止&#xff0c;但是作为技术人&#xff0c;我们如何去和内卷做斗争了&#xff0c;其实最好的武器就是先和自己内卷&#xff0c;这个如何理解了&#xff0c;那就是要要和以前的自己…

matplotlib绘制动态瀑布图

绘制瀑布图思路&#xff1a;遍历指定文件目录下所有的csv文件&#xff0c;每读一个文件&#xff0c;取文件前20行数据进行保存&#xff0c;如果超过规定的行数300行&#xff0c;将最旧的数据删除&#xff0c;仅保留300行数据进行展示。 网上找的大部分绘制瀑布图的代码&#x…

如何挑选一家合格的污水处理服务商

在如今的社会&#xff0c;环境保护越来越受到人们的重视&#xff0c;而污水处理也是其中重要的一环。然而&#xff0c;如何选择一家合格的污水处理服务商成为了许多企业和个体需要面对的难题。今天&#xff0c;小编就为大家介绍一些有趣而实用的选择指南&#xff0c;帮助大家找…

CF1446C Xor Tree 题解 DP Trie树

Xor Tree 传送门 题面翻译 给定你一个非负整数序列 a a a&#xff0c;保证其中每个数两两不同。 对于每个 a i a _ i ai​&#xff0c;它会向 j ≠ i j \ne i ji 且 a i ⊕ a j a_i\oplus a_j ai​⊕aj​&#xff08; ⊕ \oplus ⊕ 代表异或&#xff09;最小的 a j a…

IntelliJ IDEA - 快速去除 mapper.xml 告警线和背景(三步走)

1、去掉 No data sources configure 警告 Settings&#xff08;Ctrl Alt S&#xff09; ⇒ Editor ⇒ Inspections ⇒ SQL ⇒ No data sources configure 2、去掉 SQL dialect is not configured 警告 Settings&#xff08;Ctrl Alt S&#xff09; ⇒ Editor ⇒ Inspecti…

C++力扣题目450--删除二叉搜索树中的节点

给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除节点可分为两个步骤&#xff1a; 首先…

Ansible Filter滤波器的使用

一、【说在前面】 Ansible Filter一般被称为滤波器或者叫过滤器。 这个东西初次听到以为是什么科学计算的东西&#xff0c;但是想来ansible不太可能有什么滤波操作&#xff0c;所以这个东西本质是一个数值筛选器&#xff0c;内置函数&#xff0c;本质是一个为了做区别化的工具…

【杂谈】经验分享:宝塔快速部署与IDEA远程Debug

文章目录 前言&需求描述1. 宝塔部署后端项目1.1 项目准备1.2 服务器准备1.3 项目启动 2. IDEA 远程 debug2.1 IDEA 编辑启动项2.2 服务器带参启动2.3 debug 演示 3. 补充与总结3.1 补充3.2 总结 宝塔部署项目 与 IDEA 远程debug 实战 前言&需求描述 本文记录个人工作…