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

【计算机网络-自顶向下方法】应用层(HTTP、FTP)

目录

      • 1. Principles of network applications
        • 创建一个网络应用
        • 1.1 网络应用架构
          • 1.1.1 客户-服务器架构
          • 1.1.2 P2P架构
          • 1.1.3 两种架构的比较
        • 1.2 不同终端上的进程通信
        • 1.3 应用需要什么样的传输服务
        • 1.4 因特网能够提供的传输服务
        • 1.5 应用层协议
        • 1.6 小结
      • 2. Web and HTTP
        • Web应用画像
        • 一些术语
        • 2.1 超文本传输协议--HTTP 概述
        • 2.2 非持久连接和持久连接
          • 2.2.1 非持久 HTTP
          • 2.2.2 持久 HTTP
        • 2.3 HTTP 报文格式
        • 2.4 用户与服务器交互: cookie
        • 2.5 Web缓存(代理服务器)
        • 2.6 条件 GET
        • 2.7 小结
      • 3. File Transfer and FTP
        • 3.1 文件传输应用画像
        • 3.2 FTP用户代理
        • 3.3 使用分离的控制连接和数据连接
        • 3.4 建立连接
        • 3.5 有关控制连接与数据连接的问题
        • 3.6 FTP小结

1. Principles of network applications

创建一个网络应用

  创建一个网络应用的核心,是编写一个分布式程序,使其可以运行在不同的端系统上,并能通过网络相互通信。(例如,web服务器软件与浏览器软件)
  应用程序只运行在终端上(只在端系统上开发应用),应用程序员不需要为网络核心设备编写程序,我们默认可以调用一些API,这极大地方便了网络应用的开发和快速部署。
  我们不需要为网络核心设备编写程序的原因:一方面会浪费大量的时间与精力,另一方面网络的核心设备我们是不接触不到的。

1.1 网络应用架构

  在开发一个应用程序之前,首先要决定采用什么样的网络应用架构,网络应用架构规定了在各个端系统上组织应用程序的方法,目前有两种主流的网络应用架构:

  • 客户-服务器架构(Client-server) 中心化的架构
  • 对等架构(Peer-to-peer ,P2P) 没有服务器的概念
1.1.1 客户-服务器架构

服务器(server)

  • 有一台总是在线的主机,上面运行着服务器程序 (server) (有请求要及时响应请求)。
  • 服务器主机 (server machine) 具有永久的、众所周知的地址。
  • 服务器端会在很多地方部署大量的计算集群

客户(client)

  • 用户终端上运行一个客户程序 (client),需要时与服务器程序通信,请求服务。
  • 客户机(client machine)使用动态地址,通常不会总是在线

  客户只与服务器通信,客户之间不通信

1.1.2 P2P架构
  • 没有总是在线的服务器主机。
  • 任意一对端系统(对等方)可以直接通信。
  • 对等方多为用户自己的计算机,使用动态地址。
  • 每个对等方既可请求服务,也可提供服务。
  • 典型的P2P应用:BT、迅雷、Skype、PPLive。
1.1.3 两种架构的比较
客户-服务器架构P2P架构
资源集中:资源(服务)只在某些固定的终端上提供资源分散:任何终端都可以提供资源(服务)
优点:资源发现简单优点:易于扩容、均衡网络流量
缺点:集中式计算带来的问题,如服务端扩容压力、网络流量不均衡、响应延迟长缺点:资源发现困难,社会问题(版权、安全性等)
1.2 不同终端上的进程通信

  进程: 主机上运行的程序.

  在同一台主机中,由操作系统来提供进程之间的通信。在不同的主机上,通过交换报文进行通信。在一次确定的通信会话中,总能标示一方为客户进程,另一方为服务器进程:

  • 客户进程:主动发起请求的进程
  • 服务器进程:接收请求的进程

套接字(socket):进程与网络的接口(应用程序和网络之间的一扇门)。

  • 发送报文:发送进程将报文推到门外
  • 门外的运输设施(因特网)将报文送到接收进程的门口
  • 接收报文:接收进程打开门,即可收到报文

套接字是应用层和传输层的接口,也是应用程序和网络之间的API。
在这里插入图片描述
  每个进程需要一个标识,以便其它进程能够找到它,那么进程如何该如何标识自己?可以用进程所在主机的地址来标识进程吗?

