当前位置: 首页 > news >正文

计算机网络——09Web-and-HTTP

Web and HTTP

一些术语

  • Web页:由一些对象组成
  • 对象可以是HTML文件、JPEG图像,JAVA小程序,声音剪辑文件等
  • Web页含有一个基本的HTML文件,该基本HTML文件又包含若干对象的引用(链接)
  • 通过URL对每个对象进行引用
    • 访问协议:用户名、口令字、端口等
  • URL格式:
Port://user:psw@www.someSchool.edu/someDept/pic.gif:port
路径元素含义
Port协议名
user用户
psw口令
www.somSchool.edu主机名
someDept/pic.gif路径名
port端口

用户口令可以不提供,即匿名访问
端口不填可以是默认的:http-80,ftp-21

HTTP概况

HTTP:超文本传输协议

  • Web的应用层协议
  • 用户/服务器模式
    • 客户:请求、接收和显示Web对象的浏览器
    • 服务器:对请求进行响应,发送对象的Web服务器
  • HTTP 1.0: RFC 1945
  • HTTP 1.1: RFC 2068

在这里插入图片描述

使用TCP

  • 客户发起一个与服务器的TCP连接(建立套接字),端口号为80
  • 服务器接受客户的TCP连接
  • 在浏览器(HTTP客户端)与Web服务器(HTTP服务器server)交换HTTP报文(应用层协议报文)
  • TCP连接关闭

HTTP是无状态的

  • 服务器并不维护关于客户的任何信息

维护状态的协议很复杂

  • 必须维护历史信息(状态)
  • 如果服务器/客户端死机,他们的状态可能不一致,二者的信息必须一致
  • 无状态的服务器能够支持更多的客户端

HTTP连接

非持久HTTP

  • 最多只有一个对象在TCP连接上发送
  • 下载多个对象需要多个TCP连接
  • HTTP/1.0使用非持久连接

持久HTTP

  • 多个对象可以在一个(在客户端和服务器之间的)TCP连接上传输
  • HTTP/1.1默认使用持久连接

非持久HTTP连接

在这里插入图片描述

在这里插入图片描述

响应时间模型

往返时间RTT:一个小的分组从客户端到服务器,在回到客户端的时间(传输时间忽略)
响应时间

  • 一个RTT用来发起TCP连接
  • 一个RTT用来HTTP请求并等待HTTP响应
  • 文件传输时间

共:2RTT + 传输时间
在这里插入图片描述

持久HTTP

非持久HTTP的缺点

  • 每个对象要 2 个RTT
  • 操作系统必须为每个TCP连接分配资源
  • 但浏览器通常打开并行TCP连接,以获取引用对象

持久HTTP

  • 服务器在发送响应后,仍保持TCP连接
  • 在相同客户端和服务器之后的后续请求和响应报文通过相连的连接进行传送
  • 客户端在遇到一个引用对象的时候,就可以尽快发送该对象的请求

非流水方式的持久HTTP

  • 客户端只能在收到前一个响应后才能发出新的请求
  • 每个引用对象花费一个RTT

流水方式的持久HTTP

  • HTTP/1.1的默认模式
  • 客户端遇到一个引用对象就立即产生一个请求
  • 所有引用(小)对象只花费一个RTT是可能的

HTTP请求报文

  • 两种类型的HTTP报文:请求、响应

HTTP请求报文

GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
User-agent: Mozilla/4.0
Connection: close
Accept-language:fr

解析报文如下:

部分举例说明
请求行GET /somedir/page.html HTTP/1.1命令: GET:获取数据;POST:上载数据;HEAD:仅仅获取相应头部,搜索引擎使用改命令得到头部之后建立索引资源路径:/somedir/page.html协议/协议版本:HTTP/1.1
首部行Host: www.someschool.edu User-agent: Mozilla/4.0 Connection: close Accept-language:fr
实体

HTTP请求报文:通用格式

在这里插入图片描述

sp是space空格
cr是回车
if是有可能有,有可能没有

提交表单输入

Post方式

  • 网页通常包括表单输入
  • 包含在实体主体中的输入被提交到服务器

URL方式

  • 方法:GET
  • 输入通过字段请求行的URL字段上载

方法类型

