浏览器输入url后经历的过程(详细)

2023-10-30

页面加载流程:

  1. DNS查询

  2. TCP连接

  3. 发送HTTP请求

  4. 服务器处理HTTP请求并返回HTTP报文

  5. 浏览器解析并render页面

  6. HTTP连接断开

1. DNS查询

浏览器查看浏览器缓存-->系统缓存-->查找本地host文件-->本地DNS服务器缓存,如果缓存中有,则直接在屏幕中显示页面内容。若没有,则进行DNS解析,获取相应的IP地址,本地域名服务器会向 根域名服务器发送一个请求。如果根域名服务器也不存在该域名时,本地域名会向顶级域名服务器(TLD)发送一个请求,即根域名服务器-->顶级域名服务器-->权威域名服务器依次类推下去。直到最后本地域名服务器得到URL对应的IP地址并把它缓存到本地,供下次查询使用。

2.TCP连接

DNS解析返回域名的IP之后,接下来就是浏览器要和该IP建立TCP连接了。

三次握手:

 

  • 之所以是三次握手而不是两次,是因为如果只有两次,在服务端收到SYN后,向客户端返回一个ACK确认就进入establish状态,万一这个请求中间遇到网络情况而没有传给客户端,客户端一直是等待状态,后面服务端发送的信息客户端也接受不到了。

3. 发送HTTP请求

TCP连接已建立,意味着桥已经搭好了,下一步就该传输HTTP消息了,即客户端与服务器进行通信。网页请求是一个单向请求的过程,即是一个客户端浏览器向服务器请求数据,服务器返回相应的数据的过程。浏览器根据 URL 内容生成 HTTP 请求

http请求

请求:请求行(方法 路径 版本) 请求头 空行 请求体(POST方法时存在)

请求头:

:authority: static.leetcode-cn.com
:method: GET
:path: /cn-frontendx-assets/production/_next/static/css/4539c5e3547b78e8.css
:scheme: https
accept: */*
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9
cache-control: no-cache
origin: https://leetcode.cn
pragma: no-cache
referer: https://leetcode.cn/
sec-ch-ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: cross-site
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36

请求方法

GET 获取资源。用来请求已被URI识别的资源。GET方法用作请求数据,但不会对数据产生任何影响

HEAD 获取报文头部 跟GET方法类似,但HEAD方法不返回报文的主体,只返回一些相关信息,比如确认URI的有效性、资源更新的日期等信息

POST 传输实体主体。用来给服务器发送数据,比如要表单提交的数据,文件更新的数据等。

PUT 传输文件。用来传输文件,请求报文主体中包含文件内容,然后保存到请求URI指定了资源的存放位置

DELETE 删除文件。用来删除文件,即删除按请求URI下的指定资源

OPTIONS 用于获取目的资源所支持的通信选项。用于获取请求URL所支持的方法。(响应报文包含一个 Allow 首部字段,该字段的值表明了服务器支持的所有 HTTP 方法。一般用于CORS

常用标准请求头字段

    Accept            设置接受的内容类型
    Accept-Charset         设置接受的字符编码
    Accept-Encoding        设置接受的编码格式
    Accept-Datetime        设置接受的版本时间
    Accept-Language        设置接受的语言
    Authorization          设置HTTP身份验证的凭证
    Cache-Control          设置请求响应链上所有的缓存机制必须遵守的指令
    Connection           设置当前连接和hop-by-hop协议请求字段列表的控制选项
    Content-Length         设置请求体的字节长度
    Content-MD5          设置基于MD5算法对请求体内容进行Base64二进制编码
    Cookie    设置服务器使用Set-Cookie发送的http cookie
    Date               设置消息发送的日期和时间
    Expect             标识客户端需要的特殊浏览器行为
    Forwarded            披露客户端通过http代理连接web服务的源信息
    From               设置发送请求的用户的email地址
    Host          设置服务器域名和TCP端口号,如果使用的是服务请求标准端口号,端口号可以省略
    If-Match  设置客户端的ETag,当时客户端ETag和服务器生成的ETag一致才执行,适用于更新自从上次更新之后没有改变的资源
    If-Modified-Since 设置更新时间,从更新时间到服务端接受请求这段时间内如果资源没有改变,允许服务端返回304 Not Modified
    If-None-Match   设置客户端ETag,如果和服务端接受请求生成的ETage相同,允许服务端返回304 Not Modified
    If-Range 设置客户端ETag,如果和服务端接受请求生成的ETage相同,返回缺失的实体部分;否则返回整个新的实体
    If-Unmodified-Since 设置更新时间,只有从更新时间到服务端接受请求这段时间内实体没有改变,服务端才会发送响应
    Max-Forwards 限制代理或网关转发消息的次数
    Origin  标识跨域资源请求(请求服务端设置Access-Control-Allow-Origin响应字段)
    Pragma             设置特殊实现字段,可能会对请求响应链有多种影响
    Proxy-Authorization      为连接代理授权认证信息
    Range    请求部分实体,设置请求实体的字节数范围,具体可以参见HTTP/1.1中的Byte serving
    Referer  设置前一个页面的地址,并且前一个页面中的连接指向当前请求,意思就是如果当前请求是在A页面中发送的,那么referer就是A 
    TE      设置用户代理期望接受的传输编码格式,和响应头中的Transfer-Encoding字段一样
    Upgrade   请求服务端升级协议
    User-Agent 用户代理的字符串值
    Via     通知服务器代理请求
    Warning   实体可能会发生的问题的通用警告


 

4. 服务器处理HTTP请求并返回HTTP报文

HTTP 请求到达服务器,服务器进行对应的处理。最后要把数据传给浏览器,也就是返回网络响应

响应:响应行(版本 状态码 原因) 响应头 空行 响应体

Cache-Control: no-cache
Connection: keep-alive /* 表示建立持久链接 */
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Wed, 04 Dec 2019 12:29:13 GMT /* 响应时间 */
Age:/* 响应持续时间 */
Server: apache /* 服务器应用程序软件的名称和版本 */
Set-Cookie: rsv_i=xxx; path=/; domain=.baidu.com /* 服务器下发cookie */

