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

note-网络是怎样连接的6 请求到达服务器,响应返回浏览器

助记提要
  1. 服务器程序的结构
  2. 套接字的指代方式
  3. MAC模块的接收过程
  4. IP模块的接收过程
  5. TCP模块处理连接包
  6. TCP模块处理数据包
  7. TCP模块的断开操作
  8. URI转换为实际文件路径
  9. URI调用程序
  10. Web服务器访问控制
  11. 响应内容的类型

6章 请求到达服务器,响应返回浏览器

1 服务器概览

在数据收发层面,不需要区分客户端和服务器。连接操作上需要区分:发起连接的是客户端,等待连接的是服务器。
服务器和客户端的网络相关的组件是相同的,但用法不同。
服务器可以与多台客户端通信,它的程序结构和客户端也不同。

1.1 服务器程序结构

服务器程序分为等待连接模块和与客户端通信的模块。程序启动并完成初始化后,就运行等待连接模块,创建套接字后进入等待连接的暂停状态。
客户端发起连接时,该模块恢复运行,并接受连接,启动客户端通信模块,并移交完成连接的套接字。
客户端通信模块使用已连接的套接字和客户端进行通信。通信结束后,通信模块会退出。

每次有新的客户端发起连接,都会启动一个新的客户端通信模块,与客户端是一对一的关系。

1.2 服务器程序调用socket库的通信操作
客户端通信模块
等待连接模块
和客户端不同的地方
转移控制
断开 close()
发送数据 write(...)
接收数据 read(...)
创建套接字 socket(...)
接受连接 accept(...)
等待连接 listen(...)
绑定端口 bind(...)

accept接受到客户端的包时,协议栈会给等待连接的套接字复制一个副本,并把连接对象等控制信息写到新的套接字中。这时等待连接模块会启动客户端通信模块,并将套接字副本会转交给客户端通信模块。

1.3 多个套接字副本的端口号

复制出套接字副本后,原先的套接字仍然处于等待连接状态。新的客户端的包到达时,它又会执行接受连接操作,再次复制一个套接字副本。

  • 套接字的指代方式
    新创建的套接字副本和原来等待连接的套接字具有一样的的端口号,以让客户端判断收到的包是正确的程序发来的,比如http的连接套接字都使用80端口号。但是当客户端的包到达时,服务器仅凭接收方端口号无法判断该把包交给哪一个套接字。
    服务器的套接字可能有相同的端口号,但是客户端的套接字都是对应不同的端口号的。因此能通过客户端的端口号确定服务器上的某个套接字。
    在有多个客户端时,不同客户端的端口号可能是重复的,所以必须再加上客户端的IP地址才能判断。

IP头部和TCP头部包含了4项信息:接收方IP、接收方端口号、发送方IP、发送方端口号。通过这4项信息就能确定某个套接字。

  • 描述符指代套接字
    描述符也用来指代套接字。因为在等待连接的时候,没有客户端IP和端口号。而且描述符仅使用一种信息,表示起来比4种信息简单。

2 服务器的接收操作

2.1 网卡把信号还原为数字信息
  1. 从报头读取识别时钟信号,按相同的周期延长时钟信号;
  2. 在每个时钟周期位置检测信号的变化方向,根据信号变化方向还原出0和1;
  3. 根据校验公式计算数字信息,与包尾的帧校验序列比较;如果不一致,说明数据错误,包会被丢弃(TCP检测到丢包后会自动处理)。
  4. 校验成功后,就检查MAC头部的接收方MAC地址,确认这个包是发给自己的。
  5. 都确认无误后,把数字信息保存在网卡的缓冲区中。
  6. 网卡通过中断,告知CPU有网络包到达;
  7. CPU切换到网卡驱动程序,从网卡缓冲区读取包,根据MAC头部的以太类型字段判断协议种类,然后交给相应的协议栈。
2.2 IP模块接收步骤
  1. 检查IP头部格式是否符合规范;
  2. 查看接收方IP地址是不是自己;
  3. 检查包有没有被分片,如果是分片的包,就把包暂存在内存中,等所有分片到达后组装为原始包。
  4. 检查IP头部的协议号字段,交给对应的模块。如协议号为06交给TCP模块,协议号为11交给UDP模块。
2.3 TCP模块的操作
TCP模块处理连接包

