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

k近邻算法K-Nearest Neighbors(KNN)

算法核心

KNN算法的核心思想是“近朱者赤,近墨者黑”。对于一个待分类或预测的样本点,它会查找训练集中与其距离最近的K个样本点(即“最近邻”)。然后根据这K个最近邻的标签信息来对当前样本进行分类或回归。 在分类任务中,通常是根据K个最近邻中出现次数最多的类别来确定待分类样本的类别;在回归任务中,则是根据K个最近邻的目标值的平均值来预测待预测样本的目标值。

 例如在图中:

如果我们以k=3画圆,因为在圆圈内ClassB出现的数量要比ClassA更多,因此我们可以把它归到ClassB

但如果我们以k=6画圆,因为在圆圈内ClassA出现的数量要比ClassB更多,因此我们可以把它归到ClassA

值得注意的是:这里的k是离我们观测点最近的第k个点,而非半径

距离选择

这里的距离可以采用不同的求法,常见的距离度量方式有:

• 欧氏距离:这是最常见的距离度量方式,它计算的是样本点在多维空间中的直线距离。对于两个样本点 x = (x_1, x_2, ..., x_n) 和 y = (y_1, y_2, ..., y_n) ,欧氏距离定义为 \sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2 + ... + (x_n - y_n)^2} 。• 曼哈顿距离:它计算的是样本点在坐标轴方向上的绝对距离之和,即 |x_1 - y_1| + |x_2 - y_2| + ... + |x_n - y_n| 。在某些场景下,比如在城市街区网格中计算两点之间的距离时,曼哈顿距离更符合实际情况。

• 明可夫斯基距离:它是一种更通用的距离度量,欧氏距离和曼哈顿距离都是它的特例。明可夫斯基距离的定义为

 当 p = 2 时,就是欧氏距离;当 p = 1 时,就是曼哈顿距离

 K值的选择

K值的选择对KNN算法的性能影响很大。 如果K值选得太小,算法会过于敏感,容易受到噪声数据的影响。例如,当K = 1时,一个噪声点可能会直接影响到分类或回归的结果。如果K值选得太大,算法又会过于“平滑”,可能会将不同类别的样本混合在一起。比如在一个复杂的分类问题中,如果K值过大,可能会导致不同类别之间的边界模糊。 通常,k值选择时一般选择的是比较小的值,像是3、5、7、9这样的个位单数

kd树优化算法

kd树(k-d tree,k维树)是用于优化KNN算法中最近邻搜索过程的一种数据结构。

kd树的作用

1. 加速最近邻搜索

• 在KNN算法中,最耗时的部分是计算待预测点与训练集中所有点之间的距离,以找到最近的K个邻居。当训练集规模很大时,这种暴力搜索方法效率非常低。

• kd树通过将训练数据组织成一种树形结构,能够快速定位到与目标点最近的区域,从而减少需要计算距离的点的数量,大大加快最近邻搜索的速度。

2. 空间划分

• kd树是一种二叉树结构,它通过递归地将数据空间划分为超矩形区域。在每次划分时,选择一个维度(通常是方差最大的维度)作为划分轴,将数据点按照该维度的中值分为两部分,分别存储在树的左子树和右子树中。通过这种方式,kd树将整个数据空间划分为多个小区域,每个区域对应树中的一个节点。

kd树的构建过程

1. 选择划分维度

• 在构建kd树时,需要选择一个维度作为划分轴。通常会选择方差最大的维度,因为方差大的维度意味着数据在这个方向上的分布更分散,划分效果更好。

2. 选择划分点

• 在选定的维度上,选择该维度的中值作为划分点。将小于中值的点分配到左子树,大于中值的点分配到右子树。

3. 递归划分

• 对左右子树重复上述过程,每次选择不同的维度进行划分,直到每个区域只包含一个数据点,或者满足其他停止条件。

kd树在KNN中的使用

1. 搜索最近邻

• 当需要找到某个目标点的最近邻时,kd树会从根节点开始,沿着树的结构向下搜索。根据目标点在当前划分维度上的值,决定是进入左子树还是右子树。通过这种方式,可以快速定位到目标点所在的区域。

