【0基础学爬虫】爬虫基础之HTTP协议的基本原理介绍

news2024/11/30 10:52:14

00

大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学爬虫】专栏,帮助小白快速入门爬虫,本期为 HTTP 协议的基本原理介绍。

计算机网络模型

计算机网络是指由通信线路互相连接的许多自主工作的计算机构成的集合体,各个部件之间以何种规则进行通信,就是网络模型研究的问题,除了标准的 OSI 七层模型以外,常见的网络层次划分还有 TCP/IP 四层协议以及 TCP/IP 五层协议,它们之间的对应关系如下图所示:

01

  • 物理层(Physical):负责传输比特流的硬件部分,包括各种传输介质(如铜线、光纤、无线信道)和传输设备(如集线器、交换机、路由器),基于电器特性发送高低电压(电信号)传输比特流(Bits),高电压对应数字 1,低电压对应数字 0,定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等;
  • 数据链路层(Data Link):负责在物理层的传输介质上传送数据帧,并在源主机和目的主机之间建立逻辑链路,定义了电信号的分组方式,规定电信号多少位一组,每组代表什么,这一层还提供了对传输数据的检测和传输数据错误的纠正以确保数据的可靠传输,例如:Wi-Fi(IEEE 802.11)、ethernet(以太网)、FDDI(Fiber Distributed Data Interface,光纤分布式数据接口)等;
  • 网络层(Network):负责在多个主机之间传送数据包,并为分组交换提供路由选择功能,基本数据单位为 IP 数据报,主要协议:IP协议(Internet Protocol,因特网互联协议)、 ICMP(Internet Control Message Protocol,因特网控制报文协议)、IGMP(Internet Group Management Protocol,Internet 组管理协议)、ARP(Address Resolution Protocol,地址解析协议)等;
  • 传输层(Transport):负责在源主机和目的主机之间的端到端的数据传输,并为上层协议提供可靠的数据传输服务,主要协议:TCP 协议(Transmission Control Protocol,传输控制协议)、UDP 协议(User Datagram Protocol,用户数据报协议);
  • 会话层(Session):负责封装调用 TCP,会话层建立和管理应用程序之间的通信,封装了调用 TCP 去打包,然后调用 IP 协议去找路由等操作;
  • 表示层(presentation):负责解决不同系统之间的通信语法问题(数据格式化,代码转换,数据加密);
  • 应用层(Application):负责向用户提供网络服务,包括文件传输、电子邮件、远程登录等,主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。

02

HTTP 发展史

03

HTTP 协议和 HTTPS 协议

HTTP(Hypertext Transfer Protocol)中文名为超文本传输协议,其作用是把超文本数据从网络传输到本地浏览器,能够高效而准确地传输超文本文档。HTTP 是由万维网协会(World Wide Web Consortium)和 Internet 工作小组 IETF(Interner Engineering Task Force)合作制定的规范,目前被广泛使用的是 HTTP 1.1 版本,如今也有不少网站支持 HTTP 2.0 版本。

HTTP 协议的特点:

  • 应用层协议,由请求和响应构成,是一个标准的客户端服务器模型;
  • 无状态的协议,对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作;
  • 通常承载于 TCP 协议之上;
  • 由请求和响应构成,是一个标准的客户端服务器模型(B/S);
  • 永远都是客户端发起请求,服务器回送响应;
  • 通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性;
  • 双向协议,例如在上网冲浪时,浏览器是请求方 A,百度网站就是应答方 B,双方约定用 HTTP 协议来通信,于是浏览器把请求数据发送给网站,网站再把一些数据返回给浏览器,最后由浏览器渲染在屏幕,就可以看到图片、视频了。

04

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)是一种通过计算机网络进行安全通信的传输协议,经由 HTTP 进行通信,利用 SSL/TLS 建立全信道,加密数据包,HTTPS 使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性,相当于 HTTP 协议的安全版。

