输入 URL 之后,浏览器背着我们都做了什么事?

Playwright Stealth插件实战:绕过反爬检测的浏览器指纹伪装技术 浏览器指纹识别是现代网站反爬虫和反自动化检测的核心技术之一,它通过收集navigator.webdriver、用户代理、屏幕分辨率、插件列表等浏览器环境特征,生成唯一标识来区分真人用户与自动化脚本。其原理在于分析JavaScript API暴露的硬件和软件信息组合。这项技术的价值在于保护网站免受恶意爬取和自动化攻击,但也给合规的自动化测试和数据采集带来了挑战。在实际应用场景中,电商价格监控、数据聚合和自动化测试等需要稳定运行脚本的场景,常常因浏览器指纹暴露而被拦截。为此,Playwright Stealth 阅读详情

本篇文章参考以下博文

前言

  如题,这是一个经常在面试里出现的题目,主要目的是让你描述一下浏览器工作原理,通过这些流程,了解你个人对于整个前端整体的掌握程度,顺便了解一下你的知识深度和广度。

  有些同学可能不解,作为前端开发,写好页面不就行了?知道这些有什么用?

  最直接的结果就是,了解之后工资很可能翻倍!各位,诱惑大不大?

  我个人的感受就像旅游一样,原来是在小山村,日出而作,日落而息。每一项活动都是安排好的,你只需要照着经验做就行了,至于为什么要这样没人会关心。

  但是当慢慢了解了浏览器之后,就像开启了新世界的大门,所有的一切都是经过无数前辈的实验而总结下来的最优方案,在这里你可以知道页面为什么要这样写,请求为什么会跨域,一切的都会有一个合理的解释。

整体流程

  回到标题,当输入 URL 之后,浏览器会做些什么?

  1. 输入 URL 并回车
  2. URL 解析 / DNS 解析查找域名 IP 地址
  3. 网络连接发起 HTTP 请求
  4. HTTP 报文传输过程
  5. 服务器接受数据
  6. 服务器响应请求 / MVC
  7. 服务器返回数据
  8. 客户端接收数据
  9. 浏览器加载 / 渲染页面
    在这里插入图片描述

1. 输入URL并回车

  在我们输入 url 之前,紧张有序的工作早就已经开始了。在某个阳光明媚,鸟语花香的午后,一台服务器被接通了电源,随着操作系统的唤醒,内部设定的 http 服务进程开始工作。

  这个守护进程可能是 Apache、Nginx、IIS 等,无论是谁,这个 http 服务会开始定位到服务器上 www 文件夹,一般是在 var/www 。

  然后启动一些附属模块,比如 php 等,准备的差不多了,就会向操作系统申请一个 tcp 链接,默默绑定在 80 端口,调用 accept 函数,开始了一丝不苟的监听工作,监听可能来自地球任何地方的请求,一级戒备,一旦有警,随时响应。

  与此同时,服务器不是一个人在战斗,身旁不远处,就是他的老战友,数据库服务器,他们一个是枪炮,一个是弹药,时刻守卫着机房阵地。

  如果是正规军,这支作战小队还可能拥有自动反击系统(缓存服务器),信息统一处理中心(负载均衡服务器)等。

  历史背景接待完毕,接下来正式开始。

  当点击回车后,这一信息会首先下达到 CPU ,经过处理后交给操作系统,再由操作系统 GUI 通知浏览器,浏览器接收到之后,知会内核开始工作。这一过程涉及的大部分都是底层知识,和问题无关,我们不进行讨论。

  上面再操作系统将事件传递到浏览器的过程中,浏览器可能会做一些预处理,反正正式命令还没来,闲着也是闲着,最常见的会匹配 URL ,从历史记录或者书签等什么地方,找到有过记录的相似 URL 来预估想要访问的网站。

  对于浏览器行业的老大哥 Chrome ,它会在启动时预先查询10个你有可能访问的域名等。

2.URL 解析 / DNS 查询

  接下来是输入 URL 「回车」后,浏览器会对 URL 进行检查,检查内容如下:

   ①协议 :是从该计算机获取资源的方式,一般有 Http、Https、Ftp、File、Mailto、Telnet、News 等协议,不同协议有不同的通讯内容格式,协议主要作用是告诉浏览器如何处理将要打开的文件;

   ②网络地址 :指示该连接网络上哪一台计算机(服务器),可以是域名或者 IP 地址,域名或 IP 地址后面有时还跟一个冒号和一个端口号;

   ③资源路径 :指示从服务器上获取哪一项资源的等级结构路径,以斜线 / 分隔;