TCP模块发现TCP头部控制位的SYN为1时,说明是一个发起连接的包。

  1. TCP模块检查包的接收方端口号,看该端口上有没有正处于等待连接状态的套接字。如果没有等待连接的套接字,则像客户端返回错误通知。
  2. 如果存在等待连接的套接字,就为这个套接字复制一个新的副本,将发送方IP、端口、序号初始值、窗口大小等信息写入这个套接字,并分配用于发送缓冲区和接收缓冲区的内存空间。
  3. 生成代表确认的ACK号,和发送数据的序号初始值、接收缓冲区的窗口大小等信息生成TCP头部,委托IP模块发给客户端。
  4. 客户端收到后,返回表示确认的ACK号。ACK号到达服务器后,连接就完成了。
TCP模块处理数据包
  1. 根据包的IP头部的发送方IP、接收方IP,和TCP头部的接收方端口、发送方端口找到数据包对应的套接字。
  2. 根据套接字中保存的上一个序号和数据长度计算下一个序号,检查该序号和包的TCP头部中的序号是否一致。一致说明包未丢失,这时TCP模块从包中提取数据放到接收缓冲区,和之前的数据连接起来。
  3. 数据进入接收缓冲区后,TCP模块生成确认应答的TCP头部,根据接收包的序号和数据长度计算出ACK号,委托IP模块发给客户端。
  4. 应用程序调用read,TCP模块把接收缓冲区的数据转交给应用程序。
TCP模块的断开操作
  1. 服务器程序调用close时,TCP模块生成控制位FIN为1的TCP头部,委托IP模块发送给客户端;
  2. 客户端收到后,返回一个ACK号,确认收到;
  3. 客户端调用close,生成一个FIN为1的TCP头部发送给服务器;
  4. 服务器返回ACK号,完成断开操作。对应的套接字一段时间后会被删除。

3 Web服务器程序解释请求消息并作出响应

3.1 URI转换为实际文件名

请求消息中包括请求方法和表示数据源的URI,服务器程序根据这些信息向客户端返回数据。

Web服务器公开的目录不是磁盘上的实际目录,而是虚拟目录。URI中写的就是在虚拟目录结构下的路径名。在读取文件时,需要先查询虚拟目录与实际目录的对应关系,并将URI转换成实际的文件名,才能读取并返回数据。

URI中省略文件名时,服务器会读取预先设定好的默认文件名。
可以设置文件名改写规则,在URI中的路径符合改写规则时,将URI中的文件名改写为其他文件名进行访问。这在服务器的目录和文件发生变化并且需要用户通过原来的网址访问时很有用。

3.2 CGI程序

URI指定的文件内容不一定是HTML文档,也可能时一个程序。这时服务器会运行这个程序,然后将程序的输出返回给客户端。

浏览器将需要服务器程序处理的数据放在HTTP请求消息中发送给服务器。数据加在HTTP消息中的两种方法,一是通过GET方法,把输入的数据作为参数添加在URI后面;二是通过POST方法,把数据放在HTTP请求体中发送给服务器。

收到请求消息后,Web服务器检查URI指定的文件名是不是程序。如果是程序,Web服务器会委托操作系统运行这个程序,然后从请求消息中取出数据交给该程序。

程序处理后,输出结果一般会嵌入HTML中。Web服务器将其作为响应消息返回给客户端。

3.3 Web服务器访问控制

访问控制可以根据预先设定的规则,允许或禁止访问。

收到请求时,服务器根据URI判断数据源,并检查数据源对应的访问控制规则,只有允许访问时才读取文件或运行程序。

根据IP地址控制

接受连接时就能知道客户端的IP地址,可以检查是否允许访问。

根据客户端域名控制

先根据IP地址向DNS服务器查询客户端域名,然后再用该域名查询一下IP地址,看结果是否和发送方IP一致。如果一致则检查对应的访问控制规则。
这种方式需要和DNS服务器做多次查询,会使Web服务器响应速度变慢。

有一种在DNS服务器上注册假域名的攻击方式,因此需要双重检查。

根据用户名和密码控制

收到需要用户名和密码的访问时,Web服务器会向客户端发送一条响应消息,告诉用户需要在请求消息中放入用户名和密码。
浏览器收到该消息,会弹出输入用户名和密码的窗口,用户输入用户名和密码后,浏览器把这些消息放入请求消息中重新发给服务器。
服务器检查收到的用户名和密码,与注册的信息一致时,才返回数据。

