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

TryHackMe 第3天 | Pre Security (中)

该学习路径讲解了网络安全入门的必备技术知识,比如计算机网络、网络协议、Linux命令、Windows设置等内容。上一篇中简短介绍了计算机网络相关的知识,本篇博客将记录 网络协议 部分。

How the web works?

DNS in detail

DNS (Domain name system,域名解析系统),它为我们提供了一种简单的方式去与互联网上的设备进行通信。

在网络中,数据包要依照 IP 地址来寻找目的地,对于设备而言,IP 地址非常清晰。但对于人类而言,如果要记住每一个想访问的页面的 IP 地址,似乎有点不太现实。因此人们采用域名来代替 IP 地址,日后人们只需要记住域名就可以,域名和 IP 地址之间的转换工作就交给 DNS 处理。这就是 DNS 的作用。

Domain hierarchy

域名也有对应的层次结构,如下图所示:

在域名中, 层级大小从右往左逐渐递减。按照图上内容,我们可以总结出域名的各层结构:

  • TLD (Top-level domain),顶级域名,位于域名最右边。最常见的顶级域名就是 .com。顶级域名一般有两种类型,gTLD ( generic TLD,通用顶级域名) 和 ccTLD (country code TLD,国家代码顶级域)。
  • Second-level domain,二级域名。以 baidu.com 为例,baidu 就是二级域名。在注册域名时,二级域名只能使用 63 个字符,且只能使用 a-z 0-9 和 连字符 “-”(不能以连字符开头或结尾,也不能有连续连字符)。
  • Subdomain,子域名。子域名位于二级域名左侧。以 pan.baidu.com 为例,pan 就是子域名。子域名和二级域名一样,只能使用 63 个字符,且只能使用 a-z 0-9 和 连字符 “-” 构成。子域名没有个数限制,但是必须保证整体的域名长度控制在 253 个字符以内。
DNS record type

DNS 不仅仅适用于网站,因为它还存在多种类型的 DNS record (DNS 记录)。

  • A record,该记录是 IPv4 地址解析结果
  • AAAA record,该记录是 IPv6 地址解析结果
  • CNAME record,该记录会解析到另一个域名上,也称 别名记录。比如 tryhackme 有一个商城子域名 store.tryhackme.com,它的 CNAME 记录为 shops.shopify.com,那么 DNS 的解析顺序就是 store.tryhackme.com --> shops.shopify.com --> shops.shopify.com 的 IP 地址。
  • MX record,该记录会解析到收件人域名的邮箱服务器。这样我们的邮件才能知道该发往何处。
  • TXT record,该记录是自由文本字段,可以存储任何基本文本的数据。该记录有多种用途,最常见的是列出有权代表域名发送电子邮件的服务器,这有助于打击垃圾邮件和识别是否为伪造身份的邮件。
DNS request

DNS 请求过程如下图所示:

  1. 请求域名时,计算机首先会查看本地缓存。若本地缓存存在,则直接使用;不存在就会向 Recursive DNS (递归DNS) 服务器发出请求。
  2. Recursive DNS 服务器通常由 ISP 提供,但也可以自行选择。收到请求后,递归 DNS 服务器也会先查询其本地缓存。若本地缓存中存在,则直接返回结果,请求结束;若无法找到,则会从 Root DNS (根 DNS) 服务器中进行寻找。
  3. 根 DNS 服务器是互联网的 DNS 主心骨,它们的工作是根据请求将其重定向到正确的 TLD (顶级域名) 服务器上。比如要访问 www.tryhackme.com,根 DNS 服务器会将其转给 .com 顶级域名服务器去处理。
  4. TLD 服务器保存的是能正确回应 DNS 请求的 Authoritative server (权威服务器)的记录。权威服务器也被称为域名的 nameserver (名称服务器)。一个域名通常会有多个名称服务器,以便在其中一个出现故障时作为备份。
  5. 权威 DNS 服务器负责存储特定域名的 DNS record,也负责对域名的 DNS record进行更新。根据记录的 record 类型不同,DNS record 会被发送回递归 DNS 服务器,在那里进行本地缓存,以便将来的请求,然后再将 DNS record 转发给发起请求的计算机。