文件名一般是需要真正访问的文件,有时候,URL以斜杠 / 结尾,而隐藏了文件名,在这种情况下, URL 引用路径中最后一个目录中的默认文件(通常对应于主页),这个文件常被称为 index.html 或 default.htm 。

   ④动态参数 :有时候路径后面会有以问号 ? 开始的参数,这一般都是用来传送对服务器上的数据库进行动态询问时所需要的参数,有时候没有,很多为了 seo 优化,都已处理成伪静态了。要注意区分 url 和路由的区别。

  URL完整格式为:协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#标志

  例如:https://blog.youkuaiyun.com/EcbJS?spm=1011.2124.3001.5343

  协议部分: https

  网络地址: blog.youkuaiyun.com (依次为 子/三级域名.二级域名.顶/一级域名)

  资源路径: /EcbJS

  参数: spm=1011.2124.3001.5343

  浏览器对 URL 进行检查时首先判断协议,如果是 http/https 就按照 Web 来处理,另外还会对 URL 进行安全检查,然后直接调用浏览器内核中的对应方法,接下来是对网络地址进行处理。

  如果地址不是一个 IP 地址而是域名则通过 DNS (域名系统)将该地址解析成 IP 地址。 IP 地址对应着网络上一台计算机, DNS 服务器本身也有 IP ,你的网络设置包含 DNS 服务器的 IP 。 例如: 116.211.167.187 www.zhihu.com域名请求对应获得的 IP是 。

   DNS 在解析域名的时候有两种方式:递归查询和迭代查询,

  递归查询的流程如下:

  一般来说,浏览器会首先查询浏览器缓存( DNS 在各个层级都有缓存的,相应的,缓存当然有过期时间, Time to live )。

  如果没有找到,就会检查系统缓存,检查本地硬盘的 hosts 文件,这个文件保存了一些以前访问过的网站的域名和 IP 对应的数据。

  它就像是一个本地的数据库。如果找到就可以直接获取目标主机的 IP 地址了(注意这个地方存在安全隐患,如果有病毒把一些常用的域名,修改 hosts 文件,指向一些恶意的 IP ,那么浏览器也会不加判断的去连接,是的,这正是很多病毒的惯用手法)

  如果本地 hosts 也没有找到的话,则需要再向上层找路由器缓存,路由器有自己的 DNS 缓存,可能就包括了查询的内容;

  如果还是没有,需要接着往上找,查询 ISP DNS 缓存(本地名称服务器缓存,就是客户端电脑 TCP/IP 参数中设置的首选 DNS 服务器,此解析具有权威性)。

  一般情况下在不同的地区或者不同的网络,如电信、联通、移动的情况下,转换后的 IP 地址很可能是不一样的,这涉及到负载均衡,通过 DNS 解析域名时会将你的访问分配到不同的入口,先找附近的本地 DNS 服务器去请求解析域名,尽可能保证你所访问的入口是所有入口中较快的一个。

  如果附近的本地 DNS 服务器还是没有缓存我们请求的域名记录的话,这时候会根据本地 DNS 服务器的设置(是否设置转发器)进行查询,如果未用转发模式,则本地名称服务器再以 DNS 客户端的角色发送与前面一样的 DNS 域名查询请求转发给上一层。

  这里可能经过一次或者多次转发,从本地名称服务器到权威名称服务器再到顶级名称服务器最后到根名称服务器。(顺便一提,根服务器是互联网域名解析系统 DNS 中最高级别的域名服务器,全球一共 13 组,每组都只有一个主根名称服务器采用同一个 IP )。

  所以,最终请求到了根服务器后,根服务器查询发现我们这个被请求的域名是由类似 A 或者 B 这样的服务器解析的,但是,根服务器并不会送佛送到西地找 A 或 B 之类的直接去解析,因为它没有保存全部互联网域名记录,并不直接用于名称解析,

  它只是负责顶级名称服务器(如 .com/.cn/.net 等)的相关内容。所以它会把所查询得到的被请求的DNS域名中顶级域名所对应的顶级名称服务器 IP 地址返回给本地名称服务器。

  本地名称服务器拿到地址后再向对应的顶级名称服务器发送与前面一样的 DNS 域名查询请求。对应的顶级名称服务器在收到 DNS 查询请求后,也是先查询自己的缓存。

  如果有则直接把对应的记录项返回给本地名称服务器,然后再由本地名称服务器返回给 DNS 客户端,如果没有则向本地名称服务器返回所请求的 DNS 域名中的二级域名所对应的二级名称服务器(如 baidu.com/qq.com/net.cn 等)地址。

  然后本地名称服务器继续按照前面介绍的方法一次次地向三级(如 www.baidu.com/bbs.taobao.com 等)、四级名称服务器查询。

  直到最终的对应域名所在区域的权威名称服务器返回最终记录给本地名称服务器。同时本地名称服务器会缓存本次查询得到的记录项(每层都应该会缓存)。再层层下传,最后到了我们的 DNS 客户端机子,一次 DNS 解析请求就此完成。

  如果最终权威名称服务器都说找不到对应的域名记录,则会向本地名称服务器返回一条查询失败的 DNS 应答报文,这条报文最终也会由本地名称服务器返回给 DNS 客户端。

  当然,如果这个权威名称服务器上配置了指向其它名称服务器的转发器,则权威名称服务器还会在转发器指向的名称服务器上进一步查询。另外,如果 DNS 客户端上配置了多个 DNS 服务器,则还会继续向其它 DNS 服务器查询的。