2. 回溯查找

• 单纯沿着树向下搜索可能无法找到真正的最近邻,因为可能存在其他区域的点距离目标点更近。因此,在搜索到叶子节点后,需要进行回溯。在回溯过程中,检查每个节点的划分超平面与目标点的距离,如果这个距离小于当前已知的最近距离,就需要检查另一侧子树,以确保找到真正的最近邻。

示例场景

假设我们有一个二维空间中的数据点集合,目标是找到某个目标点\(P\)的最近邻点。我们将通过以下步骤来展示如何利用空间划分和距离关系来优化搜索过程。

1.数据点和目标点

假设我们有以下数据点:

• \(A(1,1)\)

• \(B(2,2)\)

• \(C(10,10)\)

• \(D(11,11)\)

• \(E(12,12)\)

目标点\(P\)的坐标为\((0,0)\)。

2.构建空间划分结构(如kd树)

为了优化搜索过程,我们首先构建一个kd树。假设我们按照以下步骤构建kd树:

1. 选择第一个维度(x轴)作为划分轴,找到中值点\(B(2,2)\)。

2. 将数据点分为两部分:

• 左子树:\(A(1,1)\)

• 右子树:\(C(10,10)\),\(D(11,11)\),\(E(12,12)\)

3. 对右子树,选择第二个维度(y轴)作为划分轴,找到中值点\(D(11,11)\)。

4. 继续划分,直到每个区域只包含一个点。

构建的kd树如下:

        B(2, 2)/ \A(1, 1) D(11, 11)/ \C(10, 10) E(12, 12)

3.利用距离关系跳过某些点

现在,我们从目标点\(P(0,0)\)开始搜索其最近邻点。

第一步:从根节点开始

• 从根节点\(B(2,2)\)开始,计算\(P\)与\(B\)的距离:

 第二步:选择子树

• 由于\(P\)的 x 坐标小于\(B\)的 x 坐标,我们进入左子树,到达点\(A(1,1)\)。

• 计算\(P\)与\(A\)的距离:

 • 目前,\(A\)是最近邻点,最近距离为\(\sqrt{2}\)。

第三步:回溯并跳过某些点

• 回溯到根节点\(B\)。检查右子树是否可能包含更近的点。

• 计算目标点\(P\)到右子树划分超平面(x=2)的距离:

 • 由于\(2>\sqrt{2}\),这意味着右子树中任何点到\(P\)的距离都不会小于当前的最近距离\(\sqrt{2}\)。因此,我们可以跳过右子树中的所有点(\(C\),\(D\),\(E\)),而不需要进一步计算它们与\(P\)的距离。

4.优化后的搜索过程

通过上述步骤,我们利用了空间划分(kd树)和距离关系(跳过距离远的点)来优化搜索过程。最终,我们确定\(A(1,1)\)是目标点\(P(0,0)\)的最近邻点,而无需计算\(P\)与右子树中所有点的距离。

5.复杂度分析

• 暴力搜索:计算目标点与所有点的距离,复杂度为\(O(DN)\)。

• 优化后的搜索:通过kd树的空间划分和跳过无关区域,复杂度降低到\(O(DN\log N)\)。这是因为:

• 构建kd树的复杂度为\(O(N\log N)\)。

• 搜索过程通过递归和回溯,每次只需要检查部分点,而不是所有点。

应用实例

以下是一个使用Python和`scikit-learn`库实现的KNN算法对鸢尾花(Iris)数据集进行分类的完整代码示例。鸢尾花数据集是机器学习中常用的入门数据集,包含150个样本,每个样本有4个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度),分为3个类别。
 

# 导入必要的库
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score# 加载鸢尾花数据集
iris = load_iris()
X = iris.data  # 特征数据
y = iris.target  # 标签数据# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 数据标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)# 创建KNN分类器
k = 3  # 选择K值
knn = KNeighborsClassifier(n_neighbors=k)# 训练模型
knn.fit(X_train, y_train)# 进行预测
y_pred = knn.predict(X_test)# 评估模型
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred))
print("\n分类报告:")
print(classification_report(y_test, y_pred))
print("\n准确率:")
print(accuracy_score(y_test, y_pred))# 输出测试集的真实标签和预测标签
print("\n测试集的真实标签:", y_test)
print("测试集的预测标签:", y_pred)

