计算机网络——自顶向下方法(第二章学习记录)

news2024/11/25 0:51:08

本章学习应用层

网络应用是计算机网络存在的理由。

网络应用程序体系结构

现代网络应用程序有两种主流体系结构:客户—服务器体系结构和对等(P2P)体系结构

客户—服务器体系结构(client-server ),在这个结构中,有一个总是打开的主机称为服务器,它服务于来自许多其他称为客户的主机的请求。

(一个典型的例子是Web应用程序,其中总是打开的Web服务器服务于来自浏览器(运行在客户主机)的请求。当它接收到请求后,它向该客户发送所请求的对象作为响应)

这种结构有几个特点:客户相互之间不直接通信;服务器具有固定的、周知的地址(IP地址)

具有这种结构的著名的应用程序包括Web、FTP、Telnet、和电子邮件

P2P体系结构,在这个结构中对位于数据中心的专用服务器有最小的(或者没有)依赖,相反,应用程序在间断连接的主机对之间使用直接通信,这些主机对被称为对等方。这种对等通信不必通过专门的服务器,因此该结构被称为对等方到对等方的。

这种结构最引人入胜的特征之一是它的自扩展性

(例如,在一个P2P文件共享应用中,尽管每个对等方都由于请求文件产生工作负载。但每个对等方通过向其他对等方分发文件也为系统增加服务能力)

进程通信

用操作系统的术语来说,进行通信的实际上是进程(process)而不是程序。一个进程可以被认为是运行在端系统中的一个程序。在两个不同端系统上的进程,通过跨越计算机网络交换报文而相互通信。发送进程生成并向网络中发送报文,接收进程接收这些报文并可能通过回送报文进行响应。

客户和服务器进程

网络应用程序由成对的进程组成,这些进程通过网络相互发送报文。

(在Web应用程序中,一个客户浏览器进程与一台Web服务器进程交换报文;在一个P2P系统中,文件从一个对等方中的进程传输到另一个对等方中的进程)。对于每对通信进程,常将这两个进程之一标识为客户(client),而另一进程标识为服务器(server),

具体来说就是:在一对进程之间之间的通信会话场景中,发起通信的进程被标识为客户,在会话开始时等待联系的进程是服务器

进程与计算机网络之间的接口

多数程序是由通信进程对组成,每对中的两个进程相互发送报文。从一个进程向另一个进程发送的报文必须通过下面的网络,进程通过一个称为套接字(socket)的软件接口向网络发送报文和从网络接收报文。

 套接字是同一台主机内应用层与运输层之间的接口。由于该套接字是建立网络应用程序的可编程接口,因此套接字也称为应用程序和网络之间的应用程序编程接口(Application Programming Interface,API),应用程序开发者可以控制套接字在应用层端的一切,但是对该套接字的运输层几乎没有控制权。

进程寻址

在一台主机上运行的进程为了向在另一台主机上运行的进程发送分组,接收进程需要有一个地址,为了标识该接收进程,需要定义两种信息:①主机的地址②在目的主机中指定接收进程的标识符。在因特网中,主机由其IP地址标识(IP地址是一个32比特的量且它能够唯一地标识该主机)。接收主机用端口号(port number)来标识接收进程。

因特网提供的运输服务

因特网为应用程序提供两个运输层协议,UDP和TCP, 当软件开发者为因特网创建一个新的应用时,首先要做出的决定是选择UDP还是TCP,每个协议为第哦啊用它们的应用程序提供不同的服务集合。

TCP服务 

TCP服务模型包括面向连接服务和可靠数据传输服务。当某个应用程序调用TCP作为其运输协议,该应用程序就能获得来自TCP地这两种服务。

  • 面向连接的服务:在应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输层控制信息,这个握手过程提醒客户和服务器,让它们为大量分组的到来做好准备,在握手阶段后,一个TCP连接就在两个进程的套接字之间建立了,这条连接是全双工的,即连接双方的进程可以在此连接上同时进行报文收发。当应用程序结束报文发送时,必须拆除该连接
  • 可靠的数据传送服务:通信进程能够依靠TCP,无差错、按适当的顺序交付所有发送的数据。当应用程序的一端将字节流传进套接字时,它能够依靠TCP将相同的字节流交付给接收方的套接字,没有字节的丢失和冗余