在这里插入图片描述
  迭代查询的流程如下:
在这里插入图片描述

3. 应用层客户端发送HTTP请求

  互联网内各网络设备间的通信都遵循 TCP/IP 协议,利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通信。分层由高到低分别为:应用层、传输层、网络层、数据链路层。发送端从应用层往下走,接收端从数据链路层网上走。如图所示:
在这里插入图片描述
  从上面的步骤中得到 IP 地址后,浏览器会开始构造一个 HTTP 请求,应用层客户端向服务器端发送的 HTTP 请求包括:请求报头和请求主体两个部分。

  其中请求报头( request header )包含了至关重要的信息,包括请求的方法( GET / POST ,一般的浏览器只能发起 GET 或者 POST 请求)、目标 url 、遵循的协议( HTTP / HTTPS / FTP …),返回的信息是否需要缓存,以及客户端是否发送 Cookie 等信息。需要注意的是,因为 HTTP 请求是纯文本格式的,所以在 TCP 的数据段中可以直接分析 HTTP 文本的。

Accept: 接收类型,表示浏览器支持的MIME类型
(对标服务端返回的Content-Type)
Accept-Encoding:浏览器支持的压缩类型,如gzip等,超出类型不能接收
Content-Type:客户端发送出去实体内容的类型
Cache-Control: 指定请求和响应遵循的缓存机制,如no-cache
If-Modified-Since:对应服务端的Last-Modified,用来匹配看文件是否变动,只能精确到1s之内,http1.0中
Expires:缓存控制,在这个时间内不会请求,直接使用缓存,http1.0,而且是服务端时间
Max-age:代表资源在本地缓存多少秒,有效时间内不会请求,而是使用缓存,http1.1中
If-None-Match:对应服务端的ETag,用来匹配文件内容是否改变(非常精确),http1.1中
Cookie: 有cookie并且同域访问时会自动带上
Connection: 当浏览器与服务器通信时对于长连接如何进行处理,如keep-alive
Host:请求的服务器URL
Origin:最初的请求是从哪里发起的(只会精确到端口),Origin比Referer更尊重隐私
Referer:该页面的来源URL(适用于所有类型的请求,会精确到详细页面地址,csrf拦截常用到这个字段)
User-Agent:用户客户端的一些必要信息,如UA头部等

4. 传输层TCP传输报文

  当应用层的 HTTP 请求准备好后,浏览器会在传输层发起一条到达服务器的 TCP 连接,位于传输层的 TCP 协议为传输报文提供可靠的字节流服务。

  它为了方便传输,将大块的数据分割成以报文段为单位的数据包进行管理,并为它们编号,方便服务器接收时能准确地还原报文信息。

   TCP 协议通过“三次握手”等方法保证传输的安全可靠。“三次握手”的过程是,发送端先发送一个带有 SYN(synchronize) 标志的数据包给接收端,在一定的延迟时间内等待接收的回复。

  接收端收到数据包后,传回一个带有 SYN/ACK 标志的数据包以示传达确认信息。接收方收到后再发送一个带有 ACK 标志的数据包给接收端以示握手成功。

  在这个过程中,如果发送端在规定延迟时间内没有收到回复则默认接收方没有收到请求,而再次发送,直到收到回复为止。
在这里插入图片描述

5. 网络层IP协议查询MAC地址

   IP 协议的作用是把 TCP 分割好的各种数据包封装到 IP 包里面传送给接收方。而要保证确实能传到接收方还需要接收方的 MAC 地址,也就是物理地址才可以。

   IP 地址和 MAC 地址是一一对应的关系,一个网络设备的 IP 地址可以更换,但是 MAC 地址一般是固定不变的。 ARP协议可以将IP地址解析成对应的 MAC 地址。当通信的双方不在同一个局域网时,需要多次中转才能到达最终的目标,在中转的过程中需要通过下一个中转站的 MAC 地址来搜索下一个中转目标。

