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

霍夫变换:原理剖析与 OpenCV 应用实例

在这里插入图片描述

简介:本文围绕霍夫变换相关内容展开,先是讲解霍夫变换基本原理,包含从 xy 坐标系到 kb 坐标系及极坐标系的映射等。接着介绍了 cv2.HoughLines、cv2.HoughLinesP 概率霍夫变换、cv2.HoughCircles 霍夫圆变换的函数用法、参数含义、与常规霍夫变换区别以及实现步骤,并附代码示例,助力读者理解和运用这些图像检测技术。
如果我的文章对你有帮助,请点赞收藏关注,我将会持续为您带来更多与OpenCV有关的知识。

霍夫变换:原理剖析与 OpenCV 应用实例

  • 霍夫变换基本原理
  • cv2.HoughLines函数
    • 实现一次霍夫变换
    • cv2.HoughLinesP概率霍夫变换
    • 霍夫圆变换cv2.HoughCircles
  • 致谢

霍夫变换基本原理

画一张图 y = kx+b:,用xy坐标系如图所示:
在这里插入图片描述
如果用k,b坐标系该这样表示:
在这里插入图片描述
(xy空间的一条线确定了kb空间的一个点)
我现在在xy轴里取一个点 (x0,y0):
在这里插入图片描述
此时x0,y0确定,他可能在任意一条直线上,根据公式 y0 = kx0+b,那么b = y0-kx0,所以在kb空间上:
在这里插入图片描述
说明xy的一个点对应 kb的一条线
再来观察,两个xy坐标的点 x0,y0 x1,y1,同时两点确定了一条直线,看图:
在这里插入图片描述
对应在kb空间应该是如下图:
在这里插入图片描述
我们会进行三步推理:
第一步:xy坐标系的一条直线上的两个点,对应着kb空间经过同一个点的两条直线。
第二步:推理可以知道,kb坐标系中间经过一个点的直线越多,说明在xy坐标系中是由更多的点所构成。
第三步:已知两个点确定一条直线,对于图像中的线怎么确定不是谬误,噪声呢?那多个点确定的直线不出错的概率相对来说肯定是更大的
第四步:霍夫变换选择直线的基本思路是,选择又尽可能多的直线交汇的点
但是,有一种特殊情况不能完成从xy坐标系映射到kb坐标系:垂线
在这里插入图片描述
所以可以映射到极坐标系:r = xcosa+ ysina
在这里插入图片描述

cv2.HoughLines函数

lines 返回的ndarray数组,数组的每一对数据都是(r,a) = cv2.HoughLines(image输入图像必须是八位单通道二值图像 ,rho为r的精度一般为1,theta为角度的精度一般情况使用pi/180,threshold是阈值,他是霍夫空间的直线条数大于阈值才能被认为是xy空间的直线,所以阈值越小找到的直线越多)
我们选择验证的例子基于这张图片,我给他命名为calculator.JPG放在跟代码同一个文件夹下,大家可以复制我的图片重命名自己去运行代码:
在这里插入图片描述

实现一次霍夫变换

(第一步)读取图片
(第二步)转化为灰度图
(第三步)使用cv2.Canny边缘检测获得边缘
(第四步)使用霍夫变换
(第五步)为了看到霍夫变化的差异,将原图从bgr转化成 rgb,并复制一张原图片
(第六步)对霍夫变换的结果从极坐标转换成xy坐标并在原图画线
(第七步)展示原图与画线后的图片差别

import numpy as np
import cv2
import matplotlib.pyplot as plt
img = cv2.imread("calculator.JPG")
# 转化为灰度图
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#使用cv2.Canny边缘检测获得边缘
edges = cv2.Canny(gray,50,150,apertureSize = 3)
#使用霍夫变换
lines = cv2.HoughLines(edges,1,np.pi/180,133)
#为了看到霍夫变化的差异,将原图从bgr转化成 rgb,并复制一张原图片
orgb = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
oShow = orgb.copy()# 对霍夫变换的结果从极坐标转换成xy坐标并在原图画线
for line in lines:rho,theta =line[0]a = np.cos(theta)b = np.sin(theta)x0 = a*rhoy0 = b*rhox1 = int(x0+1000*(-b))y1 = int(y0+1000*(a))x2 = int(x0-1000*(-b))y2 = int(y0-1000*(a))cv2.line(orgb,(x1,y1),(x2,y2),(0,0,255),2)plt.subplot(121)
plt.imshow(oShow)
plt.axis("off")
plt.title("original")plt.subplot(122)
plt.imshow(orgb)
plt.axis("off")
plt.title('huofu')plt.show()