HTTP in detail

HTTP (Hypertext transfer protocol),超文本传输协议。它是一套用于与网络服务器通信的规则,用于传输网页数据(包括 HTML、图像、视频等)。

HTTPS (Hypertext transfer protocol secure),是 HTTP 的安全版本。HTTPS 的数据经过加密,因此它能阻止别人看到你发送和接受的数据,也可以确保你在与正确的网络服务器沟通而不是和冒充的服务器。

Requests & responses

当我们访问网站时,浏览器需要向网络服务器发起 requests (请求),然后服务器再给我们 responses (响应)。

但在请求时,我们需要告诉浏览器访问这些资源的具体方式和它们所在的地点,这就是 URL (Uniform resource locator,统一资源定位器) 的作用所在。下图展示了 URL 的所有功能,但注意,不是所有的请求都会用到这些功能:

  • Scheme,它表明用何种协议访问资源,如 HTTP、HTTPS、FTP
  • User,有些服务需要认证身份,可以在 URL 中输入用户名和密码
  • Host (Domain),我们想访问的域名或 IP 地址
  • Port,我们想连接的端口号
  • Path,我们想访问的资源名字或位置
  • Query string,额外信息位,比如 /blog?id=1 就表示要访问 /blog 路径,且希望获得 id=1 的文章。
  • Fragment,对请求的实际页面上的某个位置的引用。通常用于内容较长的页面,可以直接链接到页面的某一部分。
HTTP methods

HTTP methods 是客户端发起 HTTP 请求时预期的一个操作。HTTP methods 有很多方法,但更常见的还是 GET 和 POST 方法。

  • GET,用于从 Web 服务器上获取资源
  • POST,用于向 Web 服务器提交数据,并可能创建新的记录
  • PUT,向 Web服务器提交数据以进行信息更新
  • DELETE,从 Web 服务器上删除信息或记录
HTTP status codes

当 Web 服务器响应了我们的 HTTP 请求时,它会发送一个 HTTP 响应数据包,其中就包含了 status codes (状态码)。这些状态码用于告知客户端请求的结果及可能的处理方式,一般可以分为五种:

  • 1xx,information response。告知客户端其请求的一部分已被接受,接下来应该继续发送请求的其余部分。
  • 2xx,success。告知客户端请求成功。
  • 3xx,redirection。告知客户端请求重定向到另一个资源。
  • 4xx,client errors。告知客户端请求出现了问题。
  • 5xx,server errors。告知客户端,服务器在处理请求时出现了问题。

常见的状态码如下表所示:

200 - OK请求成功
201 - Created资源已创建 (例如新用户或新的博文)
301 - Moved permanently将浏览器重定向到一个新网页,或告诉搜索引擎该网页已转移到其他地方
302 - Found与 301 类似,但不同的是该状态码表示暂时性的更改,在不久的将来可能会再次更改
400 - Bad request告诉浏览器请求中出现了错误或丢失了某些内容
401 - Not authorised未进行身份授权前,不允许查看该资源
403 - Forbidden无论用户是否登录,都没有权限访问该资源
404 - Page not found资源不存在
405 - Method not allowed资源不允许使用该请求方式请求
500 - Internal server error服务器在处理请求时遇到某种错误,无法正确处理
503 - Service unavailable服务器由于超负荷或正在进行维护,无法处理请求
Headers

Headers 信息分为 请求 headers 和 响应 headers。前者通常由客户端发送给 Web 服务器;后者是 Web 服务器对于客户端请求的响应。