6. 数据到达数据链路层

  在找到对方的 MAC 地址后,已被封装好的IP包再被封装到数据链路层的数据帧结构中,将数据发送到数据链路层传输,再通过物理层的比特流送出去。这时,客户端发送请求的阶段结束。

  这些分层的意义在于分工合作,数据链路层通过 CSMA/CD 协议保证了相邻两台主机之间的数据报文传递,而网络层的 IP 数据包通过不同子网之间的路由器的路由算法和路由转发,保证了互联网上两台遥远主机之间的点对点的通讯。

  不过这种传输是不可靠,于是可靠性就由传输层的 TCP 协议来保证, TCP 通过慢开始,乘法减小等手段来进行流量控制和拥塞避免,同时提供了两台遥远主机上进程到进程的通信,最终保证了 HTTP 的请求头能够被远方的服务器上正在监听的 HTTP 服务器进程收到。

  终于,数据包在跳与跳之间被拆了又封装,在子网与子网之间被转发了又转发,最后进入了服务器的操作系统的缓冲区,服务器的操作系统由此给正在被阻塞住的 accept 函数一个返回,将他唤醒。

7. 服务器接收数据

  接收端的服务器在链路层接收到数据包,再层层向上直到应用层。这过程中包括在传输层通过 TCP 协议将分段的数据包重新组成原来的 HTTP 请求报文。

  服务器在收到浏览器发送的 HTTP 请求之后,会将收到的 HTTP 报文封装成 HTTP 的 Request 对象,并通过不同的 Web 服务器进行处理,处理完的结果以 HTTP 的 Response 对象返回,主要包括状态码,响应头,响应报文三个部分。
状态码主要包括以下部分

  • 1xx:指示信息–表示请求已接收,继续处理。
  • 2xx:成功–表示请求已被成功接收、理解、接受。
  • 3xx:重定向–要完成请求必须进行更进一步的操作。
  • 4xx:客户端错误–请求有语法错误或请求无法实现。
  • 5xx:服务器端错误–服务器未能实现合法的请求。

  响应头主要由 Cache-Control、 Connection、Date、Pragma 等组成。响应体为服务器返回给浏览器的信息,主要由 HTML,css,js ,图片文件组成。

  常用的响应头部(部分):

Access-Control-Allow-Headers: 服务器端允许的请求Headers
Access-Control-Allow-Methods: 服务器端允许的请求方法
Access-Control-Allow-Origin: 服务器端允许的请求Origin头部(譬如为*)
Content-Type:服务端返回的实体内容的类型
Date:数据从服务器发送的时间
Cache-Control:告诉浏览器或其他客户,什么环境可以安全的缓存文档
Last-Modified:请求资源的最后修改时间
Expires:应该在什么时候认为文档已经过期,从而不再缓存它
Max-age:客户端的本地资源应该缓存多少秒,开启了Cache-Control后有效
ETag:请求变量的实体标签的当前值
Set-Cookie:设置和页面关联的cookie,服务器通过这个头部把cookie传给客户端
Keep-Alive:如果客户端有keep-alive,服务端也会有响应(如timeout=38)
Server:服务器的一些相关信息

