http协议及httpd安装组成

文章目录

  • 一、http协议
    • http协议通信过程
    • http相关技术
    • 网站访问量
    • HTTP工作机制
    • HTTP协议版本
    • HTTP请求访问的完整过程
    • HTTP报文头部
    • 响应报文
  • 二、httpd安装组成
    • apache介绍和特点
    • 工作模式( MPM multi-processing module )
    • Http相关文件
    • Http编译安装
    • httpd常见配置
    • 虚拟主机
    • 日志
    • 基于用户的访问控制


一、http协议

http协议通信过程

HTTP(HyperText Transfer Protocol,超文本传输协议,默认端口:80/tcp)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础设计HTTP最初的目的是为了提供一种远距离共享知识的方式,借助多文档进行关联实现超文本,连成相互参阅的WWW(world wide web,万维网)。在这里插入图片描述

http相关技术

1.web开发语言
html
Hyper Text Markup Language 超文本标记语言,编程语言,主要负责实现页面的结构
CSS
Cascading Style Sheet 层叠样式表, 定义了如何显示(装扮) HTML 元素,比如:字体大小和颜色属性等。样式通常保存在外部的 .css 文件中,用于存放一些HTML文件的公共属性,从而通过仅编辑一个简单的 CSS 文档,可以同时改变站点中所有页面的布局和外观。
js
javascript,实现网页的动画效果,但实属于静态资源。

2.MIME
MIME(Multipurpose Internet Mail Extensions)协议是一种互联网标准,用于在电子邮件和其他互联网应用中扩展消息格式。它为不同类型的数据在互联网上的传输和处理提供了一个标准化的框架。
一些常见的MIME类型包括:

  • text/plain: 纯文本
  • text/html: HTML文本
  • image/jpeg: JPEG图像
  • audio/mpeg:MP3音频
  • video/mp4: MP4视频
  • application/pdf: PDF文档
  • application/octet-stream: 二进制数据
    简单来说:如果文件的格式在上述类型中,我们可以直接打开,如果不在,电脑执行下载。

3.URI
URI: Uniform Resource Identifier 统一资源标识,分为URL 和 URN
URN:Uniform Resource Naming,统一资源命名
URL:Uniform Resorce Locator,统一资源定位符,用于描述某服务器某特定资源位置
两者区别:

  • URN如同一个人的名称,而URL代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物的方法。URN仅用于命名,而不指定地URL组成。

在这里插入图片描述

  • scheme:协议,访问服务器以获取资源时要使用哪种协议
  • user:用户,某些方案访问资源时需要的用户名
  • password:密码,用户对应的密码,中间用:分隔
  • post:主机,资源宿主服务器的主机名或IP地址
  • port:端口,资源宿主服务器正在监听的端口号,很多方案有默认端口号
  • path:路径,服务器资源的本地名,由一个/将其与前面的URL组件分隔
  • params:参数,指定输入的参数,参数为名/值对,多个参数,用;分隔
  • query:查询,传递参数给程序,如数据库,用?分隔,多个查询用&分隔
  • frag:片段,一小片或一部分资源的名字,此组件在客户端使用,用#分隔

网站访问量

  • IP(独立IP):即Internet Protocol,指独立IP数。
  • PV(访问量): 即Page View, 页面浏览量或点击量,用户每次刷新即被计算一次,PV反映的是浏览某网站的页面数,PV与来访者的数量成正比,PV并不是页面的来访者数量,而是网站被访问的页面数量。
  • UV(独立访客):即Unique Visitor,访问网站的一台电脑为一个访客。一天内相同的客户端只被计算一次。可以理解成访问某网站的电脑的数量。网站判断来访电脑的身份是通过cookies实现的。如果更换了IP后但不清除cookies,再访问相同网站,该网站的统计中UV数是不变的。

HTTP工作机制

一次http事务包括:

  • http请求:http request
  • http响应:http response