HTTPS 协议的特点:

  • 内容加密:建立了一个信息安全通道,保证数据传输的安全性;
  • 身份验证:确认网站的真实性,凡是使用 HTTPS 协议的网站,都可以通过单机浏览器地址栏的锁头标志来查看网站认证之后的真实信息,此外还可以通过 CA 机构颁发的安全签章来查询;
  • 保护数据完整性:防止传输的内容被中间人冒充或者篡改。

时势发展:

  • 苹果公司强制所有 iOS APP 在2017年1月1日前全部改为使用 HTTPS 加密,否则 APP 无法在应用商店上架;
  • 谷歌从2017年1月推出的 Chrome 56 开始,对未进行 HTTPS 加密的网址亮出风险提示,即在地址栏的显著位置提示用户”此网页不安全“;
  • 腾讯微信小程序的官方需求文档要求后台使用 HTTPS 请求进行网络通信,不满足条件的域名和协议无法正常请求。

HTTP 和 HTTPS 的区别主要如下:

  • HTTPS 协议需要到 CA 申请证书,一般免费证书较少,因而需要一定费用;
  • HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议;
  • HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443;
  • HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

上述 HTTPS 看起来是加强版的 HTTP,可圈可点,但并不是完美无缺的:

  • HTTPS 协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用;
  • SSL 证书的信用链体系并不安全,特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行;
  • SSL 证书需要购买申请,功能越强大的证书费用越高;
  • SSL 证书通常需要绑定 IP,不能在同一 IP 上绑定多个域名,IPv4 资源不可能支撑这个消耗(SSL 有扩展可以部分解决这个问题,但是比较麻烦,而且要求浏览器、操作系统支持);
  • 根据 ACM CoNEXT 数据显示,使用HTTPS协议会使页面的加载时间延长近50%,增加10%到20%的耗电;
  • HTTPS 连接缓存不如 HTTP 高效,流量成本高;
  • HTTPS 连接服务器端资源占用高很多,支持访客多的网站需要投入更大的成本;
  • HTTPS 协议握手阶段比较费时,对网站的响应速度有影响,影响用户体验,比较好的方式是采用分而治之,比如首页用 HTTP,用户信息相关页用 HTTPS。

HTTP 请求过程

HTTP 由请求和响应构成,是一个标准的客户端服务器模型(B/S),HTTP 协议永远都是客户端发起请求,服务器回送响应,HTTP 是一个无状态的协议,无状态是指客户机(Web 浏览器)和服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息,HTTP 遵循请求(Request)/应答(Response)模型,客户机(浏览器)向服务器发送请求,服务器处理请求并返回适当的应答,所有 HTTP 连接都被构造成一套请求和应答。

HTTP 请求/响应的步骤:

  1. 客户端连接到 Web 服务器:一个 HTTP 客户端,通常是浏览器,与 Web 服务器的 HTTP 端口(默认为80)建立一个 TCP 套接字连接;
  2. 发送 HTTP 请求:通过 TCP 套接字,客户端向 Web 服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据四部分组成;
  3. 服务器接受请求并返回 HTTP 响应:Web 服务器解析请求,定位请求资源,服务器将资源复本写到 TCP 套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据四部分组成;
  4. 释放连接 TCP 连接:若 connection 模式为 close,则服务器主动关闭 TCP 连接,客户端被动关闭连接,释放 TCP 连接;若 connection 模式为 keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
  5. 客户端浏览器解析 HTML 内容:客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码,然后解析每一个响应头,响应头告知以下为若干字节的 HTML 文档和文档的字符集,客户端浏览器读取响应数据 HTML,根据 HTML 的语法对其进行格式化,并在浏览器窗口中显示。

步骤简述:

  1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
  2. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立 TCP 连接;
  3. 浏览器发出读取文件(URL 中域名后面部分对应的文件)的 HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
  4. 服务器对浏览器请求作出响应,并把对应的 HTML 文本发送给浏览器;
  5. 释放 TCP 连接;
  6. 浏览器将该 HTML 文本并显示内容。