响应体 Body:判断Connection字段, 如果请求头或响应头中包含Connection: Keep-Alive,表示建立了持久连接,这样TCP连接会一直保持,之后请求统一站点的资源会复用这个连接,否则断开TCP连接,请求-响应流程结束

响应状态码

1**(信息类):表示接收到请求并且继续处理
      100——Continue客户必须继续发出请求
      101——客户要求服务器根据请求转换HTTP协议版本

2**(响应成功):表示请求被成功接收、理解和接受
200——OK表明该请求被成功地完成,所请求的资源发送回客户端
201—— Created  提示知道新文件的URL
202——Accepted接受和处理、但处理未完成

3**(重定向类):为了完成指定的动作,必须接受进一步处理
300——请求的资源可在多处得到
301——Moved Permanently本网页被永久性转移到另一个URL
302——请求的网页被转移到一个新的地址,但客户访问仍继续通过原始URL地址,重定向,新的URL会在response中的Location中返回,浏览器将会使用新的URL发出新的Request。
304——Not Modified自从上次请求后,请求的网页未修改过,服务器返回此响应时,不会返回网页内容,代表上次的文档已经被缓存了,还可以继续使用

4**(客户端错误类):请求包含错误语法或不能正确执行
400——客户端请求有语法错误,不能被服务器所理解
403——Forbidden  禁止访问,服务器收到请求,但是拒绝提供服务
404——Not Found一个404错误表明可连接服务器,但服务器无法取得所请求的网页,请求资源不存在。eg:输入了错误的URL

5**(服务端错误类):服务器不能正确执行一个正确的请求
HTTP 500 Internal Server Error - 服务器遇到错误,无法完成请求
HTTP 502 - 网关错误
HTTP 503:Service Unavailable 由于超载或停机维护,服务器目前无法使用,一段时间后可能恢复正常