答案是不能,因为同一个主机上可能运行着许多进程,我们用端口号来区分同一个主机上的不同进程

进程标识包括:

  • 主机地址
  • 与该进程关联的端口号

端口号的例子:HTTP server使用端口80,Mail server使用端口25

1.3 应用需要什么样的传输服务

  在创建一个应用程序时,开发者需要选定一种传输服务。

  1. Data integrity(数据完整性)
    • 有些应用(如音视频)可以容忍一定程度的数据丢失。
    • 有些应用(如加密的文件)要求完全可靠的数据传输。
  2. Timing(时效性)
    • 有些应用(如网络电话,交互式网络游戏)要求延迟保证。
    • 有些应用(如邮件传输)对延迟不敏感。
  3. Throughput(吞吐量)
    • 有些应用(如多媒体)要求保证最低可用带宽。
    • 有些应用(称弹性应用,微信文字信息)可以适应各种可能的带宽。
  4. Security
    • 加密,数据完整性,……
1.4 因特网能够提供的传输服务

  因特网提供2种传输服务,分别用TCP和UDP协议实现。

  1. TCP service:
    • 面向连接:保证传输顺序。
    • 可靠传输:不出错。
    • 流量控制:发送进程不会“压垮”接收进程。
    • 拥塞控制: 网络超载时抑制发送进程。
    • 不提供:及时性,最低带宽保证,安全性
  2. UDP service:
    • 通过因特网接收和发送报文。
    • 不提供:顺序保证,可靠传输,流量控制,拥塞控制,及时性,最低带宽保证,安全性。
    • 相对于TCP延迟相对小一点,但可能会丢包。
1.5 应用层协议
  1. 应用层协议定义:
    • 报文类型:request, response
    • 报文语法:报文中的字段及其描述。
    • 报文语义:各字段中信息的含义。
    • 发送/响应报文应遵循的规则。
  2. 公共域协议:
    • 在RFC文档中定义。
    • 允许互操作。
    • e.g., HTTP, SMTP
  3. 专用协议:
    • e.g., Skype
1.6 小结
  1. 为创建一个新的网络应用,需要:
    • 选择一种网络应用架构:客户-服务器 or P2P
    • 选择一种网络服务:TCP or UDP
    • 确定一个端口号
    • 定义应用层协议(可以用已有的协议,如HTTP…)
    • 编写客户程序和服务器程序(调用套接字接口)
  2. 网络应用和应用层协议:
    • 应用层协议只是网络应用的一部分
    • 网络应用还包括客户程序、服务器程序等
  3. 要求掌握的概念:
    • 客户-服务器模型
    • 网络应用编程接口

2. Web and HTTP

Web应用画像
  1. 应用层资源:网页(web pages)
  2. 网络应用架构:客户-服务器架构
    • 客户:浏览器
    • 服务器:web服务器
  3. 要求的网络服务:TCP服务
  4. 端口号:80
  5. 应用层协议:HTTP(Hyper Text Transfer Protocol)HTTPS(在安全性能上做了优化)
一些术语
  • Web page由一些对象(object)组成。
  • 对象简单来说就是文件,可以是HTML文件、图像、Java小程序、音频文件,…
  • 每个对象通过一个URL (Uniform Resource Locator) 获取,例如:
    在这里插入图片描述
  • HTML(Hyper Text Markup Language)是一种格式语言,用于描述页的内容和显示方式。
  • HTML文件是用HTML语言编写的超文本文件,需要通过专门的浏览器软件进行展示。
  • Web页通常包含一个HTML基本文件和若干引用对象,每个引用对象在文档中用其URL给出。
  • 超文本文件:包含超链接的文件,超链接中的文字包含有连接到文档中其他位置或者其它文档的链接,允许从当前阅读位置直接切换到超链接所指向的位置。
  • 超文本(Hyper text):一种信息组织方式,通过超链接将各种不同空间的文字信息组织成网状文本。
2.1 超文本传输协议–HTTP 概述

Web采用客户-服务器模式:

  • client: 浏览器请求、接收和显示web对象。
  • server: Web服务器应客户请求发送对象。