HTTP 请求/响应模型:

05

通俗点讲就是在浏览器地址栏输入一个 URL,按下回车之后便可观察到对应的页面内容,实际上,这个过程是浏览器先向网站所在的服务器发送一个请求,网站服务器接收到请求后对其进行处理和解析,然后返回对应的响应,接着传回浏览器,由于响应里包含页面的源代码等内容,所以浏览器在对其进行解析,便将网页呈现出来。

HTTP 请求方法

HTTP/1.1 协议中共定义了八种方法(有时也叫“动作”),来表明 Request-URL 指定的资源不同的操作方式,HTTP1.0 定义了三种请求方法:GET,POST 和 HEAD 方法,HTTP1.1 新增的五种请求方法:OPTIONS,PUT,DELETE,TRACE 和 CONNECT 方法:

  1. OPTIONS:返回服务器针对特定资源所支持的 HTTP 请求方法,也可以利用向 web 服务器发送 ‘*’ 的请求来测试服务器的功能性;
  2. HEAD:向服务器索与 GET 请求相一致的响应,只不过响应体将不会被返回,这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应报头中的元信息;
  3. GET:向特定的资源发出请求,并返回实体主体;
  4. POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中,POST 请求可能会导致新的资源的建立和/或已有资源的修改;
  5. PUT:向指定资源位置上传其最新内容;
  6. DELETE:请求服务器删除 Request-URL 所标识的资源;
  7. TRACE:回显服务器收到的请求,主要用于测试或诊断;
  8. CONNECT:把服务器仿作跳板,让服务器代替客户端访问其他网页。

最为常见的请求方法是 GET 和 POST,在浏览器地址栏输入一个 URL,按下回车,即发起了一个 GET 请求,请求的参数会直接包含到 URL 里;POST 请求大多在提交表单时发起,例如登录,输入用户名和密码,点击登录即发起一个 POST 请求,其数据通常以表单的形式传输,而不会体现在 URL 中,GET 和 POST 请求方法区别如下:

06

  • GET 请求中的参数包含在 URL 里,数据可以在 URL 中看到;而 POST 请求的 URL 不会包含这些数据,数据都是通过表单形式传输的,会包含在函数体中;

  • GET 请求提交的数据最多只有 1024 字节,POST 方式则没有限制;

  • GET 请求是不安全的,因为在传输过程中,参数数据直接暴露在 URL 上,所以不能用来传递敏感信息;

  • GET 请求参数会完整的保留在浏览器的历史记录中,POST 请求的参数不会保留;

  • GET 请求在浏览器回退的时候是无害的,POST 请求会再次提交数据;

  • GET 请求在浏览器中可以被主动 cache(缓存),而 POST 请求不会,可以手动设置;

  • GET 请求产生的 URL 地址是可以被 bookmark(添加书签)的,POST 请求不可以;

  • GET 请求只允许 ASCII 码,POST 请求没有限制,允许二进制数据;

  • GET 请求的执行效率比 POST 请求好;

  • 对于 GET 请求,浏览器会把 http header 和 data 一起发送出去,服务器响应200,请求成功;

    对于POST请求,浏览器先发送 header,服务器会响应100(已经收到请求的第一部分,正在等待其余部分),浏览器再次发送 data,服务器返回200,请求成功;

    简而言之:GET 产生一个 TCP 数据包,POST 产生两个 TCP 数据包,不过并不是所有浏览器都会在 POST 中发送两次包,Firefox(火狐)就只发送一次;

HTTP 请求头

HTTP 请求头(HTTP Request Header)提供了关于请求,响应或者其他的发送实体的信息,HTTP 的头信息包括通用头、请求头、响应头和实体头四个部分:

  1. 通用头标:即可用于请求,也可用于响应,是作为一个整体而不是特定资源与事务相关联;
  2. 请求头标:允许客户端传递关于自身的信息和希望的响应形式;
  3. 响应头标:服务器和于传递自身信息的响应;
  4. 实体头标:定义被传送资源的信息,即可用于请求,也可用于响应。