常用标准响应头

 Access-Control-Allow-Origin 指定哪些站点可以参与跨站资源共享
    Accept-Patch                指定服务器支持的补丁文档格式,适用于http的patch方法
    Accept-Ranges               服务器通过byte serving支持的部分内容范围类型
    Age                         对象在代理缓存中暂存的秒数
    Allow                       设置特定资源的有效行为,适用方法不被允许的http 405错误
    Alt-Svc    服务器使用"Alt-Svc"(Alternative Servicesde的缩写)头标识资源可以通过不同的网络位置或者不同的网络协议获取
    Cache-Control               告诉服务端到客户端所有的缓存机制是否可以缓存这个对象,单位是秒
    Connection                  设置当前连接和hop-by-hop协议请求字段列表的控制选项
    Content-Disposition         告诉客户端弹出一个文件下载框,并且可以指定下载文件名
    Content-Encoding            设置数据使用的编码类型
    Content-Language            为封闭内容设置自然语言或者目标用户语言
    Content-Length              响应体的字节长度
    Content-Location            设置返回数据的另一个位置
    Content-MD5                 设置基于MD5算法对响应体内容进行Base64二进制编码
    Content-Range               标识响应体内容属于完整消息体中的那一部
    Content-Type                设置响应体的MIME类型
    Date                        设置消息发送的日期和时间
    ETag                        特定版本资源的标识符,通常是消息摘要
    Expires                     设置响应体的过期时间
    Last-Modified               设置请求对象最后一次的修改日期
    Link                        设置与其他资源的类型关系
    Location                    在重定向中或者创建新资源时使用
    P3P                         以P3P:CP="your_compact_policy"的格式设置支持P3P(Platform for Privacy Preferences Project)策略,大部分浏览器没有完全支持P3P策略,许多站点设置假的策略内容欺骗支持P3P策略的浏览器以获取第三方cookie的授权
    Pragma                      设置特殊实现字段,可能会对请求响应链有多种影响
    Proxy-Authenticate          设置访问代理的请求权限
    Public-Key-Pins             设置站点的授权TLS证书
    Refresh   "重定向或者新资源创建时使用,在页面的头部有个扩展可以实现相似的功能,并且大部分浏览器都支持
    Retry-After 如果实体暂时不可用,可以设置这个值让客户端重试,可以使用时间段(单位是秒)或者HTTP时间
    Server                      服务器名称
    Set-Cookie                  设置HTTP Cookie
    Status                      设置HTTP响应状态
    Strict-Transport-Security   一种HSTS策略通知HTTP客户端缓存HTTPS策略多长时间以及是否应用到子域
    Trailer                     标识给定的header字段将展示在后续的chunked编码的消息中
    Transfer-Encoding           设置传输实体的编码格式,目前支持的格式: chunked, compress, deflate, gzip, identity
    Upgrade                      请求客户端升级协议
    Vary      通知下级代理如何匹配未来的请求头已让其决定缓存的响应是否可用而不是重新从源主机请求新的
    Via                          通知客户端代理,通过其要发送什么响应
    Warning                      实体可能会发生的问题的通用警告
    WWW-Authenticate             标识访问请求实体的身份验证方案
    X-Frame-Options              点击劫持保护:
       deny frame  中不渲染
       sameorigin  如果源不匹配不渲染
       allow-from  允许指定位置访问
       allowall    不标准,允许任意位置访问


5. 浏览器解析并render页面

一个页面一般包含HTML、CSS、 JS、 图片等文件

浏览器的渲染主要步骤

​    DOM树的构建:渲染引擎解析HTML文档,并将HTML文档包含的元素转化为一个个DOM,并构建一个DOM树,若如果遇到< link href ="..">和< script src ="..">这种外链加载 CSS 和 JS 的标签,浏览器会启用别的线程下载这些静态资源。在 head 中遇到 JS 文件时,HTML 的解析会停下来,等 JS 文件下载结束并且执行完,HTML 的解析工作再接着来,防止 JS 修改已经完成的解析结果,JS的解析会阻塞DOM的解析。

​    CSSOM:引擎开始解析来自CSS文件或直接嵌在HTML页面中的CSS样式数据,这些样式信息包含了颜色,大小,位置等属性。DOM的解析和CSS的解析是互不影响的,两者是并行的,但是由于render tree的生成是依赖DOM Tree和CSSOM Tree的,因此CSS必然会阻塞DOM的渲染。更为严谨一点的说,CSS会阻塞render tree的生成,进而会阻塞DOM的渲染。