HTTP协议:定义了浏览器和web服务器之间的通信规则。

HTTP的主要版本:HTTP 1.0(RFC 1945)和 HTTP 1.1(RFC 2068)

HTTP为什么要使用TCP服务:Web服务器并不保留客户所请求的信息,HTTP协议是无状态的,为了发送文件的稳定。

HTTP使用TCP服务过程:

  • 客户发起到服务器 80 端口的 TCP 连接(客户端创建一个套接字)
  • 服务器接受(服务器端监听80端口)来自客户的TCP连接(服务器端创建一个套接字)
  • 浏览器和服务器交换HTTP报文 (通过各自的套接字)
  • 关闭TCP 连接(关闭各自的套接字)
2.2 非持久连接和持久连接

主要区别:在一个TCP连接上只能传输一个对象还是能传输多个对象。

2.2.1 非持久 HTTP
  • 在一个TCP连接上最多发送一个对象。
  • HTTP/1.0 使用非持久连接。

内容获取过程:

  假设用户输入以下URL:http://www.someSchool.edu/someDepartment/home.index (包含文本及10个Jpeg图像)

  1. HTTP客户发起到以下HTTP 服务器进程的连接 www.someSchool.edu on port 80。
  2. www.someSchool.edu上的HTTP服务器在端口80等待TCP连接,接受连接,并通知客户。(建立连接)
  3. HTTP客户将一个HTTP请求报文(包含URL)写入它的套接字,报文指示希望获取以下对象:someDepartment/home.index
  4. HTTP服务器接收请求报文,构造包含所请求对象的响应报文,将报文写入它的套接字中。(请求对象)
  5. HTTP 服务器关闭TCP连接。(关闭连接)
  6. HTTP 客户接收包含HTML文件的响应报文,显示HTML文件,解析文件发现有10个引用的jpeg对象。
  7. 对于每个jpeg对象,重复步骤 1-6(要进行十次)。

非持久HTTP的响应时间:

  RTT (Round-Trip Time):一个小分组从客户发送到服务器,再返回客户的时间。

相应的时间主要包括:

  • 建立TCP连接用时一个RTT。
  • 发送HTTP请求至收到响应的前几个字节用时一个RTT。
  • 传输文件的时间。

  请求一个对象用时2RTT(忽略对象传输时间),则上面题目中请求一个完整的网页用时22RTT(11个对象)

非持久HTTP 的问题:

  获取每个对象需要一次TCP连接,每个TCP连接需要消耗操作系统资源,浏览器需要打开多个TCP连接来获取一个网页。

2.2.2 持久 HTTP
  • 在一个TCP连接上可以发送多个对象。
  • HTTP/1.1 缺省使用持久连接。
  • 服务器在发送响应后保持连接。
  • 同一对客户-服务器之间的后续HTTP报文可以在该连接上传输。

持久HTTP又分为:

  • 无流水线方式:客户仅当收到前一个响应后再发送新的请求(串行)。
  • 流水线方式:客户每解析到一个引用对象就可以发送请求,可在一个RTT时间内请求所有引用对象。

针对上面的问题:

  • 无流水线方式:需要花费12个RTT(一次TCP连接、显示HTML文件的请求、10个文件的10次请求)。
  • 流水线方式:只需花费3个RTT(一次TCP连接、显示HTML文件的请求、10个文件的1次请求)。
2.3 HTTP 报文格式
  1. 请求报文:客户发往服务器
  2. 响应报文:服务器发往客户

 HTTP报文由ASCII文本构成。

 HTTP请求报文:

HTTP请求报文:

报头包括:
在这里插入图片描述
上传表单输入:

  • Post 方法
    • Web页通常包含表单输入。
    • 输入的表单内容放在报文体中上传到服务器。
  • URL 方法
    • 使用 GET 方法。
    • 输入内容放在请求行的URL字段中上传,如:www.somesite.com/animalsearch?monkeys&banana。

HTTP方法:
在这里插入图片描述
HTTP 响应报文:
在这里插入图片描述
HTTP 响应状态代码:
在这里插入图片描述

2.4 用户与服务器交互: cookie