代码说明


1. 加载数据集

• 使用`load_iris()`函数加载鸢尾花数据集。

• 数据集包含150个样本,每个样本有4个特征,分为3个类别(0、1、2)。


2. 划分训练集和测试集

• 使用`train_test_split()`函数将数据集划分为训练集和测试集,其中测试集占30%。

• 设置`random_state`参数以确保结果的可重复性。


3. 数据标准化

• 使用`StandardScaler`对特征数据进行标准化处理,使每个特征的均值为0,标准差为1。这有助于提高KNN算法的性能。


4. 创建KNN分类器

• 使用`KNeighborsClassifier`创建KNN分类器,设置`n_neighbors=k`,其中`k`是最近邻的数量。


5. 训练模型

• 使用`fit()`方法训练模型。


6. 进行预测

• 使用`predict()`方法对测试集进行预测。


7. 评估模型

• 使用`confusion_matrix`、`classification_report`和`accuracy_score`评估模型的性能。

• 输出混淆矩阵、分类报告和准确率。

 注意事项

1. K值的选择

• K值的选择对KNN算法的性能有很大影响。可以通过交叉验证等方法来选择最优的K值。

2. 数据标准化

• 对于KNN算法,数据标准化是非常重要的,因为KNN依赖于距离计算,而不同特征的量纲可能不同。

3. 数据集划分

• 数据集的划分方式可能会影响模型的性能,可以通过多次划分或使用交叉验证来评估模型的稳定性。

 

 

相关文章:

k近邻算法K-Nearest Neighbors(KNN)

算法核心 KNN算法的核心思想是“近朱者赤,近墨者黑”。对于一个待分类或预测的样本点,它会查找训练集中与其距离最近的K个样本点(即“最近邻”)。然后根据这K个最近邻的标签信息来对当前样本进行分类或回归。 在分类任务中&#…...

TextGrad:案例

原文:Yuksekgonul, M., Bianchi, F., Boen, J. et al. Optimizing generative AI by backpropagating language model feedback. Nature 639, 609–616 (2025). https://doi.org/10.1038/s41586-025-08661-4 目录 Solution optimizationPrompt optimization for rea…...

位运算算法:解锁高效编程的钥匙

常见位运算场景: 5.消失的两个数字 1.判定字符是否唯一 解法一:使用HashSet 借助 HashSet 存储字符。HashSet 不允许有重复元素,在遍历字符串时尝试添加字符,若添加失败就表明有重复字符,返回 false;若遍…...

Burp Suite抓包实战:SQL注入漏洞挖掘

本文系统解析如何利用Burp Suite专业版开展SQL注入漏洞的定向挖掘,涵盖手动探测、自动化利用、WAF绕过等进阶技巧。通过电商、金融等行业的真实渗透案例,详解从流量拦截到漏洞利用的全链路方法论,实现单日最高挖掘23个高危注入点的实战成果。…...

使用HTML5和CSS3实现3D旋转相册效果

使用HTML5和CSS3实现3D旋转相册效果 这里写目录标题 使用HTML5和CSS3实现3D旋转相册效果项目介绍技术栈核心功能实现思路1. HTML结构2. CSS样式解析2.1 基础样式设置2.2 3D效果核心样式2.3 卡片样式 3. JavaScript交互实现3.1 旋转控制3.2 自动播放功能 技术要点总结项目亮点总…...

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案

✅ MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案 前言一、问题现象二、原因分析1. 使用了 strictInsertFill/strictUpdateFill 导致更新失效2. 实体类注解配置错误3. MetaObjectHandler 未生效4. 使用自定义 SQL 导致自动填充失效5. 字段类型不匹配 三、…...

MySQL Binlog

MySQL Binlog MySQL Binlog 介绍查看 Binlog 位点开启和关闭 BinlogBinlog 的作用Binlog 记录的格式Binlog 的解析Binlog 加密Binlog 的清理根据Binlog文件名删除根据时间删除 Binlog 保留参数Binlog 的落盘Binlog 相关参数 MySQL主从复制:https://blog.csdn.net/a…...

