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

【图解计算机网络】从浏览器地址输入到网页显示的整个过程

从浏览器地址输入到网页显示的整个过程

  • 整体流程
  • DHCP
  • http协议报文组装
  • DNS
  • TCP协议封装与TCP三次握手
  • IP协议封装与路由表
  • MAC地址与ARP协议
  • 交换机
  • 路由器

整体流程

从往浏览器输入一个地址到网页的显示,要经过很长的一个流程,中间涉及到计算机网络的许多知识。

在这里插入图片描述

首先我们的计算机如果是刚接入网络,并且不是手动设置的方式设置IP地址的话,则需要通过DHCP自动获取一个IP地址。

然后我们再浏览器输入一个域名地址,浏览器就会组装http报文。

组装好http报文后,由于我们输入的是域名地址,需要解析成IP地址,这就需要用到DNS域名解析协议进行域名解析。

然后就要通过TCP协议的三次握手建立连接,建立TCP连接之后,就可以通过这个TCP连接发送数据。

然后不管是TCP三次握手的数据包,还是真正发送数据的数据包,都要通过内网的路由器把它发到外网,这就需要把我们数据包发送到路由器。这时候就需要用到IP地址,通过DHCP我们的计算机已经拥有了自己的IP地址,然后通过DNS域名解析协议也获取到了目标服务器的IP地址,这时候通过目标服务器的IP地址在本机的路由表中查询匹配,就可以把我们的数据包发送到路由器。

路由表中匹配到路由器后,还需要通过ARP协议获取路由器的MAC地址,然后经过交换机转发数据包到路由器。

交换机接收到数据包之后,就会根据下一跳的MAC地址,转发数据包到路由器。

路由器接收到数据包后,会解开外层MAC层的包头,拿到网络层的包头的目标IP地址,在自己的路由表中进行匹配,匹配成功后经过指定的接口把数据包发到外网。

在这里插入图片描述

数据包到达了目标服务器所在子网的路由器时,也是经过相同的规则,通过目标IP地址在路由表中进行匹配,然后经过交换机转发到目标服务器,目标服务器接收到数据包之后处理请求,返回响应数据包,也是经过相同的流程到达我们的计算机。

DHCP

一台计算机在刚接入内网时,我们可以给他手动设置一个IP地址,但是如果内网的计算机比较多,都通过手动设置IP地址的方式分配IP地址的话,就会非常的麻烦。于是我么可以通过DHCP方式动态分配IP地址。

使用DHCP动态分配IP,通常需要一个DHCP路由器。我们的计算机刚接入内网时,还不知道DHCP服务器的ip地址,我们的计算机自己本身也没有ip地址,于是就通过广播的方式,广播一个UDP数据包。该UDP数据包的目标ip地址为255.255.255.255,目标端口是67,源IP地址是0.0.0.0,源端口是68。

在这里插入图片描述

DHCP接收到UDP数据包,会分配IP一个地址,并通过UDP数据包广播回去。

在这里插入图片描述

我们的计算机接收到DHCP服务器返回的UDP数据包之后,如果有多个DHCP服务器给他分配IP,它会从中选择一个,然后广播一个UDP确认数据包。

在这里插入图片描述

最后DHCP服务器广播一个返回的ACK报文,这样我们的计算机就获取到了自动分配的IP地址了。

在这里插入图片描述

但是有时候DHCP服务器和我们的计算机不在同一个局域网,此时就要通过DHCP中继代理,把DHCP请求代理到DHCP服务器。DHCP中继代理其实就是一个路由器,会以单播的方式把DHCP请求数据包发送到DHCP服务器所在局域网的另一个DHCP中继代理路由器。

在这里插入图片描述

http协议报文组装

然后我们在浏览器输入一个域名地址,比如我们输入的就是www.baidu.com,此时浏览就就会组装http协议报文,把它发送到目标服务器,目标服务器再返回一个包含www.baidu.com网页信息的http响应报文。

http请求报文格式:
在这里插入图片描述

http响应报文:
在这里插入图片描述

DNS

组装好http请求报文以后,由于我们输入的是域名地址,现在要把域名地址解析成IP地址。此时就通过DNS域名解析协议进行域名解析。