8. 服务器响应请求并返回相应文件

  服务接收到客户端发送的 HTTP 请求后,服务器上的的 HTTP 监听进程会得到这个请求,然后一般情况下会启动一个新的子进程去处理这个请求,同时父进程继续监听。

   HTTP 服务器首先会查看重写规则,然后如果请求的文件是真实存在,例如一些图片,或 html、css、js 等静态文件,则会直接把这个文件返回,如果是一个动态的请求,那么会根据 url 重写模块的规则,把这个请求重写到一个 rest 风格的 url 上,然后根据动态语言的脚本,来决定调用什么类型的动态文件脚本解释器来处理这个请求。

  我们以 php 语言为例来说的话,请求到达一个 php 的 mvc 框架之后,框架首先应该会初始化一些环境的参数,例如远端 ip ,请求参数等等。

  然后根据请求的 url 送到一个路由器类里面去匹配路由,路由由上到下逐条匹配,一旦遇到 url 能够匹配的上,而且请求的方法也能够命中的话,那么请求就会由这个路由所定义的处理方法去处理。

  请求进入处理函数之后,如果客户端所请求需要浏览的内容是一个动态的内容,那么处理函数会相应的从数据源里面取出数据。

  这个地方一般会有一个缓存,例如 memcached 来减小 db 的压力,如果引入了 orm 框架的话,那么处理函数直接向 orm 框架索要数据就可以了,由 orm 框架来决定是使用内存里面的缓存还是从 db 去取数据,一般缓存都会有一个过期的时间,而 orm 框架也会在取到数据回来之后,把数据存一份在内存缓存中的。

   orm 框架负责把面向对象的请求翻译成标准的 sql 语句,然后送到后端的 db 去执行。

   db 这里以 mysql 为例的话,那么一条 sql 进来之后, db 本身也是有缓存的,不过 db 的缓存一般是用 sql 语言 hash 来存取的。

  也就是说,想要缓存能够命中,除了查询的字段和方法要一样以外,查询的参数也要完全一模一样才能够使用 db 本身的查询缓存。

  sql 经过查询缓存器,然后就会到达查询分析器,在这里, db 会根据被搜索的数据表的索引建立情况和 sql 语言本身的特点,来决定使用哪一个字段的索引。

  值得一提的是,即使一个数据表同时在多个字段建立了索引,但是对于一条 sql 语句来说,还是只能使用一个索引,所以这里就需要分析使用哪个索引效率最高了,一般来说, sql 优化在这个点上也是很重要的一个方面。

   sql 由 db 返回结果集后,再由 orm 框架把结果转换成模型对象,然后由 orm 框架进行一些逻辑处理,把准备好的数据,送到视图层的渲染引擎去渲染,渲染引擎负责模板的管理,字段的友好显示,也包括负责一些多国语言之类的任务。

  在视图层把页面准备好后,再从动态脚本解释器送回到 http 服务器,由 http 服务器把这些正文加上一个响应头,封装成一个标准的 http 响应包,再通过 tcp ip 协议,送回到客户机浏览器。

9.浏览器开始处理数据信息并渲染页面

  历经千辛万苦,我们请求的响应终于成功到达了客户端的浏览器,响应到达浏览器之后,浏览器首先会根据返回的响应报文里的一个重要信息——状态码,来做个判断。

  如果是 200 开头的就好办,表示请求成功,直接进入渲染流程,如果是 300 开头的就要去相应头里面找 location 域,根据这个 location 的指引,进行跳转,这里跳转需要开启一个跳转计数器,是为了避免两个或者多个页面之间形成的循环的跳转,当跳转次数过多之后,浏览器会报错,同时停止。

  比如: 301 表示永久重定向,即请求的资源已经永久转移到新的位置。在返回 301 状态码的同时,响应报文也会附带重定向的 url ,客户端接收到后将 http 请求的 url 做相应的改变再重新发送。

  如果是 400 开头或者 500 开头的状态码,浏览器也会给出一个错误页面。比如:404 not found 就表示客户端请求的资源找不到。

  当浏览得到一个正确的 200 响应之后,接下来面临的一个问题就是多国语言的编码解析了,响应头是一个 ASCII 的标准字符集的文本,这个还好办,但是响应的正文本质上就是一个字节流,对于这一坨字节流,浏览器要怎么去处理呢?

  浏览器会去看响应头里面指定的 encoding 域,按照指定的 encoding 去解析字符。

  接下来就是构建 dom 树了,在 html 语言嵌套正常而且规范的情况下,这种 xml 标记的语言是比较容易的能够构建出一棵 dom 树出来的,当然,对于互联网上大量的不规范的页面,不同的浏览器应该有自己不同的容错去处理。

  构建出来的 dom 本质上还是一棵抽象的逻辑树,构建 dom 树的过程中,如果遇到了由 script 标签包起来的 js 动态脚本代码,那么会把代码送到 js 引擎里面去跑。

  如果遇到了 style 标签包围起来的 css 代码,也会保存下来,用于稍后的渲染。如果遇到了 img 或 css 和 js 等引用外部文件的标签,那么浏览器会根据指定的 url 再次发起一个新的 http 请求,去把这个文件拉取回来。

  值得一提的是,对于同一个域名下的下载过程来说,浏览器一般允许的并发请求是有限的,通常控制在两个左右,所以如果有很多的图片的话,一般出于优化的目的,都会把这些图片使用一台静态文件的服务器来保存起来,负责响应,从而减少主服务器的压力。

  dom 树构造好了之后,就是根据 dom 树和 css 样式表来构造 render 树了,这个才是真正的用于渲染到页面上的一个一个的矩形框的树,网页渲染是浏览器最复杂、最核心的功能。

  对于 render 树上每一个框,需要确定他的 x y 坐标,尺寸,边框,字体,形态,等等诸多方面的东西, render 树一旦构建完成,整个页面也就准备好了,可以上菜了。

  需要说明的是,下载页面,构建 dom 树,构建 render 树这三个步骤,实际上并不是严格的先后顺序的,为了加快速度,提高效率,让用户不要等那么久,现在一般都并行的往前推进的,现代的浏览器都是一边下载,下载到了一点数据就开始构建 dom 树,也一边开始构建 render 树,构建了一点就显示一点出来,这样用户看起来就不用等待那么久了。

  整个过程需要多个模块写作才能最终展示出来的,对于前端来说,我们可以只关注浏览器的相关操作。