四个组成部分:

  • HTTP响应报文中的cookie首部行。
  • HTTP请求报文中的cookie 首部行。
  • 保存在用户主机的cookie文件,由用户的浏览器管理。
  • Web网站的后端数据库。

例子:Susan第一次访问某个电子商务网站,当HTTP请求报文到达该网站时,网站为其创建:

  • 一个ID
  • 在后端数据库中为该ID建立一个表项。

Cookies: 保存"状态":
在这里插入图片描述

Cookies交互的两种方式:

  • 服务端:信息保存在服务端的后端数据库,返回ID给客户。
  • 客户端:信息发回客户端,保存在cookie文件中,并随请求报文发送给服务器。
2.5 Web缓存(代理服务器)

在这里插入图片描述

代理服务器: 代表原始服务器满足HTTP请求的网络实体,保存最近请求过的对象的拷贝。

用户要设置浏览器:所有HTTP请求首先发往web缓存。

浏览器将HTTP请求发送给web缓存:

  • 对象在web缓存中: web缓存返回对象。
  • 对象不在web缓存中:web缓存从原始服务器获取对象,缓存在本地,然后返回给客户。

Q:web缓存如何知道对象的原始服务器?
A: HTTP请求头中的host首部行指出了原始服务器

Web cache既是服务器又是客户:

  • 对于浏览器来说是服务器。
  • 对于原始服务器来说是客户。

  Web cache通常由ISP提供,多级ISP可能形成多级web缓存。

Web caching 的作用:

  • 减少客户请求的响应时间。
  • 减少机构接入链路上的流量。

Cache Example:
原始:

链路升级:

安装Web Cache:
在这里插入图片描述

2.6 条件 GET

代理服务器如何发现缓存的对象是不是最新的?
在这里插入图片描述

2.7 小结
  • 因特网上的每个资源(对象)都可以通过URL访问
  • HTTP使用TCP连接
    • 非持续HTTP
    • 持续HTTP
  • 客户与服务器交互:
    • 报文请求/响应
  • HTTP服务器是无状态的,利用cookie技术可以保存用户状态
  • 使用web缓存提高请求-响应速度:
    • 使用条件get获得最新的对象副本

3. File Transfer and FTP

3.1 文件传输应用画像

在这里插入图片描述

  • 应用层资源:文件
  • 网络应用架构:客户-服务器
  • 使用传输服务:TCP
  • 端口号:21、20
  • 应用层协议:FTP
    • 使用命令/响应交互(不是像HTTP那样使用报文交互)
    • 通常情况下,用户通过FTP用户代理与文件服务器交互
3.2 FTP用户代理

在这里插入图片描述

3.3 使用分离的控制连接和数据连接

在这里插入图片描述

  • 控制连接:
    • 使用端口21,传送客户命令和服务器响应。
    • 控制连接在整个会话期间一直保持。
  • 数据连接:
    • 使用端口20,传输文件。
    • 每个数据连接只传输一个文件,发送方用关闭连接表示一个文件传输结束。
3.4 建立连接
  1. 服务器在端口21等待客户。
    在这里插入图片描述

  2. 客户使用临时端口号建立连接。
    在这里插入图片描述

  3. 客户选择一个临时端口号,在该端口上等待服务器的连接请求。
    在这里插入图片描述

  4. 客户在控制连接上用PORT命令将临时端口号发送给服务器。
    在这里插入图片描述

  5. 服务器使用端口20与客户机给出的端口建立连接。
    在这里插入图片描述

3.5 有关控制连接与数据连接的问题

Q:为什么将控制连接与数据连接分开?
A:不会混淆数据与命令/响应,简化协议设计和实现;在传输文件的过程中可以继续执行其它的操作;便于控制传输过程(如客户可以随时终止传输)

Q:为什么用关闭数据连接的方式结束文件传输?
A:允许动态创建文件(不需预先告知文件的大小)

3.6 FTP小结
  • 使用TCP协议,服务器端口号21、20
  • 采用命令/响应交互方式
  • 使用两条TCP连接:
    • 控制连接(端口21):会话期间始终保持
    • 数据连接(端口20):每条连接仅传输一个文件,且客户与服务器角色交换

相关文章:

【计算机网络-自顶向下方法】应用层(HTTP、FTP)