浏览器首先查看自己是否有该域名对应的缓存信息,如果有,则直接从缓存中获取该域名的IP地址。

浏览器缓存不命中,则查询hosts文件是否配置了该域名与IP地址的映射关系,如果有,则会返回hosts文件中该域名对应的IP地址。

如果hosts文件中也不命中,则要访问DNS域名服务器查询该域名对应的IP地址。

在这里插入图片描述

请求DNS域名服务器时,首先会请求的是本地DNS域名服务器,本地DNS域名服务器也是先从缓存中查询,如果缓存命中,则返回缓存中的IP地址。

如果本地域名服务器缓存不命中,则请求根域名服务器,然后根域名服务器会返回顶级域名服务器(.com)的域名服务器地址。

然后本地域名服务器再请求顶级域名服务器,顶级域名服务器返回baidu.com的权威域名服务器。

本地域名服务器请求baidu.com权威域名服务器,baidu.com权威域名服务器返回www.baidu.com域名对应的服务器IP地址。

然后本地域名服务器会把域名与IP地址的映射关系缓存起来。

在这里插入图片描述

TCP协议封装与TCP三次握手

查找到目标服务器的IP地址之后,就要交给传输层进行网络传输了,浏览器请求页面一般是走TCP协议。

TCP协议会把http报文拆分成多个数据包,以流的形式发送。每个数据包会封装一个TCP协议头。TCP协议头包括源端口号、目标端口号、序列号(seq num)、确认序列号(ack num)、以及六个状态位(URG、ACK、PSH、RST、SYN、FIN)等重要信息,其他的信息不太重要就不需要去记忆了。

在这里插入图片描述

然后会经历与服务器的三次握手,建立一个TCP连接,才能基于这个TCP连接发送数据。

在这里插入图片描述

  1. 首先是客户端(也就是我们的浏览器)发送一个SYN标志位为1的请求数据包,表示请求建立连接,此时客户端进入SYN-SENT状态;
  2. 然后服务器接收到之后会返回一个SYN和ACK标志位为1的数据包,表示响应客户端的连接请求,并请求客户端建立连接,此时服务端进入SYN-RCVD状态;
  3. 最后客户但返回一个ACK标志位为1的数据包,于是双方进入ESTABLISHED状态,表示连接建立成功。

IP协议封装与路由表

然后就是网络层协议栈的处理,使用的是IP协议,会在TCP协议包头的外面套一层IP协议包头,IP协议包头包括源IP地址和目标IP地址。

在这里插入图片描述

然后查询路由表,会匹配到掩码为0.0.0.0这一条目,找到路由器网关的地址。

在这里插入图片描述

MAC地址与ARP协议

获取到了路由器的IP地址,还要取得它的MAC地址,才能把它发出去。

在外网使用IP地址进行网间路由,而在局域网,则使用MAC地址就可以。并且IP地址是可以更改的,而MAC地址是设备出厂时设置好的并且不可更改,所以比起IP地址来说,MAC地址更能唯一表示一台服务器。

MAC 地址长 6 个字节 48 位,使用十六进制数表示,比如:30-C9-AB-9F-7E-70。
在这里插入图片描述

要获取MAC地址,需要使用ARP协议。客户端广播ARP请求,当与该IP地址匹配的机器收到该ARP请求时,会以单播的方式发送ARP响应,响应中携带自己的MAC地址。

在这里插入图片描述

获取到MAC地址后,会存储到本地的ARP缓存中。

在这里插入图片描述

然后就会在IP协议包头的外面再包一层MAC头部,里面包含自己的MAC地址和下一跳(路由器)的MAC地址。

在这里插入图片描述

然后就可以把该数据包发给交换机,由交换机转发到路由器。

交换机

交换机接收到一个数据包时,会查看下一跳MAC地址。然后在自己本地的MAC地址表中进行匹配,从匹配到的MAC地址的特定交换机端口发送出去,就可以到达下一跳地址对应的节点。

在这里插入图片描述

如果下一跳MAC地址在交换机的MAC地址中不匹配,则会通过广播的方式把数据包从除源端口以外的所有交换机端口发送出去。

在这里插入图片描述

路由器