​    渲染树:将 DOM 和 CSSOM 整合成 RenderTree ,渲染引擎会给每个DOM元素安排精确的样式,大小,坐标等,并根据坐标显示在屏幕上。

为了更好的用户体验,渲染引擎会尽量在屏幕上尽快显示内容。在开始构建和布局渲染树之前,它不会等到所有 HTML 都被解析。部分内容将被解析和显示,而该过程将继续处理来自网络的其余内容。

渲染引擎是单线程工作的,除了网络操作,其他所有的都是单线程的。在Firefox和Safari,它们自己就是主线程,而Chrome就是每个tab处理主线程。网络操作则由多个并列线程去执行,但数量也是受限的,一般在2-6个。浏览器的主线程是一个无限的事件循环,而且一直保持进程alive,一直等着各种事件(例如绘画事件,布局事件),并处理他们。

优化

1. 将 CSS 放在 HTML 头部:这样会让浏览器尽早拿到 CSS 尽早生成 CSSOM ,然后在解析 HTML 之后可一次性生成最终的RenderTree ,渲染一次即可。如果 CSS 放在 HTML 底部,会出现渲染卡顿的情况,影响性能和体验。

2. 将 JS 放在 HTML 底部:JS 放在底部可以保证让浏览器优先渲染完现有的 HTML 内容,让用户先看到内容,体验好。另外, JS 执行如果涉及 DOM 操作,得等待 DOM 解析完成才行, JS 放在底部执行时, HTML 肯定都解析成了 DOM 结构。 JS 如果放在 HTML 顶部, JS 执行的时候 HTML 还没来得及转换为 DOM 结构,可能会报错。

3. script 放在 body 里
当JS 文件放在 head 中属于同步加载,会阻塞 DOM 树的构建,进而影响页面的加载。,由于 DOM 是自上而下解析的,因此 JS 不会阻塞 DOM 的解析,而且这时候可以在 JS 中操作 DOM
4. script设置 defer 属性
通过给 script 标签设置 defer 属性,将脚本文件设置为延迟加载,当浏览器遇到带有 defer 属性的 script 标签时,会再开启一个线程去下载 JS 文件,同时继续解析 HTML,等 HTML 全部解析完、DOM 加载完成之后,再去执行加载好的 JS 文件。只适用于引用外部 JS 文件,并且可以确保所有加了 defer 属性的脚本会按顺序执行
5. script设置 async 属性
async 属性和 defer 属性类似,也是会开启一个线程去下载js文件,但和 defer 不同的是,aysnc 会在 JS 加载完成后立刻执行,而不是会等到 DOM 加载完成之后再执行,所以还是有可能会造成阻塞。同样的也是只适用于外部 JS 文件,如果有多个设置了 aysnc 的 JS 文件,不能像 defer 那样保证按照顺序执行
 

浏览器的组件构成

  1. 用户界面 User Interface: UI组件包括地址栏,前进/后退按钮,书签菜单等。
  2. 浏览器引擎 Browser Engine: 用来查询及操作渲染引擎的接口;
  3. 渲染引擎 Rendering engine : 负责显示请求的内容。例如,如果是HTML页面,它将解析HTML,CSS,并将解析的内容显示在屏幕上。不同的浏览器使用不同的渲染引擎:IE使用Trident Firefox使用Gecko Safari使用WebKit Chrome和Opera(版本15开始)使用Blink。它是基于Webkit开发的。
  4. 网络 Networking: 负责网络调用,例如HTTP请求。为不同的平台使用不同的实现接口。
  5. UI后端 UI backend: 主要用来绘画基本的UI元素,例如下拉框对话框,Windows等。这个UI后台暴露一些通用的接口,并不依赖平台的具有通用接口。
  6. JS解析器 JavaScript interpreter. 用来解析和运行JavaScript code。
  7. 数据存储 Data storage. 数据持久化的那一层。浏览器可能需要存储各种各样的数据,例如Cookie。浏览器也得支持我们常用的LocalStorage, IndexedDB,WebSQL以及FileSystem。