Web资源:web resource, 一个网页由多个资源(文件)构成,打开一个页面,通常会有多个资源展示出来,但是每个资源都要单独请求。因此,一个"Web 页面”通常并不是单个资源,而是一组资源的集合。则需要多个tcp链接。

资源类型:

  • 静态文件:无需服务端做出额外处理,服务器端和客户端的文件内容相同。
    常见文件后缀:.html, .txt, .jpg, .js, .css, .mp3, .avi

  • 动态文件:服务端执行程序,返回执行的结果,服务器端和客户端的文件内容不相同。
    常见文件后缀:.php, .jsp ,.asp

提高HTTP连接性能

  • 并行连接:通过多条TCP连接发起并发的HTTP请求
  • 持久连接:keep-alive,重用TCP连接,以消除连接和关闭的时延,以事务个数和时间来决定是否关闭连接
  • 管道化连接:通过共享TCP连接,发起并发的HTTP请求
  • 复用的连接:交替传送请求和响应报文

HTTP协议版本

1.http 0.9版本:原型版本,功能简陋,只能执行下载命令。
2.http 1.0版本:加入了多种方法,不仅仅能下载,还能上传,不支持长链接。
3.http1.1版本:引入了持久连接(persistent connection),即TCP连接默认不关闭,可以被多个请求复用,是运用最广泛的版本。

HTTP请求访问的完整过程

1.建立连接
2.接收请求
3.处理请求
4.访问资源
5.构建响应报文
6.发送响应报文
7.记录日志
在这里插入图片描述

1.建立连接:
客户端发送请求至服务端,服务端接受或拒绝连接请求。
2.接收请求:
接收客户端请求报文中对资源的一次请求的过程。

  • 单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应
  • 多进程I/O模型:并行启动多个进程,每个进程响应一个连接请求
  • 复用I/O结构:启动一个进程,同时响应N个连接请求
  • 复用的多进程I/O模型:启动M个进程,每个进程响应N个连接请求,同时接收M*N个请求
    在这里插入图片描述
    3.处理请求:
    服务器对请求报文进行解析,并获取请求的资源及请求方法等相关信息,根据方法,资源,首部和可选的主体部分对请求进行处理。
    常用请求的方法:GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS
    4.访问资源:
    服务器获取请求报文中请求的资源web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源。
    5.构建响应报文:
    一旦Web服务器识别除了资源,就执行请求方法中描述的动作,并返回响应报文。响应报文中 包含有响应状态码、响应首部,如果生成了响应主体的话,还包括响应主体

1)响应实体:如果事务处理产生了响应主体,就将内容放在响应报文中回送过去。响应报文中通常包括:

描述了响应主体MIME类型的Content-Type首部

描述了响应主体长度的Content-Length 实际报文的主体内容。

2)URL重定向:web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径。

3)MIME类型: Web服务器要负责确定响应主体的MIME类型。多种配置服务器的方法可将MIME类型与资源管理起来。
6.发送响应报文:
Web服务器通过连接发送数据时也会面临与接收数据一样的问题。服务器可能有很多条到各个客户端的连接,有些是空闲的,有些在向服务器发送数据,还有一些在向客户端回送响应数据。服务器要记录连接的状态,还要特别注意对持久连接的处理。对非持久连接而言,服务器应该在发送了整条报文之后,关闭自己这一端的连接。对持久连接来说,连接可能仍保持打开状态,在这种情况下,服务器要正确地计算Content-Length首部,不然客户端就无法知道响应什么时候结束。

7、记录日志:

最后,当事务结束时,Web服务器会在日志文件中添加一个条目,来描述已执行的事务。

HTTP报文头部

请求报文
在这里插入图片描述

方法:

  • GET: 获取资源 当前网络请求中,绝大部分使用的是 GET 方法
  • HEAD: 获取报文首部,主要用于确认 URL 的有效性以及资源更新的日期时间等
  • POST: 传输实体主体 (比如传输 用户名密码)
  • PUT: 上传文件(比如写博客)
  • PATCH: 对资源进行部分修改
  • DELETE:删除文件
  • OPTIONS:查询支持的方法(查看服务端可以支持哪些方法)
  • CONNECT:要求在与代理服务器通信时建立隧道(类似加密)
  • TRACE:追踪路径