经过交换机的转发,我们的数据包就到了我们局域网的路由器。路由器发现下一跳MAC地址与自己的MAC地址匹配,会接收该数据包。

然后路由器会拆掉外层的MAC头部,得到里面的目标IP地址,然后在路由器本地的路由表进行匹配,然后得到匹配到的下一跳IP地址,把数据包发到外网。

发送数据包到外网前,要给数据包包装一个MAC头部。原来的MAC头部已被路由器拆掉,现在要以路由器自己的MAC地址为当前节点MAC地址,路由器的路由表匹配到的下一跳的节点对应的MAC地址为下一跳MAC地址,包装一个MAC头部。如果路由器不知道该IP地址对应的MAC地址,也是通过ARP协议获取。

就这样,数据包在互联网上经过多个路由器节点的网间路由,最终到达目标服务器所在的局域网。

在这里插入图片描述

相关文章:

【图解计算机网络】从浏览器地址输入到网页显示的整个过程

从浏览器地址输入到网页显示的整个过程 整体流程DHCPhttp协议报文组装DNSTCP协议封装与TCP三次握手IP协议封装与路由表MAC地址与ARP协议交换机路由器 整体流程 从往浏览器输入一个地址到网页的显示,要经过很长的一个流程,中间涉及到计算机网络的许多知识…...

liqo学习及安装,k8s,kubernetes多集群互联

先按照官方的教程在虚拟机安装学习 在开始以下教程之前,您应该确保您的系统上安装了以下软件: Docker,容器运行时。Kubectl,Kubernetes 的命令行工具。 curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.…...

五种主流数据库:集合运算

关系型数据库中的表与集合理论中的集合类似,表是由行(记录)组成的集合。因此,SQL 支持基于数据行的各种集合运算,包括并集运算(Union)、交集运算(Intersect)和差集运算&a…...

java-springmvc 01

springmvc也是在spring framework中的,不是一个单独的项目 MVC就是和Tomcat有关。 01.MVC启动的第一步,启动Tomcat(这个和springboot的run方法启动Tomcat有关) 02.SpringMVC中,最为核心的就是DispatcherServlet&…...

SecuPress Pro 专业级WordPress网站安全防护插件优化版

下载地址:SecuPress Pro 专业版.zip SecuPress Pro:专业的WordPress安全解决方案 如果您没有时间进行每周扫描,SecuPress Pro将是您的理想选择。SecuPress Pro提供了所有SecuPress Free的功能,同时还增加了一些高级选项&#xff…...

linux 查看nginx日志

在 Linux 系统中,查看 Nginx 日志通常涉及以下几个步骤: 确定日志文件位置:Nginx 的日志文件通常位于 /etc/nginx/logs 或 /var/log/nginx。具体位置取决于您在安装 Nginx 时的配置。 查看访问日志:Nginx 的访问日志默认命名为 a…...

iOS - 多线程-GCD-队列组

文章目录 iOS - 多线程-GCD-队列组1. 队列组1.1 基本使用步骤 iOS - 多线程-GCD-队列组 开发过程中,有时候想实现这样的效果 多个任务并发执行所有任务执行完成后,进行下一步处理(比如回到主线程刷新UI) 1. 队列组 可以使用GC…...

1052. 【NOIP2016备赛】方阵操作(square)

1052. 【NOIP2016备赛】方阵操作(square) (Input: square.in, Output: square.out) 时间限制: 1 s 空间限制: 256 MB 题目描述 小 Z 给你一个 n n 的方阵,要求你完成 Q 次操作: 1. 1 i j k,将 ai,j 修改为 k。 2. 2 i j,交…...

Python打怪升级(4)

在计算机领域常常有说"合法"和"非法"指的是:是否合理,是否有效,并不是指触犯了法律。 random.randint(begin,end) 详细讲解一下这个random是指模板,也就是别人写好的代码直接来用,在Python当中,…...

2024年【危险化学品生产单位安全生产管理人员】考试题库及危险化学品生产单位安全生产管理人员考试报名

题库来源:安全生产模拟考试一点通公众号小程序 危险化学品生产单位安全生产管理人员考试题库参考答案及危险化学品生产单位安全生产管理人员考试试题解析是安全生产模拟考试一点通题库老师及危险化学品生产单位安全生产管理人员操作证已考过的学员汇总,…...