SQL中累计求和与滑动求和函数sum() over()的用法

[TOC](SQL中累计求和与滑动求和函数sum() over()的用法) 一、窗口函数功能简介 sum(c) over(partition by a order by b) 按照一定规则汇总c的值,具体规则为以a分组,每组内按照b进行排序,汇总第一行至当前行的c的加和值。 sum()&#xff1a…...

第十四届MathorCup高校数学建模挑战赛-C题:基于 LSTM-ARIMA 和整数规划的货量预测与人员排班模型

目录 摘要 一、 问题重述 1.1 背景知识 1.2 问题描述 二、 问题分析 2.1 对问题一的分析 2.2 对问题二的分析 2.3 对问题三的分析 2.4 对问题四的分析 三、 模型假设 四、 符号说明 五、 问题一模型的建立与求解 5.1 数据预处理 5.2 基于 LSTM 的日货量预测模型 5.3 日货量预测…...

3d pose 指标和数据集

目录 3D姿态估计、3维重建指标: 数据集 EHF数据集 SMPL-X 3D姿态估计、3维重建指标: MVE、PMVE 和 p-MPJPE 都是用于评估3D姿态估计、三维重建等任务中预测结果与真实数据之间误差的指标。 MVE (Mean Vertex Error):是指模型重建过程中每个顶点的预测位置与真实位置之间…...

【MySQL】InnoDB中的MVCC

目录 1、背景2、设置事务的隔离级别3、MVCC【1】版本链【2】ReadView【3】ReadView的生成时机 4、总结 1、背景 MVCC叫做多版本并发控制,通过维护数据的多个历史版本实现读写分离:读操作访问快照版本,无需加锁,避免阻塞写操作&am…...

从DeepSeek到Qwen,AI大模型的移植与交互实战指南

在不久前发布的《技术实战 | OK3588-C开发板上部署DeepSeek-R1大模型的完整指南》一文中,小编为大家介绍了DeepSeek-R1在飞凌嵌入式OK3588-C开发板上的移植部署、效果展示以及性能评测,本篇文章不仅将继续为大家带来关于DeepSeek-R1的干货知识&#xff0…...

蓝桥杯Java组国赛G题(01背包问题的变形)

题目 解题思路 首先,解决此题的前置知识是需要掌握普通的 01 背包问题。当然,这题肯定不可能这么简单。题目相对于 01 背包来说,唯一的区别在于小蓝可以使用 1 次魔法。我们只需要多加一维状态记录是否使用了魔法即可。下面考虑动态规划&…...

QCW模式:准连续波驱动在VCSEL激光器中的技术解析与应用价值

点击下面图片,为您提供全新的嵌入式学习路线 文章目录 一、QCW模式的定义与工作原理二、QCW模式的技术优势三、典型应用场景分析四、PLD850-5mW-MV的QCW性能亮点五、总结 一、QCW模式的定义与工作原理 QCW(Quasi-Continuous Wave)&#xf…...

C++List模拟实现|细节|难点|易错点|全面解析|类型转换|

目录 1.模拟代码全部 2.四大块代码理解 1.最底层&#xff1a;ListNode部分 2.第二层&#xff1a;ListIterator部分 3.第三层&#xff1a;ReserveListIterator部分 4最终层&#xff1a;List 1.模拟代码全部 using namespace std; template<class T> struct ListNode …...

【安全】记录钓鱼邮件中木马病毒的分析溯源

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 1、收到一封邮件&#xff0c;与以往钓鱼网站形式不同&#xff0c;这次是给了一个exe可执行文件。毫无疑问&#xff0c;肯定是植入木马用的。 下载后&am…...

三数之和

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例 1&…...

AI 与 IT 从业者:共舞还是取代?

在当今数字化浪潮的汹涌冲击下&#xff0c;AI 的出现犹如一颗划破夜空的璀璨星辰&#xff0c;照亮了科技发展的新方向&#xff0c;也引发了无数关于未来职业走向的讨论。尤其是对于 IT 从业者而言&#xff0c;仿佛站在了一个十字路口&#xff0c;前方是机遇与挑战交织的未知旅程…...