URL:指明资源位置

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
  • scheme协议

    • http 超文本传输协议
    • https 安全的http协议
    • ftp 文件传输协议
  • user:帐号

  • password:密码

  • host:主机名 或 域名 或 ip地址

  • port: 服务器端口号

  • path:访问资源的路径,相当于组件路径

  • params:参数,但是这个不常用,指定一些参数,譬如指定传输方式

  • qurey:查询参数

  • frag:html资源片段,譬如html文档过大的时候,frag定位到html的一部分。

首部字段:
使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容,HTTP 首部字段是由首部字段名和字段值构成的,中间用冒号“:” 分隔 。

实体:
请求时附加的数据或响应时附加的数据,例如:登录网站时的用户名和密码,博客的上传文章,论坛上的发言等。

响应报文

在这里插入图片描述
状态码:
三位数字,标记请求处理过程中发生的情况。

http协议状态码分类
1xx:100-101 信息提示
2xx:200-206 成功连接
3xx:300-307 重定向
4xx:400-415 错误类信息,客户端错误
5xx:500-505 错误类信息,服务器端错误

http协议常用的状态码
200: 成功,请求数据通过响应报文的entity-body部分发送;
301: 请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现在所处的新位置;
302: 响应报文Location指明资源临时新位置
304: 客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;
307: 浏览器内部重定向
401: 需要输入账号和密码认证方能访问资源;
403: 请求被禁止;
404: 服务器无法找到客户端请求的资源;
500: 服务器内部错误;
502: 代理服务器从后端服务器收到了一条伪响应,如无法连接到网关;
503: 服务不可用,临时服务器维护或过载,服务器无法处理请求,比如:php服务停止,无法处理php程序
504: 网关超时

二、httpd安装组成

apache介绍和特点

apache功能:

  • 提供http协议服务
  • 可以虚拟多个主机
  • CGI:Common Gateway Interface,通用网关接口,支持动态程序
  • 反向代理: 代理的是服务端 正向代理: 代理的是客户端
  • 负载均衡
  • 路径别名
  • 丰富的用户认证机制:basic,digest
  • 支持第三方模块

apache特性:

  • 高度模块化:core + modules
  • DSO:Dynamic Shared Object 动态加载/卸载
  • MPM:multi-processing module 多路处理模块

工作模式( MPM multi-processing module )

**prefork:**多进程I/O模型,每个进程响应一个请求,CentOS 7 httpd默认模型一个主进程:生成和回收n个子进程,创建套接字,不响应请求多个子进程:工作 work进程,每个子进程处理一个请求;系统初始时,预先生成多个空闲进程,等待请求。
Prefork MPM预派生模式,有一个主控制进程,然后生成多个子进程,每个子进程有一个独立的线程响应用户请求,相对比较占用内存,但是比较稳定,可以设置最大和最小进程数,是最古老的一种模式,也是最稳定的模式,适用于访问量不是很大的场景。

优点:稳定,服务周到 。

缺点:慢,占用资源,不适用于高并发场景。
在这里插入图片描述
worker:复用的多进程I/O模型,多进程多线程。
worker MPM是一种多进程和多线程混合的模型,有一个控制进程,启动多个子进程,每个子进程里面包含固定的线程,使用线程程来处理请求,当线程不够使用的时候会再启动一个新的子进程,然后在进程里面再启动线程处理请求,由于其使用了线程处理请求,因此可以承受更高的并发。

优点:相比prefork 占用的内存较少,可以同时处理更多的请求

