JavaWeb—XML_Tomcat10_HTTP
一、XML
XML是EXtensible MarkupLanguage的缩写,翻译过来就是可扩展标记语言。所以很明显,XML和HTML一样都是标记语言,也就是说它们的基本语法都是标签。
可扩展:三个字表面上的意思是XML允许自定义格式。但这不代表你可以随便写;
在XML基本语法规范的基础上使用的那些第三方应用程序、框架会通过XML约束的方式强制规定配置文件中可以写什么和怎么写;
XML基本语法这个知识点的定位是:不需要从零开始从头到尾的一行一行编写XML文档,而是在第三方应用程序、框架已提供的配置文件的基础上修改。 要改成什么样取决于需求,而怎么改取决XML基本语法和具体的XML约束;
1.1.常见的配置文件类型:
(1)properties:例如druid连接池就是使用properties文件作为配置文件;
(2)XML:例如Tomcat就是使用XML文件作为配置文件;
(3)YAML/YML:例如SpringBoot就是使用YAML作为配置文件
(4)json:通常用来做文件传输,也可以用来做前端或者移动端的配置文件
1.2XML配置文件示例:
<?xml version="1.0"encoding="UTF-8"?>
<students><student><name>张三</name><age>18</age></student><student><name>李四</name><age>20</age></student>
</students>
1.3.XML的基本语法:
XML的基本语法和HTML的基本语法如出一辙。XML基本语法+HTML约束=HTML语法。在逻辑上HTML确实是XML的子集;
(1).XML文档声明:这部分基本上就是固定格式,<?xml version="1.0"encoding="UTF-8"?>
(2).根标签:根标签有且只能有一个
(3).标签关闭:开始标签和结束标签必须成对出现,单标签在标签内关闭;
(4).标签嵌套:标签可以嵌套,但是不能交叉嵌套,注释不能嵌套,
(5).标签名、属性名建议使用小写字母
(6).属性:属性必须有值,属性值必须加引号,单双都行;
1.2.使用DOM4J进行XML解析
1.2.1.使用步骤:
(1).导入jar包dom4j.jar
(2).创建解析器对象(SAXReader)
(3).解析xml获得Document对象
(4).获取根节点RootElement
(5).获取根节点下的子节点
1.2.2.DOM4J中API介绍:
(1).创建SAXReader对象:
SAXReader saxReader = new SAXReader();
(2).解析XML获取Document对象,需要传入要解析的XML文件的字节输入流
Document document = reader.read(inputStream);
(3).获取文档的根标签
Element rootElement = document.getRootElement();
(4).获取标签的子标签
//获取所有子标签
List<Element> sonElementList = rootElement.elements();
//获取指定标签名的子标签
List<Element> sonElementList = rootElement.elements("标签名");
(5).获取标签体内的文本
String text = element.getText();
(6).获取标签的某个属性的值
String value = element.attributeValue("属性名");
二、Tomcat10
2.1.WEB服务器
Web服务器通常由硬件和软件共同构成。
硬件:电脑,提供服务供其它客户电脑访问;
软件:电脑上安装的服务器软件,安装后能提供服务给网络中的其他计算机,将本地文件映射成一个url地址供网络中的其他人访问;
常见的JavaWeb服务器:
(1)Tomcat(Apache):当前应用最广的JavaWeb服务器;
(2)Jetty:更轻量级、更灵活的servlet容器;
(3)JBoss(Redhat红帽):支持JavaEE,应用比较广EJB容器;
(4)GlassFish(Orcale):Oracle开发JavaWeb服务器;
(5)Resin(Caucho):支持JavaEE,应用越来越广;
(6)Weblogic(Orcale):支持JavaEE,适合大型项目;
(7)Websphere(IBM):支持JavaEE,适合大型项目;
2.2.Tomcat服务器
(1)Tomcat简介:
Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、sun和其他一些公司及个人共同开发而成。最新的Servlet和JSP规范总是能在Tomcat中得到体现, 因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器;
(2)Tomcat版本对应关系:
企业用的比较广泛的是8.0和9.0,目前比较新正式发布版本是Tomcat10.0,Tomcat11仍然处于测试阶段;
JavaEE和Servelet版本号对应关系:
Servlet Version | EE Version |
6.1 | Jakarta EE ? |
6.0 | Jakarta EE 10 |
5.0 | Jakarta EE 9/9.1 |
4.0 | JAVA EE 8 |
3.1 | JAVA EE 7 |
3.1 | JAVA EE 7 |
3.0 | JAVA EE 6 |
Tomcat版本和Servlet版本之间的对应关系:
Servlet Version | Tomcat Version | JDK Version |
6.1 | 11.0.x | 17 and later |
6.0 | 10.1.x | 11 and later |
5.0 | 10.0.x(superseded) | 8 and later |
4.0 | 9.0.x | 8 and later |
3.1 | 8.5.x | 7 and later |
3.1 | 8.0.x(superseded) | 7 and later |
3.0 | 7.0.x (archived) | 6 and later (7 and later for WebSocket |
2.3.Tomcat目录:
(1)bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat10.exe、tomcat10w.exe,前者是在控制台下启动Tomcat,后者是弹出GUI窗口启动Tomcat;如果是解压版,那么会有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA HOME环境变量才能启动,shutdown.bat用来停止Tomcat;
(2)conf:这是一个非常非常重要的目录,这个目录下有四个最为重要的文件:
a.server.xml:配置整个服务器信息。例如修改端口号。默认HTTP请求的端口号是8080;
b.tomcat-users.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了;
c.web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的;
d.context.xml:对所有应用的统一配置,通常我们不会去配置它;
(3)lib:Tomcat的类库,里面是一大堆jar文件。如果需要添加Tomcat依赖的jar文件,可以把它放到这个目录中,当然也可以把应用依赖的iar文件放到这个目录中,这个目录中的iar所有项目都可以共享,但这样应用放到其他Tomcat下时就不能再共享这个目录下的iar包了,所以建议只把Tomcat需要的iar包放到这个目录下;
(4).logs:这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中;
(5).temp:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除;
(6).webapps:存放web项目的目录,其中每个文件都是一个项目;如果这个目录下已经存在了目录,那么都是Tomcat自带的项目。其中ROOT是一个特殊的项目,在地址中访问http://127.0.01:8080,没有给出项目目录时,对应就是ROOT项目:http://localhost:8080/examples,进入示例项目。其中"examples"就是项目名,即文件夹的名字;
(7).work:运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的。可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的iava和class文件都会存放到这个目录下;
2.4.WEB项目的标准结构:
(1)app:本应用根目录
(1.1)static:非必要目录,约定俗成的名字,一般在此处放静态资源(css js img);
(1.2)WEB-INF:必要目录,必须叫WEB-INF。受保护的资源目录,浏览器通过url不可以直接访问的目录;
(1.2.1)classes:必要目录,src下源代码、配置文件,编译后会在该目录下。web项目中如果没有Java源码,则该目录不会出现;
(1.2.2)lib:必要目录,项目依赖的jar编译后会出现在该目录下,web项目要是没有依赖任何jar,则该目录不会出现;
(1.2.3).web.xml:必要文件,web项目的基本配置文件,较新的版本中可以没有该文件,但是学习过程中还是需要该文件;
(1.3).index.html:非必要文件,index.html/index.htm/index.jsp为默认的欢迎页;
2.5.WEB项目部署方式
(1)方式1:直接将编译好的项目放在webapps目录下
(2)方式2:将编译好的项目打成war包放在webapps目录,tomcat启动后会自动解压war包;
(3)方式3:可以将项目放在非webapps的其他目录下,在Tomcat中通过配置文件指向app的实际磁盘路径;
在磁盘的自定义目录上准备一个app;
在tomcat的conf下创建Catalina/localhost目录,并在该目录下准备一个app.xml文件;
<!--
path:项目的访问路径,也是项目的上下文路径,就是在浏览器中,输入的项目名称
docBase:项目在磁盘中的实际路径
-->
<Context path="/app" docBase="D:\mywebappslapp" />
启动Tomcat访问测试即可
三、HTTP协议:
HTTP超文本传输协议(HTTP-Hyper Text transfer protocol)是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过十几年的使用与发展得到不断地完善和扩展。
HTTP是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。客户端与服务端通信时传输的内容我们称之为报文。 HTTP协议规定了报文的格式。 HTTP就是一个通信规则,这个规则规定了客户端发送给服务器的报文格式,也规定了服务器发送给客户端的报文格式。实际我们要学习的就是这两种报文。客户端发送给服务器的称为"请求报文",服务器发送给客户端的称为"响应报文"。
3.1.HTTP协议的会话方式:
浏览器与WEB服务器的连接过程是短暂的,每次连接只处理一个请求和响应。对每一个页面的访问浏览器与WEB服务器都要建立一次单独的连接。浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应对。
3.2.HTTP1.0和HTTP1.1的区别:
在HTTP1.0版本中浏览器请求一个带有图片的网页,会由于下载图片而与服务器之间开启一个新的连接;但在HTTP1.1版本中,允许浏览器在拿到当前请求对应的全部资源后再断开连接,提高了效率。持久连接和流水线连接允许web浏览器通过单个持久连接发送多个请求,缓存支持节省了带宽并使响应速度更快;HTTP1.1支持七种请求方法:OPTIONS,GET, HEAD, POST, PUT, DELETE和TRACE。
3.3.请求和响应报文
(1)报文的格式:
主体上分为报文首部和报文主体,中间使用空行隔开
报文首部可以进一步分为"行"和"头"
(2)请求报文:
客户端发给服务端的报文;由请求首行(请求行)、请求头信息(请求头)、空行和请求体组成
请求行:
请求方式、资源路径、协议及版本(GET/POST 资源路径?参数 HTTP/1.1)
例如:GET /05_web_tomcat/login_success.html?username=admin&password=123213 HTTP/1.1
请求头:
Host:localhost:8080(主机虚拟地址)
Connection:keep-alive(长连接)
Upgrade-Insecure-Requests:1(请求协议的自动升级[http的请求,服务器却是https的,浏览器自动会将请求协议升级为https的])
User-Agent: Mozilla/5.8 (Windows NT 6.1; WOW64)AppleWebKit/537.36 (KHTML, like Gecko)Chrome/68.0.3440.75 Safari/537.36(用户系统信息)
Accept:text/html,application/xhtml+xml,application/xml;q=8.9,image/webp,image/apng, */*;q=0.8(浏览器支持的文件类型)
Referer:http://localhost:8080/85_web_tomcat/login.html(当前页面的上一个页面的路径[当前页面通过哪个页面跳转过来的]:可以通过此路径跳转回上一个页面)
Accept-Encoding:gzip,deflate,br(浏览器支持的压缩格式)
Accept-Language:zh-CN,zh;q=0.9,en-Us;q=0.8,en;q=0.7(浏览器支持的语言)
请求体:
使用form表单发送POST请求,请求体中才有数据;
(3)响应报文
响应报文格式:响应首行(响应行)、响应头信息(响应头)、空行和响应体组成
响应行:
协议及版本、响应状态码、状态描述
例如:HTTP/1.1 288 0K(缺省)
响应头:
Server:Apache-Coyote/1.1(服务器的版本信息)
Accept-Ranges:bytes
ETag:W/"157-1534126125811"
Last-Modified: Mon,13 Aug 2018 02:88:45 GMT
Content-Type:text/html(响应体数据的类型[浏览器根据类型解析响应体数据])
Content-Length:157(响应体内容的字节数)
Date: Mon,13 Aug 2018 02:47:57 GMT(响应的时间,这可能会有8小时的时区差)
响应体:
需要浏览器解析使用的内容[如果响应的是htm页面,最终响应体内容会被浏览器显示到页面中]
响应状态码:
状态码 | 英文描述 | 中文描述 |
100 | Continue | 继续。客户端应继续其请求 |
101 | Switching Protocols | 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议 |
200 | OK | 请求成功。一般用于GET与POST请求,浏览器会把响应体内容(通常是html)显示在浏览器中 |
201 | Created | 已创建。成功请求并创建了新的资源 |
202 | Accepted | 已接受。已经接受请求,但未处理完成 |
203 | Non-Authoritative Information | 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本 |
204 | No Content | 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档 |
205 | Reset Content | 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域 |
206 | Partial Content | 部分内容。服务器成功处理了部分GET请求 |
300 | Multiple Choices | 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择 |
301 | Moved Permanently | 永久移动。请求的资源已被永久的移动到新UR,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替 |
302 | Found | 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URL;服务器会发送一个响应头Location指定新请求的URL地址; |
303 | See Other | 查看其它地址。与301类似。使用GET和POST请求查看 |
304 | Not Modified | 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源;使用了本地缓存; |
305 | Use Proxy | 使用代理。所请求的资源必须通过代理访问 |
306 | Unused | 已经被废弃的HTTP状态码 |
307 | Temporary Redirect | 临时重定向。与302类似。使用GET请求重定向 |
400 | Bad Request | 客户端请求的语法错误,服务器无法理解 |
401 | Unauthorized | 请求要求用户的身份认证 |
402 | Payment Required | 保留,将来使用 |
403 | Forbidden | 服务器理解请求客户端的请求,但是拒绝执行此请求 |
404 | Not Found | 服务器无法根据客户端的请求找到资源(网页)。通过此代码网站设计人员可设置"您所请求的资源无法找到"的个性页面;客户端错误的请求了不存在的资源; |
405 | Method Not Allowed | 客户端请求中的方法被禁止;请求的方式不允许; |
406 | Not Acceptable | 服务器无法根据客户端请求的内容特性完成请求 |
407 | Proxy Authentication Required | 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权 |
408 | Request Time-out | 服务器等待客户端发送的请求时间过长,超时 |
409 | Conflict | 服务器完成客户端的PUT请求时可能返回此代码,服务器处理请求时发生了冲突 |
410 | Gone | 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置 |
411 | Length Required | 服务器无法处理客户端发送的不带Content-Length的请求信息 |
412 | Precondition Failed | 客户端请求信息的先决条件错误 |
413 | Request EntityToo Large | 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息 |
414 | Request-URl Too Large | 请求的URI过长(URI通常为网址),服务器无法处理 |
415 | Unsupported Media Type | 服务器无法处理请求附带的媒体格式 |
416 | Requested range not satisfiable | 客户端请求的范围无效 |
417 | Expectation Failed | 服务器无法满足Expect的请求头信息 |
500 | Internal ServerError | 服务器内部错误,无法完成请求;请求资源找到了,但服务器内部出现了错误; |
501 | Not Implemented | 服务器不支持请求的功能,无法完成请求 |
502 | Bad Gateway | 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应 |
503 | Service Unavailable | 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中 |
504 | Gateway Time-out | 充当网关或代理的服务器,未及时从远端服务器获取请求 |
505 | HTTP Version not supported | 服务器不支持请求的HTTP协议的版本,无法完成处理 |
相关文章:

JavaWeb—XML_Tomcat10_HTTP
一、XML XML是EXtensible MarkupLanguage的缩写,翻译过来就是可扩展标记语言。所以很明显,XML和HTML一样都是标记语言,也就是说它们的基本语法都是标签。 可扩展:三个字表面上的意思是XML允许自定义格式。但这不代表你可以随便写; 在XML基…...

中介者模式在Java中的实现:设计模式精解
中介者模式在Java中的实现:设计模式精解 中介者模式(Mediator Pattern)是一种行为型设计模式,用于定义一个中介者对象,以封装一系列对象之间的交互,从而使对象之间的交互不再直接发生,减少了系…...

PyQt编程快速上手
Python GUI安装 GUI就是图形用户界面的意思,在Python中使用PyQt可以快速搭建自己的应用,使得自己的程序看上去更加高大上,学会GUI编程可以使得自己的软件有可视化的结果。 如果你想用Python快速制作界面,可以安装PyQt:…...

Docker Swarm管理
Docker Swarm管理 前置知识点 Docker Swarm 是 Docker 公司 2014年出品的基于 Docker 的集群管理调度工具,能够将多台主机构建成一个Docker集群,并结合Overlay网络实现容器调度的互访 用户可以只通过 Swarm API 来管理多个主机上的 Docker Swarm 群集包…...

Python | Leetcode Python题解之第335题路径交叉
题目: 题解: class Solution:def isSelfCrossing(self, distance: List[int]) -> bool:n len(distance)# 处理第 1 种情况i 0while i < n and (i < 2 or distance[i] > distance[i - 2]):i 1if i n:return False# 处理第 j 次移动的情况…...

Ubuntu视频工具
1. VLC VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影音光…...

HBase snapshot+replication 测试
一、背景 画像标签服务(CDP)是核心服务,被公司其他系统如现金、电商、风控等核心业务调用。异常的话,影响范围大。 二、目标 存量数据测试通过 snapshot 迁移。增量数据测试通过 replication 同步。 三、测试 方案二测试&#x…...

代码随想录算法训练营第四十一天|图论基础、深度优先搜索理论基础、98. 所有可达路径、797. 所有可能的路径
图论基础 图的种类:有向图 和 无向图,加权有向图, 加权无向图 无向图中有几条边连接该节点,该节点就有几度。 在有向图中,每个节点有出度和入度。出度:从该节点出发的边的个数。入度:指向该节…...

STM32学习笔记09-SPI通信
目录 SPI通信简介 硬件电路 移位示意图 SPI基本时序单元 SPI时序 W25Q64简介 硬件电路 W25Q64框图 Flash操作注意事项 SPI外设简介 SPI框图 SPI基本结构 主模式全双工连续传输 非连续传输 软件/硬件波形对比 SPI应用 软件SPI读写W25Q64 硬件SPI读写W25Q64 SP…...

树------二叉树
什么是树: 树是一种特殊的结构,由多个节点连接构成,并且不包含回路,也可以认为树是不包含回路的无向连通图,具体如下图所示。 当我们要确定一棵树的形态时,要指定一个根节点,没有父亲节点的节点…...

如何对加密后的数据进行模糊查询(面试题)
目录 前言1. 基本知识2. 国内做法 前言 这道题在面试比较常见,但是在算法逻辑层面中,直接对加密数据进行模糊查询是不可行的,因为加密算法会使数据变成不可读的形式 需要在加密过程中采取特殊的策略来支持模糊查询 以下只是结合网上现有的资…...

【MYSQL】当前读和快照读
前言 复习下隔离级别: 1、读未提交:一个事务还没提交时,它做的变更就能被别的事务看到。 2、读提交:一个事务提交之后,它做的变更会被其他事务看到 3、可重复读:一个事务执行过程中看到的数据,…...

C语言-使用数组法,指针法实现将一个5X5的矩阵中最大的元素放在中心,四个角分别放四个最小的元素(顺序为从左到右,从上到下,从小到大存放),写一函数实现之。
1.题目要求: 将一个5X5的矩阵中最大的元素放在中心,四个角分别放四个最小的元素(顺序为从左到右,从上到下,从小到大存放),写一函数实现之。 2.数组法实现 #define _CRT_SECURE_NO_WARNINGS 1…...

Android gradle 构建
Understanding Tasks - Gradle task kapt 是 Kotlin 语言的注解处理器,它是 Android Studio 中用于处理 Kotlin 注解的工具。它通过在编译期间生成代码来增强 Kotlin 代码的功能。需要 Kotlin 编译器来解析和处理注解;使用 APT 来生成代码,…...

vulnhub系列:devguru
vulnhub系列:devguru 靶机下载 一、信息收集 nmap扫描存活,根据mac地址寻找IP nmap 192.168.23.0/24nmap扫描端口,开放端口:22、80、8585 nmap 192.168.23.147 -p- -sV -Pn -O访问80端口 dirb目录扫描,存在 git 源…...

Robot Operating System——高质量图像传输
大纲 应用场景定义字段解释 案例 sensor_msgs::msg::Image 是 ROS (Robot Operating System) 中的一个消息类型,用于表示未压缩的图像数据。它通常用于传输和处理高质量的图像数据。 应用场景 机器人视觉 图像处理:在机器人视觉系统中,未压缩…...

NLP_情感分类_预训练加微调方案
文章目录 项目背景代码导包一些模型以及训练的参数设置定义dataset定义模型读取数据声明训练及测试数据集将定义模型实例化打印模型结构模型训练测试集效果 同类型项目 项目背景 项目的目的,是为了对情感评论数据集进行预测打标。在训练之前,需要对数据…...

全网最适合入门的面向对象编程教程:36 Python的内置数据类型-字典
全网最适合入门的面向对象编程教程:36 Python 的内置数据类型-字典 摘要: 字典是非常好用的容器,它可以用来直接将一个对象映射到另一个对象。一个拥有属性的空对象在某种程度上说就是一个字典,属性名映射到属性值。在内部&#…...

DataWind看板绘制案例
摘要: 1. 在不清楚DataWind看板怎么画的情况,可以先把表格给实现了,然后找几个有价值的数据进行看板实现 2. 还是不知道怎么画的情况,就去模仿其他人的案例; 3. 多看看DataWind提供的函数用法,就可以把表达式的使用运用起来了; 飞书官方文档:https://www.volcen…...

Golang | Leetcode Golang题解之第335题路径交叉
题目: 题解: func isSelfCrossing(distance []int) bool {n : len(distance)// 处理第 1 种情况i : 0for i < n && (i < 2 || distance[i] > distance[i-2]) {i}if i n {return false}// 处理第 j 次移动的情况if i 3 && di…...

C# 在Word中插入或删除分节符
在Word中,分节符是一种强大的工具,用于将文档分成不同的部分,每个部分可以有独立的页面设置,如页边距、纸张方向、页眉和页脚等。正确使用分节符可以极大地提升文档的组织性和专业性,特别是在长文档中,需要…...

基于STM32+Qt设计的无人超市收银系统(206)
文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】设计实现的功能【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】上位机设计思路1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要【5】国内外技术发展现状1.4 开发工具的选择【1】设备端开…...

开源免费的表单收集系统TDuck
TDuck(填鸭表单)是一款开源免费的表单收集系统,它基于Apache 2.0协议开源,用户可以随时下载源码,自由修改和定制,也可以参与到项目的贡献和反馈中。TDuck表单系统不仅支持私有化部署,还提供了丰…...

Python 生成器、迭代器、可迭代对象 以及应用场景
Python 生成器(Generators) 生成器是一种特殊的迭代器,它使用 yield 语句来逐次产生数据,而不是一次性在内存中生成数据。这意呀着生成器提供了一种懒加载(lazy evaluation)的方式,非常适合处理…...

马斯克对欧盟的反应
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

uniapp + 安卓APP + H5 + 微信小程序实现PDF文件的预览和下载
文章目录 uniapp 安卓APP H5 微信小程序实现PDF文件的预览和下载1、用到的技术及插件2、简述操作:下载预览 3、上代码:(主要是写后端,前端不大熟,我感觉写的还凑活,不对的请指正嘻嘻)4、注意的问题 uniapp 安卓APP…...

Elasticsearch 8 RAG 技术分享
作者:来自 Elastic 中国区首席架构师 Jerry 本文由 Elastic 中国区首席架构师 Jerry Zhu 在【AI 搜索 TechDay】上的分享整理而成。【AI 搜索 TechDay】 是 Elastic 和阿里云联合主办的 AI 技术 Meetup 系列,聚焦企业级 AI 搜索应用和开发者动手实践&am…...

根据字典值回显,有颜色的
背景 本项目以若依前端vue2版本为例,项目中有根据字典值回显文本的函数selectDictLabel,但是有时候我们需要带颜色的回显,大概这样的 用法 <template v-slotscope><dict-label :options"dangerLevelOptions" :value&qu…...

多台PC网络ADB连接同一台RK3399 Android7.1.2设备
在RK3399 Android7.1.2上面,进行网络ADB调试时,如果多台电脑连接同一台Android设备,第一台连接上的能正常操作,之后连接的看到设备状态为OFFLINE,分析了下ADBD相关代码,发现在ACCEPT Client的时候没有区分别…...

前端黑科技:使用 JavaScript 实现网页扫码功能
在数字化时代,二维码已经渗透到我们生活的方方面面。从移动支付到产品溯源,二维码凭借其便捷性和高效性,成为了信息传递的重要载体。而随着前端技术的不断发展,我们甚至可以使用 JavaScript 在网页端实现二维码扫描功能࿰…...