告别SAP GUI安装!手把手教你配置SAP WEBGUI,实现浏览器直接登录 本文详细介绍了如何通过配置SAP WEBGUI实现浏览器直接登录,告别传统SAP GUI安装的繁琐步骤。通过性能对比、部署技巧和高级增效方法,帮助用户提升工作效率,特别适合企业IT管理员和终端用户。 阅读详情

相关推荐

大华SDK与WebAPI集成实战:浏览器实时播放摄像头视频的方案解析

在安防监控与Web开发的交汇点,如何让浏览器直接播放IPC或NVR的实时画面,始终是集成难点。大华SDK作为设备侧能力入口,负责底层协议交互与流数据获取;而大华WebAPI则通过RESTful接口提供设备管理、通道查询等标准化操作,两者互补形成完整的技术链路。理解其分工后,需解决RTSP取流地址拼接、流媒体协议转换以及浏览器兼容性等核心问题。基于流媒体网关中转方案,将RTSP转为HLS或WebRTC,可彻底规避ActiveX插件限制,实现跨平台、低延迟的网页视频播放。该架构不仅适用于园区视频巡检、中控平台等

weixin_30279671的博客 333

浏览器输入url地址后会发生什么

1.用户输入URL,会使用浏览器默认搜索引擎加上搜索内容合成url;如果是域名会加上协议(如https)合成完整的url。 2.然后按下回车。浏览器进程通过进程间通信把url传给网络进程。(网络进程接收到url才发起真正的网络请求)。 3.网络进程接收到url后,先查找有没有缓存。有缓存,直接返回缓存的资源。 没有缓存。(进入真正的网络请求)。 首先获取域名的IP,系统会首先自动从hosts文件中寻找域名对应的 IP 地址,一旦找到,和服务器建立TCP连接;如果没有找到,则系统会将网址提交 DNS..

weixin_48730616的博客 758

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py和Pandas库,详细演示了如何高效读取HDF5格式文件、理解数据结构、提取关键特征(如传感器数据与剩余使用寿命RUL),并整合为可用于预测性维护分析的DataFrame,帮助研究者和工程师快速上手这一重要的工业时序数据集。

weixin_29083373的博客 278

输入一个URL后发生了什么

1. DNS解析 输入一个网址并按回车之后浏览器会根据输入的URL查找对应的IP,具体过程如下: (1)查找浏览器缓存,浏览器会保存一段时间内访问过的一些网址的DNS信息。 (2)如果没有找到对应的IP,浏览器就调用操作系统缓存来继续查找这个网址的DNS信息。 (3)如果还是没找到对应的IP,就发送一个请求到路由器上,路由器在路由器缓存上查找记录的DNS信息。 (4)如果还是没有找到对应的IP,这...

不服输的南瓜的博客 2183

搞定汽车座椅电机EMC超标:一个PCB滤波板的实战设计与避坑心得

本文详细介绍了汽车座椅电机EMC超标问题的解决方案,通过PCB滤波板的实战设计,解决了传导发射测试超标问题。文章分享了在空间受限条件下的滤波电路架构设计、接地系统优化及迭代验证过程,为汽车直流电机的EMC整改提供了实用方法论。

weixin_30336061的博客 378

OsgEarth —— 笔记1 - 创建地球的earth文件

效果         正文      1、准备一张全球的渲染图(tif格式)、一张全球的高程图(tif格式)        2、创建并编写.earth文件           在步骤1目录下创建china-simple.earth,并将如下内容写入。 <map name="Globe" type="geocentric" version="2"> <!-- 全球影像图 --> <image name="GlobeImage" driver="gdal"> &l

7681

输入facebook的URL按下回车后究竟发生了什么

转自:http://network.51cto.com/art/201103/252335.htm 作为一名软件开发或是网络技术人员,你应该对Web应用程序的运行原理和协议交换,以及涉及到的技术:如浏览器、HTTP、HTML、Web服务器和请求处理程序等都有所了解才行。在这篇文章中,我们将深入探讨你访问某个URL时发生的一系列事情。 1、你在浏览器中输入某个URL 我们从这里

hjwang1的专栏 1313

AI在生物学领域的应用:基因序列分析和人工智能生物学