HTTP 1.0

  • GET
  • POST
  • HEAD
    • 要求服务器咋响应报文中不包含请求对象 -> 故障跟踪

HTTP 1.1

  • GET、POST、HEAD
  • PUT
    • 将实体主体中的文件上载到URL字段限定的路径
  • DELETE
    • 删除URL字段限定的文件

HTTP响应报文

HTTP/1.1 200 OK
Connection close
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 …... 
Content-Length: 6821
Content-Type: text/htmldata data data data data ...

解析:

部分举例说明
状态行HTTP/1.1 200 OKHTTP/1.1是协议及版本,200是状态码,OK是状态码相应状态信息
首部行Connection close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …… Content-Length: 6821 Content-Type: text/html
数据data data data data data …

HTTP响应状态码

位于服务器 -> 客户端的响应报文中的首行
一些状态码的例子

状态码状态信息说明
200OK请求成功,请求对象包含在响应报文的后续部分
301Moved Permanently请求的对象己经被永久转移了;新的URL在响应报文的Location:首部行中指定;客户端软件自动用新的URL去获取对象
400Bad Request一个通用的差错代码,表示该请求不能被服务器解读
404Not Found请求的文档在该服务上没有找到
505HTTP version Not supported版本不支持

用户-服务器状态:cookies

大多数主要的门户网站使用cookies

4个组成部分

  • HTTP响应报文中有一个cookie的首部行
  • HTTP请求报文含有一个cookie的首部行
  • 在用户端系统中保留有一个cookie文件,由用户的浏览器管理
  • Web站点有一个后端数据库

Cookies:维护状态

在这里插入图片描述

Cookies能带来什么

  • 用户验证
  • 购物车
  • 推荐
  • 用户状态

如何维持状态

  • 协议端节点:在多个事务上,发送端和接收端维持状态
  • cookies:http报文携带状态信息

Cookies与隐私

  • Cookies允许站点知道许多关于用户的信息
  • 可能将他知道的东西卖给第三方
  • 使用重定向和cookie的搜索引擎还可能知道用户的更多信息
  • 广告公司从站点获得信息

Web缓存(代理服务器)

目标:不访问原始服务器,就满足客户的请求

  • 用户设置浏览器:通过缓存访问Web
  • 浏览器将所有的HTTP请求发送给缓存:
    • 在缓存中的对象:缓存直接返回对象
    • 如对象不在缓存:缓存请求原始服务器,然后再将对象返回给客户端

在这里插入图片描述

Web缓存

  • 缓存既是客户端又是服务器
  • 通常缓存是由ISP安装

为什么要使用Web缓存

  • 降低客户端的请求响应时间
  • 可以大大减少一个机构内部网络与Internet接入链路上的流量
  • 互连网大量采用了缓存:可以使较弱的ICP也能够有效提供内容

缓存示例

在这里插入图片描述

条件

  • 平均对象大小 = 100kb(也就是请求的文件的平均大小是100kb)
  • 机构内浏览器对原始服务器的 平均请求率为 = 15请求/s
  • 平均到浏览器的速率:1.5Mbps(100kb * 15请求/s)
  • 接入链路带宽:1.54Mbps

相关数据计算

  • 各种延时计算(Internet延时、接入延时、LAN延时)

  • 延时如下:

    • Internet延时:公共网(public Internet)路由器到原始服务器 再返回到路由器的的延时 ( Internet 延时)= 2s;这个也是网络核心的延时吧
    • 接入延时:不确定,不过有公式:接入延时(主要还是排队延时) d q u e u e d_{queue} dqueue = I(1-I) * L / R = 2min
    • LAN延时:客户端到LAN路由器再返回客户端的时间,为10ms
  • 流量强度和排队延时计算:

    • 流量强度 I = 平均到达浏览器的速率 / 接入链路宽带
    • 排队延时 = t q u e u e t_{queue} tqueue = I(1-I) * L / R
    • L/R:一个分组的传输时间
  • 结果:

    • LAN的流量强度 = 15%
    • 接入链路上的流量强度 = 99% (排队延迟会非常大,排队延迟会随着分组的流量强度越接近于1趋近于无穷,此时排队延迟会非常大)
    • 总延时= LAN延时+ 接入延时+ Internet 延时 = ms + 分+ 2s