在这里插入图片描述

cv2.HoughLinesP概率霍夫变换

与霍夫变换的区别:

  1. 霍夫变换考虑了所有的点,而概率只考虑了一个足以进行线检测的随机点的子集
  2. 概率设置了所接受直线的最小长度
  3. 接受直线时所允许的最大像素点间距
    语法上多了两个参数 一个是最小长度minLineLength和maxLineGap

步骤上并没有太多区别,仅仅是在调用函数时后多两个参数,阈值调低(后两个参数保证了即使低阈值也不会产生很多无效的直线)。

import numpy as np
import cv2
import matplotlib.pyplot as plt
img = cv2.imread("calculator.JPG")
# 转化为灰度图
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#使用cv2.Canny边缘检测获得边缘
edges = cv2.Canny(gray,50,150,apertureSize = 3)
#使用概率霍夫变换 设置minLineLength和maxLineGap
lines = cv2.HoughLinesP(edges,1,np.pi/180,1,minLineLength = 120,maxLineGap = 10)
#为了看到霍夫变化的差异,将原图从bgr转化成 rgb,并复制一张原图片
orgb = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
oShow = orgb.copy()# 对霍夫变换的结果从极坐标转换成xy坐标并在原图画线
for line in lines:x1,y1,x2,y2 = line[0]cv2.line(orgb,(x1,y1),(x2,y2),(0,0,255),2)plt.subplot(121)
plt.imshow(oShow)
plt.axis("off")
plt.title("original")plt.subplot(122)
plt.imshow(orgb)
plt.axis("off")
plt.title('huofu')plt.show()

在这里插入图片描述

霍夫圆变换cv2.HoughCircles

需要考虑圆半径和圆心x,y。两轮筛选,第一轮找出可能存在的圆心,第二轮判断半径。
circles 由圆心坐标和半径组成的ndarray= cv2.HoughCircles(image八位单通道灰度图,method检测方法 cv2.HOUGH_GRADIENT,dp累计其分辨率,若dp=1输入图像和结果具有相同的分辨率,minDist圆心之间的最小间距,太小会有多个邻近的圆,太大会漏掉一些圆,param1默认为100他是canny边缘检测的阈值,param2默认是100他越大检测到的圆越少,minRadius和maxRadius圆半径的最大值最小值 )
注意:在调用函数之前要进行平滑处理,减少噪声避免误判
使用这张图我命名为bicycly.JPG,存在和代码同一个文件夹下,大家可以复制我的图片然后重命名:在这里插入图片描述

import numpy as np
import cv2
import matplotlib.pyplot as plt
img = cv2.imread("bicycle.JPG",0)
o = cv2.cvtColor(img,cv2.COLOR_BAYER_BG2RGB)
oshow = o.copy()
# 使用中值滤波
img = cv2.medianBlur(img,5)
circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,200,param1 = 5,param2 = 5,minRadius =3, maxRadius = 200)
circles = np.uint16(np.around(circles))
for i in circles[0,:]:cv2.circle(o,(i[0],i[1]),i[2],(255,0,0),12)cv2.circle(o,(i[0],i[1]),2,(255,0,0),12)plt.subplot(121)
plt.imshow(oshow)
plt.axis("off")
plt.title("original")plt.subplot(122)
plt.imshow(o)
plt.axis("off")
plt.title("circle")plt.show()

在这里插入图片描述

致谢

本文参考了一些博主的文章,博取了他们的长处,也结合了我的一些经验,对他们表达诚挚的感谢,使我对 OpenCV霍夫变换 有更深入的了解,也推荐大家去阅读一下他们的文章。纸上学来终觉浅,明知此事要躬行:
【OpenCV学习笔记】之霍夫变换(Hough Transform)

相关文章:

霍夫变换:原理剖析与 OpenCV 应用实例

简介:本文围绕霍夫变换相关内容展开,先是讲解霍夫变换基本原理,包含从 xy 坐标系到 kb 坐标系及极坐标系的映射等。接着介绍了 cv2.HoughLines、cv2.HoughLinesP 概率霍夫变换、cv2.HoughCircles 霍夫圆变换的函数用法、参数含义、与常规霍夫…...

虚拟机之间复制文件

