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

【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 + pathpath = 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/javaeehttp://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.mzph.cn/news/623696.shtml

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

相关文章

类脑研究之脑组成及神经系统相关理论!大脑是什么?大脑和脑有什么区别?大脑皮层和脑膜什么关系?人的神经系统有哪些?

目录 1 引言2 神经系统3 脑组成3.1 大脑成分3.2 大脑外部&#xff1a;脑膜3.3 大脑中部&#xff1a;大脑皮层3.4 大脑内部3.5 脑干3.6 小脑 1 引言 为了深入研究类脑&#xff0c;必须了解大脑的结构和机制。从神经系统分级和脑组成两个角度出发&#xff0c;详细介绍了大脑的生…

1.如何记录每个变量携带的数据:DataFrame与Series

序列格式和列表区别&#xff1a;序列格式可以直接汇总&#xff1a;均值&#xff0c;总和&#xff0c;百分位数等 DataFrame Series

[链路层] 点对点协议 PPP

目录 1、PPP协议的特点 2、PPP协议的组成和帧格式 3、PPP协议的工作状态 目前使用得最广泛的数据链路层协议是点对点协议PPP(Point-to-Point Protocol)。 1、PPP协议的特点 我们知道&#xff0c;互联网用户通常都要连接到某个 ISP 才能接入到互联网。PPP 协议就是用户计算机…

Codeforces Round 918 (Div. 4)补题

Odd One Out&#xff08;Problem - A - Codeforces&#xff09; 题目大意&#xff1a;有三个数&#xff0c;其中两个相同&#xff0c;找出不同的那个数。 #include<bits/stdc.h> using namespace std; int main() {int t;scanf("%d",&t);while(t--){vect…

【面试合集】说说提高微信小程序的应用速度的手段有哪些?

面试官&#xff1a;说说提高微信小程序的应用速度的手段有哪些&#xff1f; 一、是什么 小程序启动会常常遇到如下图场景&#xff1a; 这是因为&#xff0c;小程序首次启动前&#xff0c;微信会在小程序启动前为小程序准备好通用的运行环境&#xff0c;如运行中的线程和一些基…

Endothelin-1(内皮素-1) ELISA kit

灵敏、快速的内皮素-1 ELISA试剂盒&#xff0c;适用于心血管和应激相关研究 内皮素&#xff08;Endothelin, ET&#xff09;是由血管内皮细胞产生的异肽&#xff0c;具有强大的血管收缩活性。这种肽由三个独立的基因编码&#xff0c;经过加工产生39个残基的 大ET 分子&#xff…

服务器 conda update 失败解决方法

1. 强制 conda update 租借一台服务器&#xff0c;发现 conda 版本是4.10.3&#xff0c;需要升级&#xff0c;使用了如下命令都没有效果&#xff0c;仍然是一样的版本 conda update conda update --all conda update -n base -c defaults conda最后强制用conda-forge通道更新…

D25XB60-ASEMI电机整流桥D25XB60

编辑&#xff1a;ll D25XB60-ASEMI电机整流桥D25XB60 型号&#xff1a;D25XB60 品牌&#xff1a;ASEMI 封装&#xff1a;GBJ-5&#xff08;带康铜丝&#xff09; 特性&#xff1a;插件、整流桥 平均正向整流电流&#xff08;Id&#xff09;&#xff1a;25A 最大反向击穿…

Jenkins实现自作自定义镜像并推送Harbor并编写目标服务器准备脚本

Jerkin 制作自定义镜像推送到Harbor docker build -t mytest:$tag . docker login -u admin -p Harbor12345 178.119.30.133:80 docker tag mytest:$tag 178.119.30.133:80/repo/mytest:$tag docker push 178.119.30.133:80/repo/mytest:$tag编写部署脚本 部署项目需要通过Pub…

Everything-一切尽在掌握之中

软件推荐&#xff0c;电脑文件繁多的时候&#xff0c;想要快速找到文件&#xff0c;少不了它 反应速度简直了&#xff0c;一秒响应 官网下载连接&#xff1a;下载 - voidtools