流量强度 = 平均到达浏览器的速率 / 接入链路宽带 = 1.5 / 1.54 = 0.99

优化方式

  • 提高接入链路带宽

    • 假设:
      • 平均对象大小 = 100kb
      • 机构内浏览器对原始服务器的 平均请求率为 = 15请求/s
      • 平均到浏览器的速率:1.5Mbps
      • 接入链路带宽:1.54Mbps——> 154Mbps(带宽提升)
    • 延时:
      • Internet延时机构内部路由器到原始服务器 再返回到路由器的的延时 = 2s
      • LAN延时:客户端到LAN路由器再返回客户端的时间,为10ms
    • 结果:
      • LAN的流量强度 = 15%
      • 接入链路上的流量强度 = 9.9%(可以看到强度降低了很多,排队延时也会下降)
      • 总延时 = LAN延时 + 接入延时 + Internet 延时 = ms + 分 + 2s
    • 代价: 增加了接入链路带宽(非常昂贵!)
  • 安装本地缓存

    • 假设:
      • 平均对象大小 = 100kb
      • 机构内浏览器对原始服务器的平均 请求率为 = 15请求/s
      • 平均到浏览器的速率:1.5Mbps
      • 机构内部路由器到原始服务器再返回到路由器的的延时 (Internet 延 时)= 2s
      • 接入链路带宽:1.54Mbps
    • 结果:
      • LAN 利用率: 15%
      • 接入网络利用率: ?
      • 总体延迟= ? 代价: web缓存(廉价!)

计算链路利用率,有缓存的延迟:

  • 假设:
    • 缓存命中率0.4:40%请求在缓存中被满足,其他60%的请求 需要被原始服务器满足
    • 接入链路利用率: 60%的请求采用接入链路
    • 进过接入链路到达浏览器的数据速 率 = 0.6*1.50 Mbps = 0.9 Mbps
    • 利用率= 0.9/1.54 = 0.58
    • 总体延迟 = 0.6 * (从原始服务器获取对象的 延迟,也就是接入延时 + Internet延时) +0.4 * (从缓存获取对象的延迟,也就是LAN延时) = 0.6 * (2s) + 0.4 * (msecs,这个很小,所以几乎不看了) = 1.2 secs
    • 比安装154Mbps链路还来得小 (而且 比较便宜!)

条件GET方法

  • 目标:如果缓存器中的对 象拷贝是最新的,就不要发送对象
  • 缓存器: 在HTTP请求中指 定缓存拷贝的日期 If-modified-since:<date>
  • 服务器: 如果缓存拷贝陈 旧,则响应报文没包含对象: HTTP/1.0 304 Not Modified

在这里插入图片描述

相关文章:

计算机网络——09Web-and-HTTP

Web and HTTP 一些术语 Web页&#xff1a;由一些对象组成对象可以是HTML文件、JPEG图像&#xff0c;JAVA小程序&#xff0c;声音剪辑文件等Web页含有一个基本的HTML文件&#xff0c;该基本HTML文件又包含若干对象的引用&#xff08;链接&#xff09;通过URL对每个对象进行引用…...

【教程】MySQL数据库学习笔记(一)——认识与环境搭建(持续更新)

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【MySQL数据库学习】系列文章 第一章 《认识与环境搭建》 第二章 《数据类型》 文章目录 【MySQL数据库学习】系列文章一、认…...

软件测试-测试用例研究-如何编写一份优秀的测试用例

什么是测试用例 测试用例是一组由测试输入、执行条件、预期结果等要素组成&#xff0c;以完成对某个特定需求或者目标测试的数据&#xff0c;体现测试方案、方法、技术和策略的文档。测试用例是软件测试的核心&#xff0c;它把测试系统的操作步骤用文档的形式描述出来&#xf…...

计网day1

RTT&#xff1a;往返传播时延&#xff08;越大&#xff0c;游戏延迟&#xff09; 一.算机网络概念 网络&#xff1a;网样的东西&#xff0c;网状系统 计算机网络&#xff1a;是一个将分散得、具有独立功能的计算机系统&#xff0c;通过通信设备与线路连接起来&#xff0c;由功…...