3.4 做出响应

Web服务器调用write,把响应消息交给协议栈,告诉协议栈这个消息对应的套接字。
协议栈会把数据拆分为多个包,加上头部发出去。

4 浏览器接收响应消息并显示内容

4.1 通过响应的数据类型判断内容

Web可以处理很多类型的数据,每种类型的显示方法都不同。
可以根据响应消息的头部字段Content-Type判断数据类型。

Content-Type: 主类型/子类型; charset=utf-8

Content-Type定义的数据类型:

主类型含义子类型
text文本数据html,HTML文档;
plain,纯文本;
image图像数据jpeg,JPEG格式图片;
gif,GIF格式图片;
audio音频数据mpeg,MP2、MP3格式的音频;
video视频数据mpeg,MPEG格式的视频;
quicktime,Quicktime格式的视频;
model对物体的形状和动作进行建模的数据vrml,VRML格式的建模数据;
application应用程序数据pdf,PDF文档数据;
msword,MS-WORD格式的文档数据;
message直接存放邮件等消息时使用的类型rfc822,一般的邮件数据,包含From、Date等头部数据;
multipart消息体中包含多个部分的数据mixed,消息体中包含不同格式的数据,其中每部分数据都有单独定义的媒体类型;

当数据类型为文本时,需要用charset附加文本的编码信息。utf-8表示Unicode,euc-jp表示EUC编码,ISO-022-jp表示JIS编码,shift_jis表示JIS编码。

如果消息的内容是通过压缩或编码技术转换过的,还需要检查Content-Encoding字段,得知如何将消息中的数据还原为原始数据。

4.2 浏览器在网页显示内容

HTML文档按照标签表示文档的布局和字体等样式信息。浏览器解释这些标签,并按照指定的样式显示文档内容。
HTML文档中有表示图片和视频的标签。浏览器遇到这些标签时,会向服务器请求其中的图片或视频数据。Web服务器返回数据后,浏览器解压该数据,然后委托操作系统显示。
Web服务器还会返回一些应用程序的数据,浏览器会调用相应的程序,或者是自身的插件。不同类型的数据和不同程序的对应关系在浏览器中已经设置好了。

显示操作实际上是操作系统完成的,浏览器负责对系统发出指令。

相关文章:

note-网络是怎样连接的6 请求到达服务器,响应返回浏览器

助记提要 服务器程序的结构套接字的指代方式MAC模块的接收过程IP模块的接收过程TCP模块处理连接包TCP模块处理数据包TCP模块的断开操作URI转换为实际文件路径URI调用程序Web服务器访问控制响应内容的类型 6章 请求到达服务器,响应返回浏览器 1 服务器概览 在数据…...

存储过程与函数:封装数据库逻辑的艺术(七)

引言 在上一章《事务处理》中,我们深入探讨了事务的ACID特性以及如何通过事务控制语句和隔离级别来确保数据的一致性和完整性。本章,我们将把焦点转向存储过程与函数,这是数据库系统中用于封装复杂业务逻辑和增强代码复用性的强大工具。通过…...

【复旦邱锡鹏教授《神经网络与深度学习公开课》笔记】卷积

卷积经常用在信号处理中,用于计算信号的延迟累积。假设一个信号发射器每个时刻 t t t产生一个信号 x t x_t xt​,其信息的衰减率为 w k w_k wk​,即在 k − 1 k-1 k−1个时间步长后,信息为原来的 w k w_k wk​倍,时刻 …...

Trie字符串统计

Trie字符串统计 维护一个字符串集合,支持两种操作: I x 向集合中插入一个字符串 x;Q x 询问一个字符串在集合中出现了多少次。 共有 N个操作,所有输入的字符串总长度不超过 105,字符串仅包含小写英文字母。 输入格式…...

Kali Linux源

中科大 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib阿里云 deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib deb-src http://mirrors.…...

【RT摩拳擦掌】基于RT106L/S语音识别的百度云控制系统

【RT摩拳擦掌】基于RT106L/S语音识别的百度云控制系统 一 文档简介二 平台构建2.1 使用平台2.2 百度智能云2.2.1 物联网核心套件2.2.2 在线语音合成 2.3 playback语音数据准备与烧录2.4 开机语音准备与添加2.5 唤醒词识别词命令准备与添加 三 代码准备3.1 sln-local/2-iot 代码…...

