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

A*(A-star)算法

概述

A*(A-star)算法是一种在图中寻找从初始节点到目标节点最短路径的启发式搜索算法。它结合了Dijkstra算法的确保性(保证找到一条最短路径)和贪心算法的高效性(快速找到目标)。A*算法通过评估函数f(n) = g(n) + h(n)来工作,其中g(n)是从起始点到任何顶点n的实际成本,而h(n)是从顶点n到目标的估计最低成本,通常用启发式函数来计算,这个函数需要事先设计来反映实际的地形或环境特征。

A*算法具有以下显著特性:

  1. 最优性:当启发式函数h(n)满足某些条件时,A*算法能保证找到一条最低成本路径。
  2. 效率:A*算法在执行过程中保持高效,特别是当启发式函数能够较好地估计到目标的成本时。

A*算法广泛应用于各类路径规划问题,如机器人导航、地图定位服务和游戏中的AI路径寻找等场景。通过适当选择和调整启发式函数,A*算法能够在复杂的环境中有效地寻找最短路径,同时保持计算上的可行性和效率。

启发式函数的选择对A*算法的性能和准确性至关重要。理想情况下,h(n)不应该高估实际的成本,这种情况下,A*算法保证找到一条最低成本路径。常见的启发式函数包括曼哈顿距离、欧几里得距离和对角线距离等。

关于距离

曼哈顿距离

哈顿距离(Manhattan Distance),也称为L1距离或城市街区距离(City Block Distance),是一种度量两个点在标准坐标系上的绝对轴距总和的距离。在二维空间中,如果有两个点P1(x1, y1)和P2(x2, y2),它们之间的曼哈顿距离定义为:

曼哈顿距离 = ∣ x 2 − x 1 ∣ + ∣ y 2 − y 1 ∣ 曼哈顿距离=\left | x2-x1 \right | + \left | y2-y1 \right | 曼哈顿距离=x2x1+y2y1

这个名称来源于纽约市的街道布局,因为曼哈顿街道呈网格状,从一个街区到另一个街区的最短路径通常是沿着街道走,而不是直线穿越建筑物。

欧几里得距离

欧几里得距离(Euclidean Distance),也称为欧氏距离或L2距离,是度量两点在欧几里得空间中直线距离的一种方法。它是最直观的距离度量方式,即两点之间的直线段长度。

在二维空间中,如果有两个点P1(x1, y1)和P2(x2, y2),它们之间的欧几里得距离定义为:

欧几里得距离 = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 欧几里得距离=\sqrt{(x2−x1)^2+(y2−y1)^2} 欧几里得距离=(x2x1)2+(y2y1)2

这个公式可以推广到更高维度的空间中。对于n维空间中的两个点P1(p1_1, p1_2, …, p1_n)和P2(p2_1, p2_2, …, p2_n),它们之间的欧几里得距离为:
欧几里得距离 = ( p 2 1 − p 1 1 ) 2 + ( p 2 2 − p 1 2 ) 2 + ⋯ + ( p 2 n − p 1 n ) 2 欧几里得距离=\sqrt{(p2_1−p1_1)^2+(p2_2−p1_2)^2+\cdots+(p2_n−p1_n)^2} 欧几里得距离=(p21p11)2+(p22p12)2++(p2np1n)2

欧几里得距离是最直观和常用的距离度量方式,因为它符合我们对“距离”的直观理解。然而,在某些情况下,如城市街区或室内导航,直线距离可能不是最佳的距离度量方式,这时可能会使用曼哈顿距离或其他距离度量方式。

对角线距离

对角线距离,有时也被称为切比雪夫距离(Chebyshev Distance),是一种在多维空间中度量两点之间距离的方法。它基于这样一个概念:在棋盘上,一个棋子从一个方格移动到对角线相对的方格所需的步数。在二维空间中,如果有两个点P1(x1, y1)和P2(x2, y2),它们之间的对角线距离定义为:

对角线距离 = m a x ( ∣ x 2 − x 1 ∣ , ∣ y 2 − y 1 ∣ ) 对角线距离=max(\left |x2−x1\right | ,\left |y2−y1\right |) 对角线距离=max(x2x1,y2y1)

这个定义可以推广到n维空间中。对于n维空间中的两个点P1(p1_1, p1_2, …, p1_n)和P2(p2_1, p2_2, …, p2_n),它们之间的对角线距离为:

对角线距离 = m a x ( ∣ p 2 1 − p 1 1 ∣ , ∣ p 2 2 − p 1 2 ∣ , ⋯ , ∣ p 2 n − p 1 n ∣ ) 对角线距离=max(\left |p2_1−p1_1 \right|,|p2_2−p1_2|,\cdots,|p2_n−p1_n|) 对角线距离=max(p21p11,p22p12,,p2np1n)

对角线距离的一个主要优点是它在处理具有不同尺度或单位的维度时相对简单和直观。然而,它可能不如欧几里得距离那样直观,因为它不考虑维度之间的相互作用或角度。在实际应用中,选择哪种距离度量方式取决于具体问题的性质和需求。

算法思想

A*算法是对广搜的改进。回顾一下广搜的思路,从起点开始一圈一圈的向外搜索,直到找到目标节点。在这个过程中其实做了很多无用功,而且当地图的规模扩大时,其性能也极度下降。

以下面这张图为例,绿色格子是起点,红色格子是终点,黑色是障碍物。

虽然中间有遮挡,但是我们很容易知道,大方向是向右的。所以,广搜的过程中向左扩展的部分其实就是无用功。我们应该优先寻找右边的路。

那么如何让扩展出来的格子之间产生优先级呢?这时A*算法的f(n)g(n)h(n)函数就派上了用场。f(n) = g(n) + h(n)

  • f(n):总代价
  • g(n):从起点到当前节点的实际代价
  • h(n):从当前节点到终点的预期代价

A*算法通过引入预期代价从而包含了终点的方向信息。这时候我们就可以从候选节点中选一个总代价最小的节点优先扩展。从代码实现上来说也只需要用优先队列替换原本广搜的普通队列即可。

A*算法的步骤可以概括如下:

  1. 初始化
    • 创建两个集合:开放集(Open Set)和关闭集(Closed Set)。
    • 将起始节点加入开放集,并将起始节点的g(n)值设为0,h(n)值根据启发式函数计算。
    • 将起始节点的父节点设为null。
  2. 循环执行以下步骤,直到开放集为空或找到目标节点
    • 选择节点:从开放集中选择具有最低f(n)值的节点,即f(n) = g(n) + h(n)
    • 检查目标:如果选择的节点就是目标节点,则路径已找到,算法结束。
    • 移动节点:将选择的节点从开放集移至关闭集。
    • 扩展节点:对于选择的节点的每一个邻居节点:
      • 如果邻居节点不在关闭集中,计算它的g(n)值(从起始节点到邻居节点的成本),并计算f(n)值。
      • 如果邻居节点不在开放集中,将其添加到开放集中,并记录当前节点为其父节点。
      • 如果邻居节点已在开放集中,但通过当前节点到达它的g(n)值更低,则更新它的g(n)值和父节点。
    • 更新启发式函数:对于每个新加入开放集的节点或更新了g(n)值的节点,重新计算它的f(n)值。
  3. 路径重建
    • 一旦找到目标节点,从目标节点开始,通过其父节点回溯到起始节点,构建出完整的路径。
  4. 输出路径
    • 输出从起始节点到目标节点的路径。

代码实现

以卡码网:126. 骑士的攻击为例

题目描述

在象棋中,马和象的移动规则分别是“马走日”和“象走田”。现给定骑士的起始坐标和目标坐标,要求根据骑士的移动规则,计算从起点到达目标点所需的最短步数。

棋盘大小 1000 x 1000(棋盘的 x 和 y 坐标均在 [1, 1000] 区间内,包含边界)

输入描述

第一行包含一个整数 n,表示测试用例的数量,1 <= n <= 100。

接下来的 n 行,每行包含四个整数 a1, a2, b1, b2,分别表示骑士的起始位置 (a1, a2) 和目标位置 (b1, b2)。

输出描述

输出共 n 行,每行输出一个整数,表示骑士从起点到目标点的最短路径长度。

输入示例

6
5 2 5 4
1 1 2 2
1 1 8 8
1 1 8 7
2 1 3 3
4 6 4 6

输出示例

2
4
6
5
1
0

通过代码:

#include <iostream>
#include <queue>
#include <cmath>
#include <cstring>using namespace std;int moves[1001][1001];                                                    // 相当于开放集
bool close[1001][1001];                                                   // close列表
int dir[8][2] = {-2, -1, -2, 1, -1, 2, 1, 2, 2, 1, 2, -1, 1, -2, -1, -2}; // 移动方向struct Node
{int x, y;    // 节点位置int f, g, h; // 总成本,到当前节点的实际成本,到目标节点的预估成本Node() {}Node(int a, int b) : x(a), y(b) {}bool operator<(const Node &other) const{return f > other.f;}
};bool check(Node node) // 检查节点合法性
{if (node.x < 1 || node.x > 1000 || node.y < 1 || node.y > 1000) // 判断边界return false;return true;
}int Euclidean(const Node &a, const Node &b) // 欧几里得距离
{return pow(a.x - b.x, 2) + pow(a.y - b.y, 2); // 统一不开根号,这样可以提高精度
}void astar(const Node &start, const Node &end)
{priority_queue<Node> q; // 相当于open listq.push(start);while (!q.empty()){Node cur = q.top();q.pop();close[cur.x][cur.y] = true; // 加入close集if (cur.x == end.x && cur.y == end.y) // 到达目标节点break;for (int i = 0; i < 8; i++){Node next = Node(cur.x + dir[i][0], cur.y + dir[i][1]);if (!check(next) || close[next.x][next.y]) // 越界和在close集的跳过continue;if (moves[next.x][next.y] == 0 || moves[cur.x][cur.y] + 1 < moves[next.x][next.y]){moves[next.x][next.y] = moves[cur.x][cur.y] + 1;next.g = cur.g + 5; // 统一不开根号,这样可以提高精度,马走日,1 * 1 + 2 * 2 = 5next.h = Euclidean(next, end);next.f = next.g + next.h;q.push(next); // 在开放集但更优的节点我也入队了,因为优先队列会把更小的节点弹出来,所以不影响}}}
}int main()
{int n;cin >> n;int a1, a2, b1, b2; // 起点和终点坐标while (n--){cin >> a1 >> a2 >> b1 >> b2;Node start = Node(a1, a2), end = Node(b1, b2);start.g = 0;start.h = Euclidean(start, end);start.f = start.g + start.h;memset(moves, 0, sizeof(moves));memset(close, 0, sizeof(close));astar(start, end);cout << moves[b1][b2] << endl;}return 0;
}

相关文章:

A*(A-star)算法

概述 A*&#xff08;A-star&#xff09;算法是一种在图中寻找从初始节点到目标节点最短路径的启发式搜索算法。它结合了Dijkstra算法的确保性&#xff08;保证找到一条最短路径&#xff09;和贪心算法的高效性&#xff08;快速找到目标&#xff09;。A*算法通过评估函数f(n) …...

计算机类大厂实习春招秋招开发算法面试问答练习题

计算机类大厂实习春招秋招开发算法面试问答练习题 下面有十个非常重要且常问,面试者却注意不到的问题,我们一个个来看,一个个来学。 线程创建到删除过程中,底层是怎么实现的 1.线程创建 线程创建是线程生命周期的起点。在操作系统中,线程可以通过多种方式创建,但无论哪…...

C++ 11重点总结1

智能指针 智能指针: C11引入了四种智能指针: auto_ptr(已弃用)、unique_ptr、shared_ptr和weak_ptr。智能指针可以更有效地管理堆内存,并避免常见的内存泄漏问题。 shared_ptr: 自定义删除器。 shared_ptr使用引用计数来管理它指向的对象的生命周期。多个shared_ptr实例可以指向…...

Java异常

目录 一、异常的层次结构 1.1、Throwable 1.2、Error&#xff08;错误&#xff09; 1.3、Exception&#xff08;异常&#xff09; 运行时异常 非运行时异常 &#xff08;编译异常&#xff09; 1.4、可查的异常&#xff08;checked exceptions&#xff09;和不可查的异常…...

《热带气象学报》

《热带气象学报》创刊于1984年&#xff0c;前身为《热带气象》&#xff0c;1993年更名为《热带气象学报》&#xff0c;是广东省气象局主管&#xff0c;中国气象局广州热带海洋气象研究所主办的中文学术期刊。 本刊坚持“热带气象”的办刊特色&#xff0c;主要刊登&#xff1a;…...

解决docker不加载 /etc/docker/daemon.json文件的问题