缺点:使用keep-alive的长连接方式,某个线程会一直被占据,即使没有传输数据,也需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用。(该问题在prefork模式下,同样会发生)
在这里插入图片描述
event:事件驱动模型
一个主进程:生成m个子进程,每个子进程负责生个n个线程,每个线程响应一个请求,并发响应请求:m*n,有专门的监控线程来管理这些keep-alive类型的线程,当有真实请求时,将请求传递给服务线程,执行完毕后,又允许释放。这样增强了高并发场景下的请求处理能力。

event MPM是Apache中最新的模式,每个进程响应多个请求,在现在版本里的已经是稳定可用的模式。它和worker模式很像,最大的区别在于,它解决了keep-alive场景下,长期被占用的线程的资源浪费问题(某些线程因为被keep-alive,空挂在哪里等待,中间几乎没有请求过来,甚至等到超时)。event MPM中,会有一个专门的线程来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力event只在有数据发送的时候才开始建立连接,连接请求才会触发工作线程,即使用了TCP的一个选项,叫做延迟接受连接TCP_DEFER_ACCEPT,加了这个选项后,若客户端只进行TCP连接,不发送请求,则不会触发Accept操作,也就不会触发工作线程去干活,进行了简单的防攻击(TCP连接)。

优点:单线程响应多请求,占据更少的内存,高并发下表现更优秀,会有一个专门的线程来管理keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。

缺点:没有线程安全控制。
在这里插入图片描述

Http相关文件

建议用yum安装
httpd相关文件