国标GB28181视频汇聚平台EasyCVR设备展示数量和显示条数不符的原因排查与解决

国标GB28181/GA/T1400协议/安防综合管理系统EasyCVR视频汇聚平台能在复杂的网络环境中,将前端设备统一集中接入与汇聚管理。智慧安防/视频存储/视频监控/视频汇聚EasyCVR平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级…...

FastAPI教程I

本文参考FastAPI教程https://fastapi.tiangolo.com/zh/tutorial 第一步 import uvicorn from fastapi import FastAPIapp FastAPI()app.get("/") async def root():return {"message": "Hello World"}if __name__ __main__:uvicorn.run(&quo…...

如何在 HTML 中实现响应式设计以适应不同设备的屏幕尺寸?

要在HTML中实现响应式设计以适应不同设备的屏幕尺寸,可以使用CSS媒体查询和流动布局。 以下是实现响应式设计的一些关键步骤: 使用CSS媒体查询:CSS媒体查询允许根据屏幕尺寸和设备特性应用不同的CSS样式。通过在CSS中使用media规则&#xf…...

【基础篇】第1章 Elasticsearch 引言

1.1 Elasticsearch简介 1.1.1 基本概念 Elasticsearch,一个开源的分布式搜索引擎,以其强大的搜索能力和实时数据分析能力,在大数据时代脱颖而出。它基于Apache Lucene库构建,旨在提供高效、可扩展且易于使用的全文检索解决方案。…...

在区块链技术广泛应用的情况下,C 语言如何在区块链的底层开发中发挥更有效的作用,提高性能和安全性?

C语言在区块链底层开发中发挥着重要的作用,可以提高性能和安全性。具体可以从以下几个方面进行优化: 性能优化:C语言是一种高效的编程语言,可以直接访问内存和硬件资源。在区块链底层开发中,使用C语言可以更好地利用底…...

量化投资 日周月报 2024-06-28

文章 深度学习在量化交易中的应用:在BigQuant量化交易平台的文章中,探讨了深度学习在量化交易中,特别是在因子挖掘方面的应用。文章提到,随着传统线性模型的潜力逐渐枯竭,非线性模型逐渐成为量化交易的主要探索方向。深度学习因其对非线性关系的拟合能力,在量化交易中展现…...

基于 Paimon 的袋鼠云实时湖仓入湖实战剖析

在当今数据驱动的时代,企业对数据的实施性能力提出了前所未有的高要求。为了应对这一挑战,构建高效、灵活且可扩展的实时湖仓成为数字化转型的关键。本文将深入探讨袋鼠云数栈如何通过三大核心实践——ChunJun 融合 Flink CDC、MySQL 一键入湖至 Paimon …...

IPython相关了解

一、什么是 IPython? 1.1 简单理解 IPython IPython 是一种增强的 Python 交互式解释器,它可以让你更方便地编写、调试和运行 Python 代码。你可以把它想象成一个比普通 Python 解释器更聪明、功能更丰富的工具,非常适合用来进行数据探索、…...

华为面试题及答案——机器学习(二)