常见的 请求 headers 包含:

  • Host,一些 Web 服务器上会托管多个网站,通过该信息可以告诉服务器要访问的网站,否则就是访问服务器的默认网站。
  • User-Agent,客户端的浏览器软件和版本号,告知服务器你使用的浏览器软件有助于它为你的浏览器正确格式化网站。
  • Content-Length,向 Web 服务器发送数据时,该信息会告诉服务器该请求有多少数据,这样服务器能确保不会丢失任何数据。
  • Accept-Encoding,告诉 Web 服务器浏览器支持哪些类型的压缩方法,以便在互联网上传输数据时将数据压缩得更小。
  • Cookie,发送给 Web 服务器以让服务器记住关于用户的信息。

常见的 响应 headers 包含:

  • Set-Cookie,每次请求时需要发送回 Web 服务器的要存储的数据。
  • Cache-Control,再次请求之前,响应内容在浏览器缓存中的存储时间。
  • Content-Type,告知客户端返回的数据类型,如 HTML、图像、视频等。通过该信息,浏览器就能知道如何处理这些数据。
  • Content-Encoding,确定了压缩数据的方法。
Cookies

Cookies 是存储在用户电脑上的一小段数据,当用户从 Web 服务器上收到 Set-Cookie 头信息时,Cookie 就被保存下来了。之后,每一次请求都会向 Web 服务器发送这个 Cookie 数据。由于 HTTP 是无状态的,所以 Cookie 可以用于提示 Web 服务器用户的身份、用户是否登陆过、用户的个人设置等。

Cookie 示意图

Cookie 可以用于多种目的,但最常用于网站验证。Cookie 的值通常不是明文,而是不易被人猜到的唯一密文。

How websites work

当我们访问一个网页时,浏览器会向 Web 服务器发送请求,请求有关我们正在访问的页面的信息。网站由两个主要部分组成:

  • Front end (前端),用户侧,这是浏览器渲染网站的方式
  • Back end (后端),服务器侧,处理用户请求并响应

前端页面由 HTML、JavaScript、CSS 三部分组成。HTML 用于构建网站并定义其结构,JavaScript 用于实现交互功能,CSS 用来让网站更加漂亮。首先简单介绍 HTML。

HTML

HTML 是网站的编程语言,元素 (也被称为 标签)是 HTML 页面的组成部分,他告诉浏览器如何显示内容。比如下面就是一段 HTML 代码:

<!DOCTYPE html> <!-- 定义页面是 HTML5 文档-->
<html> <!-- HTML 页面的根元素 --><head> <!-- 该元素包含有关页面的信息 --><title>Page Title</title></head><body> <!-- 该元素定义 HTML 文档的正文 --><h1>Example Heading</h1> <!-- 大标题元素--><p>Example paragraph..</p> <!-- 段落元素 --></body>
</html>

元素也可以包含一些属性,比如 class 属性,这样可以被用来为元素设计样式。一个元素可以有多个属性,每个属性都有自己独特的用途。

元素还可以拥有 唯一的 id属性,这是元素的唯一标识。id属性一般用于样式设计和 JavaScript 识别。

JavaScript

JavaScript (JS) 是世界上最流行的编程语言之一,可以让网页实现交互,如果没有 JS,那么网页就不会有互动元素。

JS 添加在页面源代码中,用 <script> 标记,也可以通过 src 属性远程包含。

Sensitive data exposure

假如网站没有适当保护终端用户的敏感明文信息时,就会发生敏感数据泄露。

如上图所示,通过开发者工具查看源代码后,发现其中出现了未被删除的敏感信息。这些情况往往是开发人员之前用于测试,但后面忘记删除导致。这种敏感数据泄露可能会被攻击者利用,扩大攻击面。

因此,在进行安全检查时,第一步就是查看源代码,看看是否有敏感信息泄露的问题。

HTML injection

HTML 注入指页面上显示未经过滤的用户输入时发生的漏洞。如果网站未对用户输入进行消毒和过滤,而该输入被用于该页面,则攻击者就可以在该网页中注入 HTML 代码。

如上图所示,网页并未对用户输入进行任何过滤。假设攻击者构建了一段恶意 HTML 或 JS 代码就会被直接执行。