配置文件:

  • /etc/httpd/conf/httpd.conf 主配置文件
  • /etc/httpd/conf.d/*.conf 子配置文件
  • /etc/httpd/conf.d/conf.modules.d/ 模块加载的配置文件
    检查配置语法:http-t

服务单元文件:

  • /usr/lib/systemd/system/httpd.service
  • 配置文件:/etc/sysconfig/httpd

Http编译安装

APR概念说明
APR:Apache portable Run-time libraries,Apache可移植运行库,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。在早期的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数随着Apache的进一步开发,Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目。这样,APR的开发就从Apache中独立出来,Apache仅仅是使用 APR而已。
在这里插入图片描述
编译安装过程
安装编译所需的软件即调试依赖环境。

在这里插入图片描述
准备httpd软件包。
在这里插入图片描述
将apr导入到http包下面。
在这里插入图片描述
编译代码

cd  httpd-2.4.46/
[root@centos7 ~]./configure --prefix=/apps/httpd \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork
make  &&  make install

设置service服务,使得可以用systemd管理httpd服务。
在这里插入图片描述
至此编译安装完成。

httpd常见配置

指定服务器名
指定服务器名,一般要求服务器使用域名登录,一般不用IP地址,故需要给他指定域名。
在这里插入图片描述
在第95行设置你的域名。
在这里插入图片描述
主配置文件能读取子配置文件
情况模拟:一台服务器上可能会部署多个软件,全部写在主配置文件中,不仅会增加维护难度,如果一个配置出现错误,所有软件都不能提供服务,故出现了子配置文件。但如何让主配置文件知道子配置文件呢?
主配置文件中会有如下配置:
在这里插入图片描述
同样可以换成Include;Include和IncludeOptional功能相同,都可以包括其它配置文件,但是当无匹配文件时,include会报错,IncludeOptional会忽略错误。

监听地址
在这里插入图片描述
注意:

  • 省略IP表示所有IP均可访问
  • listen指令至少一个,可以重复出现多次。

隐藏服务器版本信息

在这里插入图片描述
语法
ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full

ServerTokens Prod[uctOnly] :Server: Apache
ServerTokens Major: Server: Apache/2
ServerTokens Minor: Server: Apache/2.0
ServerTokens Min[imal]: Server: Apache/2.0.41
ServerTokens OS: Server: Apache/2.0.41 (Unix)
ServerTokens Full (or not specified): Server: Apache/2.0.41 (Unix) 

在配置文件中写下上述语句即可形成该效果。

在这里插入图片描述
持久连接
Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成,默认开启持久连接。
默认开启持久连接,持久连接断开条件:

  • 时间限制:以秒为单位, 默认5s,httpd-2.4 支持毫秒级。
  • 请求数量: 请求数达到指定值,也会断开。
    缺点:对并发访问量大的服务器,持久连接会使有些请求得不到响应。
    建议:使用较短的持久连接时间
KeepAlive On|Off
KeepAliveTimeout 15      #连接持续15s,可以以ms为单位,默认值为5s
MaxKeepAliveRequests 500 #持久连接最大接收的请求数,默认值100

定义Main server的文档页面路径

DocumentRoot   "/path”
<directory /path>
 Require all granted
</directory>

说明:

  • DocumentRoot指向的路径为URL路径的起始位置
  • /path 必须显式授权后才可以访问

示例:

DocumentRoot "/data/html"
<directory /data/html>
 Require all granted
</directory>

URL和磁盘本地路径的映射关系
http://HOST:PORT/test/index.html --> /data/html/test/index.html

别名
格式

alias /URL/  /PATH/

在这里插入图片描述
在这里插入图片描述

定义站点默认主页面文件

当我们访问服务器时 省略了最后的文件, 默认自动会加上 index.html 。这个是可以修改的,如果找不到在这一行的文件,会404报错。
在这里插入图片描述

虚拟主机

httpd 支持在一台物理主机上实现多个网站,即多虚拟主机

网站的唯一标识:

  • IP相同,但端口不同
  • IP不同,但端口均为默认端口
  • FQDN不同, IP和端口都相同

多虚拟主机有三种实现方案:

  • 基于ip:为每个虚拟主机准备至少一个ip地址
  • 基于port:为每个虚拟主机使用至少一个独立的port
  • 基于FQDN:为每个虚拟主机使用至少一个FQDN,请求报文中首部

模版文件在 该路径下/usr/share/doc/httpd-2.4.6/httpd-vhosts.conf
在这里插入图片描述

基于端口号
在这里插入图片描述
在这里插入图片描述
基于IP地址
在这里插入图片描述
在这里插入图片描述

基于域名
在这里插入图片描述
在这里插入图片描述

基于客户端IP地址实现访问控制
基于客户端 IP 地址实现访问控制

针对各种资源,可以基于以下两种方式的访问控制:

  • 客户端来源地址
  • 用户账号

基于客户端的IP地址的访问控制:

  • 无明确授权的目录,默认拒绝

  • 允许所有主机访问:Require all granted

  • 拒绝所有主机访问:Require all denied

  • 控制特定的IP访问:

    • Require ip IPADDR:授权指定来源的IP访问
    • Require not ip IPADDR:拒绝特定的IP访问
  • 控制特定的主机访问:

    • Require host HOSTNAME:授权特定主机访问
    • Require not host HOSTNAME:拒绝
    • HOSTNAME:
      • FQDN:特定主机
      • domin.tld:指定域名下的所有主机

白名单(多个语句只要有一个成功则成功)

<Directory "/data">
  <RequireAny>
  Require all denied
  require ip 192.168.232.20
  </RequireAny>
</Directory>

黑名单,不能有失败,至少有一个成功匹配才成功,失败优先。

<Directory "/data">
  <RequireAll>
  Require all granted
  require not ip 192.168.91.101
  </RequireAll>
</Directory>

日志

httpd有两种日志格式

  • 访问日志
  • 错误日志

如果访问不成功,先去看日志中的状态码,快速定位错误。

在这里插入图片描述
这是定义的日志格式的名字。

%h   #客户端IP地址
%l   #远程用户,启用mod_ident才有效,通常为减号"-%u   #验证(basic,digest)远程用户,非登录访问时,为一个减号"-%t   #服务器收到请求时的时间
%r   #First line of request,即表示请求报文的首行;记录了此次请求的"方法”,"URL”以及协议版本
%>s  #响应状态码
%b   #响应报文的大小,单位是字节;不包括响应报文http首部
%{Referer}i     #请求报文中首部"referer”的值;即从哪个页面中的超链接跳转至当前页面的
%{User-Agent}i  #请求报文中首部"User-Agent”的值;即发出请求的应用程序
%{VARNAME}i     #请求中发送到服务器的 VARNAME 头部行的内容

基于用户的访问控制

认证质询:WWW-Authenticate,响应码为401,拒绝客户端请求,并说明要求客户端需要提供账号和密码。

认证:Authorization,客户端用户填入账号和密码后再次发送请求报文;认证通过时,则服务器发送响应的资源。

使用htpasswd模块

-c 自动创建文件,仅应该在文件不存在时使用
-b 非交互方式创建用户,命令后面可以接密码
-p 明文密码
-d CRYPT格式加密,默认
-m md5格式加密
-s sha格式加密
-D 删除指定用户

操作
在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

文件系统小册(FusePosixK8s csi)【1 Fuse】

文件系统小册&#xff08;Fuse&Posix&K8s csi&#xff09;【1 Fuse&#xff1a;用户空间的文件系统】 Fuse(filesystem in userspace),是一个用户空间的文件系统。通过fuse内核模块的支持&#xff0c;开发者只需要根据fuse提供的接口实现具体的文件操作就可以实现一个文…

Unity中的MVC框架

基本概念 MVC全名是Model View Controller 是模型(model)-视图(view)-控制器(controller)的缩写 是一种软件设计规范&#xff0c;用一种业务逻辑、数据、界面显示 分离的方法组织代码 将业务逻辑聚集到一个部件里面&#xff0c;在改进和个性化定制界面及用户交互的同时&#x…

tinycudann安装

在安装完torch等 直接运行下面的指令会出现错误 pip install githttps://github.com/NVlabs/tiny-cuda-nn/#subdirectorybindings/torch大部分错误是下面的 大概看了一下都是因为虚拟环境里面的include文件下缺少文件&#xff0c;将之前的一些.h文件全部复制过来在执行上面的…

TransmittableThreadLocal原理

1、原理 TransmittableThreadLocal&#xff08;简称TTL&#xff09;是阿里巴巴开源的一个Java库&#xff0c;用于解决线程池中线程本地变量传递的问题。其底层原理主要是基于Java的ThreadLocal机制并对其进行扩展&#xff0c;以支持在父子线程间以及线程池中任务切换时&#x…

Java实现顺序表

Java顺序表 前言一、线性表介绍常见线性表总结图解 二、顺序表概念顺序表的分类顺序表的实现throw具体代码 三、顺序表会出现的问题 前言 推荐一个网站给想要了解或者学习人工智能知识的读者&#xff0c;这个网站里内容讲解通俗易懂且风趣幽默&#xff0c;对我帮助很大。我想与…

Adobe AntiCC 简化版 安装教程

Adobe AntiCC 简化版 安装教程 原文地址&#xff1a;https://blog.csdn.net/weixin_48311847/article/details/139277743

TensorFlow Playground神经网络演示工具使用方法详解

在现代机器学习领域,神经网络无疑是一个重要的研究方向。然而,对于许多初学者来说,神经网络的概念和实际操作可能显得相当复杂。幸运的是,TensorFlow Playground 提供了一个交互式的在线工具,使得我们可以直观地理解和实验神经网络的基本原理。在这篇博客中,我们将详细介…

解读vue3源码-2

提示&#xff1a;看到我 请让滚去学习 vue3编译模版的提升 文章目录 vue3编译模版的提升静态节点提升补丁标志和block的使用附录&#xff1a; template explorer可以将我们的源模版转化成渲染函数代码&#xff0c;vue2中就有&#xff0c;而Vue3 template explorer 功能更加丰富…

开发nfc读卡器应用出现报错Unhandled Exception: SCARD_E_NO_SERVICE

使用flutter开发ACR122U的nfc读卡器的时候&#xff0c;报错&#xff1a; [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Exception: Error while establing context. Reason: SCARD_E_NO_SERVICE #0 PCSCBinding._checkAndThrow (package:fl…

Vue 框选区域放大(纯JavaScript实现)

需求&#xff1a;长按鼠标左键框选区域&#xff0c;松开后放大该区域&#xff0c;继续框选继续放大&#xff0c;反向框选恢复原始状态 实现思路&#xff1a;根据鼠标的落点&#xff0c;放大要显示的内容&#xff08;内层盒子&#xff09;&#xff0c;然后利用水平偏移和垂直偏…

ABB码垛机器人IRB260通讯板维修

ABB码垛机器人在现代制造业中发挥着重要作用&#xff0c;而机器人通讯板维修对于确保机器人的正常运行至关重要。 通讯板是ABB码垛机器人与控制系统之间进行数据传输的桥梁。它负责接收控制系统的指令&#xff0c;并将机器人的运行数据反馈给控制系统。如果通讯板出现故障&…

ESP32开发板定义硬串口

ESP32 的默认串口 UART序号Rx PINTx PIN是否可用UART0GPIO3GPIO1是UART1GPIO9GPIO10是&#xff0c; 但与SPI flash相关联需要重新定义UART2GPIO16GPIO17是 下面我们定义2、4GPIO引脚为串口1&#xff1a; #include <HardwareSerial.h> HardwareSerial S1(1); 初始化 …

C语言 | Leetcode C语言题解之第120题三角形最小路径和

题目&#xff1a; 题解&#xff1a; int minimumTotal(int** triangle, int triangleSize, int* triangleColSize) {int f[triangleSize];memset(f, 0, sizeof(f));f[0] triangle[0][0];for (int i 1; i < triangleSize; i) {f[i] f[i - 1] triangle[i][i];for (int j …

【VTKExamples::PolyData】第五十四期 SelectVisiblePoints

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例SelectVisiblePoints,并解析接口vtkSelectVisiblePoints,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动…

[Linux系统编程]文件IO

一.系统调用 什么是系统调用? 只有系统调用(系统函数)才能进入内核空间&#xff0c;库函数也是调用系统函数&#xff0c;才得以访问底层。 系统调用由操作系统实现并提供给外部应用程序的编程接口。是应用程序同系统之间数据交互的桥梁。 换句话说&#xff0c;系统调用就是操…

yolov5-ros模型结合zed2相机部署在 Ubuntu系统

前言 本篇文章主要讲解yolov5-ros模型结合zed2相机进行实时检测&#xff0c;经改进实现了红绿灯检测&#xff0c;并输出检测类别与置信度&#xff01; 目录 一、环境配置二、zed2驱动安装三、yolov5-ros功能包配置四、运行官方权重文件四、运行自己权重文件 一、环境配置 1、…

14-alert\confirm\prompt\自定义弹窗

一、认识alert\confirm\prompt 下图依次是alert、confirm、prompt&#xff0c;先认清楚长什么样子&#xff0c;以后遇到了就知道如何操作了。 二、alert操作 先用driver.switch_to.alert方法切换到alert弹出框上&#xff1b;可以用text方法获取弹出的文本信息&#xff1b;acce…

【介绍下运维,什么是运维?】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

C++ | Leetcode C++题解之第120题三角形最小路径和

题目&#xff1a; 题解&#xff1a; class Solution { public:int minimumTotal(vector<vector<int>>& triangle) {int n triangle.size();vector<int> f(n);f[0] triangle[0][0];for (int i 1; i < n; i) {f[i] f[i - 1] triangle[i][i];for (…

RK3588+FPGA+AI高性能边缘计算盒子,应用于视频分析、图像视觉等

搭载RK3588&#xff08;四核 A76四核 A55&#xff09;&#xff0c;CPU主频高达 2.4GHz &#xff0c;提供1MB L2 Cache 和 3MB L3 &#xff0c;Cache提供更强的 CPU运算能力&#xff0c;具备6T AI算力&#xff0c;可扩展至38T算力。 产品规格 系统主控CPURK3588&#xff0c;四核…