6. HTTP连接断开

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浏览器输入url后经历的过程(详细) 的相关文章

  • React安装依赖 node_modules中有下载依赖项但package.json文件中没有依赖

    React安装依赖 node modules中有下载依赖项但package json文件中没有依赖 直接在下载依赖项后 加 S 就可以解决 随机 id 生成器 uuid nanoid npm install nanoid S S save
  • Firefox浏览器-渗透测试插件推荐

    在日常工作中可能需要一些浏览器插件辅助我们做工作 下面是比较好的 当然不一定对你有用 找到适合自己的即可 FoxyProxy FoxyProxy是一个高级的代理管理工具 它完全替代了Firefox有限的代理功能 它提供比SwitchProx
  • 【网络安全】web漏洞-xml外部实体注入(XXE)

    web漏洞 xml外部实体注入 XXE 目录 web漏洞 xml外部实体注入 XXE 概念 危害 检测方法 利用方法 漏洞利用 xxe lab 有回显情况 无回显情况 pikachu靶场
  • 【面试】 前端竞争压力大?揭秘让你们学后端的真实动机!

    前端开发属于程序员吗 网友是这样回答的 看完前端同学的评论 我悟了 你们让人都去学后端卷 然后减小前端竞争压力是吧 哈哈哈 你们这帮老6 于是我去拿出了我收藏的 某前端招聘JD来盘一盘 那些觉得 是个人都能干前端 的同学们想必已经熟练掌握了
  • ECMAScript简介及特性介绍

    ECMAScript 简称ES 是JavaScript的规范 同时也是被广泛采用和实现的脚本语言标准 从最初的1996年推出第一版至今 ECMAScript已经经历了数十年的发展和改进 成为了互联网开发中的重要基石之一 本文将对ECMASc
  • 如何给 unplugin-vue-components/vite 写一个简单的 resolver

    大部分工作 unplugin vue components 都已经处理好了 我们只需要接收组件名来判断是否是自己的组件 然后处理对应的导入逻辑 一共 3 个字段 as 重命名类似 import componentNameReName fro
  • 接口测试之Fiddler弱网测试

    前言 目前市面上的APP功能越来越丰富 移动端测试也越显为重要 因为用户在网速慢的情况下 你的网站 软件 总能出现各种各样的问题 请不要忽略这一点 针对在不同的网络情况下 接下来 本篇要讲述的就是在通过fiddler对APP进行模拟弱网测试
  • 【ES6】解构语句中的冒号(:)

    在解构赋值语法中 冒号 的作用是为提取的字段指定一个新的变量名 让我们以示例 const billCode code version route query 来说明 billCode code version 表示从 route query
  • 低代码配置-属性配置面板设计

    模块设计 tab项切换 组件基础属性 组件数据属性 组件事件属性 表单属性 模块输出函数设计 tab切换函数 列表表单属性 数据来源 调用接口时一次赋予 无需使用selectItem 如需使用 归入基础属性 列表标题 是否展示筛选区域
  • 新手也能看懂的【前端自动化测试入门】!

    前言 最近在网上搜索前端自动化测试相关的文档 但是发现网上的文章都是偏使用 没有把一些基础概念说清楚 导致后续一口气遇到一些 karma Jasmine jest Mocha Chai BDD 等词汇的时候很容易一头雾水 这次一方面整理一下
  • Android Navigation的四大要点你都知道吗?

    在JetPack中有一个组件是Navigation 顾名思义它是一个页面导航组件 相对于其他的第三方导航 不同的是它是专门为Fragment的页面管理所设计的 它对于单个Activity的App来说非常有用 因为以一个Activity为架构
  • 不要再苦苦寻觅了!AI 大模型面试指南(含答案)的最全总结来了!

    AI 大模型技术经过2023年的狂飙 2024年必将迎来应用的落地 对 IT 同学来讲 这里蕴含着大量的技术机会 越来越多的企业开始招聘 AI 大模型岗位 本文梳理了 AI 大模型开发技术的面试之道 从 AI 大模型基础面 AI 大模型进阶
  • 史上最全Java面试八股文(带全部答案)2024年最新版

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • 最新整理Java面试八股文,大厂必备神器

    在看这篇文章之前 我想我们需要先搞明白八股文是什么 明清科举考试的一种文体 也称制义 制艺 时文 八比文 八股文章就四书五经取题 内容必须用古人的语气 绝对不允许自由发挥 而句子的长短 字的繁简 声调高低等也都要相对成文 字数也有限制 八股
  • 最新整理Java面试八股文,大厂必备神器

    在此 我采访了数十名大厂的面试官和上百的的面试者 总结出了这一套Java面试八股文 这套八股文已经帮助了上百人拿到自己心仪的offer 我们先来看看这套八股文 Java基础面试八股文 操作系统中 heap 和 stack 的区别 什么是基于
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 每天10个前端小知识 <Day 14>

    前端面试基础知识题 1 CSSOM树和DOM树是同时解析的吗 浏览器会下载HTML解析页面生成DOM树 遇到CSS标签就开始解析CSS 这个过程不会阻塞 但是如果遇到了JS脚本 此时假如CSSOM还没有构建完 需要等待CSSOM构建完 再去
  • 【js学习之路】遍历数组api之 `filter `和 `map`的区别

    一 前言 数组是我们在项目中经常使用的数据类型 今天我们主要简述作用于遍历数组的api filter 和 map 的区别 二 filter和map的共同点 首先 我们主要阐述一下 filter 和 map 的共同点 api的参数都是回调函数
  • 深入解析 YAML 配置文件:从语法到最佳实践

    一 认识YAML YAML YAML Ain t Markup Language 是一种人类可读的数据序列化语言 它的设计目标是使数据在不同编程语言之间交换和共享变得简单 YAML采用了一种简洁 直观的语法 以易于阅读和编写的方式表示数据结
  • 如何在 Python 脚本中使用 Google OAuth2

    在使用 Python 脚本将视频上传到 YouTube 频道时 若希望将视频上传到第二个频道 需要解决 OAuth2 授权的问题 解决方案 创建新的 Google Cloud 项目 from google oauth2 import ser