动态IP与静态IP的区别,你选对了吗?

在互联网世界中,IP地址是每台设备在网络上的唯一标识。这些地址可以是动态的,也可以是静态的。对于非专业人士来说,理解这两者之间的区别可能会有些困难。本文旨在深入探讨动态IP和静态IP的主要差异,帮助读者根据自己的需求做出明…...

jasypt组件死锁bug案例分享

事故描述 1、上午9.55发布了一个Apollo动态配置参数; 2、片刻后,服务器接口开始出现大量的超时告警,似乎是某资源被耗尽不足分配; 3、正值业务请求高峰的上午十点(平台上午10点会有一些活动会拉一波用户流量&#x…...

golang上传文件到ftp服务器

之前有个业务需要把文件上传到ftp服务器,写了一个上传ftp的功能 package ftpimport "context"type Client interface {// UploadFile 上传文件UploadFile(ctx context.Context, opt *UploadFileOpt) error }type UploadFileOpt struct {Data […...

数据治理和数据管理 傻傻分不清楚?

互联网时代,数据,这一无形资产,已成为现代企业的核心竞争力。如何高效地管理和利用数据,成为企业关注的焦点。在这个过程中,数据治理(Data Governance)和数据管理(Data Management&a…...

linux磁盘原理

在linux系统中,对磁盘进行管理与windows系统类似,都要先分区,格式化,创建文件系统,挂载目录,数据写入...

react 使用WEB3.0控件开发包 V3.0接入海康威视摄像头

1、下载官方安装包: 2、安装官方插件 3、引入文件 在public/index 中引入监控依赖,这三个文件可以在下载的官方demo中找到 4、react 中使用 useEffect(() > { const ipInfo :[192.168.xxxx];//初始化摄像头const WebVideoCtrl window.WebVideoCtrl…...

数据可视化———Tableau

基本认识: 维度:定性—字符串文本,日期和日期时间等等 度量:定量—连续值,一般属于数值 数据类型: 数值 日期/日期时间 字符串 布尔值 地理值 运算符 算数运算符:加减乘除,%取余,…...

【黑马头条】-day12项目部署和发布-jenkins

文章目录 1 持续集成2 软件开发模式2.1 瀑布模式2.2 敏捷开发2.2.1 迭代开发2.2.2 增量开发 3 Jenkins3.1 Jenkins安装3.1.1 导入镜像3.1.2 配置3.1.3 初始化设置 3.2 插件安装3.3 服务器环境准备3.3.1 Docker安装配置3.3.2 Git安装配置3.3.3 Maven安装配置 3.4 Jenkins工具配置…...

学习操作系统路线

操作系统 简介 本课程为计算机专业学生量身定制,补足计算机操作系统相关知识,查漏补缺,也可用于考研复习。内容包括:操作统概述、进程管理、内存管理、文件管理、输入/输出管理等章节。内容力求精炼、重点突出、条理清晰、深入浅…...

uniapp微信小程序(商城项目)

最近,闲来无事,打算学一下uniapp小程序 于是在跟着某站上学着做了一个小程序,主要是为了学uniapp和vue。某站黑马优购 完成的功能主要有:首页、搜索、分类和购物车。 有人问了为什么没有登录、和添加订单呢?问的很好…...

Linux的自动化脚本:使用crul命令下载文件,实现断点续传

目录 一、要求 二、解决思路 (一)curl工具可以进行文件传输,可以实现手动断点续传 1、使用 --range 选项: 2. 使用 --continue-at 选项: (二)编写shell脚本调用curl命令,实现自…...

Golang | Leetcode Golang题解之第46题全排列

题目: 题解: func permute(nums []int) [][]int {var (n len(nums)dfs func(vals []int) // 已选择数 排列为vals 后续回溯继续选择 直至选完ans [][]int)dfs func(vals []int) {//边界if len(vals) n {ans append(ans, vals)}//转移 枚举选哪个f…...

MySQL数据表记录删操作

删除操作 作用删除表里的记录行(都是整行整行的删除的) 1.单表的删除 语法: delete from 表名 where 要删除的记录筛选条件; 案例:删除员工编号大于203的员工信息 delete from employees where employee_id>203; 2.多表…...

Python浅谈清朝秋海棠叶版图

1、清朝疆域概述: 清朝是我国最后一个封建王朝,其始于1616年建州女真部努尔哈赤建立后金,此后统一女真各部、东北地区。后又降服漠南蒙古,1644年入关打败农民起义军、灭南明,削三藩,复台湾。后又收外蒙&am…...

Linux之线程管理

目录 第1关:创建线程 任务描述 相关知识 使用pthread_create函数创建线程 编程要求 答案: 第2关:线程挂起 任务描述 相关知识 使用pthread_join挂起线程 编程要求 答案: 第3关:线程终止 任务描述 相关知识 使用pthread…...

.net反射(Reflection)

文章目录 一.概念:二.反射的作用:三.代码案例:四.运行结果: 一.概念: .NET 反射(Reflection)是指在运行时动态地检查、访问和修改程序集中的类型、成员和对象的能力。通过反射,你可…...

白平衡简介

文章目录 白平衡的概念白平衡的调节常见的白平衡模式 白平衡的概念 白平衡是指摄影、摄像和显示技术中的一项重要概念,用于调节图像中的白色或中性灰色的色彩,使其看起来在不同光源条件下都是准确的白色或灰色。白平衡的主要目的是确保图像的色彩准确性…...

centos7.9下安装SVN服务

一、安装subversion yum install -y subversion #安装svn mkdir -p /data/svnrepos/java #自定义svn仓库位置/data/svnrepos,自定义一个项目叫svn(这里新建目录) svnadmin create /data/svnrepos/java #创建一…...

iStat Menus for Mac:强大的系统监控工具

iStat Menus for Mac是一款功能强大的系统监控工具,专为Mac用户设计,旨在帮助用户全面了解电脑的运行状态,提高电脑的性能和稳定性。 iStat Menus for Mac v6.73 (1239)中文版下载 该软件可以实时监测CPU使用率、内存占用、网络速度、硬盘活动…...

NumPy 1.26 中文官方指南(四)

附加文件 术语表 原文:numpy.org/doc/1.26/glossary.html (n,) 括号中跟着逗号的数字表示一个具有一个元素的元组。尾随逗号将一个元素元组与括号n区分开。 -1 在维度入口中,指示 NumPy 选择长度,以保持数组元素总数不变。 >>> n…...

Python flask

Flask 是一个用 Python 编写的轻量级 Web 应用框架。它被设计为易于使用和扩展,使其成为构建简单网站到复杂的、动态的 web 应用程序的理想选择。以下是 Flask 的一些基本组件和概念: 主要组件 Flask:框架本身,提供基本的功能来处…...

2-token生成

Token是密码学中的一个概念,可以用作身份验证凭证。在计算机领域中,token可以是一个字符串,用于标识用户的身份和权限。当用户进行身份验证时,他们通常会收到一个token,以便在将来的请求中用作凭证。 在互联网应用程序…...

Flutter 上架如何解决 ITMS-91053 问题

最近,我的 Flutter App 发布到 TestFlight 后,就会收到一封邮件:The uploaded build for YOUR APP has one or more issues. 上面的邮件主要是说,我的 App 缺少了调用 API 的声明,以前从来没看到过,上网一查…...

PgSQL的登录相关(Ubuntu22.04)

一 将用户设为密码登录方式 1 修改用户的密码 sudo -u postgres psql -c "ALTER USER yuhui WITH PASSWORD xinmima;" 2 修改配置,指定用户yuhui使用密码登录 sudo vi /etc/postgresql/16/main/pg_hba.conf local all postgres …...

ThingsBoard处理设备上报的属性并转换为可读属性

一、前言 二、案例 1、AI生成JSON数据体 2、将json数据体直接通过遥测topic发送查看效果 3、可查看目前整个数据都在一起 ​编辑 4、配置附规则链路 5、对msg的消息值,进行数据的转换,并从新进行赋值。 6、规则链路关联关系 7、再次通过MQTT发送遥…...

03-JAVA设计模式

设计模式GOF23 GOF23是指由设计模式经典名著《Design Patterns: Elements of Reusable Object-Oriented Software》(中译本名为《设计模式——可复用面向对象软件的基础》)的四位作者Erich Gamma、Richard Helm、Ralph Johnson、以及John Vlissides提出…...

Aws Nat Gateway

要点 NAT网关要能访问外网,所以需要部署在有互联网网关的Public子网中。 关键: NAT网关创建是选择子网,一定要选择公有子网(有互联网网关子网) 特别注意: 新建nat网关的时候,选择的子网一定…...

SLICEM是如何将查找表配置为分布式RAM/移位寄存器的

1.首先说SliceM和SliceL如何配置为ROM的 一个SLICE包含4个六输入查找表,因此每个查找表就能存储64bit的数据,要实现128bit的ROM,只需要通过两个LUT就可实现,具体如下表: 2.如何配置成为分布式RAM SLICEM中的LUT如下图&#xff…...

Echarts-知识图谱

Echarts-知识图谱 demo地址 打开CodePen 效果 思路 1. 生成根节点 2. 根据子节点距离与根节点的角度关系,生成子节点坐标,进而生成子节点 3. 从子节点上按角度生成对应的子节点 4. 递归将根节点与每一层级子节点连线核心代码 定义节点配置 functio…...

Scala 05 —— 函数式编程底层逻辑

Scala 05 —— 函数式编程底层逻辑 该文章来自2023/1/14的清华大学交叉信息学院助理教授——袁洋演讲。 文章目录 Scala 05 —— 函数式编程底层逻辑函数式编程假如...副作用是必须的?函数的定义函数是数据的函数,不是数字的函数如何把业务逻辑做成纯函…...

在 Node.js 中配置代理 IP 采集文章

不说废话,直接上代码: const http require(http); const https require(https);// 之后可以使用 http 或 https 模块发起请求,它们将自动使用配置的代理 // 代理ip:https://www.kuaidaili.com/?refrg3jlsko0ymg const proxy …...

ESLlint重大更新后,使用旧版ESLint搭配Prettier的配置方式

概要 就在前几天,ESLint迎来了一次重大更新,9.0.0版本,根据官方文档介绍,使用新版的先决条件是Node.js版本必须是18.18.0、20.9.0,或者是>21.1.0的版本,新版ESLint将不再直接支持以下旧版配置(非扁平化…...

springcloud Ribbon的详解

1、Ribbon是什么 Ribbon是Netflix发布的开源项目,Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的框架。 2、Ribbon能干什么 LB负载均衡(Load Balance)是什么?简单的说就是将用户的请求平摊的分配到多个服务上,从而达…...

超级好用的C++实用库之Des加解密

概述 DES(Data Encryption Standard,数据加密标准)是一种历史悠久的对称密钥加密算法,由IBM公司在1970年代设计,并于1977年被美国国家标准局选作联邦资料处理标准。DES使用56位密钥对64位的数据块进行操作,…...

关于MCU核心板的一些常见问题

BGA植球与焊接(多涂焊油): 【BGA芯片是真麻烦,主要是植锡珠太麻烦了,拆一次就得重新植】https://www.bilibili.com/video/BV1vW4y1w7oNvd_source3cc3c07b09206097d0d8b0aefdf07958 / NC电容一般有两种含义&#xff1…...

【C++杂货铺】多态

目录 🌈前言🌈 📁多态的概念 📁 多态的定义及实现 📂 多态的构成条件 📂 虚函数 📂 虚函数重写 📂 C11 override 和 final 📂 重载,覆盖(重写…...

(学习日记)2024.04.20:UCOSIII第四十八节:各文件功能概览

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…...

数据结构-二叉树-堆(二)

一、建堆的时间复杂度问题 1、除了向上调整建堆,我们还可以向下调整建堆。不能在根上直接开始向下调整。这里的条件就是左右子树必须都是大堆或者小堆。我们可以倒着往前走,可以从最后一个叶子开始调整。但是从叶子开始调整没有意义。所以我们可以从倒数…...

身份证二要素核验介绍及使用方法

一、身份证二要素核验简介及重要性 身份证二要素核验是一种重要的身份验证技术,它在现代社会中发挥着至关重要的作用,特别是在涉及个人信息安全和隐私保护的领域。通过身份证二要素核验,我们可以有效地确认个人身份的真实性,从而…...

探索 去中心化的Web3.0

随着区块链技术的日益成熟和普及,Web3(Web 3.0)已经成为一个无法忽视的趋势。Web3不仅仅是一个技术概念,更是一个去中心化、透明、用户数据拥有权归还给用户的互联网新时代。在这篇文章中,我们将深入探讨Web3技术的核心…...

基于 Linux 自建怀旧游戏之 - 80 款 H5 精品小游戏合集

1)简介 最近又找到了一款宝藏游戏资源分享给大家,包含 80 款 H5 精品小游戏,都是非常有趣味耐玩的游戏,比如 植物大战僵尸、捕鱼达人、贪吃蛇、俄罗斯方块、斗地主、坦克大战、双人五子棋、中国象棋 等等超级好玩的 H5 小游戏&…...

【React】React-redux多组件间的状态传递

效果(部分完整代码在最底部): 编写 Person 组件 上面的 Count 组件,已经在前面几篇写过了,也可以直接翻到最底部看 首先我们需要在 containers 文件夹下编写 Person 组件的容器组件 首先我们需要编写 index.jsx 文件…...

工厂模式+策略模式

输入实体 基类 import lombok.Data;Data public class PersonInputDto {private Integer id;private String name; }子类 Data AllArgsConstructor NoArgsConstructor public class ManPerson extends PersonInputDto {private String sex; }Data AllArgsConstructor NoArgs…...

json文件的读取

📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏笔者水平有限,欢迎各位大佬指点,相…...

Java新手必看:快速上手FileOutPutStream类

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…...

被安排了一个任务,执行过程中要注意什么?

1 少来“把信带给加西亚”那一套。一朝领命去,几年百折不挠,和组织失去联系也要把事儿办成的故事虽然很励志,但并不是真相。真相是组织的目标和打法都在快速变化,只有和他人保持密切互动,才能在变化中达成目标。 2 不…...

Mybatis进阶4-权限管理

权限管理 1.权限 //相当于 职责 2.用户 //相当于 职员(职员就职于一个职位) 3.角色 //相当于 职位(有多个职责) 权限管理基础表:权限表,用户表,角色表 问题1:…...

[C++][PCL]pcl安装包预编译包国内源下载地址

版本名称下载地址PCL-1.14.1-AllInOne-msvc2022-win64含pdb.zip点我下载PCL-1.14.0-AllInOne-msvc2022-win64含pdb.zip点我下载PCL-1.13.1-AllInOne-msvc2022-win64含pdb.zip点我下载PCL-1.13.0-AllInOne-msvc2022-win64含pdb.zip点我下载PCL-1.12.1-AllInOne-msvc2019-win64含…...

【mobx-入门与思考】

介绍 mobx 是 nodejs生态中的框架, 主要用于做状态管理,可以监控变量状态的变化。 nodejs中除了mobx,还有个redux,也是做状态管理的,都是比较成熟的框架,二者的选择可以参考 【nodejs状态管理: Redux VS M…...

关于Git的commit message规范

前几天在提交代码的时候突然发现自己的commit message写的有点问题,然后到网上查了下发现Git的commit message也是有规范的,下面我总结了三条我认为最重要的。 1.commit message需要简洁明了,突出变更的目的 2.提交信息的前缀用来表示你的这…...

Type Specific Interfaces(Rolling特殊类型接口)

Type Specific Interfaces 一直以来,API的某些部分必然特定于所交换的消息类型,例如发布消息或订阅主题,因此需要为每个消息类型生成代码。下图布局了从用户定义的rosidl文件(如.msg文件)到用户和系统用于执行特定类型…...

PCB光控打孔机第二版程序(一)

/*PCB机程序 XY同时启动 L9751 CODE61068 2018 6 19 08:00 固定位置释放吸盘*/ /*修正寻点第十二条结束调用计算坐标L5091,自动运行Y计算L6280 6281***/ /*** 开外部中断2关闭定时器2XY轴输出信号,自动运行循环检测外部中断高电平重启XY轴输出信号 增加寻…...