TCP协议还具有拥塞控制机制,这种服务不一定能为通信进程带来直接好处,但能为因特网带来整体好处。当发送方和接收方之间的网络出现拥塞时,TCP的拥塞控制机制会抑制发送进程。

UDP服务 

UDP是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务。

  • UDP是无连接的,因此在两个进程通信前没有握手过程。
  • UDP协议提供一种不可靠数据传输服务,当进程将一个报文发送进UDP套接字时,UDP协议并不保证该报文将到达接收进程,而且到达接收进程的报文也有可能是乱序到达的。

UDP没有包括拥塞控制机制,所以UDP的发送端可以用它选定的任何速率向其下层(网络层)注入数据

这里需要注意的是无论是TCP还是UDP,都没有提供任何加密机制。发送进程传进其套接字的数据与经网络传送到目的端进程的数据相同,明文方式传送,这就可能使得信息在任何中间链路被发现。因此研制了TCP的加强版本——安全套接字(Secure Sockets Layer,SSL)。用SSL加强后的TCP不仅能够做传统TCP所能做的一切,而且提供了关键的进程到进程的安全性服务,包括加密、数据完整性和端点鉴别。

应用层协议

应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文,特别是应用层协议定义了:

  • 交换的报文类型,例如请求报文和响应报文
  • 各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的
  • 字段的语义,即这些字段中的信息的含义
  • 确定一个进程何时以及如何发送报文,对报文进行响应的规则 

Web和HTTP

HTTP概况 

Web的应用层协议是超文本传输协议(HyperText Transfer Protocol,HTTP),它是Web的核心。HTTP由两个程序实现:一个客户程序和一个服务器程序。客户程序和服务器程序运行在不同的端系统中,通过交换HTTP报文进行会话,HTTP定义了这些报文的结构以及客户和服务器进行报文交换的方式。

{Web页面是由对象组成的,一个对象只是一个文件,如HTML文件、JEPG图形、Java小程序这样的文件,且它们可以通过一个URL地址寻址,每个URL地址由两部分组成:存放对象的服务器主机名和对象的路径名}

HTTP定义了Web客户向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式。当用户请求一个Web页面(如点击一个超链接)时,浏览器向服务器发出对该页面中所包含对象的HTTP请求报文,服务器接收到请求并用包含这些对象的HTTP响应报文进行响应,如下图所示。

HTTP使用TCP作为它的支撑运输协议(而不是UDP)。HTTP客户首先发起一个与服务器的TCP连接,一旦连接建立,该浏览器和服务器进程就可以通过套接字接口访问TCP(客户端的套接字接口是客户进程与TCP连接之间的门,服务器端的套接字接口则是服务器进程与TCP连接之间的门。客户向它的套接字接口发送HTTP请求报文并从它的套接字接口接收HTTP响应报文,类似的服务器端也是如此, 一旦客户向它的套接字接口发送一个请求报文,该报文就脱离客户控制并进入TCP的控制,而TCP为HTTP提供可靠的数据传输服务)

服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息,假如客户在短时间内连续请求同一个对象,服务器会依次对每一个请求做出回应,不会因为之前的反应而不再提供服务。因为HTTP服务器不保存关于客户的任何信息,所以说HTTP协议是一个无状态协议(stateless protocol)

非持续连接和持续连接

 客户和服务器再一个相当长的时间范围内通信,其中客户发出一系列请求并且服务器对每个请求进行响应,每个请求/响应对是经一个单独的TCP连接发送(非持续连接),或者所有的请求和响应经过相同的TCP连接发送(持续连接)。

  • 非持续连接的HTTP的过程

在非持续连接情况下,从服务器向客户传送一个Web页面(假设该页面含有一个HTML基本文件和10个JEPG图形,并且这11个对象位于同一台服务器上)

(1)HTTP客户进程在端口号80发起一个到服务器的TCP连接,该端口号是HTTP的默认端口。在客户和服务器上分别有一个套接字与该连接相关联

(2)HTTP客户经它的套接字向该服务器发送一个HTTP请求报文

(3)HTTP服务器进程经它的套接字接收该请求报文,并向客户发送封装了对象的HTTP响应报文

(4)HTTP服务器进程通知TCP断开TCP连接

(5)HTTP客户接收响应报文,TCP连接关闭