21. 如何评价分类模型的优劣? (1)模型性能指标 准确率(Accuracy): 定义:正确分类的样本数与总样本数之比。适用:当各类样本的数量相对均衡时。精确率(Precision): 定义:预测为正类的样本中实际为正类的比例。适用:当关注假阳性错误的成本较高时(例如垃圾邮件检测…...

PlatformIO开发环境

PlatformIO是一个开源的生态系统,用于构建物联网应用,它支持多种微控制器(MCU)和硬件开发板,并且与各种IDE集成良好,如VSCode, Atom等,使得跨平台的固件开发变得更加简单和高效。 ### 平台介绍…...

In install.packages(“devtools“, verbose = TRUE) :

错误于curl::curl_download("https://r-lib.github.io/gert/libgit2-1.1.0.x86_64_legacy-linux.tar.gz", : Timeout was reached: [] Connection timed out after 10004 milliseconds 停止执行 Using PKG_CFLAGS Using PKG_LIBS-lgit2 ----------------------------…...

计算机网络 访问控制列表以及NAT

一、理论知识 1. 单臂路由 单臂路由是一种在路由器上配置多个子接口的方法,每个子接口代表不同的 VLAN,用于在一个物理接口上支持多 VLAN 通信。此方法使得不同 VLAN 之间可以通过路由器进行通信。 2. NAT (网络地址转换) NAT 是一种在私有网络和公共…...

使用Oracle IMP导入数据

使用Oracle IMP导入数据 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来聊一聊如何使用Oracle的IMP工具来导入数据。 一、什么是Oracle IMP Oracle…...

C++ 100 之 容器插入和删除

vector插入和删除操作 insert(const_iterator pos, int count,ele);//迭代器指向位置pos插入count个元素ele. push_back(ele); //尾部插入元素ele pop_back();//删除最后一个元素 erase(const_iterator start, const_iterator end);//删除迭代器从start到end之间的元素 erase(c…...

提升 Selenium 测试稳定性的秘诀:深入理解等待 API 的使用

目录 为什么需要等待Selenium 等待 API 简介隐式等待显式等待Fluent Wait等待策略的选择示例代码总结 正文 1. 为什么需要等待 在 Web 自动化测试中,等待是一个关键因素。网络应用通常是动态的,页面加载时间、元素的显示时间都可能不同步。直接操作这…...

Python-算法编程100例-滑动窗口(入门级)

题目1:最大连续1的个数(简单) 给定一个二进制数组 nums , 计算其中最大连续 1 的个数。 解答:前缀和双指针 # 给定一个二进制数组 nums , 计算其中最大连续 1 的个数。 from typing import Listclass So…...

ffmpeg使用mjpeg把yuvj420p编码为jpg图像

version #define LIBAVUTIL_VERSION_MAJOR 58 #define LIBAVUTIL_VERSION_MINOR 12 #define LIBAVUTIL_VERSION_MICRO 100 node 不使用AVOutputFormat code void CFfmpegOps::EncodeYUVJ420pToMJPEG(const char* infile, const char* width_str, const char* height_s…...

龙迅#LT6911GXC支持HDMI2.1转MIPI/4PORT LVDS应用功能,分辨率高达8K30HZ/4K120HZ压缩格式。

1. 描述 该LT6911GXC是一款高性能HD-DVI2.1转MIPI或LVDS芯片,适用于VR/显示应用。 HDCP RX作为HDCP中继器的上游,可以与其他芯片的HDCP TX配合实现中继器功能。 对于 HD-DVI2.1 输入,LT6911GXC可以配置为 3/4 通道。 对于MIPI输出&#xff0c…...

.NET 6.0 Web API项目中实现基于Token的身份验证

本文以一个完整的示例,展示如何在.NET 6.0 Web API项目中实现基于Token的身份验证。这个例子包括了如何创建和验证JWT Token,以及如何在控制器中使用这些Token。 步骤 1: 创建Web API项目 首先,用Visual Studio 2022创建一个基于.NET6.0的 …...

Java常用对象的快速初始化

在Java中,有多种方式来快速初始化各种常用对象,如字符串数组(String[]),集合列表(List),映射表(Map),以及集合(Set)。不同…...

逻辑回归模型模拟实现:从零开始

引言 逻辑回归是一种用于二分类问题的机器学习算法。尽管它的名字中有“回归”,但它实际上是用于分类的。在本文中,我们将通过模拟数据来演示逻辑回归模型的实现。 逻辑回归简介 逻辑回归通过使用逻辑函数(通常是Sigmoid函数)将…...

Docker基本使用和认识

目录 基本使用 镜像仓库 镜像操作 Docker 如何实现镜像 1) namespace 2) cgroup 3) LXC Docker常见的网络类型 bridge网络如何实现 基本使用 镜像仓库 镜像仓库登录 1)docker login 后面不指定IP地址,则默认登录到 docker hub 上 退出 2)docker logo…...

Halcon 文本文件操作,形态学

一文件的读写 *******************************************************向文本文件写入字符串内容*************************************************************read_image (Image, fabrik)threshold (Image, Region, 0, 120)area_center (Region, Area, Row, Column)open_…...

【鸿蒙】稍微理解一下Stage模型

鸿蒙的Stage模型是HarmonyOS多端统一的应用开发框架中的一个核心概念,用于描述应用的界面层次结构和组件之间的关系。下面将详细解析Stage模型的主要组成部分和特点: 模型组成: UIAbility组件:这是应用中负责绘制用户界面的组件&a…...