vLLM vs Text Generation Interface:大型语言模型服务框架的比较

在大型语言模型&#xff08;LLM&#xff09;的世界中&#xff0c;有两个强大的框架用于部署和服务LLM&#xff1a;vLLM 和 Text Generation Interface (TGI)。这两个框架都有各自的优势&#xff0c;适用于不同的使用场景。在这篇博客中&#xff0c;我们将对这两个框架进行详细的…...

[AIGC] 上传文件:后端处理还是直接阿里云OSS?

在构建Web应用时&#xff0c;我们经常需要处理用户上传的文件。这可能是图片、视频、文档等各种各样的文件。但是&#xff0c;上传文件的方式有很多种&#xff0c;最常见的两种方式是&#xff1a;通过后端处理&#xff0c;或者直接上传至云存储服务&#xff0c;如阿里云OSS。那…...

速盾cdn:香港服务器如何用国内cdn

在国内使用香港服务器的情况下&#xff0c;可以考虑使用速盾CDN来提供加速服务。速盾CDN是一种专业的内容分发网络解决方案&#xff0c;可以通过使用不同节点的服务器来提供高速的内容传输和访问。 首先&#xff0c;使用速盾CDN可以帮助解决香港服务器与国内用户之间的延迟和带…...

深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南【第72篇—python:数据连接】

深入学习Pandas&#xff1a;数据连接、合并、加入、添加、重构函数的全面指南 Pandas是Python中最强大且广泛使用的数据处理库之一&#xff0c;提供了丰富的函数和工具&#xff0c;以便更轻松地处理和分析数据。在本文中&#xff0c;我们将深入探讨Pandas中一系列数据连接、合…...

IDEA中mybatis配置文件表名显示红色,提示 Unable to resolve table ‘xxx‘

问题&#xff1a;IDEA中mybatis配置文件表名显示红色&#xff0c;提示 Unable to resolve table ‘xxx’ 解决方法&#xff1a; 使用快捷提示键 Alt Enter&#xff0c;选择 Go to SQL Resolution Scopes&#xff08;转到SQL的解析范围&#xff09;...

Python基于大数据的电影预测分析系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

【MATLAB】小波神经网络回归预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 小波神经网络回归预测算法是一种利用小波变换和人工神经网络相结合的方法&#xff0c;用于解决回归预测问题。下面将详细介绍该算法的原理与方法&#xff1a; 小波变换&#xff1a; 小波变…...

最新Burp Suite入门讲解

Burp Suite的安装 Burp Suite是一款集成化的渗透测试工具&#xff0c;包含了很多功能&#xff0c;可以帮助我们高效地完成对Web应用程序的渗透测试和安全检测。 Burp Suite由Java语言编写&#xff0c;Java自身的跨平台性使我们能更方便地学习和使用这款软件。不像其他自动化测…...

【C++】模版初阶

目录 泛函编程 函数模版 概念 格式 原理 实例化 模版函数的匹配原则 类模板 定义格式 泛函编程 如何实现一个通用的交换函数呢&#xff1f; void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left, dou…...

Stable Diffusion 模型下载:DreamShaper(梦想塑造者)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 DreamShaper 是一个分格多样的大模型&#xff0c;可以生成写实、原画、2.5D 等…...

GPT-4模型的创造力

超级的创造力是GPT-4等高级语言模型的重要特征之一。它们不仅能够精确地模拟和再现各类文本样式、结构和内容&#xff0c;而且在生成新的文本时&#xff0c;能够通过深度学习算法对海量训练数据中捕捉到的模式进行创新性的重组与拓展&#xff1a; 词汇创新&#xff1a;基于已学…...

没用的计算器

本次的项目仍然属于没用的模块&#xff0c;仅供娱乐&#xff0c;最后附有效果视频&#xff0c;如需要源代码可以私信或评论&#xff0c;本次还是使用vue来实现的&#xff0c;同样也可以修改为JS 一、HTML部分 <div class"con"><div class"calculator&q…...

基于 Python 的大数据的电信反诈骗系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

二、ClickHouse简介