上面的举例步骤说明了非持续连接的使用,其中每个TCP连接在服务器发送一个对象后关闭,即该连接并不为其他的对象而持续下来。每个TCP连接只传输一个请求报文和一个响应报文。

往返时间(Round-Trip Time,RTT)是指一个短分组从客户到服务器然后再返回所花费的时间。RTT包含分组传播时延、分组在中间路由器和交换机上的排队时延以及分组处理时延

估算一下从客户请求HTML基本文件到客户收到整个文件所花费的时间?

当用户点击链接时,引起浏览器在它和Web服务器之间发起一个TCP连接;这涉及一次”三次握手“过程,即客户向服务器发送一个小TCP报文段,服务器用一个小TCP报文段做出确认和响应,最后客户向服务器返回确认。

三次握手中前两部分耗费的时间占用了一个RTT,完成后客户向TCP连接发送一个HTTP请求报文,服务器对此HTTP请求做出HTTP响应,这样又耗费一个RTT,因此 

总的响应时间就是两个RTT加上服务器传输HTML文件的时间。 

  • 持续连接的HTTP

非持续连接有一些缺点。第一,必须为每一个请求的对象建立和维护一个全新的连接,对于每一个这样的连接,在客户和服务器中都要分配TCP的缓冲区和保持TCP变量,给Web服务器带来严重负担;第二,每一个对象经受两倍RTT的交付时延,一个RTT用于创建TCP,另一个用于请求和接收对象。

在采用持续连接情况下,服务器在发送响应后保持该TCP连接打开。在相同的客户和服务器之间,后续的请求和响应报文能够通过相同的连接进行传送。HTTP的默认模式是使用带流水线的持续连接。

用户与服务器的交互cookie

我们已经知道HTTP服务器是无状态的,然而一个Web站点通常希望能够识别用户,为此HTTP使用了cookie。

如图,cookie技术有4个组件:①在HTTP响应报文中的一个cookie首部行;②在HTTP请求报文中的一个cookie首部行;③在用户端系统保留有一个cookie文件,由用户的浏览器进行管理;④位于Web站点的一个后端数据库。

cookie可用于标识一个用户。用户首次访问一个站点时,可能需要提供一个用户标识。在后继会话中,浏览器向服务器传递一个cookie首部,从而向该服务器标识了用户。因此cookie可以在无状态的HTTP之上建立一个用户会话层。但是cookie的使用仍有争议,因为它们被认为是对用户隐私的一种侵害。

Web缓存 

Web缓存也叫代理服务器,它是能够代表初始Web服务器来满足HTTP请求的网络实体。  

 

可以配置用户的浏览器,使得用户的所有HTTP请求首先指向Web缓存器,一旦某浏览器被配置,每个对某对象的浏览器请求首先被定向到该Web缓存器。

假设浏览器正在请求对象,会发生如下情况:

(1)浏览器创建一个到Web缓存器的TCP连接,并向Web缓存器中的对象发送一个HTTP请求

(2)Web缓存器进行检查,看看本地是否存储了该对象副本,如果有,Web缓存器就向客户浏览器用HTTP响应报文返回该对象

(3)如果Web缓存器中没有该对象,它就打开一个与该对象的初始服务器的TCP连接。Web缓存器则在这个缓存器到服务器的TCP连接上发送一个该对象的HTTP请求,在收到该请求后,初始服务器向该Web缓存器发送具有该对象的HTTP响应 。

(4)当Web缓存器接收到该对象时,它在本地存储空间存储一份副本,并向客户的浏览器用HTTP响应报文发送该副本(通过现有的客户浏览器和Web缓存器之间的TCP连接)

需要注意的是Web缓存器既是服务器又是客户。当它接收浏览器的请求并发回响应时,它是一个服务器,当它向初始服务器发出请求并接收响应时,它是一个客户。

在因特网上部署Web缓存器有两个原因。首先,Web缓存器可以大大减少对客户请求的响应时间;其次,Web缓存器能够大大减少一个机构的接入链路到因特网的通信量。

因特网中的电子邮件

电子邮件是一种异步通信媒介。

下图给出因特网电子邮件系统的总体情况。

 它有三个主要组成部分:用户代理(user agent)、邮件服务器(mail server)、简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)。