毕业答辩制作PPT【攻略】

毕业答辩制作PPT【攻略】 前言版权毕业答辩制作PPT【攻略】一、WPS AI 15天免费会员二、AI文档生成PPT三、修改完善PPT 最后 前言 2024-06-14 23:43:05 以下内容源自《【攻略】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN…...

深入解析npm install --save-dev:开发依赖管理的艺术

npm(Node Package Manager)是JavaScript编程语言的包管理器,用于管理项目中的依赖关系。在开发过程中,合理地管理依赖是保证项目可维护性和可扩展性的关键。npm install命令是npm中最常用的命令之一,而--save-dev参数则…...

福布斯 AI 50 榜单中唯一开源向量数据库:Weaviate

本篇文章,聊聊福布斯全球网站前俩月发布的 2023 AI 50 榜单中的唯一一个开源的向量数据库:Weaviate。 它在数据持久化和容错性上表现非常好、支持混合搜索、支持水平扩展,同时又保持了轻量化。官方主打做 AI 时代的原生数据库,减…...

信息学奥赛初赛天天练-38-CSP-J2021阅读程序-约数个数、约数和、埃氏筛法、欧拉筛法筛素数应用

PDF文档公众号回复关键字:20240628 2021 CSP-J 阅读程序3 1阅读程序(判断题1.5分 选择题3分 共计40分 ) 01 #include<stdio.h> 02 using namespace std; 03 04 #define n 100000 05 #define N n1 06 07 int m; 08 int a[N],b[N],c[N],d[N]; 09 int f[N],g[N]; 10 11 …...

第100+13步 ChatGPT学习:R实现决策树分类

基于R 4.2.2版本演示 一、写在前面 有不少大佬问做机器学习分类能不能用R语言&#xff0c;不想学Python咯。 答曰&#xff1a;可&#xff01;用GPT或者Kimi转一下就得了呗。 加上最近也没啥内容写了&#xff0c;就帮各位搬运一下吧。 二、R代码实现决策树分类 &#xff08;…...

Hi3861 OpenHarmony嵌入式应用入门--LiteOS MessageQueue

CMSIS 2.0接口中的消息&#xff08;Message&#xff09;功能主要涉及到实时操作系统&#xff08;RTOS&#xff09;中的线程间通信。在CMSIS 2.0标准中&#xff0c;消息通常是通过消息队列&#xff08;MessageQueue&#xff09;来进行处理的&#xff0c;以实现不同线程之间的信息…...

ffmpeg编码图象时报错Invalid buffer size, packet size * < expected frame_size *

使用ffmpeg将单个yuv文件编码转为jpg或其他图像格式时&#xff0c;报错&#xff1a; Truncating packet of size 11985408 to 3585 [rawvideo 0x1bd5390] Packet corrupt (stream 0, dts 1). image_3264_2448_0.yuv: corrupt input packet in stream 0 [rawvideo 0x1bd7c60…...

解决类重复的问题

1.针对AndroidX 类重复问题 解决办法&#xff1a; android.useAndroidXtrue android.enableJetifiertrue2.引用其他sdk出现类重复的问题解决办法&#xff1a;configurations {all { // You should exclude one of them not both of themexclude group: "com.enmoli"…...

使用 shell 脚本 统计app冷启动耗时

下面是一个 shell 脚本&#xff0c;它使用 参数将包名称作为参数--app&#xff0c;识别相应应用程序进程的 PID&#xff0c;使用 终止该进程adb shell kill&#xff0c;最后使用 重新启动该应用程序adb shell am start&#xff1a; #!/bin/bash# Check if package name is pro…...

使用容器部署redis_设置配置文件映射到本地_设置存储数据映射到本地_并开发java应用_连接redis---分布式云原生部署架构搭建011

可以看到java应用的部署过程,首先我们要准备一个java应用,并且我们,用docker,安装一个redis 首先我们去start.spring.io 去生成一个简单的web项目,然后用idea打开 选择以后下载 放在这里,然后我们去安装redis 在公共仓库中找到redis . 可以看到它里面介绍说把数据放到了/dat…...

第五节:如何使用其他注解方式从IOC中获取bean(自学Spring boot 3.x的第一天)