在防火墙关闭的前提下,您可以通过几种不同的方法将文件从一个虚拟机复制到另一个虚拟机。这里,我们假设您想要从 IP 地址为 192.168.4.5 的虚拟机上的 /tmp 文件夹复制文件到当前虚拟机(192.168.4.6)的 /tmp 文件夹下。以下是几种…...

漏洞管理与补丁管理详解:系统安全的基石

文章目录 漏洞管理与补丁管理详解:系统安全的基石什么是漏洞管理?什么是补丁管理?漏洞管理与补丁管理的联系与区别实施漏洞管理与补丁管理的最佳实践 漏洞管理与补丁管理详解:系统安全的基石 在网络安全的防护体系中,…...

ArrayList与LinkedList的区别是什么?

ArrayList与LinkedList是Java集合框架中实现List接口的两种常见类,它们各自具有独特的数据结构和特点,适用于不同的应用场景。 一、底层数据结构 ArrayList和LinkedList的底层数据结构是它们之间最本质的区别。 ArrayList: ArrayList是基于…...

《Java-数组》

《Java-数组》 1.数组介绍 概念:数组是一种容器,用来存储同种数据类型的多个值。注意:数组容器在存储数据的时候,需要结合隐式转换考虑; 2.数组的定义和初始化 2.1数组定义 定义格式1(常用&#xff09…...

Docker 实战:搭建本地 Registry 私有镜像仓库及批量导入脚本

前言:在我之前的博客中,我分享了 Harbor 仓库搭建的详细操作步骤。然而,在实际的生产环境中,并非每个 Docker 环境都需要部署一个规模庞大的 Harbor 仓库。有时,一个轻量级的本地 Registry 私有镜像仓库会更为便捷。本…...

MySQL 启动失败问题分析与解决方案:`mysqld.service failed to run ‘start-pre‘ task`

目录 前言1. 问题背景2. 错误分析2.1 错误信息详解2.2 可能原因 3. 问题排查与解决方案3.1 检查 MySQL 错误日志3.2 验证 MySQL 配置文件3.3 检查文件和目录权限3.4 手动启动 MySQL 服务3.5 修复 systemd 配置文件3.6 验证依赖环境 4. 进一步优化与自动化处理结语 前言 在日常…...

java-分而治之算法

分而治之(Divide and Conquer)算法是一种解决问题的策略,它将一个复杂的问题分解成若干个相同或相似的子问题,递归地解决这些子问题,然后将它们的解合并以解决原始问题。这种算法通常用于排序、搜索、数学计算等领域。…...

透明化教育管理:看板如何提升班级整体效率

随着教育信息化的不断推进,传统的教学和班级管理方式逐渐暴露出时间紧、任务繁、多任务并行等问题。看板管理,作为一种高效的可视化工具,正在成为教师管理教学、提升班级协作与互动的重要利器。通过透明化、系统化的管理方式,看板…...

UDP客户端服务器通信

在这篇博客中,我们将探索 UDP(用户数据报协议) 通信,简要地说,UDP 是一种无连接、快速但不可靠的通信协议,适用于需要快速数据传输但对丢包容忍的场景,比如视频流和在线游戏。就像《我是如此相信…...

helm手动部署Kafka集群

1、到指定node节点创建pv需挂载的目录,若有分布式存储可忽略 mkdir -p /data/kafka-data-0 mkdir -p /data/kafka-data-1 mkdir -p /data/kafka-data-2 mkdir -p /data/kafka-zookeeper-data-0 2、创建pvc ---apiVersion: v1kind: PersistentVolumemetadata:n…...

vue3 ajax获取json数组排序举例

使用axios获取接口数据 可以在代码中安装axios包,并写入到package.json文件: npm install axios -S接口调用代码举例如下: const fetchScore async () > {try {const res await axios.get(http://127.0.0.1:8000/score/${userInput.v…...

c/c++ 用easyx图形库写一个射击游戏

#include <graphics.h> #include <conio.h> #include <stdlib.h> #include <time.h>// 定义游戏窗口的大小 #define WINDOW_WIDTH 800 #define WINDOW_HEIGHT 600// 定义玩家和目标的尺寸 #define PLAYER_SIZE 50 #define TARGET_SIZE 20// 玩家的结构…...

大数据新视界 -- 大数据大厂之 Hive 数据安全:权限管理体系的深度解读(上)(15/ 30)

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

gitee:创建仓库,存入本地文件至仓库

一、git下载 git:下载与安装-CSDN博客https://blog.csdn.net/weixin_46001736/article/details/144107485?sharetypeblogdetail&sharerId144107485&sharereferPC&sharesourceweixin_46001736&spm1011.2480.3001.8118 二、创建仓库 1、主页面->右上角新增…...

联想品牌的电脑 Bios 快捷键是什么?如何进入 Bios 设置?

在某些情况下&#xff0c;您可能需要通过U盘来安装操作系统或进行系统修复。对于联想电脑用户来说&#xff0c;了解如何设置U盘作为启动设备是非常有用的技能之一。本文简鹿办公将指导您如何使用联想电脑的 U 盘启动快捷键来实现这一目标。 联想笔记本 对于大多数联想笔记本电…...

微信小程序用户登录页面制作教程

微信小程序用户登录页面制作教程 前言 在微信小程序的开发过程中,用户登录是一个至关重要的功能。通过用户登录,我们可以为用户提供个性化的体验,保护用户数据,并实现更复杂的业务逻辑。本文将为您详细讲解如何制作一个用户登录页面,包括设计思路、代码示例以及实现细节…...

Flink细粒度的资源管理

Apache Flink致力于为所有应用程序自动导出合理的默认资源需求。对于希望根据其特定场景微调其资源消耗的用户,Flink提供了细粒度的资源管理。这里我们就来看下细粒度的资源管理如何使用。(注意该功能目前仅对DataStream API有用) 1. 适用场景 使用细粒度的资源管理的可能…...

Jenkins环境搭建及简单介绍

一、jenkins介绍 1、持续集成&#xff08;CI&#xff09; Continuous integration 持续集成 团队开发成员每天都有集成他们的工作&#xff0c;通过每个成员每天至少集成一次&#xff0c;也就意味着一天有可 能多次集成。在工作中我们引入持续集成&#xff0c;通过持续集成自动…...

如何还原 HTTP 请求日志中的 URL 编码参数?详解 %40 到 @

在记录HTTP请求的日志中出现了这样的情况&#xff1a; 2024-11-20 11:12:49 INFO network_request gz_login 96 Body: countryAbbrCN&countryCode86&email1222405567%40qq.com&password12354e50456db124f9f34e2789308733&type1 出现这种情况的原因是&#x…...

box-im学习

box-im gitee代码 box-im 语雀文档 box-im 在线体验 部署说明 需要启动下列服务 ## ## 1、启动minio ## MINIO_ROOT_USERminioadmin MINIO_ROOT_PASSWORDxxx nohup /boxim/minio/minio server /boxim/minio/data --console-address ":9001" --address "…...

faiss库中ivf-sq(ScalarQuantizer,标量量化)代码解读-6

调试 经过gdb调试获取的调用栈内容如下&#xff0c;链接&#xff1a; 步骤函数名称文件位置说明1faiss::IndexFlatCodes::add/faiss/IndexFlatCodes.cpp:24在 add 方法中&#xff0c;检查是否已经训练完成&#xff0c;准备添加向量到索引中。2std::vector<unsigned char&g…...

flutter开发环境—Windows

一、简介 我们使用最新版的flutter版本安装。 参考链接 名称地址官方网站https://flutter.dev/官方中文网站文档 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter软件下载路径https://docs.flutter.dev/release/archive?tabwindows 二、操作流程 2.1 下载软件 点…...

【计网】自定义序列化反序列化(二) —— 实现网络版计算器【上】

&#x1f30e; 实现网络版计算器【上】 文章目录&#xff1a; 实现网络版计算器【上】 自定义协议       制定自定义协议 Jsoncpp序列化反序列化       Json::Value类       Jsoncpp序列化       Jsoncpp反序列化 自定义协议序列化反序列化      …...

Harbor安装、HTTPS配置、修改端口后不可访问?

Harbor安装、HTTPS配置、修改端口后不可访问&#xff1f; 大家好&#xff0c;我是秋意零。今天分享Harbor相关内容&#xff0c;安装部分可完全参考官方文档&#xff0c;写的也比较详细。 安装Harbor 官方文档&#xff1a;https://goharbor.io/docs/2.12.0/install-config/ …...

React中高阶组件HOC详解

高阶组件&#xff08;Higher-Order Component&#xff0c;简称 HOC&#xff09;是 React 中的一种设计模式&#xff0c;用于复用组件逻辑。它本质上是一个函数&#xff0c;接收一个组件作为参数&#xff0c;并返回一个新的组件。 1. HOC 的定义 HOC 是一个函数&#xff0c;类…...

网络原理(一)—— http

什么是 http http 是一个应用层协议&#xff0c;全称为“超文本传输协议”。 http 自 1991 年诞生&#xff0c;目前已经发展为最主流使用的一种应用层协议。 HTTP 往往基于传输层的 TCP 协议实现的&#xff0c;例如 http1.0&#xff0c;http1.0&#xff0c;http2.0 http3 是…...

redis学习面试

1、数据类型 string 增删改查 set key valueget keydel kstrlen k 加减 incr articleincrby article 3decr articledecyby article 取v中特定位置数据 getrange name 0 -1getrange name 0 1setrange name 0 x 设置过期时间 setex pro 10 华为 等价于 set pro 华为expire pro…...

前端工程化18-邂逅Promise(待更新)

6、邂逅Promise 6.1、函数对象与实例对象 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>准备_函数对象与实例对象</title> </head> <body><script>/* 函数对象、实例对象…...

Linux(ubuntu)系统的一些基本操作和命令(持续更新)

操作&#xff1a; Ctrl Alt T&#xff08;打开命令终端&#xff09; Ctrl Shift &#xff08;放大命令终端窗口&#xff09; Ctrl c&#xff08;退出当前在终端运行的程序&#xff09; 在命令终端窗口按Tab键可以补全要写的命令 命令&#xff1a; pwd&#xff08;查…...

IDEA Mac快捷键(自查询使用)

Editing&#xff08;编辑&#xff09; Control Space 基本的代码补全&#xff08;补全任何类、方法、变量&#xff09;Control Shift Space 智能代码补全&#xff08;过滤器方法列表和变量的预期类型&#xff09;Command Shift Enter 自动结束代码&#xff0c;行末自动添…...

认识redis 及 Ubuntu安装redis

文章目录 一. redis概念二. redis应用场景二. redis的特性四. 使用Ubuntu安装redis 一. redis概念 redis 是在内存中存储数据的中间件, 用在分布式系统 redis是客户端服务器结构的程序, 客户端服务器之间通过网络来通信 二. redis应用场景 redis可用作数据库 类似MySQL, 但…...

6.结果处理组件之ResponseHandler

前言 feign发送完请求后, 拿到返回结果, 那么这个返回结果肯定是需要经过框架进一步处理然后再返回到调用者的, 其中ResponseHandler就是用来处理这个返回结果的, 这也是符合正常思维的处理方式, 例如springmvc部分在调用在controller端点前后都会增加扩展点。 从图中可以看得…...

【C#】调用外部应用

以WINFORM应用程序为例&#xff0c;在C#应用程序中调用PYTHON程序&#xff08;Matplotlib绘制图形程序&#xff09;&#xff0c;将调用PYTHON程序生成的窗口程序嵌入在WINFORM窗口中 窗口程序类 using System; using System.Collections.Generic; using System.Data; using S…...

JavaWeb--JDBC

JDBC&#xff08;Java Database Connectivity&#xff0c;Java数据库连接&#xff09;是一种Java API&#xff0c;可以让Java程序连接到数据库并进行数据的操作。它是Java平台的一部分&#xff0c;由Sun Microsystems&#xff08;现为Oracle Corporation的一部分&#xff09;开…...

神经网络归一化方法总结

在深度学习中&#xff0c;归一化 是提高训练效率和稳定性的关键技术。以下是几种常见的神经网络归一化方法的总结&#xff0c;包括其核心思想、适用场景及优缺点。 四种归一化 特性Batch NormalizationGroup NormalizationLayer NormalizationInstance Normalization计算维度…...

Debian/Ubuntu 、Fedora 、Arch Linux, 在Linux上,对文本文件进行多线程压缩 xz、pxz、zstd、7z、lrzip

Debian/Ubuntu 、Fedora 、Arch Linux&#xff0c; 在Linux上&#xff0c;对文本文件进行多线程压缩 xz、pxz、zstd、7z、lrzip 前言对比多线程压缩1. 使用 pxz安装 pxz使用 pxz 2. 使用 xz 的 -T 选项使用 xz -T 3. 其他压缩命令1. 使用 gzip2. 使用 bzip23. 使用 xz4. 使用 7…...

前端使用fontfaceobserver库实现字体设置

要使用FontFaceObserver来加载设置项目本地的字体&#xff0c;先确保字体文件位于项目中或者可以从服务端获取到&#xff0c;这样就可以使用FontFaceObserver来检测并加载这些字体 主要有以下几步&#xff1a; npm或者yarn安装引入fontfaceobserver字体资源引入和font-face配置…...

SSM--SpringMVC复习(二)

请求 URL匹配&#xff1a; RequestMapping RequestMapping 负责将请求映射到对应的控制器方法上。 RequestMapping 注解可用于类或方法上。用于类上&#xff0c;表示类中的所有响应请求的方法都以该地址作为父路径。 在整个 Web 项目中&#xff0c;RequestMapping 映射的请求…...

Oracle 11gR2 坏块修复实例一则

背景 前段时间在 Oracle 11gR2 数据库中发现了坏块问题。环境是 64 位 Linux 平台。本文将详细介绍如何使用 DBMS_REPAIR 进行在线修复&#xff0c;当然也可以基于备份和 RMAN 的修复方法这里暂时不做介绍。 发现坏块 1. 从 alert.log 中发现错误 在 alert.log 文件中发现了…...

使用 Docker Compose 来编排部署LMTNR项目

使用 Docker Compose 来部署一个包含 Linux、MySQL、Tomcat、Nginx 和 Redis 的完整项目的例子。假设我们要部署一个简单的 Java Web 应用&#xff0c;并且使用 Nginx 作为反向代理服务器。 项目目录结构 首先需要确保 Docker 和docker-compose已经安装并正在运行。docker --v…...

el-table 根据屏幕大小 动态调整max-height 的值

<template><div><p>窗口高度&#xff1a;{{ windowHeight }} px</p></div> </template><script> export default {data() {return {// 下面的 -250 表示减去一些表单元素高度 这个值需要自己手动调整windowHeight: document.docume…...

el-cascader 使用笔记

1.效果 2.官网 https://element.eleme.cn/#/zh-CN/component/cascader 3.动态加载&#xff08;官网&#xff09; <el-cascader :props"props"></el-cascader><script>let id 0;export default {data() {return {props: {lazy: true,lazyLoad (…...

Cookie概念和API

Cookie概念 Cookie在HTTP中它表示服务器送给客户端浏览器的小甜点。其实Cookie就是一个键和一个值构成的&#xff0c;随着服务器端的响应发送给客户端浏览器。然后客户端浏览器会把Cookie保存起来&#xff0c;当下一次再访问服务器时把Cookie再发送给服务器。 Cookie是由服务器…...

Linux服务器安装mongodb

因为项目需要做评论功能&#xff0c;领导要求使用mongodb&#xff0c;所以趁机多学习一下。 在服务器我们使用docker安装mongodb 1、拉取mongodb镜像 docker pull mongo &#xff08;默认拉取最新的镜像&#xff09; 如果你想指定版本可以这样 docker pull mongo:4.4&#…...

32.4 prometheus存储磁盘数据结构和存储参数

本节重点介绍 : prometheus存储磁盘数据结构介绍 indexchunkshead chunksTombstoneswal prometheus对block进行定时压实 compactprometheus 查看支持的存储参数 prometheus存储示意图 内存和disk之间的纽带 wal WAL目录中包含了多个连续编号的且大小为128M的文件&#xff0c…...

两个生活中的例子反向理解正/反向代理?

正向代理 场景&#xff1a;你在学校里想访问一个被限制的网站&#xff0c;比如某个社交媒体平台。 操作方式&#xff1a; 你把访问请求发送给学校的代理服务器&#xff08;正向代理&#xff09;。代理服务器代表你向互联网发出请求&#xff0c;去访问那个受限的网站。网站的响…...

数据结构-线性表

数据结构-线性表 线性表的任意元素存放地址&#xff1a;Ai a1 L *(i-1) 当i0 则 Aia0L*i 少了一次计算 按照计算方法&#xff0c;当下标为0&#xff0c;可以少执行一次减法&#xff0c;这也是c数组下标取0的原因。 无论n多大都是一个固定时间称之为O(1) 时间复杂度 顺序表的运…...

Python酷库之旅-第三方库Pandas(245)

目录 一、用法精讲 1156、pandas.tseries.offsets.MonthEnd.is_month_start方法 1156-1、语法 1156-2、参数 1156-3、功能 1156-4、返回值 1156-5、说明 1156-6、用法 1156-6-1、数据准备 1156-6-2、代码示例 1156-6-3、结果输出 1157、pandas.tseries.offsets.Mon…...

贵阳思普信息技术有限公司 OA系统 apilogin 接口存在SQL注入漏洞风险

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...