一个典型的邮件发送过程:从发送方的用户代理开始,传输到发送方的邮件服务器,再传输到接收方的邮件服务器,然后在这里被分发到接收方的邮箱中。

SMTP是因特网电子邮件中主要的应用层协议。它使用TCP可靠数据传输服务,从发送方的邮件服务器向接收方的邮件服务器发送邮件。

假设Alice想给Bob发送一封简单的报文,

(1)Alice调用她的邮件代理程序并提供Bob的邮件地址,撰写报文,然后指示用户代理发送该报文。

(2)Alice的用户代理把报文发给她的邮件服务器,在那里该报文被放在报文队列中。

(3)运行在Alice的邮件服务器上的SMTP客户端发现了报文队列中的这个报文,它就创建一个到运行在Bob的邮件服务器上的SMTP服务器的TCP连接。

(4)在经过一些初始SMTP握手后,SMTP客户端通过该TCP连接发送Alice的报文。

(5)在Bob的邮件服务器上,SMTP的服务器端接收该报文。Bob的邮件服务器然后将该报文放入Bob的邮箱中。

(6)在Bob方便的时候,他调用用户代理阅读该报文。

 

SMTP一般不使用中间邮件服务器发送邮件,即使这两个邮件服务器位于地球两端也是这样。如果Bob的邮件服务器没有开机,该报文回保留在Alice的邮件服务器上并等待进行新的尝试,这意味着邮件并不在中间的某个邮件服务器存留。

SMTP与HTTP的对比

这两个协议都是用于从一台主机向另一台主机传送文件:HTTP从Web服务器向Web客户(通常是一个浏览器)传送文件;SMTP从一个邮件服务器向另一个邮件服务器传送文件(电子邮件报文),当进行文件传送时,持续的HTTP和SMTP都使用持续连接。

两者之间的区别

(1) HTTP主要是一个拉协议(pull protocol),用户使用HTTP从该服务器拉取这些信息。这个TCP连接是由想接收文件的机器发起的;另一方面,SMTP基本上是一个推协议(push protocol),即发送邮件服务器把文件推向接收邮件服务器,这个TCP连接是由要发送该文件的及其发起的。

(2)SMTP要求每个报文(包括他们的体)采用7比特ASCII码格式。如果某报文包含了非7比特ASCII字符或二进制数据,则该报文必须按照7比特ASCII码进行编码。HTTP数据则不受这种限制。

(3)第三个重要区别是如何处理一个既包含文本又包含图形(也可能是其他媒体类型)的文档,HTTP把每个对象封装到它自己的HTTP响应报文中,而SMTP则把所有报文对象放在一个报文之中。

邮件访问协议

一旦SMTP将邮件报文从Alice的邮件服务器交付给Bob的邮件服务器 ,该报文就被放入Bob的邮箱。如下图所示,Alice的用户代理用SMTP将电子邮件报文推入她的邮件服务器,接着她的邮件服务器(作为一个SMTP客户)再用SMTP将该邮件中继到Bob的邮件服务器。这里为什么要分为两步?主要是因为不通过Alice的邮件服务器进行中继,Alice的用户代理没有办法到达一个不可达的目的地接收服务器。

Bob是如何通过运行其本地PC上的用户代理,获得位于他的某ISP的邮件服务器上的邮件呢?

Bob的用户代理不能使用SMTP得到报文,因为取报文是一个拉操作,而SMTP协议是一个推协议。通过引入一个特殊的邮件访问协议来解决这个难题,该协议将Bob邮件服务器上的报文传送给他的本地PC。目前有一些流行的邮件访问协议包括第三版的邮局协议(PostOffice Protocol——Version3,POP3),因特网邮件访问协议(Internet Mail Access Protocol,IMAP)以及HTTP 

如上图(图2-16),SMTP用来将邮件从发送方的邮件服务器传输到接收方的邮件服务器 ,也用来将邮件从发送方的用户代理传送到发送方的邮件服务器,POP3这样的邮件访问协议用来将邮件从接收方的邮件服务器传送到接收方的用户代理。

 POP3

POP3是一个极为简单的邮件访问协议,由RFC1939进行定义。当用户代理(客户)打开了一个到邮件服务器(服务器)端口110上的TCP连接后,POP3就开始工作了,随着建立TCP连接,POP3按照三个阶段进行工作:特许、事务处理以及更新。 

 IMAP