目录 1. Principles of network applications创建一个网络应用1.1 网络应用架构1.1.1 客户-服务器架构1.1.2 P2P架构1.1.3 两种架构的比较 1.2 不同终端上的进程通信1.3 应用需要什么样的传输服务1.4 因特网能够提供的传输服务1.5 应用层协议1.6 小结 2. Web and HTTPWeb应用画…...

CSS文本超出显示小数点

目录 1、单行文本溢出 2、多行文本溢出 1、基于高度截断 2、基于行数截断 1、单行文本溢出 如果解决文本溢出显示省略号,需要满足的三个条件: 先强制一行内显示文本 white-space:nowrap;/*默认normal 自动换行*/ 超出的文本隐藏起来。 overflow:…...

怎么把图片压缩小一点?4个简单的压缩办法

怎么把图片压缩小一点?因为图片太大而带来的不良影响可说是非常的多,例如因为图片体积太大导致电脑中的存储空间越来越小,使得电脑使用起来越来越慢;当我们打开一张体积非常大的图片时无法开,甚至一度让电脑卡死&#…...

react嵌套路由

react嵌套页面 先从路由身上导出 import { HashRouter, Routes, Route, Navigate } from react-router-dom; //引入页面; import Home from ./view/Home; import About from ./view/About; import Integrated from ./view/Integrated; import Sidebar from ./vie…...

代码随想录 单调栈 Ⅰ

739. 每日温度 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替 思路&#…...

C++返回引用

在本文中&#xff0c;您将学习如何在函数中通过引用返回值&#xff0c;以及如何在程序中有效地使用它。 在C 编程中&#xff0c;不仅可以通过引用将值传递给函数&#xff0c;还可以通过引用返回值。 示例&#xff1a;通过引用返回 #include <iostream> int c; int add…...

010:连续跌3天,同时这三天收盘价都在20日均线下,第四天上涨的概率--以京泉华为例

对于《连续跌三天&#xff0c;压第四天上涨的盈利计算》&#xff0c;我们可以继续优化这个策略&#xff0c;增加条件&#xff1a;同时三天都收盘在20日均线下。 因为我们上一篇《获取20日均线数据到excel表中》获得了20日均线数据&#xff0c;我们可以利用均线数据来编写新的脚…...

MATLAB与Python:优势与挑战

本文旨在探讨MATLAB与Python在特定领域内的使用情况&#xff0c;并分析两者之间的优势和挑战。 MATLAB和Python都是流行的编程语言&#xff0c;广泛应用于科学计算、数据分析和机器学习等领域。在某些领域&#xff0c;如航空航天工程、自动化和电子工程嵌入式系统开发等&#…...

CSP-J第二轮试题-2019年-1、2题

文章目录 参考&#xff1a;总结 [CSP-J2019] 数字游戏题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示答案答案2 [CSP-J 2019] 公交换乘题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示…...

深入理解 python 虚拟机:原来虚拟机是这么实现闭包的

深入理解 python 虚拟机&#xff1a;原来虚拟机是这么实现闭包的 在本篇文章当中主要从虚拟机层面讨论函数闭包是如何实现的&#xff0c;当能够从设计者的层面去理解闭包就再也不用死记硬背一些闭包的概念了&#xff0c;因为如果你理解闭包的设计原理之后&#xff0c;这些都是…...

【数据结构-哈希表 一】【原地哈希】:缺失的第一个正整数

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【原地哈希】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…...

【C++设计模式之迭代器模式】分析及示例

简介 迭代器模式是一种行为型设计模式&#xff0c;它提供了一种顺序访问聚合对象元素的方法&#xff0c;而又不需要暴露聚合对象的内部结构。迭代器模式通过将遍历算法封装在迭代器对象中&#xff0c;可以使得遍历过程更简洁、灵活&#xff0c;并且符合开闭原则。 描述 迭代…...

【代码随想录】LC 27. 移除元素

文章目录 前言一、题目1、原题链接2、题目描述 二、解题报告1、思路分析2、时间复杂度3、代码详解 三、知识风暴 前言 本专栏文章为《代码随想录》书籍的刷题题解以及读书笔记&#xff0c;如有侵权&#xff0c;立即删除。 一、题目 1、原题链接 27. 移除元素 2、题目描述 二、…...