three.js设置模型边界线

three.js设置模型边界线 图例 步骤 拿到模型&#xff08;如果是外部模型需要遍历&#xff09;&#xff0c;设置透明度根据模型的几何体创建EdgesGeometry几何体创建线条材质创建LineSegments线模型模型加入线模型 代码 const m model.scene.getObjectByName("仓库&qu…

广州市工信局、天河区商务金融局及广州专精特新促进会走访思迈特

2024年1月11日下午&#xff0c;广州市工信局、天河区商务金融局及广州专精特新促进会相关负责人莅临广州思迈特软件总部调研指导&#xff0c;思迈特软件总裁兼COO姚诗成代表公司热情接待&#xff0c;并陪同调研。 调研组实地参观了思迈特软件&#xff0c;深入了解了思迈特发展历…

flutter使用get依赖实现全局loading效果,弹窗loading状态

get dialog的官网文档&#xff1a;GetDialogRoute class - dialog_route library - Dart API 可以使用Get.dialog()方法来创建一个自定义的加载弹窗&#xff0c;get框架是支持自定义弹窗效果的&#xff0c;所以我们就使用这个方式来自定义一个弹窗效果&#xff0c;并且点击遮罩…

集合(二)Collection集合Set

一、Set介绍&#xff1a; 是一个散列的集合&#xff0c;数据会按照散列值存储的&#xff0c;如两个hello的散列值相同&#xff0c;会存储在同一个地址中&#xff0c;所以看到的就是只有一个hello在集合中了。 1、Set集合有两个主要的实现子类&#xff1a;Hashset和Treeset。ha…

【java八股文】之Spring系列篇

【java八股文】之JVM基础篇-CSDN博客 【java八股文】之MYSQL基础篇-CSDN博客 【java八股文】之Redis基础篇-CSDN博客 【java八股文】之Spring系列篇-CSDN博客 【java八股文】之分布式系列篇-CSDN博客 【java八股文】之多线程篇-CSDN博客 【java八股文】之JVM基础篇-CSDN博…

CLion中想要在一个项目中有多个C源文件(有多个main函数)

我们知道&#xff0c;一个项目中只能有一个main()函数&#xff0c;但是我们不想分开创建这么多个C源文件&#xff0c;我们想要在一个工程中允许存在多个main方法了&#xff0c;而且可以独立运行&#xff0c;那么只需要以下步骤即可&#xff1a; 1&#xff09;在 File - Settin…

利用CHAT写实验结论

问CHAT&#xff1a;通过观察放置在玻璃表面上的单个水滴&#xff0c;人们可以观察到水滴充当成像系统。探究这样一个透镜的放大倍数和分辨率。 CHAT回复&#xff1a;实验报告标题&#xff1a;利用玻璃表面的单一水滴观察成像系统的放大倍数和分辨率&#xff1a; 一、 实验目的…

TEMU、亚马逊、shein平台崛起迅猛,掌握自养号测评必备运营攻略

2023年12月&#xff0c;SimilarWeb发布的数据显示&#xff0c;TEMU的独立访客数量达到4.67亿&#xff0c;与Aliexpress持平&#xff0c;全球排名第二。亚马逊以26.59亿用户位居第一&#xff0c;而SHEIN则拥有1.723亿用户&#xff0c;排名第三。 然而&#xff0c;仅仅六个月前的…

vue 渲染数组,拖拽排序,渲染同一个数组拖拽排序不影响其他选中行状态

当我们能够设置单行状态改变的时候&#xff0c;那么肯定可以拿到选中的当前行的id或者下标index。 只要设定一个初始化值在拖拽开始的时候重新赋值&#xff0c;然后再处理选中状态的时候进行判断即可。 前期写的时候没有注意到这个问题&#xff0c;可以看这个文章。 在复测的时…

【CSCV】划分数据集

参考论文IEEE Xplore Full-Text PDF: 划分数据集时多了一个development set&#xff0c;如下图 先占个坑&#xff0c;看完论文再来填坑