基于Web的电子邮件

DNS:因特网的目录服务 

因特网的主机和人类一样,可以使用多种方式进行标识,主机的一种标识方法是用它的主机名(hostname) ,也可以使用IP地址进行标识。

DNS提供的服务

识别主机有两种方式,通过主机名或者IP地址。人们喜欢便于记忆的主机名标识方式,而路由器则喜欢定长的、有着层次结构的IP地址,为了折中,我们需要一种能进行主机名到IP地址转换的目录服务,这就是域名系统(Domain Name System,DNS)的主要任务。DNS是:①一个由分层的DNS服务器(DNS server)实现的分布式数据库;②一个使得主机能够查询分布式数据库的应用层协议DNS协议运行在UDP上,使用53号端口。

DNS通常是由其他应用层协议所使用的,包括HTTP、SMTP和FTP,将用户提供的主机名解析为IP地址。

举一个例子,考虑运行在某用户主机上的一个浏览器(即一个HTTP客户)请求URL www.someschool.edu/index.html页面时会发生什么现象。为了使用户的主机能够将一个HTTP请求报文发送到Web服务器www.someschool.edu,该用户主机必须获得www.someschool.edu的IP地址。其做法如下

(1)同一台用户主机上运行着DNS应用的客户端

(2)浏览器从上述URL中抽取出主机名www.someschool.edu,并将这台主机名传给DNS应用的客户端

(3)DNS客户向DNS服务器发送一个包含主机名的请求

(4)DNS客户最终会收到一份响应报文,其中含有对应于该主机名的IP地址

(5)一旦浏览器接收到来自DNS的该IP地址,它能够向位于该IP地址80端口的HTTP服务器进程发起一个TCP连接

除了进行主机名到IP地址的转换外,DNS还提供了一些重要的服务:

  • 主机别名 有着复杂主机名的主机能拥有一个或多个别名,应用程序可以调用DNS来获得主机别名对应的规范主机名以及主机的IP地址
  • 邮件服务器别名  
  • 负载分配  DNS也用在冗余的服务器之间进行负载分配

DNS工作机理概述

假设运行在用户主机上的某些应用需要将主机名转换为IP地址。这些应用程序将调用DNS的客户端,并指明需要被转换的主机名。用户主机上的DNS接收到后,向网络中发送一个DNS查询报文。所有的DNS请求和回答报文使用UDP数据报经端口53发送 。经过若干时间的时延后,用户主机上的DNS接收到一个提供所希望映射的DNS回答报文,这个映射结果则被传递到调用DNS的应用程序。因此从用户主机上调用应用程序的角度看 ,DNS是一个提供简单、直接的转换服务的黑盒子。

DNS的一种简单设计是在因特网上只使用一个DNS服务器,该服务器包含所有的映射。在这种集中式设计中,客户直接将所有查询直接发往单一的DNS服务器,同时该DNS服务器直接对所有的查询客户做出响应,但是这种集中式设计的问题包括:

(1)单点故障 如果该DNS服务器崩溃,整个因特网随之瘫痪

(2)通信容量 单个DNS不得不处理所有的DNS查询

(3)远距离的集中式数据库 单个DNS服务器不可能”邻近“所有查询客户,所以可能会导致严重的时延

(4)维护 单个DNS服务器不得不为所有的因特网主机保留记录,这将使这个中央数据库庞大。

因此DNS采用了分布式的设计方案

(1)分布式、层次结构

为了处理扩展性问题,DNS使用了大量的DNS服务器,它们以层次方式组织,并且分布在全世界范围内。没有一台DNS服务器拥有因特网上所有主机的映射,相反这些映射分布在所有的DNS服务器上,大致来说有三种类型的DNS服务器:根DNS服务器、顶级域(Top-Level Domain,TLD)DNS服务器和权威DNS服务器 

  • 根服务器 有400多个根服务器遍及全世界,这些根服务器由13个不同的组织管理,根服务器提供TLD服务器的IP地址
  • 顶级域DNS服务器  对于每个顶级域和所有国家的顶级域,都有TLD服务器。TLD服务器提供了权威DNS服务器的IP地址
  • 权威DNS服务器 在因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址

