[Computer Vision]实验二:图像特征点提取
目录
一、实验内容
二、实验过程及结果
2.1 Harris角点检测
2.2 SIFT算法
三、实验小结
一、实验内容
- 采用Harris与SIFT分别提取特征点及对应的描述子,对比两者的区别(特征点数量、分布、描述子维度、图像变化对二者的影响等)
- 利用特征匹配算法实现两幅相近图像的特征匹配,打印匹配点数量级结果
二、实验过程及结果
2.1 Harris角点检测
以下是Harris.py文件
from PIL import Image
from pylab import *
import matplotlib.pyplot as plt
from scipy.ndimage import filters
def compute_harris_response(im,sigma=3):imx = zeros(im.shape)filters.gaussian_filter(im, (sigma,sigma), (0,1), imx)imy = zeros(im.shape)filters.gaussian_filter(im, (sigma,sigma), (1,0), imy)Wxx = filters.gaussian_filter(imx*imx,sigma)Wxy = filters.gaussian_filter(imx*imy,sigma)Wyy = filters.gaussian_filter(imy*imy,sigma)Wdet = Wxx*Wyy - Wxy**2Wtr = Wxx + Wyyreturn Wdet / Wtrdef get_harris_points(harrisim, min_dist=10, threshold=0.1):corner_threshold = harrisim.max() * thresholdharrisim_t = (harrisim > corner_threshold) * 1coords = array(harrisim_t.nonzero()).Tcandidate_values = [harrisim[c[0], c[1]] for c in coords]index = argsort(candidate_values)allowed_locations = zeros(harrisim.shape)allowed_locations[min_dist:-min_dist, min_dist:-min_dist] = 1filtered_coords = []for i in index:if allowed_locations[coords[i, 0], coords[i, 1]] == 1:filtered_coords.append(coords[i])allowed_locations[(coords[i, 0] - min_dist):(coords[i, 0] + min_dist),(coords[i, 1] - min_dist): (coords[i, 1] + min_dist)] = 0return filtered_coordsdef plot_harris_points(image, filtered_coords):figure()gray()imshow(image)plot([p[1] for p in filtered_coords], [p[0] for p in filtered_coords], '*')show()def get_descriptors(image,filtered_coords,wid=5):desc = []for coords in filtered_coords:patch = image[coords[0]-wid:coords[0]+wid+1,coords[1]-wid:coords[1]+wid+1].flatten()desc.append(patch)return descdef match(desc1,desc2,threshold=0.5):n = len(desc1[0])d = -ones((len(desc1),len(desc2)))for i in range(len(desc1)):for j in range(len(desc2)):d1 = (desc1[i] - mean(desc1[i])) / std(desc1[i])d2 = (desc2[j] - mean(desc2[j])) / std(desc2[j])ncc_value = sum(d1*d2) / (n-1) if ncc_value > threshold:d[i,j] = ncc_value ndx = argsort(-d)matchscores = ndx[:,0]return matchscoresdef match_twosided(desc1,desc2,threshold=0.5):matches_12 = match(desc1,desc2,threshold)matches_21 = match(desc2,desc1,threshold)ndx_12 = where(matches_12 >= 0)[0]for n in ndx_12:if matches_21[matches_12[n]] != n:matches_12[n] = -1 return matches_12def appendimages(im1,im2):rows1 = im1.shape[0] rows2 = im2.shape[0]if rows1 < rows2:im1 = concatenate((im1,zeros((rows2-rows1,im1.shape[1]))),axis=0)elif rows1 > rows2:im2 = concatenate((im2,zeros((rows1-rows2,im2.shape[1]))),axis=0)return concatenate((im1,im2), axis=1)def plot_matches(im1,im2,locs1,locs2,matchscores,show_below=True):im3 = appendimages(im1,im2)if show_below:im3 = vstack((im3,im3)) imshow(im3)cols1 = im1.shape[1]for i,m in enumerate(matchscores):if m>0:plot([locs1[i][1],locs2[m][1]+cols1],[locs1[i][0],locs2[m][0]],'c')
axis('off')
以下是test.py文件
from pylab import *
from PIL import Image
import harris
import sift
import cv2
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)def harris_points(im):harrisim = harris.compute_harris_response(im)harrisim1 = 255 - harrisimfigure()gray()suptitle("Harris")subplot(2,3,1)title("test picture")imshow(im)subplot(2,3,2)title("harris response")imshow(harrisim1)print (harrisim1.shape)threshold1 = 0.01threshold2 = 0.05threshold3 = 0.1filtered_coord1 = harris.get_harris_points(harrisim, 6, threshold1)filtered_coord2 = harris.get_harris_points(harrisim, 6, threshold2)filtered_coord3 = harris.get_harris_points(harrisim, 6, threshold3)print (im.shape)subplot(2, 3, 4)title("thres=0.01")imshow(im)plot([p[1] for p in filtered_coord1], [p[0] for p in filtered_coord1], '+c')subplot(2, 3, 5)title("thres=0.05")imshow(im)plot([p[1] for p in filtered_coord2], [p[0] for p in filtered_coord2], '+c')subplot(2, 3, 6)title("thres=0.1")imshow(im)plot([p[1] for p in filtered_coord3], [p[0] for p in filtered_coord3], '+c')axis('off')axis('equal')show() def harris_match(im1,im2,wid):harrisim1=harris.compute_harris_response(im1,5)filtered_coords1=harris.get_harris_points(harrisim1,wid+1)d1=harris.get_descriptors(im1,filtered_coords1,wid)harrisim2=harris.compute_harris_response(im2,5)filtered_coords2=harris.get_harris_points(harrisim2,wid+1)d2=harris.get_descriptors(im2,filtered_coords2,wid)print("starting harris matching")matches=harris.match_twosided(d1,d2)figure()gray()harris.plot_matches(im1,im2,filtered_coords1,filtered_coords2,matches)show()
if __name__ == '__main__':im = array(Image.open('D:\Computer vision\School picture\school1.jpg').convert('L'))im1 = array(Image.open('D:\Computer vision\School picture\school1.jpg').convert('L'))im2 = array(Image.open('D:\Computer vision\School picture\school11.jpg').convert('L'))wid=5harris_points(im)harris_match(im1,im2,wid)
实验结果如下所示:
(1)绘制角点
如图1所示,左上角图片为实验使用的灰度图像,第一行第二幅图代表使用Harris角点检测器的Harris响应函数,第二行三幅图分别为使用阈值为0.01检测出的角点图像,使用阈值为0.05检测出的角点图像,使用阈值为0.1检测出的角点图像,通过对比可以发现,使用的阈值越小,检测出的角点数量越多,使用的阈值越大,检测出的角点数量越少。当使用其他测试图像时,运行后的结果如图2、图3所示。对比图2、图3可以看到,当图像放大后,原来能检测到的角点就变成边线了,就检测不到了(对比图2、图3的红色标记框)这是Harris角点检测最大的缺陷,Harris角点检测不具有尺度不变性。