好的,非常感谢您提供的这个精彩的主题和详细的要求。我会全力以赴,遵循您的要求写一篇内容丰富、结构清晰、论述深入的专业技术文章。现在,就让我们开始这篇关于"AI在生物学领域的应用:基因序列分析和人工智能生物学"的博客文章吧! 1. 背景介绍 1.1 生物信息学的兴起

AI天才研究院 1413

在浏览器输入url后执行什么

面试题

qq_36611673的博客 2670

面向元数据的 SAP UI 中枢:namespace sap.ui.mdc 全景解析

如果把应用前端比作一条数据到交互的装配线,sap.ui.mdc 就是那条线的标准化工装:以 PropertyInfo 描述原料,以 Delegate 定义装配方法,以 p13n 与 VariantManagement 交付面向个体的最终产物;而 Condition Model、Operator 与 ValueHelp 则让输入与筛选的语义落地。与 OData V4 服务与 Fiori Elements 宏构件组合使用时,它能在保持一致体验的同时,给自由式开发者留下足够的可编排空间。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 238

x265开源编码器源码框架深度解析

x265开源编码器源码框架深度解析

世界那么大,我想去看看~【随心更新,看世界去了😄】 668

输入URL后发生了什么

当我们在浏览器的地址栏中输入URL后,按下【Enter】键,Web页面随即被打开。在这一个过程中发生了什么?事实上,这一问题属于一道非常经典的面试题,它考察的范围非常广,每个知识点又可以细挖得非常深。网上已有大量的相关文章。我在此一方面是用我自己所掌握的知识,所能理解的方式来解答这个问题,另一方面也是对读了《图解HTTP》相关内容的总结。 初步的概念 首先,对于这个问题要先有一个初步的概念。即...

qq_42164670的博客 910

Cesium 实现气象(温度,降水,风速)可视化详细代码实现

本教程介绍了使用Cesium实现气象数据可视化的方法,主要包括:1) 搭建Cesium开发环境;2) 三种核心气象要素的展示技术:温度热力图(基于颜色渐变和点密度)、降水区域填充(矩形着色)和风速风向(粒子系统);3) 数据集成方案,包括模拟数据生成和API对接;4) 高级功能如3D温度柱和时间序列动画;5) 性能优化策略,如数据聚合和LOD控制。教程提供了完整的代码示例,从基础配置到视觉效果实现,帮助开发者构建交互式气象可视化应用。

专注AI大模型,软件混淆,授权 1846

当我们输入URL直到页面加载完成发生了什么呢

当我们输入URL之后,浏览器都背着我们干了啥呢?一直想写这个文章,前前后后拖了好久,今天我们就来谈谈这个“深奥”的问题~~ 这个过程大体上主要是这些步骤: - DNS解析 - TCP连接 - 发送HTTP请求 - 服务器处理请求并返回HTTP报文 - 浏览器解析、渲染页面 - 连接结束 1.DNS解析(即浏览器查找域名的IP地址) 输入的域名并不是最后资源所在的真实位置,而域名只是与...

qq_42445025的博客 271

GEE案例:Landsat 5、7、8影像构建1985-2023年rsei生态遥感指数详细代码

rsei(Regional Silviculture Ecological Index,地区林业生态指数)是一种生态遥感指标,用于评估森林生态系统的健康状况和生态服务。构建1985-2023年的rsei生态遥感指,主要需要使用Landsat 5、7和8的遥感影像数据。以下是一种可能的构建方法:1. 数据获取:从美国地质调查局(USGS)或其他可靠数据提供商处获取Landsat 5、7和8的遥感影像数据。确保选择的影像具有适当的空间和时间分辨率,以覆盖所需的时间段。

此星光明博客 3403

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

浏览器故事

浏览器大家都知道,平日里我们使用浏览器遨游在网络世界里,的确在网络里我们能获取好多知识,看到某篇技术文章或者系列文章就会保存到本地上,也会在网上买些书等等吧。我们有没有想过在浏览器的地址栏里录入地址,回车之后,那浏览器背着我们都干了什么呢(嘿嘿)?今儿我们就聊聊浏览器隐私,呵呵。 OS可以说是一家之长,管理、协调各个软件工作,生怕偏袒谁,浏览器是家族成员里最活跃分子,人类在它面前可没有隐私

JuanRiquelme的专栏 724

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【转】浏览器地理位置(Geolocation)API 简介

转自[url]http://www.zhangxinxu.com/wordpress/?p=1725[/url] by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=1725 一、开篇简述 Geolocation API(地理位置应用程序接口)提供了一个可以...

铁血蓝狮 427

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

DownGit 零基础使用教程:不用克隆,把 GitHub 单个文件夹一键打包成 ZIP