根、TLD、和权威DNS服务器都处在该DNS服务器的层次结构中,还有另一类重要的DNS服务器,称为本地DNS服务器(local DNS server),严格来说一个本地DNS服务器并不属于该服务器的层次结构,但他对DNS层次结构是至关重要的。每个ISP都有一台本地DNS服务器,当主机与某个ISP连接时,该ISP提供一台主机的IP地址,该主机具有一台或多台其本地DNS服务器的IP地址

 DNS缓存

 为了改善时延性能并减少在因特网上到处传输的DNS报文数量,DNS广泛使用了缓存技术。DNS缓存的原理非常简单,在一个请求链中,当某DNS服务器接收一个DNS回答时,它能将映射缓存在本地存储器中,事实上因为缓存,除了少数DNS查询以外,根服务器被绕过了。

P2P文件分发

截至目前我们所描述的应用都采用了客户——服务器模式,极大地依赖总是打开的基础设施服务器,而使用p2p体系,对总是打开的基础设施服务器有最小的(或者没有)依赖,成对间歇连接的主机(称为对等方)彼此直接通信,这些对等方并不为服务提供商所拥有。

在客户——服务器模式下进行文件分发,该服务器必须向每个对等方发送该文件的一个副本,即服务器承受了极大的负担,并且消耗了大量的服务器带宽。在P2P文件分发中,每个对等方能够向任何其他对等方重新发送它已经收到的该文件的任何部分,从而在分发过程中协助该服务器。

具有P2P体系结构的应用程序能够是自扩展的。这种扩展性的直接成因是:对等方除了是比特的消费者外还是它们的重新分发者。

 

 

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

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

相关文章

SAP CAP篇五:为CAP添加Fiori Elements程序(2)

本文目录 本系列之前的文章新建Fiori Elements Application选择Application TypeData SourceEntity SelectionProject InformationLaunchpad Setting 修改manage-books文件夹子文件夹 webapp重命名 annotations.cds更新fiori-service.cdsmanifest.json 添加services.cds到app文…

哈工大计算机网络课程传输层协议之:拥塞控制原理剖析

哈工大计算机网络课程传输层协议之:拥塞控制原理剖析 文章目录 哈工大计算机网络课程传输层协议之:拥塞控制原理剖析拥塞成因和代价:场景1拥塞成因和代价:场景2拥塞成因和代价:场景3如何进行拥塞控制拥塞控制的方法TCP…

哈工大计算机网络课程网络层协议之:网络层服务概述

哈工大计算机网络课程网络层协议之:网络层服务概述 文章目录 哈工大计算机网络课程网络层协议之:网络层服务概述网络层概述网络层核心功能—转发与路由网络层核心功能—连接建立网络层服务模型虚电路网络与数据报网络虚电路网络虚电路(VC)的具体实现VC转…

Web 渗透测试攻防之浅述信息收集

前言 众所周知渗透测试的本质是信息收集,在渗透测试中信息收集的质量直接关系到渗透测试成果的与否。在对系统进行渗透测试前的信息收集是通过各种方式获取所需要的信息,收集的信息越多对目标进行渗透的优势越有利。通过利用获取到的信息对系统进行渗透…

【前端布局篇】响应式布局 Bootstrap 移动端布局

前言 1. 布局介绍 布局:layout 对事物的全面规划和安排 页面布局:对页面的文字、图形或表格进行格式设置。包括字体、字号、颜色纸张大小和方向以及页边距等。 网页布局:利用html搭建结构与内容,使用CSS添加装饰 网页布局有很多种方式&a…

Flink 学习七 Flink 状态(flink state)

Flink 学习七 Flink 状态(flink state) 1.状态简介 流式计算逻辑中,比如sum,max; 需要记录和后面计算使用到一些历史的累计数据, 状态就是:用户在程序逻辑中用于记录信息的变量 在Flink 中 ,状态state 不仅仅是要记录状态;在程序运行中如果失败,是需要重新恢复,所以这个状态…

基于Django的疫情困扰下的民慧钢材销售分析及纾困策略-计算机毕设 附源码87656

基于Django的疫情困扰下的民慧钢材销售分析及纾困策略 摘 要 疫情之下,实体经济面临下行压力。2019年以来,新冠肺炎疫情卷土而来,各地地疫情防控形势严峻,许多中小微企业经营发展屡次遭受打击。面对疫情常态化的社会现实&#x…