随机推荐

  • Mac Os下安装Myeclipse提示insufficient memory

    如图所示 搞了两天终于解决来 发现网上对此问题的解决办法也是说的不清不楚对 总的来说有三种方法 当然我只用了其中都一种 方法一 Mac OS中用虚拟内存来提高性能 可是我用的macbook 有8g内存 要用上虚拟内存还是比较少的 所以你可以
  • 【hive】分组求排名

    分组求排名 相信好多使用Mysql的用户一定对分组求排名的需求感到发怵 但是在hive或者oracle来说就能简单实现 采用窗口函数 rank over row number over dense rank over 函数就能轻松完成 窗口
  • SSL certificate problem: unable to get local issuer certificate 错误解决

    今天公司换服务器域名 用了一个本地的服务器 然后我切换远程仓库拉代码的时候 终端报了如下错误git SSL certificate problem unable to get local issuer certificate 这个问题是由于
  • 大数据毕设 opencv python 深度学习垃圾图像分类系统

    文章目录 0 前言 课题简介 一 识别效果 二 实现 1 数据集 2 实现原理和方法 3 网络结构 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求 这两年不断有学弟学妹告诉
  • python星座分析

    python数据分析 python数据分析是一个非常好用的 虽然python数据分析只是刚刚起步 有些功能还未开发完成 但是用来做数据分析是绰绰有余了 本人也是专门研究和学习python数据分析的 星座数据爬虫 作为一个学习数据分析的人 爬
  • 在Apifox中,使用后置脚本显示响应结果reponse中的base64图片

    背景 在使用Apifox去请求有图片的接口时 我想要请求成功的同时 可以显示出来图片 这个时候就开始百度找官方文档 最终发现可以使用后置脚本显示reponse中的图片 方案 如下图所示 接口请求成功后 返回的json结构为 images p
  • 简单了解Linux图形界面

    之前曾经发生过启动虚拟机进入不了图形界面的情况 关于RedHat开启失败的解决方法 m0 48788975的博客 CSDN博客 在我看书的过程中总算搞清楚这是怎么一回事了 下面就和大家唠两句Linux视图 一 Linux操作界面主要分为传统
  • 机器学习_数据处理及模型评估相关资料

    基于sklearn 的auc 计算方法 训练模型填充空值 fill null 的几种方法 在Pandas中像写SQL一样做数据分析
  • Java通过freemarker实现导出PDF

    制作模板 引入依赖 引入所需字体文件 工具类的编写 业务实现 一 模板制作 1 编写html代码 需要替换的值与内容预留出来 用 name 代替 需循环处 表格前加上 lt list listKey as t gt t name 2 将写好
  • 浅谈React浏览器渲染流程

    当浏览器发送一个请求 会得到对应的响应 浏览器会通过HTML解析器去解析HTML会构建DOM树 会通过CSS解析器去解析CSS生成CSS规则树 如果页面中拥有一些JS逻辑 那么往往会通过JS将CSS HTML进行修改的操作 往往造成重排重绘
  • SPADE: Semantic Image Synthesis with Spatially-Adaptive Normalization

    目录 介绍 相关工作 1 Unconditional normalization layers 2 Conditional normalization layers 这一部分挺重要的 方法 3 1 Spatially adaptive de
  • 编译实验(三)目标代码生成

    通过词法分析 语法分析 语义分析 最后产生了四元式 而代码生成则是通过四元式来完成 我们先从简单开始做起 编译实验项目下载链接 http download csdn net download supersmart dong 10224159
  • 源码安装LAMP环境+yii2框架

    当有些新增的软件版本出现 而你想要进行尝试使用 但是在本地用yum安装却不能满足你的需求时 那么朋友 你需要和我一样用源码安装的形式来达成你的目的 因为开发的同事想要一个Apache 2 4 25 Mysql 5 7 17 php7 1 5
  • 设计模式之工厂方法模式

    定义 定义一个用于创建对象的接口 让子类决定实例化哪个类 使用场景 在任何需要生成复杂对象的地方 都可以使用工厂方法模式 复杂对象适合使用工厂模式 public interface Car public void make public v
  • db2实现两个数相减_DB2中求两个日期之间相差多少个月?

    DB2中怎么来求两个日期之间相差多少个月呢 今天在工作中遇到一个问题 就是怎么在DB2中怎么来求两个日期之间相差多少个月呢 结果找到一个方法如下 在DB2中两个日期之间相减会等到一个整数总共有六种情况分别是 select date 2010
  • HTML登录页面

    第一步 构建HTML框架 简介 本文用最通俗的语言 一步步教会大家CSS构建登录页面 首先构建HTML框架 包含用户名 密码 记住密码 注册这几个功能 如果大家HTML不牢固 请看我的这篇博客 https blog csdn net qq
  • nginx系列(十七)nginx下的gzip与vary、预压缩、缓存、反向代理的结合

    size xx large 前言 size 在http的协议里 为了减少网络传输 允许将报文进行gzip压缩以后再传输 虽然网络传输体积减小了 但是服务器压缩和浏览器的解压缩消耗了CPU的计算 后来出现了预压缩技术 就是提前把静态文件进行g
  • Coordinate Attention 论文阅读

    Coordinate Attention 论文阅读 背景 研究表明通道注意力可以显著提升了模型性能 但是在以往的工作中通常忽略了位置信息 而位置信息对于生成空间注意力非常重要 为了利用位置信息 Coordinate Attention 将位
  • 关于示波器引入50HZ工频干扰的解释

    前几天 小白在实验室工作时 听到同事抱怨示波器有问题 上前查看 才知道 小白的那位同事在测量信号波形时 实际与理想相差甚远 在探头什么也不接的情况下 发现示波器本身也存在波形信号 于是乎 便有了前述说的抱怨 由于没有保存当时的波形 事后小白
  • 浏览器输入url后经历的过程(详细)

    页面加载流程 DNS查询 TCP连接 发送HTTP请求 服务器处理HTTP请求并返回HTTP报文 浏览器解析并render页面 HTTP连接断开 1 DNS查询 浏览器查看浏览器缓存 gt 系统缓存 gt 查找本地host文件 gt 本地D