【计算机网络中的奈氏准则与香农定理】

文章目录 一、前言二、奈氏准则1. 概念2. 奈氏准则公式3. 奈氏准则的意义 三、香农定理1. 概念2. 香农定理公式3. 香农定理的意义 四、奈氏准则与香农定理的对比五、应用示例1. 奈氏准则示例2. 香农定理示例 六、总结 一、前言 在计算机网络中&#xff0c;数据的传输速率与信道…...

湖南(源点咨询)市场调研 商业综合体定位调研分享(上篇)

​ 该项目位于某新一线城市的城市副中心区域&#xff0c;系一个正在发展中的中央居住区&#xff0c;项目本身是一个涵盖社区综合服务中心、商业、文体活动中心、卫生服务、社区养老等多功能复合的公共配套项目&#xff0c;本次调研主要针对其商业&#xff08;及其他可商用的&a…...

鸿蒙ArkTs/c++/RepalcePioneer/base64.us之Base64编码解码的是非

狗血现象&#xff1a; 同一字符串原文使用 1、RepalcePioneer&#xff08;一款Windows平台的字符串工具&#xff09; 2、鸿蒙ArkTs自带base64编码方法 3、https://base64.us&#xff08;一款在线base64工具&#xff09; 来编码&#xff0c;得到编码串不一样&#xff0c;后…...

《Linux运维实战:Ubuntu 22.04使用pam_faillock实现登录失败处理策略》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;Linux运维实战总结 一、背景信息 在ubuntu 22.04中&#xff0c;pam_tally2模块已被弃用&#xff0c;取而代之的是pam_faillock模块。因此&#xf…...

如何让DeepSeek-R1在内网稳定运行并实现随时随地远程在线调用

前言&#xff1a;最近&#xff0c;国产AI圈里的新星——Deepseek&#xff0c;简直是火到不行。但是&#xff0c;你是不是已经对那些千篇一律的手机APP和网页版体验感到腻味了&#xff1f;别急&#xff0c;今天就带你解锁一个超炫的操作&#xff1a;在你的Windows电脑上本地部署…...

2.1-WAF\CDN\OSS\反向代理\负载均衡

WAF&#xff1a;就是网站应用防火墙&#xff0c;有硬件类、软件类、云WAF&#xff1b; 还有网站内置的WAF&#xff0c;内置的WAF就是直接嵌在代码中的安全防护代码 硬件类&#xff1a;Imperva、天清WAG 软件&#xff1a;安全狗、D盾、云锁 云&#xff1a;阿里云盾、腾讯云WA…...

matplotlib学习

开始学习Python数据可视化 一.基础绘图函数 1.创建画布与坐标轴 import matplotlib.pyplot as plt# 创建画布和坐标轴 fig, ax plt.subplots() # 默认1行1列&#xff0c;返回Figure对象和Axes对象 2.绘制线图 x [1, 2, 3, 4] y [10, 20, 15, 25]# 绘制线图 ax.plot(x,…...

Go 语言标准库中math模块详细功能介绍与示例

Go语言的 math 模块提供了丰富的数学函数和常量&#xff0c;涵盖基本运算、三角函数、指数、对数、取整、特殊值等。以下是核心方法及示例说明&#xff1a; 1. 基本数学运算 math.Abs 取绝对值&#xff08;仅 float64&#xff09;。 fmt.Println(math.Abs(-3.5)) // 输出:…...

RabbitMQ三种队列深度解析:区别、场景与未来趋势

嗯&#xff0c;用户让我分析RabbitMQ三种队列的区别、应用场景、技术原理和未来趋势&#xff0c;还要写一篇三千字的文章。首先&#xff0c;我需要回顾一下搜索结果&#xff0c;看看有哪些资料可用。 根据搜索结果&#xff0c;RabbitMQ的三种队列是经典队列&#xff08;Classi…...

15. 三数之和

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例 1&…...

0328-内存图2