文章目录 问题起源解决方案问题反思 问题起源 如题&#xff0c;最近在ubuntu24.04-LTS-server安装docker时&#xff0c;安装成功后设置源来设置镜像。 设置完成功拉取镜像&#xff0c;我就关机下次使用。 但是当我重启发现呢&#xff0c;镜像都不在了&#xff0c;但是由于网络…...

数据结构(初阶7)---七大排序法(堆排序,快速排序,归并排序,希尔排序,冒泡排序,选择排序,插入排序)(详解)

排序 1.插入排序2.希尔排序3.冒泡排序4.选择排序(双头排序优化版)5.堆排序6.快速排序1). 双指针法2).前后指针法3).非递归法 7.归并排序1).递归版本(递归的回退就是归并)2).非递归版本(迭代版本) 计算机执行的最多的操作之一就有排序&#xff0c;排序是一项极其重要的技能 接下…...

题解 洛谷 Luogu P1182 数列分段 Section II 二分答案 C/C++

题目传送门&#xff1a; P1182 数列分段 Section II - 洛谷 | 计算机科学教育新生态https://www.luogu.com.cn/problem/P1182思路&#xff1a; 二分答案&#xff0c;每次以区间 [l, r] 中点 m 为每段和的阈值 判断在此前提下&#xff0c;划分段数是否不大于 M 是就记录答案…...

鸿蒙心路旅程:从实践到创新——开发者的深度技术分享

目录 1. 引言&#xff1a;成为HarmonyOS NEXT开发者的动机 2. 项目初始化与架构设计&#xff1a;从零开始的技术规划 2.1 DevEco Studio的配置与项目初始化 2.2 分层架构设计 3. 分布式应用设计&#xff1a;挑战与解决方案 3.1 分布式架构设计&#xff1a;分布式软总线 …...

elementUI非常规数据格式渲染复杂表格(副表头、合并单元格)

效果 数据源 前端代码 (展示以及表格处理/数据处理) 标签 <el-table :data"dataList" style"width: 100%" :span-method"objectSpanMethod"><template v-for"(item, index) in headers"><el-table-column prop"…...

mysl数据库(八)事务、三种读现象

事务、三种读现象 文章目录 事务、三种读现象一、事务介绍二、事务的使用三、三种读现象 一、事务介绍 事务是mysql的一种机制&#xff0c;一个事务里可以包含多条sql语句。执行事务相当于拍了一张快照&#xff0c;在事务执行完提交以前可以回滚至最初的状态&#xff0c;当然事…...

【DVWA】File Inclusion文件包含实战

安能有术无道有道无心&#xff0c;乐得仁心仁义正心行道。 1.File Inclusion(Low) 相关代码分析 <?php// The page we wish to display $file $_GET[ page ];?>可以看到&#xff0c;服务器端对page参数没有做任何的过滤跟检查。 服务器期望用户的操作是点击下面的…...

(免费送源码)计算机毕业设计原创定制:Java+ssm+JSP+Ajax SSM棕榈校园论坛的开发

摘要 随着计算机科学技术的高速发展,计算机成了人们日常生活的必需品&#xff0c;从而也带动了一系列与此相关产业&#xff0c;是人们的生活发生了翻天覆地的变化&#xff0c;而网络化的出现也在改变着人们传统的生活方式&#xff0c;包括工作&#xff0c;学习&#xff0c;社交…...

异常处理(4)throws

异常处理&#xff08;4&#xff09; throws 前言&#xff1a;运行时异常&#xff08;RuntimeException&#xff09;或它的子类可以不做处理&#xff0c;因为这类异常很普遍&#xff0c;若全部处理&#xff0c;可能会对程序的可读性和运行效率产生影响。此外&#xff0c;即使不使…...

点云欧式聚类,条件欧式聚类算法原理及推导

点云欧式聚类算法数学推导 点云欧式聚类&#xff08;Euclidean Clustering for Point Clouds&#xff09;是点云处理中常用的一种无监督聚类方法。它基于欧式距离将点云中的点划分为多个簇&#xff0c;常用于分割、目标检测等任务。以下是算法的数学推导和实现原理。 问题定义…...

每日十题八股-2024年11月27日