上图可能还体现不出危害,那我们假设这样一个场景,网页在登录界面有 HTML 注入漏洞。攻击者可以构造一个恶意的表单提交元素 <form>,这样恶意表单会被执行。后面普通用户使用该表单进行登录时,其用户名和密码就被传输给攻击者了。

因此防止 HTML 注入漏洞的规则就是决不相信用户输入。为防止恶意输入,开发人员应该在使用用户输入前就对其内容进行过滤消毒。

Putting it all together

根据前面的介绍,可以总结出浏览器访问一个网页时它会进行的操作:

  1. 当我们请求网页时,电脑需要知道对应 Web 服务器的 IP 地址。这是需要使用 DNS 来获取。
  2. 获得 IP 地址后,将使用 HTTP 协议与服务器发起对话,请求网页资源。
  3. 服务器收到请求,将 HTML、JS、CSS、图像等信息响应回去。
  4. 浏览器收到这些信息,将其正确地格式化,显示出来。
Other components

在访问一个网页时,涉及到的技术绝对不止上述步骤所提到的。接下来会简要介绍几个可能会存在的技术。

Load balancers

Load balancers,负载均衡。当一个网站的流量相当巨大或者服务器要运行一个高可用性的应用程序时,一台服务器可能无法胜任。此时就可以架设多个服务器进行负载均衡,其一是可以确保高流量网站能处理负载,其二是当服务器反应迟钝时可以提供故障切换。

负载均衡在收到请求时会使用不同算法来确定选择哪个服务器处理请求,这些算法包括 round-robin (轮询算法,将请求依次发送到每个服务器) 和 weighted (加权算法,检查服务器当前处理的请求数,将请求发送给最不繁忙的服务器)。

负载均衡还会对每台服务器进行定期检查,确保它们运行正常,这叫做 health check。当服务器响应不当或没有响应,负载均衡将停止发送流量,直至服务器再次做出适当响应。

CDN

CDN (Content delivery networks),内容分发网络。CDN 允许托管网站上的静态文件到世界各地的服务器上。当用户请求网站时,CDN 会计算距离用户最近的服务器物理位置,并将请求发送到该服务器上。这有效地减少了网站访问时间。

Databases

数据库用于存储网站中的用户信息,Web 服务器可以与数据库通信,进而可以存储和调用其中的数据。常见的数据库有 MySQL、MSSQL、MongoDB、Postgres 等。

WAF

WAF (Web application firewall),网络应用防火墙。它位于网络请求到 Web 服务器之间,主要目的就是保护 Web 服务器免受黑客攻击或 DDos攻击。它能分析网络请求中常见的攻击技术,分析请求是否来自真正的浏览器而不是机器人。

How web servers work
Web server

Web 服务器是一种软件,它侦听传入的连接,然后利用 HTTP 协议向客户端传送网络内容。常见的 Web 服务器软件有 Apache、Nginx、IIS 和 NodeJS。Web 服务器本质上也是从软件设置中定义的根目录上传输文件。比如我们要请求一张图片,实际上 Web 服务器就在本地路径 /var/www/html/picture.jpg (假设是这个路径) 上将该图片传输过去。

Virtual host

虚拟主机。Web 服务器可以托管具有不同域名的多个网站,这就是基于 虚拟主机 技术做到的。Web 服务器会检查 HTTP 请求头中的 Host 字段,并将其与虚拟主机进行匹配,若匹配成功,则会提供正确的网站;不匹配的话则提供默认网站。

Static & dynamic content

静态内容就是永不改变的内容,如图片、JS代码、CSS、HTML等。这些文件都是直接从 Web 服务器发送而来,不会对其进行任何更改。

动态内容指可以随不同请求而改变的内容。比如博客首页会根据文章热度改变展示的博文,博客的搜索页面也会根据不同的搜索词显示不同结果。这些内容的更改都由后端完成,我们无法知道后端做了什么。

Scripting & backend languages