ClickHouse简介 前言一、行式存储二、DBMS功能三、多样化引擎四、高吞吐写入能力五、数据分区与线程级并行六、场景七、特定版本 前言 ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库&#xff08;DBMS&#xff09;&#xff0c;使用 C 语言编写&#xff0c;主要…...

C++ 11新特性之并发

概述 随着计算机硬件的发展&#xff0c;多核处理器已经成为主流&#xff0c;对程序并发执行能力的需求日益增长。C 11标准引入了一套全面且强大的并发编程支持库&#xff0c;为开发者提供了一个安全、高效地利用多核CPU资源进行并行计算的新框架&#xff0c;极大地简化了多线程…...

jvm问题自查思路

本文聊一下最近处理了一些jvm的问题上&#xff0c;将这个排查和学习过程分享一下&#xff0c;看了很多资料&#xff0c;最终都会落地到几个工具的使用&#xff0c;本文主要是从文档学习、工具学习和第三方技术验证来打开认知和实践&#xff0c;希望有用。 一、文档 不仅知道了…...

任意IOS16系统iPad/Iphone开启台前调度

方法来自GitHub: GitHub - khanhduytran0/TrollPad: Troll SpringBoard into thinking its running on iPadOS 注意操作前iPad/iPhone上需要安装巨魔手机助手和Filza&#xff0c;关于这两个软件的安装自行百度方法。 备注一个巨魔手机助手的下载地址 Release TrollStar 1.2…...

LeetCode、452. 用最少数量的箭引爆气球【中等,贪心,区间问题】

文章目录 前言LeetCode、452. 用最少数量的箭引爆气球【中等&#xff0c;贪心&#xff0c;区间问题】题目链接与分类思路贪心&#xff0c;连续区间数量问题 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客…...

洛谷C++简单题小练习day10—umi的函数

day10--umi的函数--2.13 习题概述 题目背景 umi 找到了一个神秘的函数 f。 题目描述 这个函数接受两个字符串 s1,s2。这些字符串只能由小写字母组成并且具有相同的长度。这个函数的输出是另一个长度与 s1,s2 相同的字符串 g。 g 的第 i 个字符等于 s1 的第 i 个字符和 s2…...

【Linux学习】线程互斥与同步

目录 二十.线程互斥 20.1 什么是线程互斥&#xff1f; 20.2 为什么需要线程互斥? 20.3 互斥锁mutex 20.4 互斥量的接口 20.4.1 互斥量初始 20.4.2 互斥量销毁 20.4.3 互斥量加锁 20.4.4 互斥量解锁 20.4.5 互斥量的基本原理 20.4.6 带上互斥锁后的抢票程序 20.5 死锁问题 死锁…...

前端开发:(三)CSS入门

1. 介绍CSS 1.1 什么是CSS CSS&#xff08;Cascading Style Sheets&#xff09;是一种用于描述文档样式和布局的样式表语言&#xff0c;用于美化和排版HTML和XML等标记语言的内容。 1.2 CSS的作用和优势 CSS的主要作用是控制网页的样式和布局&#xff0c;包括字体、颜色、间…...

一周学会Django5 Python Web开发-Django5创建项目(用PyCharm工具)

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计11条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…...

寒假学习记录13:JS对象

目录 对象转数组 对象双值转数组 Object.entries() &#xff08;转为二维数组&#xff09;&#xff08;属性的值和键&#xff09; 对象右值转数组 Object.values() &#xff08;属性的值&#xff09; 对象左值转数组 Object.keys() (属性的键) 对象左值转…...

学生成绩管理系统|基于Springboot的学生成绩管理系统设计与实现(源码+数据库+文档)

学生成绩管理系统目录 目录 基于Springboot的学生成绩管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员功能模块 2、学生功能模块 3、教师功能模块 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源…...

C#向数组指定索引位置插入新的元素值:自定义插入方法 vs List<T>.Add(T) 方法

目录 一、使用的方法 1.自定义插入方法 2.使用List.Add(T) 方法 二、实例 1.示例1&#xff1a;List.Add(T) 方法 2.示例&#xff1a;自定义插入方法 一、使用的方法 1.自定义插入方法 首先需要定义一个一维数组&#xff0c;然后修改数组的长度(这里使用Length属性获取…...

【大数据Hive】hive 表设计常用优化策略