大家好&#xff0c;我是网创有方&#xff0c;上节我们实践了通过Bean方式声明Bean配置。咱们这节通过Component和ComponentScan方式实现一个同样功能。这节实现的效果是从IOC中加载Bean对象&#xff0c;并且将Bean的属性打印到控制台。 第一步&#xff1a;创建pojo实体类studen…...

Paragon NTFS与Tuxera NTFS有何区别 Mac NTFS 磁盘读写工具选哪个好

macOS系统虽然以稳定、安全系数高等优点著称&#xff0c;但因其封闭性&#xff0c;不能对NTFS格式磁盘写入数据常被人们诟病。优质的解决方案是使用磁盘管理软件Paragon NTFS for Mac&#xff08;点击获取激活码&#xff09;和Tuxera NTFS&#xff08;点击获取激活码&#xff0…...

EtherCAT主站IGH-- 2 -- IGH之coe_emerg_ring.h/c文件解析

EtherCAT主站IGH-- 2 -- IGH之coe_emerg_ring.h/c文件解析 0 预览一 该文件功能coe_emerg_ring.c 文件功能函数预览 二 函数功能介绍coe_emerg_ring.c 中主要函数的作用1. ec_coe_emerg_ring_init2. ec_coe_emerg_ring_clear3. ec_coe_emerg_ring_size4. ec_coe_emerg_ring_pus…...

psensor 的手势功能

psensor 的手势功能的移植过程 有时间再来写下...

使用 nvm 管理 Node 版本及 pnpm 安装

文章目录 GithubWindows 环境Mac/Linux 使用脚本进行安装或更新Mac/Linux 环境变量nvm 常用命令npm 常用命令npm 安装 pnpmNode 历史版本 Github https://github.com/nvm-sh/nvm Windows 环境 https://nvm.uihtm.com/nvm.html Mac/Linux 使用脚本进行安装或更新 curl -o- …...

uni-appx使用form表单页面初始化报错

因为UniFormSubmitEvent的类型时 e-->detail-->value,然后没有了具体值。所以页面初始化的时候 不能直接从value取值&#xff0c;会报错找不到 所以form表单里的数据我们要设置成一个对象来存放 这个问题的关键在于第22行代码 取值&#xff1a; 不能按照点的方式取值 …...

TiDB-从0到1-数据导出导入

TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCCTiDB-从0到1-部署篇TiDB-从0到1-配置篇TiDB-从0到1-集群扩缩容 一、数据导出 TiDB中通过Dumpling来实现数据导出&#xff0c;与MySQL中的mysqldump类似&#xff0c;其属于…...

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-16自定义层

16自定义层 import torch import torch.nn.functional as F from torch import nnclass CenteredLayer(nn.Module):def __init__(self):super().__init__()#从其输入中减去均值#X.mean() 计算的是整个张量的均值#希望计算特定维度上的均值&#xff0c;可以传递 dim 参数。#例如…...

树莓派4设置

使用sudo命令时要求输入密码 以 sudo 为前缀的命令以超级用户身份运行。默认情况下&#xff0c;超级用户不需要密码。不过&#xff0c;您可以要求所有以 sudo 运行的命令都输入密码&#xff0c;从而提高 Raspberry Pi 的安全性。 要强制 sudo 要求输入密码&#xff0c;请为你…...

44.商城系统(二十五):k8s基本操作,ingress域名访问,kubeSphere可视化安装

上一章我们已经配置好了k8s集群,如果没有配置好先去照着上面的配。 一、k8s入门操作 1.部署一个tomcat,测试容灾恢复 #在主机器上执行 kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8#查看k8s中的所有资源 kubectl get all kubectl get all -o wide#查看po…...

Qt/C++模拟鼠标键盘输入

1、控制鼠标移动 &#xff08;1&#xff09;Qt方案 QScreen* sc QGuiApplication::primaryScreen(); QCursor* c new QCursor(); int deltaX 10; int deltaY 10; c->setPos(sc, c->pos().x() deltaX, c->pos().y() deltaY);&#xff08;2&#xff09;Windows原…...

创意与情感共鸣:如何利用TikTok达人打造独特品牌故事

在数字化时代的潮流中&#xff0c;TikTok正逐渐成为品牌推广和用户互动的重要舞台。其中&#xff0c;TikTok达人凭借其独特的创意性和强大的情感共鸣能力&#xff0c;成为独立站品牌故事的新讲述者。本文Nox聚星将和大家探讨如何通过与TikTok达人合作讲述品牌故事&#xff0c;增…...