crash工具分析dma设备内存踩踏(一)

背景介绍 我们的客户在利用我们提供的SDK参考方案开发相关产品时&#xff0c;在产品方案上进行一些基础老化测试时&#xff0c;极低概率出现kernel随机panic问题&#xff0c;由于场景复杂&#xff0c;无法单独针对特定模块或功能进行拆解来进行实验排查&#xff0c;只能基于已…...

C#上位机——根据命令发送

C#上位机——根据命令发送 第一步&#xff1a;设置窗口的布局 第二步&#xff1a;设置各个属性 第三步&#xff1a;编写各个模块之间的关系...

BEVFormer代码跑通

1 环境配置 1.1 环境安装 # 1 拉取源码 github加速代理https://ghproxy.com/ git clone https://github.com/fundamentalvision/BEVFormer.git# 2 创建虚拟环境 conda create -n bev python3.8 -y# 3 激活虚拟环境 conda activate bev# 4.1 安装torch,torchvision,torchaud…...

kafka安装

kafka安装 1 kafka概念 1.1 kafka介绍 kafka是最初有Linkedin公司开发的&#xff0c;是一个分布式&#xff0c;分区&#xff0c;多副本&#xff0c;多生产者&#xff0c;多订阅者&#xff0c;基于zookeeper协调的分布式日志系统。具有高吞吐量&#xff0c;可扩展性和可容错性…...

Mac上安装Java的JDK多版本管理软件jEnv

JDK的多版本管理软件主要有以下三种&#xff1a; jEnv jEnv 是一个命令行工具&#xff0c;可以帮助您管理和切换不同版本的 Java 环境。它可以让您在不同的项目之间轻松切换 Java 版本。您可以使用 jenv global 命令设置全局 Java 版本&#xff0c;也可以使用 jenv local 命令…...

linux常见命令以及jdk,tomcat环境搭建

目录 Is pwd cd touch cat echo vim 复制粘贴 mkdir rm cp jdk部署 1. yum list | grep jdk进行查找​编辑 2.安装​编辑 3.再次确认 4.判断是否安装成功 tomcat安装 1.下载压缩包&#xff0c;把压缩包上传至linux(可能需要yum install lrzsz) 2.解压缩unzip 压缩包名&…...

将表情存入数据库

概念&#xff1a; 表情是一种比较特殊的字符串&#xff0c;为unicode编码&#xff0c;unicode编码要存入数据库一般情况下&#xff0c;是存不了的&#xff0c;有两种解决方式&#xff0c;一种将数据表编码方式改为unicode编码方式&#xff0c;但是这种情况适用于功能刚开始设计…...

H桥级联型五电平三相逆变器Simulink仿真模型

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

后端解决跨域(极速版)

header(Access-Control-Allow-Origin: *); header(Access-Control-Allow-Methods:*); 代表接收全部的请求&#xff0c;"POST,GET"//允许访问的方式 指定域&#xff0c;如http://172.20.0.206//宝塔的域名&#xff0c;注意不是&#xff1a;http://wang.jingyi.icu等…...

数据结构与算法-前缀树

数据结构与算法-前缀树详解 1 何为前缀树 2 前缀树的代码表示及相关操作 1 何为前缀树 前缀树 又称之为字典树,是一种多路查找树,多路树形结构,是哈希树的变种&#xff0c;和hash效率有一拼&#xff0c;是一种用于快速检索的多叉树结构。 性质&#xff1a;不同字符串的相同…...

DirectX12_Windows_GameDevelop_3:Direct3D的初始化

引言 查看龙书时发现&#xff0c;第四章介绍预备知识的代码不太利于学习。因为它不像是LearnOpenGL那样从头开始一步一步教你敲代码&#xff0c;导致你没有一种整体感。如果你把它当作某一块的代码进行学习&#xff0c;你跟着敲会发现&#xff0c;总有几个变量是没有定义的。这…...

基于粒子群优化算法、鲸鱼算法、改进的淘沙骆驼模型算法(PSO/SSA/tGSSA)的微电网优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

数据分析篇-数据认知分析