[学习笔记] [机器学习] 13. 集成学习进阶(XGBoost、OTTO案例实现、LightGBM、PUBG玩家排名预测)

视频链接数据集下载地址:无需下载 学习目标: 知道 XGBoost 算法原理知道 otto 案例通过 XGBoost 实现流程知道 LightGBM 算法原理知道 PUBG 案例通过 LightGBM 实现流程知道 Stacking 算法原理知道住房月租金预测通过 Stacking 实现流程 1. XGBoost 算…

SPI协议(嵌入式学习)

SPI协议 概念时序SPI通信模式图四种通信模式 优缺点 概念 SPI(Serial Peripheral Interface)是一种串行外设接口协议,用于在数字系统之间进行通信。它被广泛应用于嵌入式系统和电子设备中,用于连接微控制器、传感器、存储器、显示…

Linux权限管理(超详解哦)

Linux权限 引言文件访问者的分类文件类型与访问权限文件类型访问权限 文件权限值的表示方法修改权限的指令chmod修改文件权限通过角色/-/权限来修改通过三个八进制数修改 chown修改所有者chgrp修改所属组umask修改或查看文件权限掩码文件创建时的权限 目录的权限粘滞位 总结 引…

【命令参数】SVN - 环境配置及常用命令参数

目录 环境配置 基本语法 参数指令 SVN是一款基于C/S架构的版本控制系统,能够实现对产品项目的版本托管以及对源码库的高效管理。而掌握SVN中的一些命令参数,一定程度上可以使日常效率得到进一步提升。 环境配置 为在调用时更加便捷,通常会…

我们如何实现业务操作日志功能?

1. 需求 我们经常会有这样的需求,需要对关键的业务功能做操作日志记录,也就是用户在指定的时间操作了哪个功能,操作前后的数据记录,必要的时候可以一键回退,今天我就为大家实现这个的功能,让大家可以直接拿…

哈尔滨工业大学计算机考研分析

关注我们的微信公众号 姚哥计算机考研 更多详情欢迎咨询 哈尔滨工业大学(A)考研难度(☆☆☆☆☆) 哈尔滨工业大学计算机考研招生学院是计算学部、计算学部(深圳)和计算学部(威海)…

C++完成烧烤节管理系统

背景: 这次我们结合今年淄博烧烤做一个餐厅管理系统,具体需求如下,我们选择的是餐饮商家信息管理 问题描述: 淄博烧烤今年大火,“进淄赶烤”是大家最想干的事情,淄博烧烤大火特火的原因,火的…

C语言之文件的读写(1)

前面三部分已经给大家介绍过了,网址发给大家方便大家复习 打开方式如下: 文件使用方式 含义 如果指定文件不存在 “r”(只读) 为了输入数据,打开一个已经存在的文本文件 出错 “w”(只写) 为了输…

文心一言眼里的Java世界

目录 一、Java基础教程系列二、先听听文心一言怎么说?三、话不多说,开干。1、要有一个正确的Java学习路线,做一个细致的Java学习规划。2、学习资料推荐3、书中自有黄金屋,书中自有颜如玉4、自学周期推荐5、效率为先6、哪吒的学习方…

Redis 数据分布优化:如何应对数据倾斜?

Redis 核心技术与实战 笔记 作者: 蒋德钧 在切片集群中,数据会按照一定的分布规则分散到不同的实例上保存。比如,在使用 Redis Cluster 或 Codis 时,数据都会先按照 CRC 算法的计算值对 Slot(逻辑槽)取模&a…

Hi3861开发第一节:环境搭建,并顺利完成编译

本次教程在纯Windows下环境搭建!!! 1.DecEco Device Tool下载和安装 步骤一:下载devicetool-windows-tool-3.1.0.400.zip版,下载网址:https://device.harmonyos.c om/cn/develop/ide#download 步骤二:解压…

Win10连接网络打印机提示0x0000052e?

Win10连接网络打印机提示0x0000052e?Win10电脑中用户连接网络打印机的时候,出现了错误代码0x0000052e,导致用户无法正常使用网络打印机,这时候用户可以通过卸载最新补丁、替换系统文件并修改注册表等方法来解决问题。 方法一&…