(2)图像的特征匹配
如图4所示,将归一化的互相关矩阵应用于Harris角点周围图像块,来寻找匹配对应点,图中以关键点为中心的邻域的大小,即descriptor描述符的窗口宽度wid=5,对于每一个关键点坐标 coords,都会提取以该点为中心、宽度为 wid 的邻域作为特征描述符。最后,所有的描述符被添加到一个列表 desc 中并返回。当修改窗口宽度wid=8时,结果如图5所示。当使用其他两幅相似的匹配图像时,结果如图6所示。当使用两幅内容不相似的图像时结果如图7所示。




2.2 SIFT算法
以下是sift.py文件
import cv2
import numpy as np
import matplotlib.pyplot as pltdef sift_compute(img1,img2):sift = cv2.SIFT_create()kp1, des1 = sift.detectAndCompute(img1, None)kp2, des2 = sift.detectAndCompute(img2, None)FLANN_INDEX_KDTREE = 1index_params = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)search_params = dict(checks=50)flann = cv2.FlannBasedMatcher(index_params, search_params)matches = flann.knnMatch(des1, des2, k=2)goodMatch = []for m, n in matches:if m.distance < 0.75*n.distance:goodMatch.append(m)goodMatch = np.expand_dims(goodMatch, 1)print("匹配点数量级结果: " + str(len(goodMatch)))#print(goodMatch[:50])img_out = cv2.drawMatchesKnn(img1, kp1, img2, kp2, goodMatch, None, flags=2)img_out_rgb = cv2.cvtColor(img_out, cv2.COLOR_BGR2RGB)plt.figure()plt.imshow(img_out_rgb)plt.show()
以下是test.py文件
def sift_process(img):gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)sift = cv2.SIFT_create()kp,des=sift.detectAndCompute(gray,None)cv2.drawKeypoints(img,kp,img,flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)plt.figure(figsize=(8,6),dpi=100)plt.imshow(img[:,:,::-1]),plt.title('sift检测描述子',fontproperties=font)plt.xticks([]), plt.yticks([])plt.show()def sift_match(img1,img2):sift.sift_compute(img1,img2)if __name__ == '__main__':img = cv2.imread('School picture/school1.jpg')img1 = cv2.imread('D:/Computer vision/School picture/school1.jpg', cv2.IMREAD_GRAYSCALE)img2 = cv2.imread('D:/Computer vision/School picture/school11.jpg', cv2.IMREAD_GRAYSCALE)sift_process(img)sift_match(img1,img2)
实验结果如下所示:
(1)绘制描述子
图8为通过opencv使用SIFT算法检测绘制描述子的结果,结果图中显示描述子的方向、尺度信息。当使用其他测试图像时,运行后的结果如图9、图10所示,对比Harris检测,SIFT特征提取具有一定的鲁棒性,即使在图像发生较大变化的情况下,仍然能够找到相似的特征点并生成相应的描述子(对比图2、图3的红色标记框)。