一简介 数据认知分析&#xff0c;实际是对数据的整体结构和分布特征进行分析&#xff0c;是对整个数据外在的认识&#xff0c;也是数据分析的第一步。对于数据认知的分析&#xff0c;一般会考虑分散性、位置特性、变量的相关性等&#xff0c;一般会考虑平均数、方差、极差、峰…...

【力扣-每日一题】714. 买卖股票的最佳时机含手续费

class Solution { public:int maxProfit(vector<int>& prices, int fee) {//[i][0]-不持有 [i][1]-持有int mprices.size();vector<vector<int>> dp(m,vector<int>(2));dp[0][0]0; //初始状态dp[0][1]-prices[0];for(int i1;i<m;i){dp[i]…...

【代码实践】HAT代码Window平台下运行实践记录

HAT是CVPR2023上的自然图像超分辨率重建论文《activating More Pixels in Image Super-Resolution Transformer》所提出的模型。本文旨在记录在Window系统下运行该官方代码&#xff08;https://github.com/XPixelGroup/HAT&#xff09;的过程&#xff0c;中间会遇到一些问题&am…...

机器学习-Pytorch基础

Numpy和Pytorch可以相互转换&#xff0c;前者CPU上&#xff0c;后者GPU上&#xff0c;都是对矩阵进行运算&#xff0c;Pytorch的基本单位是张量。torch 可以初始化全为0、全为1、符合正态分布的矩阵确定性初始化 torch.tensor()torch.arrange()torch.linspace()torch.logspace…...

金九银十,刷完这个笔记,17K不能再少了....

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;得准备面试了&#xff0c;又不知道从何下手&#xff01;为了帮大家节约时间&#xff0c;特意准备了一份面试相关的资料&#xff0c;内容非常的全面&#xff0c;真的可以好好补一补&#xff0c;希望大家在都能拿到理想…...

房山营销型网站制作开发/网站优化排名怎么做

Description 小 \(A\) 走到一个山脚下&#xff0c;准备给自己造一个小屋。这时候&#xff0c;小 \(A\) 的朋友&#xff08;op&#xff0c;又叫管理员&#xff09;打开了创造模式&#xff0c;然后飞到山顶放了格水。于是小 \(A\) 面前出现了一个瀑布。作为平民的小A只好老实巴交…...

南宁网站建设流程/上海高端网站定制

全球qs排名查询 中国qs排名查询 百度百科&#xff1a; qs排名 中国排名世界排名大学地区117清华大学中国218北京大学中国322香港大学&#xff08;HKU&#xff09;中国香港431复旦大学中国534香港科技大学&#xff08;HKUST)中国香港639香港中文大学中国香港745浙江大学中国8…...

如何建立网站做微商/百度官网首页网址

多人同时上麦说话主播正常开始直播&#xff0c;普通观众看到主播的单人直播画面&#xff1b;需要连麦的观众发起连麦请求&#xff0c;进入连麦申请列表&#xff1b;主播从连麦申请列表中选择一名或多名观众进行连麦操作&#xff0c;主播与连麦观众进行实时音视频互动&#xff0…...

网站后台动态播放怎么做的/近期国际新闻20条

在使用Haphost提供的128M内存的VPS建站时&#xff0c;debian7wordpressnginxmysql跑起来相当吃力。然后使用Debian7typecholighttpdsqlite的搭配好&#xff0c;发现效果特别好&#xff0c;在此记录下搭建和优化过程。 1.debian 7 32位系统的优化 删除建站用不到的软件并清理缓存…...

成都建站seo/建一个外贸独立站大约多少钱

1 构造函数 1.1 对象的初始化 在定义一个对象的时候&#xff0c;常常需要作某些初始化的工作&#xff0c;例如&#xff0c;对成员变量赋值。如果一个成员变量未赋值&#xff0c;那么&#xff0c;它的值是不可预知的&#xff08;是系统随机分配的一个垃圾值&#xff09;。因为系…...

做网站需要理解什么/seo广告优化多少钱

C中的多态及虚函数大总结 文章目录多态一、静态多态1.1 函数多态1.2 宏多态1.3 模板多态二、动态多态2.1 父类引用指向子类对象&#xff08;上转型多态&#xff09;多态需要注意的问题多态 多态可分为静态多态 与 动态多态。 一、静态多态 静态多态的实现在于静态联编&#…...