想从 GitHub 上只拿走一个小文件夹,却总是被迫下载整个仓库——这是每个开发者都撞过的墙。DownGit 就是为这个场景而生的 GitHub 资源打包下载工具:把链接贴进输入框,等几秒,一个 ZIP 就落到你手里,不用克隆、不用装任何软件。 举个最常见的画面:你在一个几百 MB 的开源仓库里,看中了 docs 目录下的那份接口文档。你只需要这一个文件夹,剩下的代码对你毫无用处。放在以前,接下

gitblog_00519的博客 241

Get与Post的区别

  下午回学校的走半路上的时候,接到了面试的电话,因为时间比较着急外加上面试时间不算长,然后背着书包,蹲在马路牙子上完成了面试,问了一点项目相关的问题,问了一个Ajax中请求数据中Get和Post两种方式的区别,只知道Get应用于较短的数据请求,Post则相反,然后接着问了Get短的范围是多少,问的懵逼了,准备问一下小哥这个问题的答案,然后时间比较紧他很快就挂电话了,所以自己回来查了查。...

285

localhost 拒绝了我们的连接请求 vscode_Github代码空间服务初尝——在线的VSCode

Github最近在内测一款新的秘密武器代码空间服务,一种由Visual Studio Code支持的在线浏览器内集成开发环境。该服务可以让用户快速加载虚拟机和完整的集成开发环境 (IDE),用户只需通过浏览器就进行代码编辑和调试,支持对常见语言的调试。代码空间包括为特定仓库开发所需的一切,其中包括具有语法突出显示和自动完成功能的文本编辑器、终端、调试工具和 Git 命令,所有这些都集成在 GitH...

weixin_34729012的博客 636

iapp如何把html文件打包进去,iapp问题,我用url把一个网站打包成了app,是一个电影网站,比如我进入了一个电影界面,...

用us,有专门的属性的本回答由提问者推荐有更简单的,且功能更强大,花3分钟时间立马拥有自己的APP,一键生成Android与IOS,点击进入初雪云可以的,在APICloud控制台可以填写相关网站,创建一个APP,之后云编译就是一个单独的APP了。很简单的,你可以去试试。本回答被提问者采纳浏览器控件我可以追答332773781你可以在网站上写一个php程序或asp程序来配合,用iapp的post...

weixin_39697660的博客 1395

基于code-server打造私有AI编程工作站

在群晖上部署 Code Server + HAPI,打造随时随地的 AI 编程工作站,支持 Claude Code、Codex、 Gemini、OpenCode 等主流 AI CLI

wbsu2004的博客 2224

python爬虫post请求前多一次options预请求_前端每次请求数据时,都会先发一个option的请求请求,然后才有post, 这种是什么情况该怎么爬取?...

这个情况叫做跨域,如果你是后台爬这个东西,正常发请求就OK,就只CORS机制本身来讲是不会限制后台请求的。(当然如果服务器强限制Origin或者包含其它校验逻辑的话就另说了)我们下面大概说一下这种跨域方案的实现机制。它的全名是跨域资源共享机制(Cross-origin resource sharing,简称CORS)是为了解决浏览器跨域访问资源限制而提出的一种解决方案。它的基本思想是为HTTP请求...

weixin_29294395的博客 2161

告别远程桌面客户端!用FreeRDP-WebConnect在浏览器里直接连Windows服务器(保姆级Windows安装教程)

本文详细介绍了如何使用FreeRDP-WebConnect在浏览器中直接连接Windows服务器,无需安装远程桌面客户端。通过保姆级Windows安装教程,涵盖环境准备、安装部署、安全配置及性能优化,帮助用户实现跨平台、零客户端的远程办公解决方案,显著提升工作效率和安全性。

weixin_30703911的博客 217

前端八股文全解析:从核心原理到高效学习路线

JavaScript语言基础与浏览器运行机制,是前端开发者技术能力的底层坐标。从闭包、原型链到事件循环,再到页面渲染流程与缓存策略,这些看似基础的知识点,实际上是衡量开发者基本功的通用语言。在技术栈快速迭代的今天,框架可以更换、工具链可以演进,但对语言和浏览器原理的深刻理解,依然是高效沟通与系统设计的关键。从面试准备到团队协作,从内容输出到架构设计,经典八股不仅提供了标准化的能力评估框架,更沉淀出可复用的学习路径和方法论。本文从这些基础概念出发,剖析前端八股背后的原理与价值,并分享一套经过实测的学习路线,帮

weixin_29000991的博客 249
上一篇: WebPack打包性能优化
下一篇: 恶补基本功-JavaScript中的分号
不见浅诗~
博客等级 码龄7年 506粉丝 129原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值