是否正确待定&#xff1a; Perso类 package com.qc.内存图2;public class Perso {public int age;public String name;public static int flag;public void m1() {}public static void m2() {}Overridepublic String toString() {return "Perso [age" age "…...

最接近的三数之和

给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数&#xff0c;使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1&#xff1a; 输入&#xff1a;nums [-1,2,1,-4], target 1 输出&#xff1a;…...

d2025328

一、sql-判断三角形 610. 判断三角形 - 力扣&#xff08;LeetCode&#xff09; 用一下if加上判断条件 select x,y,z,if(xy > z and xz > y and yz > x and x-y < z and x-z < y and y-z < x,Yes,No) as triangle from Triangle 二、按照分类统计薪水 190…...

初识MySQl · 内置函数

目录 前言&#xff1a; 日期类函数 字符串函数 数学类函数 其他函数 前言&#xff1a; 在前文的学习我们已经简单了解了部分函数&#xff0c;比如count()函数什么的&#xff0c;今天我们主要是笼统的学习一下MySQL中的函数&#xff0c;仅仅从使用的角度来学习&#xff0c…...

(C语言)指针运算 习题练习1.2(压轴难题)

在上一张已经练习了三道习题&#xff0c;小试牛刀了&#xff0c;那么在本章在来几题&#xff0c;练练手。&#xff08;习题三是压轴难题&#xff09; 习题一 int main() {int aa[2][5] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int* ptr1 (int*)(&aa 1);int* ptr2 (int*)…...

视频AI赋能水利行业生态治理,水电站大坝漂浮物实时监测与智能预警方案

水电站大坝周边水域垃圾漂浮物不仅影响水质&#xff0c;还可能对大坝设施运行、水生态环境造成威胁。传统依靠人工巡检的方式效率低、存在监测盲区&#xff0c;难以实时全面地掌握漂浮物情况。借助EasyCVR视频汇聚平台与TSINGSEE青犀AI算法中台构建智能化监测方案&#xff0c;能…...

方阵幂次(矩阵快速幂)

#include <bits/stdc.h> using namespace std;int n; vector<vector<int>> fuc(vector<vector<int>> a,vector<vector<int>> b){ // 矩阵乘法函数vector<vector<int>> f(n,vector<int>(n));for(int i0;i<n;i){…...

【Uni-App】嵌入悬浮球全局组件的详细教程和防踩坑点

一、前言 近期接到一个业务需求是为为h5页面嵌入悬浮球&#xff0c;而且还得是全局化&#xff08;这样所有页面就可以看见了&#xff09;&#xff0c;在开发的过程中也遇到一些坑&#xff0c;在此和大家一起学习、讨论。 二、准备工作 下载悬浮球组件代码 悬浮球 - DCloud …...

第十六章 图