目录 一、前言 二、hive 普通表查询原理 2.1 操作演示说明 2.1.1 创建一张表&#xff0c;并加载数据 2.1.2 统计3月24号的登录人数 2.1.3 查询原理过程总结 2.2 普通表结构带来的问题 三、hive分区表设计 3.1 区表结构 - 分区设计思想 3.2 操作演示 3.2.1 创建分区表…...

jvm垃圾收集器之七种武器

目录 1.回收算法 1.1 标记-清除算法(Mark-Sweep) 1.2 复制算法(Copying) 1.3 标记-整理算法(Mark-Compact) 2.HotSpot虚拟机的垃圾收集器 2.1 新生代的收集器 Serial 收集器&#xff08;复制算法&#xff09; ParNew 收集器 (复制算法) Parallel Scavenge 收集器 (复制…...

STM32面试相关问题

STM32面试相关问题&#xff1a; STM32的内核型号&#xff0c;主频&#xff0c;传感器和单片机总线类型&#xff0c;IIC,SPI,RS485UART数据帧项目中一些参数的设置 STM32 系统移植 ARM编译 常用的驱动编写方式 自己写过哪些方面驱动 其实如果问32的问题&#xff0c…...

风行智能电视N39S、N40 强制刷机升级方法,附刷机升级数据MstarUpgrade.bin

升级步骤&#xff1a; 1、下载刷机数据&#xff0c;如是压缩包&#xff0c;需要先解压&#xff0c;然后将刷机bin格式的文件重命名为MstarUpgrade.bin 2、将此文件放到U盘根目录 &#xff08;U盘格式FAT32&#xff0c;单分区&#xff0c;建议4G的优盘刷机成功率高&#xff09;…...

【C语言】简易英语词典

文章目录 一、定义英语单词信息的结构体二、主函数功能逻辑三、查单词函数四、背单词函数五、补充 一、定义英语单词信息的结构体 添加必要的头文件、宏定义和声明&#xff0c;之后定义英语单词信息结构体。 /* 头文件和宏定义 */ #include <stdio.h> #include <std…...

【算法题】104. 二叉树的最大深度