HTML5的多线程技术:Web Worker API

Web Workers API 是HTML5的一项技术&#xff0c;它允许在浏览器后台独立于主线程运行脚本&#xff0c;即允许进行多线程处理。这对于执行密集型计算任务特别有用&#xff0c;因为它可以防止这些任务阻塞用户界面&#xff0c;从而保持网页的响应性和交互性。Web Workers在自己的…...

Double 4 VR虚拟情景智能互动系统在小语种专业课堂上的应用

随着科技的进步&#xff0c;越来越多的教育机构开始尝试使用虚拟现实技术来提高教学效果。Double 4 VR虚拟情景智能互动系统就是这样一款能够为小语种专业课堂带来革新性体验的教学工具。 一、模拟真实环境&#xff0c;增强学习体验 系统通过高度仿真的虚拟环境&#xff0c;为学…...

3D一览通优化供应链协同,加速产品设计研发和上市

在现代企业管理中&#xff0c;供应链管理无疑占据着举足轻重的地位。它不仅是企业资源优化配置的基石&#xff0c;更是企业降低成本、提高效率、满足客户需求、保持市场竞争力的关键环节。对于工业企业来说&#xff0c;供应链的高效运作尤其重要。 然而&#xff0c;在实际操作…...

debian linux E: 无法定位软件包

原因是国内镜像站全寄了&#xff0c;你设国内源没用!&#xff0c;换成官方的然后懂&#xff1f; sudo vim /etc/apt/sources.list添加debian官方源 deb https://deb.debian.org/debian/ bullseye main contrib non-free deb-src https://deb.debian.org/debian/ bullseye mai…...

途昂行情,2.5T/26.8万起,2.0T/17.4万起

如果你是SUV车迷,那么大抵上,心里还有一辆终极的大型SUV作为梦想车,试问是不是这样?很多人喜欢宝马X5、也有人喜欢奔驰GLE,可即便现在优惠幅度较高,2.0T的丐版车型也要落地超60万元,可不是随便哪个家庭就能负担的起。但预算在30万内,还是可以选择一辆搭载大V6发动机的中…...

新款捷尼赛思G80内外升级,6月1日正式上市

最新消息,新款捷尼赛思G80将于6月1日开幕的大湾区车展正式上市。该车预售价已公布,豪华版与旗舰版车型分别定价为33.58万元和45.68万元。新款捷尼赛思G80在设计上进行了全面升级。其“勇者之徽”阔型格栅与“灵感之翼”LED大灯组相得益彰,不仅提供了更精密的光源控制,还展现…...

L3/L4产品准入和上路,9个联合体进入试点

6月4日,工业和信息化部、公安部、住房城乡建设部、交通运输部四部门联合宣布,按照《关于开展智能网联汽车准入和上路通行试点工作的通知》有关工作安排,经相关部门及专家初审和择优评审,已经确定了9个进入试点的联合体。2023年11月,上述四部门联合发布《关于开展智能网联汽…...

Unity3D 主城角色动画控制与消息触发详解

前言 在游戏开发中&#xff0c;角色动画控制和消息触发是非常重要的一部分&#xff0c;它可以让游戏更加生动和互动。本文将详细介绍如何在Unity3D中实现主城角色动画控制与消息触发。 对惹&#xff0c;这里有一个游戏开发交流小组&#xff0c;大家可以点击进来一起交流一下开…...

Paddle使用问题No module named ‘paddle.fluid’

这是Paddle版本的问题&#xff0c;从飞桨框架 2.5 版本开始&#xff0c;已经废弃了 paddle.fluid 。 ​解决方案&#xff1a;修改paddle版本 pip install paddlepaddle2.4.0...

电脑显示由于找不到msvcr110.dll 无法继续执行如何处理?最简单的修复msvcr110.dll文件方法

电脑显示由于找不到msvcr110.dll 无法继续执行&#xff1f;当你看到这种提示的时候&#xff0c;请不要紧张&#xff0c;这种是属于dll文件丢失&#xff0c;解决起来还是比较简单的&#xff0c;下面会详细的列明多种找不到msvcr110.dll的解决方法。 一.找不到msvcr110.dll是怎么…...