(2)图像的特征匹配
如图11所示,使用OpenCV库中的SIFT算法来检测和计算图像的特征点和描述符,然后使用FLANN匹配器进行特征点匹配。最后将匹配结果绘制在一幅图像上并显示出来。当使用其他两幅相似的匹配图像时,结果如图12所示。当使用两幅不相似的图像时,结果如图13所示。当如果第一个匹配的距离小于第二个匹配距离的0.75倍,即(m.distance < 0.75*n.distance),匹配结果良好,当匹配距离的倍数过大或过小,会导致匹配结果较差(如图14、15)





三、实验小结
Harris角点检测产生的特征点为角点的位置信息,SIDT特征提取为每个特征点生成描述子,包括特征点的方向、尺度等信息。实验中发现,当图像发生缩放、亮度等变换时,Harris角点检测可能会丢失一些角点或产生新的角点,SIFT特征提取具有一定的鲁棒性。
相关文章:
[Computer Vision]实验二:图像特征点提取
目录 一、实验内容 二、实验过程及结果 2.1 Harris角点检测 2.2 SIFT算法 三、实验小结 一、实验内容 采用Harris与SIFT分别提取特征点及对应的描述子,对比两者的区别(特征点数量、分布、描述子维度、图像变化对二者的影响等)利用特征匹…...
在做题中学习(82):最小覆盖子串
解法:同向双指针——>滑动窗口 思路:题目要求找到s里包含t所有字符的最小子串,这就需要记录在s中每次查找并扩大范围时所包含进去的字符种类是否和t的相同,并且:题目提示t中会有重复字符,因此不能简单认…...
< OS 有关> BaiduPCS-Go 程序的 菜单脚本 Script: BaiduPCS-Go.Menu.sh (bdgo.sh)
目标: 使用 日本阿里云的 VPM 传输文件。 暂时方案: 使用 主机JPN 下载 https://huggingface.co/ 上模型从 JPN 放到 度狗上在家里从狗度下载 为了减少编程,尽量使用现在软件 ,就找到 GitHub - qjfoidnh/BaiduPCS-Go: iikira…...
redis缓存和springboot缓存包冲突怎么办
如果Redis缓存与Spring Boot缓存包发生冲突,可以采取以下几种解决方案: 排除Spring Boot缓存包:在pom.xml文件中排除Spring Boot的缓存依赖,以避免与Redis缓存冲突。例如: <dependency><groupId>org.spr…...
云计算技术深度解析与代码使用案例
云计算技术深度解析与代码使用案例 引言 随着信息技术的飞速发展,云计算作为一种革命性的技术,正在逐步改变我们的生活和工作方式。云计算不仅提供了前所未有的计算能力和存储资源,还以其灵活性和可扩展性,成为现代企业数字化转型的重要支撑。本文将深入探讨云计算的核心…...
【教学类-89-01】20250127新年篇01—— 蛇年红包(WORD模版)
祈愿在2025蛇年里, 伟大的祖国风调雨顺、国泰民安、每个人齐心协力,共同经历这百年未有之大变局时代(国际政治、AI技术……) 祝福亲友同事孩子们平安健康(安全、安全、安全)、巳巳如意! 背景需…...
React Router v6配置路由守卫
首先准备好以下页面 登录页:用户可以在此页面登录。 受保护页:只有登录的用户可以访问,否则会重定向到登录页。 公共页面:不需要鉴权,任何人都可以访问。 1. 安装依赖 首先,我们需要安装 react-router-do…...
双层Git管理项目,github托管显示正常
双层Git管理项目,github托管显示正常 背景 在写React项目时,使用Next.js,该项目默认由git托管。但是我有在项目代码外层记笔记的习惯,我就在外层使用了git托管。 目录如下 code 层内也有.git 文件,对其托管。 我没太在意&…...
Linux--权限
Linux系统的权限管理是保障系统安全的重要机制,以下详细讲解权限相关概念及操作指令: 一、基础权限机制 1. 权限的三元组,读(r)、写(w)、执行(x) 每个文件或目录有三组…...
第25章 项目启航前的密谈
在那弥漫着严谨与专注气息的会议室里,苏睿所长端坐在会议桌前,宛如一座沉稳的山峰,散发着一种让人安心的力量。他的神情认真而庄重,目光中透着几分感慨,仿佛在时光的长河中回溯着项目的点点滴滴。微微侧身看向东方艾艾…...
ModernBERT 为我们带来了哪些启示?
当谷歌在 2018 年推出 BERT 模型时,恐怕没有料到这个 3.4 亿参数的模型会成为自然语言处理领域的奠基之作。 六年后的今天,面对动辄千亿参数的大语言模型浪潮,Answer.AI、LightOn与 HuggingFace 联手打造的 ModernBERT 却选择了一条返璞归真的…...
【MySQL】--- 复合查询 内外连接
Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: MySQL 🏠 基本查询回顾 假设有以下表结构: 查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为…...
Android Studio打包APK
1.导出APK安装包 如果是首次打包,Create new 单击蓝色对话框右边文件夹📂图标 ,选择密钥保存路径,然后在下方File name对话框中填写您想要名称,再点击OK回到密钥创建对话框。 在此对话框中填写密码(Passwo…...
RKNN_C++版本-YOLOV5
1.背景 为了实现低延时,所以开始看看C版本的rknn的使用,确实有不足的地方,请指正(代码借鉴了rk官方的仓库文件)。 2.基本的操作流程 1.读取模型初始化 // 设置基本信息 // 在postprocess.h文件中定义,详见…...
Git常用命令集合
见过不少人、经过不少事、也吃过不少苦,感悟世事无常、人心多变,靠着回忆将往事串珠成链,聊聊感情、谈谈发展,我慢慢写、你一点一点看...... git init <directory》初始化本地仓库 git add <file> 添加文件到暂存区 git …...
【deepseek】deepseek-r1本地部署-第一步:下载LM Studio
要下载LM Studio,可以按照以下步骤进行: 一、访问LM Studio官方网站 打开必应(注意!百度无法打开官网),输入LM Studio的官方网址:LM Studio - Discover, download, and run local LLMs。进入L…...
【数据结构】_链表经典算法OJ:合并两个有序数组
目录 1. 题目描述及链接 2. 解题思路 3. 程序 3.1 第一版 3.2 第二版 1. 题目描述及链接 题目链接:21. 合并两个有序链表 - 力扣(LeetCode) 题目描述: 将两个升序链表合并为一个新的 升序 链表并返回。 新链表是通过拼接给…...
mybatis(78/134)
前天学了很多,关于java的反射机制,其实跳过了new对象,然后底层生成了字节码,创建了对应的编码。手搓了一遍源码,还是比较复杂的。 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE …...
【物联网】ARM核常用指令(详解):数据传送、计算、位运算、比较、跳转、内存访问、CPSR/SPSR、流水线及伪指令
文章目录 指令格式(重点)1. 立即数2. 寄存器位移 一、数据传送指令1. MOV指令2. MVN指令3. LDR指令 二、数据计算指令1. ADD指令1. SUB指令1. MUL指令 三、位运算指令1. AND指令2. ORR指令3. EOR指令4. BIC指令 四、比较指令五、跳转指令1. B/BL指令2. l…...
Mybatis配置文件详解
MyBatis通过XML或注解的方式将Java对象与数据库中的记录进行映射,极大地简化了数据访问层的开发。而在MyBatis的核心组成部分中,配置文件扮演着举足轻重的角色。它不仅定义了MyBatis的运行环境,还配置了数据源、事务管理、映射器等关键元素&a…...
一组开源、免费、Metro风格的 WPF UI 控件库
前言 今天大姚给大家分享一个开源、免费、Metro风格的 WPF UI 控件库:MahApps.Metro。 项目介绍 MahApps.Metro 是一个开源、免费、Metro风格的 WPF UI 控件库,提供了现代化、平滑和美观的控件和样式,帮助开发人员轻松创建具有现代感的 Win…...
.NET MAUI 入门学习指南
引言 在当今移动应用和跨平台开发的热潮中,.NET MAUI(Multi - platform App UI)应运而生,为开发者提供了一种高效、统一的方式来构建跨多个平台(如 iOS、Android、Windows 等)的原生应用。它整合了 Xamarin.Forms 的优点,并在此基础上进行了诸多改进和创新,使得开发者…...
【超详细】ELK实现日志采集(日志文件、springboot服务项目)进行实时日志采集上报
本文章介绍,Logstash进行自动采集服务器日志文件,并手把手教你如何在springboot项目中配置logstash进行日志自动上报与日志自定义格式输出给logstash。kibana如何进行配置索引模式,可以在kibana中看到采集到的日志 日志流程 logfile-> l…...
本地大模型编程实战(04)给文本自动打标签
文章目录 准备实例化本地大模型情感分析更精细的控制总结代码 使用本地大模型可以根据需要给文本打标签,本文介绍了如何基于 langchain 和本地部署的大模型给文本打标签。 本文使用 llama3.1 作为本地大模型,它的性能比非开源大模型要查一下,…...
JavaScript反爬技术解析与应对
JavaScript 反爬技术解析与应对 前言 在当今 Web 爬虫与数据抓取的生态环境中,网站运营方日益关注数据安全与隐私保护,因此逐步采用多种反爬技术来限制非授权访问。本文从 JavaScript 角度出发,深入剖析主流反爬策略的技术原理,…...
【C++动态规划 状态压缩】2741. 特别的排列|2020
本文涉及知识点 C动态规划 状态压缩 LeetCode2741. 特别的排列 给你一个下标从 0 开始的整数数组 nums ,它包含 n 个 互不相同 的正整数。如果 nums 的一个排列满足以下条件,我们称它是一个特别的排列: 对于 0 < i < n - 1 的下标 i…...
省级数字经济发展水平数据(2011-2022年)-社科数据
省级数字经济发展水平数据(2011-2022年)-社科数据https://download.csdn.net/download/paofuluolijiang/90028602 https://download.csdn.net/download/paofuluolijiang/90028602 数字经济是指以数据资源为关键要素、以现代信息网络为主要载体、以信息…...
【问题解决】el-upload数据上传成功后不显示成功icon
el-upload数据上传成功后不显示成功icon 原因 由于后端返回数据与要求形式不符,使用el-upload默认方法调用onSuccess钩子失败,上传文件的状态并未发生改变,因此数据上传成功后并未显示成功的icon标志。 解决方法 点击按钮,调用…...
新站如何快速获得搜索引擎收录?
本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/8.html 新站想要快速获得搜索引擎收录,需要采取一系列有针对性的策略。以下是一些具体的建议: 一、网站内容优化 高质量原创内容: 确保网站内容原创、…...
判断子序列
hello 大家好!今天开写一个新章节,每一天一道算法题。让我们一起来学习算法思维吧! function isSubsequence(s, t) {// 初始化两个指针,分别指向字符串 s 和 t 的起始位置let i 0; let j 0; // 当两个指针都未超出对应字符串的长…...
【Leetcode 热题 100】416. 分割等和子集
问题背景 给你一个 只包含正整数 的 非空 数组 n u m s nums nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 数据约束 1 ≤ n u m s . l e n g t h ≤ 200 1 \le nums.length \le 200 1≤nums.length≤200 1 ≤ n u m s [ i ] ≤ …...
Kotlin开发(六):Kotlin 数据类,密封类与枚举类
引言 想象一下,你是个 Kotlin 开发者,敲着代码忽然发现业务代码中需要一堆冗长的 POJO 类来传递数据。烦得很?别急,Kotlin 贴心的 数据类 能帮你自动生成 equals、hashCode,直接省时省力!再想想需要多种状…...
关于2024年
关于2024年 十分钟前我从床上爬起来,坐在电脑面前先后听了《黄金时代》——声音碎片和《Song F》——达达两首歌,我觉得躺着有些无聊,又或者除夕夜的晚上躺着让我觉得有些不适,我觉得自己应该爬起来,爬起来记录一下我…...
运算符(C#)
运算符(C#) 算数运算符 - * / % //算数运算符// - * / %//这跟我们初中的运算符一样// 加号Console.WriteLine(12);//3int a 5 6;Console.WriteLine(a);//11// - 减号Console.WriteLine(6-3);//3int b 10 - 6;Console.WriteLine(b);//4// * 乘号Console.WriteL…...
【AI论文】扩散对抗后训练用于一步视频生成总结
摘要:扩散模型被广泛应用于图像和视频生成,但其迭代生成过程缓慢且资源消耗大。尽管现有的蒸馏方法已显示出在图像领域实现一步生成的潜力,但它们仍存在显著的质量退化问题。在本研究中,我们提出了一种在扩散预训练后针对真实数据…...
Spring--SpringMVC使用(接收和响应数据、RESTFul风格设计、其他扩展)
SpringMVC使用 二.SpringMVC接收数据2.1访问路径设置2.2接收参数1.param和json2.param接收数据3 路径 参数接收4.json参数接收 2.3接收cookie数据2.4接收请求头数据2.5原生api获取2.6共享域对象 三.SringMVC响应数据3.1返回json数据ResponseBodyRestController 3.2返回静态资源…...
计算机毕业设计Django+Tensorflow音乐推荐系统 机器学习 深度学习 音乐可视化 音乐爬虫 知识图谱 混合神经网络推荐算法 大数据毕设
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
用HTML、CSS和JavaScript实现庆祝2025蛇年大吉(附源码)
用HTML、CSS和JavaScript庆祝2025蛇年大吉 在这个数字化时代,网页设计不仅仅是为了展示信息,更是传达情感和文化的一种方式。2025年将是蛇年,许多人希望通过各种方式庆祝这一重要的时刻。在这篇文章中,我们将一起学习如何使用HTM…...
Golang :用Redis构建高效灵活的应用程序
在当前的应用程序开发中,高效的数据存储和检索的必要性已经变得至关重要。Redis是一个快速的、开源的、内存中的数据结构存储,为各种应用场景提供了可靠的解决方案。在这个完整的指南中,我们将学习什么是Redis,通过Docker Compose…...
分布式微服务系统架构第88集:kafka集群
使用集 群最大的好处是可以跨服务器进行负载均衡,再则就是可以使用复制功能来避免因单点故 障造成的数据丢失。在维护 Kafka 或底层系统时,使用集群可以确保为客户端提供高可用 性。 需要多少个broker 一个 Kafka 集群需要多少个 broker 取决于以下几个因…...
【信息系统项目管理师-选择真题】2008下半年综合知识答案和详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2~3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10~12题】【第13题】【第14~15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第21题】【第22题】【第23题】【第…...
Ubuntu 20.04安装Protocol Buffers 2.5.0
个人博客地址:Ubuntu 20.04安装Protocol Buffers 2.5.0 | 一张假钞的真实世界 安装过程 Protocol Buffers 2.5.0源码下载:https://github.com/protocolbuffers/protobuf/tree/v2.5.0。下载并解压。 将autogen.sh文件中以下内容: curl htt…...
MySQL知识点总结(十四)
mysqldump和mysqlpump实用程序在功能上有哪些相同和不同的地方? 二者都能用来执行逻辑备份,将所有数据库,特定数据库或特定表转储到文本文件,可移植,独立于存储引擎,是很好的复制/移动策略,适合…...
人工智能在教育中的创新应用:打造未来的智慧课堂
人工智能在教育中的创新应用:打造未来的智慧课堂 在快速发展的科技时代,人工智能(AI)正悄无声息地改变着教育的面貌。从个性化学习到智能课堂管理,AI技术为教育带来了前所未有的创新与效率提升。今天,我想从实际应用的角度,聊聊人工智能如何帮助我们构建更智慧的教育生…...
最初公共前缀
hello 大家好!今天开写一个新章节,每一天一道算法题。让我们一起来学习算法思维吧! function longestCommonPrefix(strs) {// 如果输入的字符串数组为空,直接返回空字符串if (strs.length 0) {return "";}// 假设数组中…...
每日一题-判断是否是平衡二叉树
判断是否是平衡二叉树 题目描述数据范围题解解题思路递归算法代码实现代码解析时间和空间复杂度分析示例示例 1示例 2 总结 ) 题目描述 输入一棵节点数为 n 的二叉树,判断该二叉树是否是平衡二叉树。平衡二叉树定义为: 它是一棵空树。或者它的左右子树…...
Go反射指南
概念: 官方对此有个非常简明的介绍,两句话耐人寻味: 反射提供一种让程序检查自身结构的能力反射是困惑的源泉 第1条,再精确点的描述是“反射是一种检查interface变量的底层类型和值的机制”。 第2条,很有喜感的自嘲…...
【除夕】特别篇
除夕,是一个辞旧迎新的时刻。我们挥别了过去一年的风雨兼程,迎来了新一年的无限可能。在过去的一年里,我们或许经历了挑战,或许收获了成长。从年初到今天,我们一定克服了种种困难与挑战,这足以说明我们每个…...
Java内存区域详解
Java内存区域详解——章节结构 Java 内存模型是 JVM 的重要组成部分,深入理解内存区域的划分和用途是掌握 JVM 调优和诊断问题的关键。我们将通过以下章节逐步学习: 目录 概述:Java 内存区域与线程的关系程序计数器Java 虚拟机栈本地方法栈…...
DataWhale组队学习 fun-transformer task5
1. 词向量:单词的“身份证” 首先,我们定义了四个单词的词向量,每个向量维度为3。你可以把这些词向量想象成每个单词的“身份证”。每个身份证上有3个特征,用来描述这个单词的“性格”或“特点”。 word_1 np.array([1, 0, 0])…...