后端语言可以与数据库交互、调用外部服务、处理用户传入的数据等,这些正是网站与用户互动的关键所在。常见后端语言有 PHP、Python、Ruby、NodeJS、Perl 等。

在客户侧是看不到任何的后端语言代码的,因为它在后台完成活动。不过虽然看不到后端代码,但它们仍然会给 Web 程序带来安全问题。

相关文章:

TryHackMe 第3天 | Pre Security (中)

该学习路径讲解了网络安全入门的必备技术知识&#xff0c;比如计算机网络、网络协议、Linux命令、Windows设置等内容。上一篇中简短介绍了计算机网络相关的知识&#xff0c;本篇博客将记录 网络协议 部分。 How the web works? DNS in detail DNS (Domain name system&…...

c语言中“qsort函数”和“结构体成员访问变量”

qsort函数&#xff1a; qsort是c语言中的库函数&#xff0c;这个函数是对数据进行排序&#xff08;对任意&#xff09; 冒泡排序中排列整数顺序用的函数只适用于整形&#xff0c;而qsort函数适用与所有数据 排序算法 冒泡排序 插入 选择 快速 void qsort{ void * base&…...

【MySQL】在MySQL中STR_TO_DATE()

1.在MySQL中STR_TO_DATE() 在MySQL中&#xff0c;STR_TO_DATE() 函数用于将字符串转换为日期格式。这个函数非常有用&#xff0c;当你需要将文本数据转换为可由MySQL日期和时间函数处理的格式时。 1.1 语法 STR_TO_DATE() 函数的基本语法如下&#xff1a; STR_TO_DATE(date…...

PCIE集成验证(五)MSI/MSI-X中断

PCI 总线最早采用的中断机制是 INTx&#xff0c;这是基于边带信号的。后续的 PCI/PCI-X版本&#xff0c;为了消除边带信号&#xff0c;降低系统的硬件设计复杂度&#xff0c;逐渐采用了 MSI(Message Signaled Interrupt)/MSI-X&#xff08;消息信号中断&#xff09;的中断机制。…...

leetcode 380.O(1) 时间插入、删除和获取随机元素

实现RandomizedSet 类&#xff1a; RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时&#xff0c;向集合中插入该项&#xff0c;并返回 true &#xff1b;否则&#xff0c;返回 false 。bool remove(int val) 当元素 val 存在时&#xff0…...

基于MicroPython的ESP8266控制PS2摇杆模块的设计方案

以下是一个基于MicroPython的ESP8266控制PS2摇杆模块的设计方案&#xff1a; 一、硬件准备&#xff1a; 1. 一块ESP8266开发板&#xff0c;如NodeMCU 2. 一个带有X、Y轴模拟输出和Z轴(按钮)数字输出的PS2摇杆模块 3. 杜邦线若干 4. 3.3V直流电源 二、硬件连接&#xff1a…...

Spring Boot 3项目使用Swagger3教程

Spring Boot 3项目使用Swagger3教程 Swagger&#xff1a;自动生成接口文档 添加依赖(pom.xml) <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.1…...

linux-系统备份与恢复-系统恢复

Linux 系统备份与恢复&#xff1a;系统恢复 1. 概述 Linux 系统的恢复是系统管理的重要组成部分&#xff0c;它指的是在系统崩溃、硬件故障、误操作或安全问题后&#xff0c;恢复系统到可用状态的过程。良好的系统恢复计划可以有效避免数据丢失和业务中断&#xff0c;并确保系…...

【Rust语言】std::collections::HashMap用法

HashMap用法文档 文章目录 创建键的要求 增删改查增: insert删: remove/remove_entry改单点修改 get_mut整体修改 values_mut/iter_mut 查集增改于一身的entry 遍历只读遍历into_values() 与 into_keys()容量、实际长度、判空导出清除重定容量 use std::collections::HashMap;创…...

使用SoapUI、Postman工具调用Webservice方法