题目 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;root [1,nul…...

Docker配置Portainer容器管理界面

目录 一、Portainer 简介 优点&#xff1a; 缺点&#xff1a; 二、环境配置 1. 拉取镜像 2. 创建启动容器 三、操作测试 1. 进入容器 2. 拉取镜像并部署 3. 访问测试 一、Portainer 简介 Portainer 是一个开源的轻量级容器管理界面&#xff0c;用于管理 Docker 容器…...

Linux network namespace 访问外网以及多命名空间通信(经典容器组网 veth pair + bridge 模式认知)

写在前面 整理K8s网络相关笔记博文内容涉及 Linux network namespace 访问外网方案 Demo实际上也就是 经典容器组网 veth pair bridge 模式理解不足小伙伴帮忙指正 不必太纠结于当下&#xff0c;也不必太忧虑未来&#xff0c;当你经历过一些事情的时候&#xff0c;眼前的风景已…...

网络渗透测试:Wireshark抓取qq图片

Wireshark Wireshark Downloadhttps://www.wireshark.org/download.html 简介 WireShark是非常流行的网络封包分析工具&#xff0c;可以截取各种网络数据包&#xff0c;并显示数据包详细信息。常用于开发测试过程中各种问题定位。本文主要内容包括&#xff1a; 1、Wireshar…...

网络协议与攻击模拟_16HTTP协议

1、HTTP协议结构 2、在Windows server去搭建web扫描器 3、分析HTTP协议流量 一、HTTP协议 1、概念 HTTP&#xff08;超文本传输协议&#xff09;用于在万维网服务器上传输超文本&#xff08;HTML&#xff09;到本地浏览器的传输协议 基于TCP/IP(HTML文件、图片、查询结构等&…...

叙事弧基础

原文&#xff1a;MasterClass. 2020. Learn About Narrative Arcs: Definition, Examples, and How to Create a Narrative Arc in Your Writing - 2021. https://www.masterclass.com/articles/what-are-the-elements-of-a-narrative-arc-and-how-do-you-create-one-in-writin…...

python从入门到精通(二十):python的exe程序打包制作

python的exe程序打包制作 python打包的概念python打包的模块导入模块安装验证基本语法命令参数文件夹模式单文件模式资源嵌入exe更改图标启动画面&#xff08;闪屏&#xff09;禁用异常提示 python打包的概念 将普通的*.py程序文件打包成exe文件。exe文件即可执行文件&#xf…...

three.js 细一万倍教程 从入门到精通(一)

目录 一、three.js开发环境搭建 1.1、使用parcel搭建开发环境 1.2、使用three.js渲染第一个场景和物体 1.3、轨道控制器查看物体 二、three.js辅助设置 2.1、添加坐标轴辅助器 2.2、设置物体移动 2.3、物体的缩放与旋转 缩放 旋转 2.4、应用requestAnimationFrame …...

电路设计(16)——纪念馆游客进出自动计数显示器proteus仿真

1.设计要求 设计、制作一个纪念馆游客进出自动计数显示器。 某县&#xff0c;有一个免费参观的“陶渊明故里纪念馆”&#xff0c;游客进出分道而行&#xff0c;如同地铁有确保单向通行的措施。在入口与出口处分别设有红外检测、声响、累加计数器装置&#xff0c;当游人进&#…...

Python数学建模之回归分析

1.基本概念及应用场景 回归分析是一种预测性的建模技术&#xff0c;数学建模中常用回归分析技术寻找存在相关关系的变量间的数学表达式&#xff0c;并进行统计推断。例如&#xff0c;司机的鲁莽驾驶与交通事故的数量之间的关系就可以用回归分析研究。回归分析根据变量的…...

单片机学习笔记---DS18B20温度传感器

目录 DS18B20介绍 模拟温度传感器的基本结构 数字温度传感器的应用 引脚及应用电路 DS18B20的原理图 DS18B20内部结构框图 暂存器内部 单总线介绍 单总线电路规范 单总线时序结构 初始化 发送一位 发送一个字节 接收一位 接收一个字节 DS18B20操作流程 指令介…...

【网络】WireShark过滤 | WireShark实现TCP三次握手和四次挥手

目录 一、开启WireShark的大门 1.1 WireShark简介 1.2 常用的Wireshark过滤方式 二、如何抓包搜索关键字 2.1 协议过滤 2.2 IP过滤 ​编辑 2.3 过滤端口 2.4 过滤MAC地址 2.5 过滤包长度 2.6 HTTP模式过滤 三、ARP协议分析 四、WireShark之ICMP协议 五、TCP三次握…...

开源免费的Linux服务器管理面板分享

开源免费的Linux服务器管理面板分享 一、1Panel1.1 1Panel 简介1.2 1Panel特点1.3 1Panel面板首页1.4 1Panel使用体验 二、webmin2.1 webmin简介2.2 webmin特点2.3 webmin首页2.4 webmin使用体验 三、Cockpit3.1 Cockpit简介3.2 Cockpit特点3.3 Cockpit首页3.4 Cockpit使用体验…...

leetcode算法-位运算

位运算&#xff0c;直接在二进制上进行的按位操作&#xff0c;位运算的种类如下&#xff1a; 1.按位异或^:异或的含义是操作的两位不同&#xff0c;则结果为1&#xff0c;相同则结果为0&#xff0c;所以两个相同的数异或&#xff0c;结果应该是0&#xff0c;3^3的结果是0,3^4的…...

「MySQL」约束

概述 分类 约束描述关键字非空约束限制该字段的数据不能为 nullNOT NULL唯一约束保证该字段的所有数据都是唯一、不重复的UNIQUE主键约束主键是一行数据的唯一标识&#xff0c;要求非空且唯一PRIMARY KEY默认约束保存数据时&#xff0c;如果未指定该字段的值&#xff0c;则采…...

C语言:详解操作符(下)

上一篇链接&#xff1a;C语言&#xff1a;详解操作符&#xff08;上&#xff09;摘要&#xff1a; 在上篇文章中&#xff0c;我们已经讲过位操作符等涉及二进制的操作符&#xff0c;这些有助于帮助我们后期理解数据如何在计算机中运算并存储&#xff0c;接下来本篇将更多的讲述…...