1.为什么要有图 前面学了线性表和树 线性表局限于一个直接前驱和一个直接后继的关系 树也只能有一个直接前驱也就是父节点 当我们需要表示多对多的关系时,这里我们就用到了图 import java.util.ArrayList; import java.util.Arrays;public class Graph {private int[][]edg…...

Ubuntu 系统无法远程连接?完整排查指南与解决方案

远程连接 Ubuntu 系统是服务器管理和开发中的常见需求,但有时会遇到无法连接的问题。本文整理常见原因及解决方法,涵盖 SSH 服务配置、防火墙规则、网络设置等关键环节,助您快速定位问题。 检查 SSH 服务状态 SSH(Secure Shell) 是远程连接的核心服务。若未安装或未运行,…...

将网络安全和第三方风险管理与业务目标相结合

在网络安全风险领域&#xff0c;我们经常遇到与企业语言不通的问题。这可能导致网络安全风险管理计划得不到支持。当发现网络安全风险时&#xff0c;困难在于以符合组织语言和目标的方式来表达它。 第三方风险属于另一个灰色地带。在组织内部&#xff0c;许多利益相关者&#…...

加油站小程序实战教程02宫格导航

目录 引言1 应用创建2 搭建页面布局3 大模型生成图标最终效果 引言 在《加油站小程序实战教程01》中我们详细介绍了站点基本信息数据维护功能的搭建。有了数据之后就需要考虑小程序展示部分该如何搭建&#xff0c;本篇我们介绍一下应用的创建、页面布局以及数据绑定的过程。 …...

es6的箭头函数与普通函数的区别,箭头函数的this通常指向哪里,箭头函数可以用作构造函数吗?

ES6 的箭头函数与普通函数的区别 箭头函数&#xff08;Arrow Function&#xff09;和普通函数有一些重要的区别&#xff0c;主要体现在以下几个方面&#xff1a; 1. 语法简洁性 - 箭头函数的语法更简洁&#xff0c;不需要使用 function 关键字。 - 普通函数需要使用 functi…...

工作记录 2017-03-10

工作记录 2017-03-10 序号 工作 相关人员 1 修改邮件上的问题。 更新RD服务器。 郝 更新的问题 1、修改了payment detail和patient insurance的health plan的输入方式。 2、new payment detail时&#xff0c;增加了allowable的处理。 3、选择payer的窗体&#xff0c;增…...

如何一键安装所有Python项目的依赖!

在开发项目时&#xff0c;常常需要在多个环境中安装各种依赖。对开发者来说&#xff0c;每次手动一个个安装这些依赖是不是很麻烦&#xff1f;&#x1f605; 其实有个超简单的办法&#xff01;只需要一个脚本&#xff0c;就能快速解决问题&#xff01;&#x1f4a1; 这就是我们…...

linux的基础命令

目录 1. 文件和目录操作 ls ls -l ls -a pwd touch haha.txt mkdir 113 cd . 和 cd .. cd ~ echo "hello world" >> test.c cat test.txt mv rm 2. 压缩与解压 zip test.zip test.c unzip test.zip -d /root/113 tar czf lesson4.tgz less…...

Redis数据持久化机制 + Go语言读写Redis各种类型值

Redis&#xff08;Remote Dictionary Server&#xff09;作为高性能的键值存储系统&#xff0c;凭借其丰富的数据类型和原子性操作&#xff0c;成为现代分布式系统中不可或缺的组件。 1、Redis支持的数据类型 Redis支持的数据类型可归纳为以下9类&#xff1a; String&#x…...

HackMyVM-Demons

目录 信息搜集漏洞利用提权 信息搜集 主机发现 ┌──(kali㉿kali)-[~] └─$ nmap -sn 192.168.21.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-03-27 23:38 EDT Nmap scan report for 192.168.21.1 (192.168.21.1) Host is up (0.0016s latency). MAC Add…...

Python Random 模块使用完全指南

一、模块基础与核心功能 1. 模块导入与初始化 所有随机操作需先导入模块&#xff1a; import random # 标准导入方式 import random as rd # 别名导入&#xff08;推荐&#xff09;核心原理&#xff1a;默认基于梅森旋转算法生成伪随机数&#xff0c;可通过random.seed()设…...

前端技术有哪些

一、基础技术 HTML 页面结构标记语言&#xff0c;最新版本为 HTML5。 CSS 样式设计语言&#xff0c;扩展技术包括&#xff1a; CSS 预处理器&#xff1a;Sass、Less、Stylus。CSS 框架&#xff1a;Bootstrap、Tailwind CSS、Bulma。原子化 CSS&#xff1a;Windi CSS、UnoCSS。…...

Python二分查找【清晰易懂】

1. 二分查找是什么&#xff1f; 想象你在玩“猜数字”游戏&#xff1a; 对方心里想一个 1~100 的数字&#xff0c;你每次猜一个数&#xff0c;对方会告诉你是“大了”还是“小了”。 最快的方法&#xff1a;每次都猜中间的数&#xff01;比如第一次猜50&#xff0c;如果大了&…...

【数据分享】基于联合国城市化程度框架的全球城市边界数据集(免费获取/Shp格式)

在全球城市化进程不断加快的今天&#xff0c;如何精准定义和测量“城市”成为关键问题。不同国家和机构采用不同的标准&#xff0c;导致全球城市化水平的统计结果存在较大差异。同时&#xff0c;由于数据来源分散、标准不统一&#xff0c;获取一套完整、可比的全球城市边界数据…...