SoapUI工具更适合调用Webservice使用。 1.使用SoapUI工具调用Webservice 创建“New SOAP Project” 自行定义一个项目名称&#xff0c;输入wsdl地址&#xff1a; 在左侧列表找到方法名&#xff0c;双击“Request 1”, 在请求数据中&#xff0c;添加对应的参数&#xff0c;然…...

js 与 C++引用和指针的关系

js 与 C引用和指针的关系 js 中既有引用的影子, 也有指针的影子。 1、引用用法 这里相当于C 中的引用, b是a的引用, 修改b ,a也改变。 var a { 1: 1 }var b a;a null;b[2] 2;console.error(b); // { 1: 1, 2: 2 }2、指针用法 这里 a,b应该按照指针理解。 var a undef…...

python --PyAibote自动化

官文: https://www.pyaibote.com/ 下载安卓集成环境: 可以看到开发的一些信息...

Ubuntu系统开发环境搭建

一&#xff0c;Android源码编译环境搭建 1 安装Java Development Kit (JDK) sudo apt-get update sudo apt-get install openjdk-8-jdk 2,确认JDK安装成功 java -version 3,安装编译所需的依赖项 sudo apt-get install git-core gnupg flex bison gperf build-essential zip cu…...

lvs-dr模式实验详解

华子目录 lvs-dr&#xff08;企业当中最常用&#xff09;dr模式数据逻辑dr模式数据传输过程dr模式的特点实验拓扑实验主机准备解决vip响应问题限制响应级别:arp_ignore限制通告级别:arp_announce 实验步骤1.client的ip设定2.router上的ip设定3.router开启路由转发功能4.lvs主机…...

【RDMA】mlxconfig修改和查询网卡(固件)配置--驱动工具

目录 简介 工具要求 语法 例子和参数 例子 更多参数 其他工具和查询 简介 mlxconfig 工具允许用户在不重新烧录固件的情况下更改某些设备配置。 配置在重启后仍然保留。 默认情况下&#xff0c;mlxconfig 显示将在下次启动时加载的配置。对于第五代设备&#xff0c;还…...

跨站请求伪造(CSRF)漏洞详解

免责申明 本文仅是用于学习检测自己搭建的DVWA靶场环境有关CSRF的原理和攻击实验,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其所在国家地区相关法…...

Java+Spring Cloud +UniApp 智慧工地源码,用户PC端、移动端数据同步,支持多端展示

数字化给各行各业所带来的改变&#xff0c;在早些年间突出自动这一流程。但随着科技的发展&#xff0c;让人们也愈发了解可视化操作所带来的优势。智慧工地的诞生&#xff0c;相当于为建筑施工带来了一套较为完整的数字化流程&#xff0c;能够完善施工环节中的各部分内容。接下…...

【推广】图书|2024新书《大模型RAG实战:RAG原理、应用与系统构建》汪鹏、谷清水、卞龙鹏等,机械工业出版社

探索RAG系统新高度&#xff1a;《大模型RAG实战&#xff1a;RAG原理、应用与系统构建》 随着大模型技术的爆发&#xff0c;尤其是ChatGPT之后&#xff0c;以ChatPDF为首的知识库问答产品迅速走红&#xff0c;引发了RAG&#xff08;检索增强生成&#xff09;系统的广泛关注与讨论…...

在Unity UI中实现UILineRenderer组件绘制线条

背景介绍 在Unity的UI系统中&#xff0c;绘制线条并不像在3D世界中那样直观(使用Unity自带的LineRender组件在UI中连线并不方便,它在三维中更合适)。没有内置的工具来处理这种需求。如果你希望在UI元素之间绘制连接线&#xff08;例如在UI上连接不同的图标或控件&#xff09;&a…...

C语言中union的用法

在C语言中&#xff0c;union&#xff08;联合体&#xff09;是一种特殊的复合数据类型&#xff0c;它允许多个不同的数据成员共享同一块内存空间。与struct&#xff08;结构体&#xff09;不同的是&#xff0c;union中的所有成员共用同一个内存地址&#xff0c;因此同时只能存储…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...