1.类型互转会出现什么问题吗&#xff1f; 2.为什么用bigDecimal 不用double &#xff1f; 3.装箱和拆箱是什么&#xff1f; 4.Java为什么要有Integer&#xff1f; 5.Integer相比int有什么优点&#xff1f; 6.那为什么还要保留int类型&#xff1f; 7.说一下 integer的缓存 8.怎么…...

C++虚函数面试题及参考答案

什么是虚函数&#xff1f;它的作用是什么&#xff1f; 虚函数是在基类中使用关键字 virtual 声明的成员函数。当在派生类中重写&#xff08;override&#xff09;这个函数时&#xff0c;会根据对象的实际类型来调用相应的函数版本&#xff0c;而不是仅仅根据指针或引用的类型来…...

如何搭建C++环境--1.下载安装并调试Microsoft Visual Studio Previerw(Windows)

1.首先&#xff0c;打开浏览器 首先&#xff0c;搜索“Microsoft Visual Studio Previerw” 安装 1.运行VisualStudioSetup (1).exe 无脑一直点继续 然后就到 选择需要的语言 我一般python用pycharm Java&#xff0c;HTML用vscode&#xff08;Microsoft Visual Studio cod…...

大数据新视界 -- Hive 函数应用:复杂数据转换的实战案例(下)(12/ 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

深入理解 TypeScript:联合类型与交叉类型的应用

在 TypeScript 的世界里&#xff0c;类型系统是核心特性之一&#xff0c;它提供了强大的工具来帮助开发者编写更安全、更可靠的代码。今天&#xff0c;我们将深入探讨 TypeScript 中的两个高级类型特性&#xff1a;联合类型&#xff08;Union Types&#xff09;和交叉类型&…...

fiddler抓包工具与requests库构建自动化报告

一. Fiddler 抓包工具 1.1 Fiddler 工具介绍和安装 Fiddler 是一款功能强大的 HTTP 调试代理工具&#xff0c;能够全面记录并深入检查您的计算机与互联网之间的 HTTP 和 HTTPS 通信数据。其主界面布局清晰&#xff0c;主要包含菜单栏、工具栏、树形标签栏和内容栏。 1.2 Fid…...

数据结构——排序算法第二幕(交换排序:冒泡排序、快速排序(三种版本) 归并排序:归并排序(分治))超详细!!!!

文章目录 前言一、交换排序1.1 冒泡排序1.2 快速排序1.2.1 hoare版本 快排1.2.2 挖坑法 快排1.2.3 lomuto前后指针 快排 二、归并排序总结 前言 继上篇学习了排序的前面两个部分:直接插入排序和选择排序 今天我们来学习排序中常用的交换排序以及非常稳定的归并排序 快排可是有多…...

Vue-常用指令

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vue篇专栏内容:Vue-常用指令 目录 1.1 v-cloak 1.2 双向数据绑定指令 v-model 1.3 v-once 1.4 绑定属性 v-bind…...

守护进程

目录 守护进程 前台进程 后台进程 session&#xff08;进程会话&#xff09; 前台任务和后台任务比较好 本质 绘画和终端都关掉了&#xff0c;那些任务仍然在 bash也退了&#xff0c;然后就托孤了 ​编辑 守护进程化---不想受到任何用户登陆和注销的影响​编辑 如何…...

GPON原理

GPON网络架构 对于OLT来说&#xff0c;它就相当于一个指挥官&#xff0c;它指挥PON口下的ONU在指定的时间段内发送数据以及发起测距过程等 而ONU则是一个士兵&#xff0c;按照OLT的指挥做出相应 而ODN它主要就是提供一个传输通道&#xff0c;主要包括分光器和光纤组成 对于PO…...

华三(HCL)和华为(eNSP)模拟器共存安装手册

接上章叙述&#xff0c;解决同一台PC上同时部署华三(HCL)和华为(eNSP&#xff09;模拟器。原因就是华三HCL 的老版本如v2及以下使用VirtualBox v5版本&#xff0c;可以直接和eNSP兼容Oracle VirtualBox&#xff0c;而其他版本均使用Oracle VirtualBox v6以上的版本&#xff0c;…...

类和对象--中--初始化列表(重要)、隐式类型转化(理解)、最后两个默认成员函数

1.初始化列表 1.1作用&#xff1a; 通过特定的值&#xff0c;来初始化对象。 1.2定义&#xff1a; 初始化列表&#xff0c;就相当于定义对象&#xff08;开空间&#xff09;。不管写不写初始化列表&#xff0c;每个成员变量都会走一遍初始化列表&#xff08;开出对应的空间…...

clickhouse 使用global in 优化 in查询

文章目录 in例子使用global in in例子 SELECT uniq(UserID) FROM distributed_table WHERE CounterID 101500 AND UserID IN (SELECT UserID FROM distributed_table WHERE CounterID 34)对于in 查询来说&#xff0c;本来查询的就是分布式表&#xff0c;假设这个表有100 个…...

macos 14.0 Monoma 修改顶部菜单栏颜色

macos 14.0 设置暗色后顶部菜单栏还维持浅色&#xff0c;与整体不协调。 修改方式如下&#xff1a;...

鸿蒙动画开发07——粒子动画

1、概 述 粒子动画是在一定范围内随机生成的大量粒子产生运动而组成的动画。 动画元素是一个个粒子&#xff0c;这些粒子可以是圆点、图片。我们可以通过对粒子在颜色、透明度、大小、速度、加速度、自旋角度等维度变化做动画&#xff0c;来营造一种氛围感&#xff0c;比如下…...

Matlab 2016b安装教程附安装包下载

软件介绍 MATLAB&#xff08;矩阵实验室&#xff09;是MathWorks公司推出的用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境的商业数学软件。MATLAB具有数值分析、数值和符号计算、工程与科学绘图、控制系统的设计与仿真、数字图像处理、数字信…...

Container image .... already present on machine 故障排除

故障现象&#xff1a; Normal Pulled 12s (x2 over 15s) kubelet Container image “registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1” already present on machine kubectl get pods NAME READY STATUS RESTARTS AGE two-pod 1/2 Error …...

力扣 二叉树的层序遍历-102

二叉树的层序遍历-102 class Solution { public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> res; // 二维数组用来存储每层节点if (root nullptr)return res;queue<TreeNode*> q; // 队列用来进行层序遍历q.push(r…...

Java 平衡二叉树 判断 详解

判断平衡二叉树的详解&#xff08;Java 实现&#xff09; 平衡二叉树的定义&#xff1a; 平衡二叉树&#xff08;Balanced Binary Tree&#xff09;是指一棵二叉树中任意节点的左右子树高度差不超过 1。即&#xff1a; ∣ h e i g h t ( l e f t ) − h e i g h t ( r i g h …...

Java设计模式笔记(一)

Java设计模式笔记&#xff08;一&#xff09; &#xff08;23种设计模式由于篇幅较大分为两篇展示&#xff09; 一、设计模式介绍 1、设计模式的目的 让程序具有更好的&#xff1a; 代码重用性可读性可扩展性可靠性高内聚&#xff0c;低耦合 2、设计模式的七大原则 单一职…...

【人工智能学习之yolov8改进的网络怎么指定规模】

yolov8改进的网络怎么指定规模 在你更换主干网络或者做了其他修改之后&#xff0c;发现模型总是默认使用的n规模&#xff0c;而n规模有可能无法完成任务&#xff0c;怎么办呢&#xff0c;有什么办法指定规模大小呢&#xff1f; WARNING ⚠️ no model scale passed. Assuming …...

网络安全概述

网络安全 物理安全 网络的物理安全是整个网络系统安全的前提。在 校园网工程建设中&#xff0c;由于网络系统属于 弱电工程&#xff0c;耐压值很低。因此&#xff0c;在 网络工程的设计和施工中&#xff0c;必须优先考虑保护人和 网络设备不受电、火灾和雷击的侵害&#xff1…...

[MySQL#2] 库 | 表 | 详解CRUD命令 | 字符集 | 校验规则

目录 一. 库操作 1. 创建数据库 2. 字符集和校验规则 校验规则对数据库的影响 显示创建数据库时对应的命令 3. 修改数据库 4. 数据库删除 备份和恢复 还原 查看连接情况 二. 表操作 1. 创建表&#xff08;定义实例化格式 2. 创建表案例 &#xff08;实例化数据类型…...

【Unity基础】如何查看当前项目使用的渲染管线?

在 Unity 中&#xff0c;你可以通过以下几种方式查看当前项目使用的是哪个渲染管线&#xff1a; 1. 检查 Graphics Settings 打开 Unity 编辑器&#xff0c;进入顶部菜单&#xff1a;Edit → Project Settings → Graphics。在 Graphics Settings 窗口中&#xff0c;找到 Scr…...

什么是域名监控?

域名监控是持续跟踪全球域名系统&#xff08;DNS&#xff09;中变化以发现恶意活动迹象的过程。组织可以对其拥有的域名进行监控&#xff0c;以判断是否有威胁行为者试图入侵其网络。他们还可以对客户的域名使用这种技术以执行类似的检查。 你可以将域名监控比作跟踪与自己实物…...

apache中的Worker 和 Prefork 之间的区别是什么?

文章目录 内存使用稳定性兼容性适用场景 Apache中的Worker和Prefork两种工作模式在内存使用、稳定性以及兼容性等方面存在区别 内存使用 Worker&#xff1a;由于使用线程&#xff0c;内存占用较少。Prefork&#xff1a;每个进程独立运行&#xff0c;内存消耗较大。 稳定性 W…...

解决SSL VPN客户端一直提示无法连接服务器的问题

近期服务器更新VPN后&#xff0c;我的win10电脑一致无法连接到VPN服务器&#xff0c; SSL VPN客户端总是提示无法连接到服务端。网上百度尝试了各种方法后&#xff0c;终于通过以下设置方式解决了问题&#xff1a; 1、首先&#xff0c;在控制面板中打开“网络和共享中心”窗口&…...

网络基础概念

1.网络协议 网络协议是一组标准和规则&#xff0c;用于定义电子设备如何在网络上通信。这些规则涵盖了数据如何格式化&#xff0c;传输&#xff0c;路由以及接收。网络协议确保了不同制造商的设备能够相互理解和交换数据 协议分层 协议也是软件&#xff0c;在设计上为了更好…...

sunshine和moonlight串流网络丢失帧高的问题(局域网)

注&#xff1a;此贴结果仅供参考 场景环境&#xff1a;单身公寓 路由器&#xff1a;2016年的路由器 开始&#xff1a;电脑安装sunshine软件&#xff0c;手机安装moonlight软件开始串流发现网络丢失帧发现巨高 一开始怀疑就是路由器问题&#xff0c;因为是局域网&#xff0c;而…...

远程视频验证如何改变商业安全

如今&#xff0c;商业企业面临着无数的安全挑战。尽管企业的形态和规模各不相同——从餐厅、店面和办公楼到工业地产和购物中心——但诸如入室盗窃、盗窃、破坏和人身攻击等威胁让安全主管时刻保持警惕。 虽然传统的监控摄像头网络帮助组织扩大了其态势感知能力&#xff0c;但…...

CTO 实际上是做什么的?

https://vadimkravcenko.com/shorts/what-cto-does/ 有刪節 本文旨在为软件工程师解密CTO的角色&#xff0c;并为那些渴望担任这一职位的人提供路线图。 “他们是技术团队与公司其他部门之间的桥梁&#xff0c;确保技术支持并推动业务发展。” CTO的角色经常被误解。CTO有时是…...

【软考速通笔记】系统架构设计师④——系统工程基础知识

文章目录 一、前言二、系统工程方法2.1 霍尔的三维结构2.2 切克兰德法2.3 并行工程2.4 综合集成法 三、系统工程生命周期四、系统生命周期方法五、系统性能5.1 计算机的性能指标5.2 路由器的性能指标5.3 交换机的性能指标5.4 网络的性能资料5.5 操作系统的性能指标5.6 数据库的…...

2024赣ctf-web -wp

1.你到底多想要flag??? 首先来解决第一关&#xff1a; 先了解一下stripos&#xff08;&#xff09;&#xff1b; 并且此函数处理数组返回false。而且pre_match同样遇见数组是返回false&#xff08;解释一下正则 i&#xff1a;这是正则表达式的修饰符&#xff0c;代表“不区…...

Android Framework AudioFlinge 面试题及参考答案

目录 请解释什么是 AudioFlinger? AudioFlinger 在 Android 系统中的位置是什么? AudioFlinger 的主要职责有哪些? AudioFlinger 如何管理音频流? 在 AudioFlinger 中,什么是音频会话? 请简述 AudioFlinger 的工作流程。 AudioFlinger 是如何与硬件交互的? 在 A…...

英语知识在线平台:Spring Boot技术应用

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…...