07

每个头域由一个域名,冒号(:)和域值三部分组成,常用的 HTTP 请求头如下:

  • Accept:请求报头域,用于指定客户端可接受那些类型的信息;

    Accept: application/json 浏览器可以接受服务器回发的类型为 application/json;

    Accept: */* 代表浏览器可以处理所有类型,(一般浏览器发给服务器都是发这个);

  • Accept-Encoding:用于指定客户端可接受的内容编码,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate);

  • Accept-Language:用于指定客户端可接受的语言类型(zh-cn,zh;q=0.5:支持的语言分别是简体中文和中文,优先支持简体中文);

  • Content-type:也叫互联网媒体类型(Internet Media Type)或者 MIME 类型,在 HTTP 协议消息头中用来表示具体请求中的媒体类型信息(text/html:HTML 格式、image/gif:GIF 图片、application/json:JSON 类型、application/x-www-form-urlencoded:表单数据、multipart/form-data:表单文件上传等);

  • Host:请求报头域主要用于指定被请求资源的 Internet 主机和端口号,其内容为请求 URL 的原始服务器或网关的位置,从 HTTP1.1 版本开始,请求必须包含此内容;

  • Referer:用于标识请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做来源统计、防盗链处理等;

  • User-Agent:简称 UA,这是一个特殊的字符串头,可以使服务器识别客户端使用的操作系统及版本、浏览器及版本等信息;

  • Connection:表示是否需要持久连接(HTTP 1.1默认进行持久连接);

  • Date:请求发送的日期和时间;

  • Expect:请求的特定的服务器行为;

  • Warning:关于消息实体的警告信息;

  • Max-Forwards:限制信息通过代理和网关传送的时间;

  • Cookie:主要功能更是维持当前访问会话,用来存储一些用户信息以便让服务器辨别用户身份的(大多数需要登录的网站上面会比较常见),比如 Cookie 会存储一些用户的用户名和密码,当用户登录后就会在客户端产生一个 Cookie 来存储相关信息,这样浏览器通过读取 Cookie 的信息去服务器上验证并通过后会判定你是合法用户,从而允许查看相应网页;

HTTP 响应头

HTTP 响应头(HTTP Responses Header)中包含了服务器对请求的应答信息,HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文:

  1. 状态行:由 HTTP 协议版本号, 状态码, 状态消息 三部分组成;
  2. 消息报头:用来说明客户端要使用的一些附加信息;
  3. 空行:消息报头后面的空行是必须的;
  4. 响应正文:服务器返回给客户端的文本信息。

08

常用的 HTTP 响应头如下:

  • Accept-Ranges:表明服务器是否支持指定范围请求及哪种类型的分段请求;
  • Allow:对某网络资源的有效的请求行为,不允许则返回405;
  • Cache-Control:告诉所有的缓存机制是否可以缓存及哪种类型;
  • Content-Language:响应体的语言;
  • Content-Length:响应体的长度;
  • Content-Location:请求资源可替代的备用的另一地址;
  • Content-Range:在整个返回体中本部分的字节位置;
  • Content-Type:返回内容的 MIME 类型;
  • Date:原始服务器消息发出的时间;
  • Expires:响应过期的日期和时间,可以让代理服务器或浏览器将加载的内容更新到缓存中,当再次访问相同的内容时,就可以直接从缓存中加载,达到降低服务器负载、缩短加载时间的目的;
  • Location:用来重定向接收方到非请求 URL 的位置来完成请求或标识新的资源;
  • Proxy-Authenticate:它指出认证方案和可应用到代理的该 URL 上的参数;
  • refresh:应用于重定向或一个新的资源被创造,在5秒之后重定向(由网景提出,被大部分浏览器支持);
  • Server:包含服务器的信息,例如名称、版本号等;
  • Set-Cookie:设置 Http Cookie,响应头中的 Set-Cookie 用于告诉浏览器需要将此内容放在 Cookie 中,下次请求时将 Cookie 携带上;
  • Warning:警告实体可能存在的问题;
  • WWW-Authenticate:表明客户端请求实体应该使用的授权方案。

HTTP 响应状态码

09

1xx:该状态码表示临时响应并需要请求者继续执行操作

  • 100(继续):请求者应当继续提出请求。服务器已收到请求的第一部分,正在等待剩余部分;
  • 101(切换协议):请求者要求服务器切换协议,服务器也已确认切换协议;

2xx:该状态码表示成功

  • 200(成功):服务器已成功处理请求。一般这表示服务器正常处理了请求,并且正常返回了相应的页面;
  • 201(已创建):请求成功并且服务器成功创建新资源;
  • 202(已接受):服务器已接收请求,但仍未处理;
  • 203(非授权信息):服务器成功处理请求,但是返回的信息可能来自另外一来源;
  • 204(无内容):服务器成功处理请求,但是没有返回任何内容;
  • 205(重置内容):服务器成功处理请求,但没有返回任何内容;
  • 206(部分内容):服务器成功处理了部分GET请求;

3xx:该状态码表示要完成请求,需要进一步操作,通常这些状态码用来重定向

  • 300(多钟选择):针对请求,服务器可以执行多种操作。服务器可以根据请求者的(user-agent)选择一项操作,或者提供操作列表供请求者选择;
  • 301(永久移动):请求的网页已永久移动到新的位置。服务器返回该状态码时,会自动将请求者转到新位置;
  • 302(临时移动):服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置进行后续的请求;
  • 303(查看其它位置):请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此状态码;
  • 304(未修改):自从上次请求后,请求的网页未修改过,服务器返回此状态码时,不会返回网页内容;
  • 305(使用代理):请求者只能使用代理访问请求的网页;
  • 307(临时重定向):服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行后续请求;

4xx:表示请求可能出错,妨碍了服务器的处理

  • 400(错误请求):表示客户端请求的语法错误,服务器无法理解;
  • 401(未授权):请求要求身份验证。一般需要登录的网站,服务器可能会返回此状态码;
  • 402:保留;
  • 403(禁止):服务器理解请求客户端的请求,拒绝请求;
  • 404(未找到):服务器无法根据客户端请求找到资源;
  • 405(方法禁用):禁用请求中指定的方法;
  • 406(不接受):无法使用请求的内容特性响应请求的网页;
  • 407(需要代理授权):此状态码与401类似,但指定请求者应当授权使用代理;
  • 408(请求超时):服务器等候请求时超时;
  • 409(冲突):服务器在完成请求是发生冲突。服务器必须在响应中包含有关冲突的信息;
  • 410(已删除):请求的资源已永久删除;
  • 411(需要有效长度):服务器不接受不含有效内容长度标头字段的请求;
  • 412(未满足前提条件):服务器未满足请求者在请求中设置的其中一个前提条件;
  • 413(请求实体过大):相应实体过大。服务器拒绝处理当前请求,请求超过服务器所能处理和允许处理的最大值;
  • 414(请求的url过长):请求的url过长,服务器无法处理;
  • 415(不支持的媒体类型):请求的格式不受请求页面的支持;
  • 416(请求范围不符合要求):如果页面无法提供请求的范围,服务器则会返回此状态码;
  • 417(未满足期望值):在请求头 Expect 指定的预期内容无法被服务器满足;
  • 422(不可处理的实体):请求格式正确,但由于含有语义错误,无法响应;

5xx:表示服务器在尝试处理请求时发生内部错误,这些错误可能是服务器本身的错误,并不是请求出错,当然也有可能是请求者的故意为之,使服务器本身出现错误

  • 500(服务器内部错误):服务器遇到一个未预料到的状况,导致无法完成对请求的处理;
  • 501(尚未实施):服务器不具备完成请求的功能;
  • 502(错误网关):服务器作为网关或者代理,从上游服务器收到无效响应;
  • 503(服务不可用):服务器目前无法使用;
  • 504(网关超时):服务器作为网关或代理,但未及时收到上游服务器的响应;
  • 505(HTTP版本不受支持):服务器不支持请求中所用的 HTTP 版本。

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

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

相关文章

干货 | 中小企业选型 Elasticsearch 避坑指南

1、线上常见问题在我线下对接企业或线上交流的时候,经常会遇到各种业务场景不同的问题。比如,常见问题归类如下:常见问题1:ES 适合场景及架构选型问题。公司的核心业务是做企业员工健康管理,数据来自电子化后的员工体检…

【学习总结】相机与IMU标定一:Kalibr论文

论文:2013IROS论文,Unified Temporal and Spatial Calibration for Multi-Sensor Systems,是Kalibr工具的参考论文之一。介绍了如何进行IMU与相机标定。 参考的一篇资料:知乎:超全汇总!多传感器离线/在线时…

Java【二叉树】相关知识+基本操作

文章目录前言一、树形结构1.树的定义2.树的概念(术语)3.树的存储结构二、二叉树1.二叉树的概念两种特殊的二叉树2.二叉树的性质3.二叉树的存储结构4.二叉树的基本操作4.1 二叉树的前序遍历--Preorder Traversal4.2 二叉树的中序遍历--Inorder Traversal4…

Vue项目中如何使用computed计算属性

computed: 1.基本使用 在computed中定义一个函数(看起来是一个函数,其实是一个属性),命名按照属性规范命名(一般为名词)。 1.1 应用场景: 当数据A的逻辑很复杂时,把A这个数据写在计算属性里面 1.2 代码位置…

星戈瑞收藏Sulfo-CY7 amine/NHS ester/maleimide小鼠活体成像染料标记反应

关于小鼠活体成像,就一定要提到CY活性染料标记反应: 用不同的活性基团的Cyanine菁染料和相应的活性基团的生物分子或小分子药物发生反应,链接到一起。 根据需要标记的抗原、抗体、酶、多肽等分子所带的可标记基团的种类(氨基、醛…

Java中GSON的使用(内含源代码)

Java中GSON的使用(内含源代码) 源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87474951 目录Java中GSON的使用(内含源代码)源代码下载链接地址:[https://download.csdn.net/dow…

智能遥测终端机 水文RTU 5G水资源监测 雨水情测报应用

M21F-V50系列智能遥测终端机是辰迈智慧自主研发的融合北斗三代短报文、4/5G公网通信、LoRa、Bluetooth、Ethernet等多种通信方式、数据采集及防盗报警于一体的智能遥测终端。产品内置数据采集器,实现内部模数转换,提供增量式雨量接口、RS232、RS485、以太…

【07-JVM面试专题-JVM运行时数据区的虚拟机栈你知道吗?它的基本结构是什么呢?你知道栈帧的结构吗?那你说说动态链接吧?】

JVM运行时数据区的虚拟机栈你知道吗?它的基本结构是什么呢?你知道栈帧的结构吗?那你说说动态链接吧? JVM运行时数据区的虚拟机栈你知道吗?它的基本结构是什么呢?你知道栈帧的结构吗?那你说说动态…

itk中的一些图像处理

文章目录1.BinomialBlurImageFilter计算每个维度上的最近邻居平均值2.高斯平滑3.图像的高阶导数 RecursiveGaussianImageFilter4.均值滤波5.中值滤波6.离散高斯平滑7.曲率驱动流去噪图像 CurvatureFlowImageFilter8.由参数alpha和beta控制的幂律自适应直方图均衡化9.Canny 边缘…

React hooks之useContext《类比Vue的Provide》(三)

系列文章目录 提示:我又来更新啦!!!这次又把之前useEffect的补充了一次!!!! 文章目录系列文章目录前言1.Vue中的Provide和useContext(相同点)2..Vue中的Provi…

大数据Hadoop教程-学习笔记02【Apache Hadoop、HDFS】

视频教程:哔哩哔哩网站:黑马大数据Hadoop入门视频教程教程资源:https://pan.baidu.com/s/1WYgyI3KgbzKzFD639lA-_g 提取码: 6666【P001-P017】大数据Hadoop教程-学习笔记01【大数据导论与Linux基础】【P018-P037】大数据Hadoop教程-学习笔记0…

0301微分中值定理-微分中值定理与导数的应用

文章目录1 罗尔定理2 拉格朗日定理3 柯西中值定理5后记1 罗尔定理 费马引理 设函数f(x)在点x0f(x)在点x_0f(x)在点x0​的某邻域U(x0)U(x_0)U(x0​)内有定义,并且在点x0x_0x0​处可导,如果对任意的x∈U(x0),x\in U(x_0),x∈U(x0​),有 f(x)≤f(x0)(或f(x)…

给你的Vim加上自动编程功能

Vim 是高度可定制、可扩展的编辑器。这对热爱折腾的程序员来说,绝对是一种乐趣,同时也是进一步提升开发效率的源泉。近期CodeGeeX举办的黑客松活动中,参赛选手Lance 提交了一款名叫Vim with CodeGeeX的作品,这款作品是基于CodeGee…

Java开源工具库使用之httpclient

文章目录前言一、简单使用1.1 get 请求1.2 post 简单表单请求1.3 表单上传文件1.4 上传 json 数据二、高级用法2.1 超时和重试2.2 Cookie2.3 拦截器2.4 fluent API三、3.1旧版本使用3.1 Get 请求3.2 Post 请求四、异步版本使用4.1 基本请求4.2 请求流水线执行参考前言 HttpCli…

SSM SpringBoot vue 健康医疗预约系统

SSM SpringBoot vue 健康医疗预约系统 SSM 健康医疗预约系统 功能介绍 首页 图片轮播展示 出诊信息推荐 医院公告 科室信息 科室详情 出诊信息 医生详情 挂号预约 登录注册 留言反馈 个人中心 我的收藏 后台管理 登录 注册医生 个人中心 用户管理 科室信息管理 医生管理 出诊…

二、Java虚拟机的基本结构

Java虚拟机的架构1.内存结果概述2.类加载器子系统的作用3. 类加载器ClassLoader角色4.类的加载过程5.类加载器的分类1.引导类加载器(虚拟机自带的加载器)Bootstrap ClassLoader2.扩展类加载器(虚拟机自带的加载器) Extenssion ClassLoader3.应用程序类加载器(虚拟机自带的加载器…

CAN TP层函数介绍

如果想使用CAN TP层函数,首先需要在网络节点或测试节点配置页面的Componets组件一栏添加osek_tp.dll文件。路径为:C:\Program Files\Vector CANoe 15\Exec32 至于节点的CAPL程序内需不需要引用这个dll文件,无所谓,可写可不写。但是如果是其他dll,必须在CAPL程序中引用。为…

多服务器节点访问解决一人一单问题+redis设置锁方案

项目地址及项目具体介绍-码云仓库:https://gitee.com/flowers-bloom-is-the-sea/distributeNodeSolvePessimisticLockByRedis 测试1: 这里使用jmeter同时启动2各线程: 原来的数据库表的数据: goods的数据是: id …

金蝶云星空物料批量禁用反禁用程序

【需求描述】:需要通过批量禁用反禁用操作物料。 【操作方法】: 下载附件批量禁用程序。 首先双击安装,一直下一步。 双击打开 会提示需要配置账套信息 点击菜单栏配置 输入相关配置信息 填写完毕后 然后点击下载模板导入要下载的数据 选…

Linux进程学习【三】

✨个人主页: Yohifo 🎉所属专栏: Linux学习之旅 🎊每篇一句: 图片来源 🎃操作环境: CentOS 7.6 阿里云远程服务器 Perseverance is not a long race; it is many short races one after another…