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

如何检查 Watchtower 是否正常工作及更新未生效的排查方法【日常排错】

文章目录

  • 前言
  • 一、验证 Watchtower 是否正在运行
    • 1. 检查 Watchtower 容器状态
    • 2. 查看 Watchtower 日志
  • 二、检查5分钟间隔设置是否正确
    • 1. 确认启动命令
    • 2. 验证环境变量
  • 三、排查更新未生效的原因
    • 1. 检查是否有镜像更新
    • 2. 检查容器标签
    • 3. 检查监控范围
  • 四、测试 Watchtower 功能
    • 1. 手动触发检查🎯
    • 2. 创建测试容器
  • 五、常见问题解决方案
    • 1. 时间间隔不生效
    • 2. Watchtower 完全不工作
  • 六、推荐的生产环境监控方案
  • 七、分析日志
    • 1. 阿里云私有仓库认证失败(主要问题)
    • 2. 解决方案
    • 3. 问题解决


前言

写这篇文章主要记录一次实际生产环境遇到的问题。起因是公司有两个镜像库,一个是无需认证的公共镜像库,一个是需要账号密码认证的私有镜像库。都通过docker + watchtower 实现自动容器更新,但是私有库死活不生效。下面记录了排查过程。我这里是用了 5分钟 的定时检查。

虽然下文有很多方法都不是解决本次事故的原因,但是如果你不是站在 上帝视角你又怎么能知道到底是因为什么原因引起的呢?所以我把排查方法都罗列出来了。


一、验证 Watchtower 是否正在运行

1. 检查 Watchtower 容器状态

docker ps -f name=watchtower

正常应该看到类似输出:

CONTAINER ID   IMAGE                       COMMAND        CREATED       STATUS       PORTS     NAMES
a1b2c3d4e5f6   containrrr/watchtower:latest   "/watchtower"   2 days ago    Up 2 days             watchtower

如果 STATUS 不是 "Up" ,说明容器没有正常运行。

2. 查看 Watchtower 日志

docker logs watchtower

正常运行的 Watchtower 会有类似这样的周期性日志:

time="2023-05-01T12:00:00Z" level=info msg="Checking for new images"
time="2023-05-01T12:00:01Z" level=info msg="No new images found for nginx"

二、检查5分钟间隔设置是否正确

1. 确认启动命令

你的启动命令应该包含类似这样的环境变量设置:

docker run -d \--name watchtower \-v /var/run/docker.sock:/var/run/docker.sock \-e WATCHTOWER_POLL_INTERVAL=300 \  # 300秒=5分钟containrrr/watchtower

常见错误:

  • 拼写错误:WATCHTOWER(错误) vs WATCHTOWER(正确)
  • 值不是秒数:应该直接写300(秒),而不是"5m"或"5 minutes"

2. 验证环境变量

docker inspect watchtower | grep -i poll_interval

应该能看到类似:

"WATCHTOWER_POLL_INTERVAL=300"

三、排查更新未生效的原因

1. 检查是否有镜像更新

Watchtower 只会在镜像仓库有新版本时才会更新。确认你的镜像确实有新版本:

docker pull 你的镜像名:latest
docker images | grep 你的镜像名

2. 检查容器标签

某些标签会阻止 Watchtower 更新:

docker inspect 你的容器名 | grep -i watchtower.enable

如果看到 "com.centurylinklabs.watchtower.enable=false",说明该容器被排除在更新外。

3. 检查监控范围

默认 Watchtower 监控所有容器,但如果你指定了特定容器,确认包含了你想要更新的容器:

docker inspect watchtower | grep -A5 "Cmd"

四、测试 Watchtower 功能

1. 手动触发检查🎯

docker exec watchtower /watchtower --run-once

这会立即执行一次检查更新操作,查看日志确认:

docker logs watchtower --tail 50

2. 创建测试容器

启动一个专门用于测试的容器:

docker run -d --name test-watchtower alpine tail -f /dev/null

然后推送一个新版本的 alpine 镜像到仓库,观察 Watchtower 是否会更新这个测试容器。

五、常见问题解决方案

1. 时间间隔不生效

可能原因:

  • 环境变量名称拼写错误
  • 值格式不正确(必须是秒数)
  • Watchtower版本过旧

解决方案:

# 停止并删除旧容器
docker stop watchtower && docker rm watchtower# 使用最新版Watchtower并正确设置
docker run -d \--name watchtower \-v /var/run/docker.sock:/var/run/docker.sock \-e WATCHTOWER_POLL_INTERVAL=300 \containrrr/watchtower:latest

2. Watchtower 完全不工作

检查点:

  • 确保 Docker 守护进程正常运行
  • 检查 /var/run/docker.sock 的权限
  • 尝试使用 --debug 模式获取更多日志信息:
docker run -d \--name watchtower \-v /var/run/docker.sock:/var/run/docker.sock \-e WATCHTOWER_POLL_INTERVAL=300 \-e WATCHTOWER_DEBUG=true \containrrr/watchtower

然后查看详细日志:📃

docker logs watchtower

六、推荐的生产环境监控方案

对于生产环境,建议配置通知功能以便及时了解更新情况:

docker run -d \--name watchtower \-v /var/run/docker.sock:/var/run/docker.sock \-e WATCHTOWER_POLL_INTERVAL=300 \-e WATCHTOWER_NOTIFICATIONS=email \-e WATCHTOWER_NOTIFICATION_EMAIL_FROM=your@email.com \-e WATCHTOWER_NOTIFICATION_EMAIL_TO=admin@email.com \-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.email.com \-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587 \-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=your@email.com \-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=yourpassword \containrrr/watchtower

通过以上步骤,你应该能够确定为什么5分钟更新间隔没有生效,并根据具体情况解决问题。如果问题仍然存在,可以提供更多日志信息以便进一步诊断。

七、分析日志

上面方法我都试了,然而还是不行,我就把日志拷贝出来分析了下,后来恍然大悟,有没有可能是我们拉取镜像时没有登录授权,因为这个镜像库是私有的。一拍脑袋,没错。日志如下:

time="2025-05-07T07:36:21Z" level=debug msg="Got response to challenge request" header="Bearer realm=\"https://dockerauth.cn-hangzhou.aliyuncs.com/auth\",service=\"registry.aliyuncs.com:cn-beijing:26842\"" status="401 Unauthorized"

1. 阿里云私有仓库认证失败(主要问题)

多个容器出现类似错误:

time="2025-05-07T07:36:21Z" level=debug msg="No credentials for registry.cn-beijing.aliyuncs.com found"
time="2025-05-07T07:36:21Z" level=debug msg="Error pulling image registry.cn-beijing.aliyuncs.com/itdos/os.itdos.com:latest, Error response from daemon: pull access denied..."

问题分析:

  • 所有来自 registry.cn-beijing.aliyuncs.com 的镜像都无法拉取
  • Watchtower 没有配置私有仓库的认证信息
  • 错误明确显示 "pull access denied"

根本原因:
私有仓库需要登录凭证,但 Watchtower 未配置这些凭证。

2. 解决方案

方案1:配置 Watchtower 使用私有仓库凭证
方法A:通过环境变量传递凭证

docker run -d \--name watchtower \-v /var/run/docker.sock:/var/run/docker.sock \-e REPO_USER=your_username \-e REPO_PASS=your_password \-e WATCHTOWER_POLL_INTERVAL=300 \containrrr/watchtower \--debug

方法B:使用 Docker 配置文件(推荐)
首先登录私有仓库:

docker login registry.cn-beijing.aliyuncs.com

然后启动 Watchtower 并挂载 Docker 配置文件:

docker run -d \--name watchtower \-v /var/run/docker.sock:/var/run/docker.sock \-v $HOME/.docker/config.json:/config.json \-e WATCHTOWER_POLL_INTERVAL=300 \containrrr/watchtower

3. 问题解决

我用了第一种方法,通过环境变量传递凭证

docker run -d \--name watchtower \-v /var/run/docker.sock:/var/run/docker.sock \-e REPO_USER=your_username \-e REPO_PASS=your_password \-e WATCHTOWER_POLL_INTERVAL=300 \containrrr/watchtower \--debug

果然问题解决✅

相关文章:

如何检查 Watchtower 是否正常工作及更新未生效的排查方法【日常排错】

文章目录 前言一、验证 Watchtower 是否正在运行1. 检查 Watchtower 容器状态2. 查看 Watchtower 日志 二、检查5分钟间隔设置是否正确1. 确认启动命令2. 验证环境变量 三、排查更新未生效的原因1. 检查是否有镜像更新2. 检查容器标签3. 检查监控范围 四、测试 Watchtower 功能…...

网站网页经常 400 错误,清缓存后就好了的原因剖析

目录 一、HTTP 400 错误的常见起因(一)URL 有问题(二)缓存或 Cookie 出状况(三)文件尺寸超标(四)请求头信息不对劲二、清缓存为何能奏效三、其他可以尝试的解决办法(一)重新检查 URL(二)暂时关闭浏览器插件(三)切换网络环境(四)更新浏览器版本(五)检查服务器…...

Linux系统基本指令和知识指南

一、Linux系统简介 Linux是一种自由和开放源代码的类UNIX操作系统,由林纳斯托瓦兹在1991年首次发布。它以稳定性、安全性和灵活性著称,广泛应用于服务器、嵌入式系统和个人计算机。 Linux主要特点: 开源免费 多用户、多任务 良好的安全性…...

Dify平台下基于搜索引擎SearXNG 和文本转换工具Marp的PPT助手搭建

marp-cli安装: Marp 是一个基于 Markdown 的开源幻灯片制作工具,可以轻松将 Markdown 文档转换为精美的幻灯片。其核心是 Marpit 框架,支持可定制主题、多种输出格式和动态功能。 Marp 支持的功能 通过插件快速制作:支持 VS Co…...

内网渗透技术全面指南——安全业务视角(基于《内网渗透技术 (吴丽进、苗春雨 主编;郑州、雷珊珊、王伦 副主编)》)

文章目录 一、内网渗透概述二、内网渗透环境准备2.1 C&C工具的使用2.2 Windows域环境的搭建 三、内网信息收集技术3.1 本机信息收集3.2 内网主机信息收集 四、内网权限提升技术4.1 Windows主机权限提升4.2 Linux主机权限提升4.3 通过第三方服务提权 五、内网代理穿透技术5.…...

数据清洗-电商双11美妆数据分析(二)

1.接下来用seaborn包给出每个店铺各个大类以及各个小类的销量销售额 先观察销量,各店小类中销量最高的是相宜本草的补水类商品以及妮维雅的清洁类商品,这两类销量很接近。而销售额上,相宜本草的补水类商品比妮维雅的清洁类商品要高得多&#…...

矩阵系统源码搭建 UI 设计开发指南,支持OEM

在数字化时代,矩阵系统作为高效的数据处理和管理工具,广泛应用于各个领域。而一个优秀的 UI 设计,不仅能提升用户体验,还能使矩阵系统的功能发挥得更加淋漓尽致。本文将详细介绍矩阵系统源码搭建 UI 设计的全流程,助你…...

认识中间件-以及两个简单的示例

认识中间件-以及两个简单的示例 什么是中间件一个响应处理中间件老朋友 nest g如何使用为某个module引入全局引入 编写逻辑 一个日志中间件nest g mi 生成引入思考 代码进度 什么是中间件 官方文档 中间件是在路由处理程序之前调用的函数。中间件函数可以访问请求和响应对象&…...

使用 Gradio + Qwen3 + vLLM 部署 Text2SQL 多表查询系统

完成使用 Gradio 作为前端,Qwen3 作为大模型,vLLM 作为推理引擎来部署一个支持多表查询的 Text2SQL 系统。 系统架构概述 Gradio: 提供用户友好的 Web 界面 Qwen3: 通义千问的最新开源大模型,擅长文本到SQL转换 vLLM: 高效的大模型推理引擎…...

OrangePi Zero 3学习笔记(Android篇)2 - 第一个C程序

目录 1. 创建项目文件夹 2. 创建c/cpp文件 3. 创建Android.mk/Android.bp文件 3.1 Android.mk 3.2 Android.bp 4. 编译 5. adb push 6. 打包到image中 在AOSP里面添加一个C或C程序,这个程序在Android中需要通过shell的方式运行。 1. 创建项目文件夹 首先需…...

【数据结构】手撕二叉搜索树

目录 二叉搜索树的概念二叉搜索树的实现节点类构造函数拷贝构造函数赋值运算符重载析构函数插入函数查找函数删除函数中序遍历 二叉搜索树的应用(k和k/v模型 ) 二叉搜索树的概念 ⼆叉搜索树⼜称⼆叉排序树,它或者是⼀棵空树,或者是具有以下性质的⼆叉树…...

C++排序算法(一)

一.初识排序 排序是将一组数据元素按照特定的顺序(如升序或降序)进行重新排列的操作。排序算法则是实现这种数据重新排列的具体方法。 c/c中,这些元素可以是各种数据类型,比如整数、浮点数、字符串,甚至是自定…...

链表——C语言

一、单项不带头 #pragma once #include<stdio.h> #include<stdlib.h>typedef int data; typedef struct list {data a;struct list* next; }list;list* buynode(data x);void pushback(list** phead,data x);void popback(list** phead);void pushfront(list** ph…...

Java学习手册:数据库事务相关知识

一、事务的概念与特性 概念 &#xff1a;事务是数据库中一系列操作的集合&#xff0c;这些操作要么全部成功&#xff0c;要么全部失败&#xff0c;是一个不可分割的工作单位。例如&#xff0c;在银行转账系统中&#xff0c;从一个账户扣款和向另一个账户存款这两个操作必须作为…...

碰一碰发视频源码搭建的技术迭代与升级实践

在数字化营销与智能交互场景不断拓展的背景下&#xff0c;碰一碰发视频技术凭借其便捷性和创新性&#xff0c;成为实体商业、文旅宣传等领域的重要工具。然而&#xff0c;随着用户需求升级、技术快速发展&#xff0c;基于源码搭建的碰一碰发视频系统也需持续迭代更新。本文将围…...

Linux 内核学习(6) --- Linux 内核基础知识

目录 Linux 内核基础知识进程调度内存管理虚拟文件系统和网络接口进程间通信Linux 内核编译Makefile 和 Kconfig内核Makefile内核Kconfig 配置项标识的写法depend 关键字select 关键字表达式逻辑关系Kconfig 其他语法 配置文件的编译Linux 内核引导方法Booloader 定义Linux 内核…...

28. C++位图 布隆过滤器 哈希切割相关

文章目录 位图位图概念代码实现将x比特位置1将x比特位置0检测位图中x是否为1全部代码实现 C库中的位图 bitset位图的应用 布隆过滤器布隆过滤器提出布隆过滤器概念布隆过滤器的特点控制误判率布隆过滤器的实现布隆过滤器的插入布隆过滤器的查找布隆过滤器的删除布隆过滤器优点布…...

第2章 神经网络的数学基础

本章我们将梳理一下神经网络所需的数学基础知识&#xff0c;其中大多数内容没有超出高中所学范围&#xff0c;因此读起来不会吃力。 2-1神经网络所需的函数 本节我们来看一下神经网络世界中频繁出现的函数。虽然它们都是基本的函数&#xff0c;但是对于神经网络是不可缺少的。…...

linux环境安装docker

linux环境下载安装docker 参考网址查询服务器的操作系统下载docker1、卸载已安装的docker2、安装dnf-plugins-core 包3、配置镜像仓库4、安装版本安装最新版本安装指定版本 5、设置开机自启动6、运行测试7、卸载重装清理 Docker 系统中不再使用的数据&#xff08;容器、缓存&am…...

windows使用bat脚本激活conda环境

本文不生产技术&#xff0c;只做技术的搬运工&#xff01;&#xff01;&#xff01; 前言 最近需要在windows上使用批处理脚本执行一些python任务&#xff0c;但是被自动激活conda环境给卡住了&#xff0c;研究了一下解决方案 解决方案 call your_conda_path\Scripts\activa…...

第一章:MySQL 索引基础

第一章&#xff1a;MySQL 索引基础 1. 索引是什么&#xff1f; ​​定义​​&#xff1a;索引&#xff08;Index&#xff09;是数据库中用于快速查找数据的一种数据结构&#xff0c;类似于书籍的目录。​​核心作用​​&#xff1a;通过减少磁盘I/O次数&#xff0c;加速查询速…...

紫光展锐全新奇迹手游引擎,开启游戏“芯”时代

UNISOC Miracle Gaming奇迹手游引擎亮点&#xff1a; • 高帧稳帧&#xff1a;支持《王者荣耀》等主流手游90帧高画质模式&#xff0c;连续丢帧率最高降低85%; • 丝滑操控&#xff1a;游戏冷启动速度提升50%&#xff0c;《和平精英》开镜开枪操作延迟降低80%; • 极速网络&…...

C++ 的未来趋势与挑战:探索新边界

引言 在软件开发的浩瀚宇宙中&#xff0c;C 一直是一颗耀眼的恒星&#xff0c;凭借其卓越的性能和广泛的适用性&#xff0c;在系统编程、游戏开发、嵌入式系统等诸多领域占据着核心地位。随着科技的飞速发展&#xff0c;C 也面临着新的趋势和挑战。本文将深入探讨 C 在 AI 驱动…...

Oracle 开窗函数

Oracle 开窗函数&#xff08;Window Functions&#xff09;允许在不合并行的前提下对数据进行复杂分析&#xff0c;常用于排名、累计计算、前后行对比等场景。 一、核心语法结构 函数名() OVER ([PARTITION BY 分区列] [ORDER BY 排序列 [ASC|DESC]] [窗口帧子句 (ROWS | RAN…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】7.3 动态报表生成(Jupyter Notebook/ReportLab)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 PostgreSQL数据分析实战&#xff1a;动态报表生成&#xff08;Jupyter Notebook/ReportLab&#xff09;一、动态报表生成概述&#xff08;一&#xff09;动态报表的重要性&a…...

Oracle OCP认证考试考点详解083系列11

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 51. 第51题&#xff1a; 题目 解析及答案&#xff1a; 关于在 Linux 上安装 Oracle 数据库&#xff0c;以下哪三项是正确的&#xff1f;…...

双11美妆数据分析

1. 导入库使用Python进行分析&#xff0c;需要导入相关库&#xff1a; pythonimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns 1. 读取数据1. 查看数据基本信息 查看前几行&#xff1a;使用 df.head() 查看数据的前5行&#xff…...

github+ Picgo+typora

github Picgotypora 本文将介绍如何使用Picgo在typora中实现上传服务 创建github仓库以及配置token 创建仓库 注意需要Initialize 添加README 配置为public 配置token github点击头像找到setting 选择Developer setting 配置token generate 选第一个第二个都行(我这里选第…...

战术级微波干扰系统:成都鼎轻量化装备如何实现全频段智能压制?

在5G与卫星通信蓬勃发展的今天&#xff0c;成都鼎讯科技推出新一代微波通信干扰设备&#xff0c;以1000-6000MHz全频段覆盖能力&#xff0c;打造单兵可携的"电磁手术刀"。该设备突破传统微波干扰设备"高能耗、大体积"的桎梏&#xff0c;通过军用级模块化设…...

Oracle 数据布局探秘:段与区块的内部机制

前言 在 Oracle 数据库的庞大架构中&#xff0c;数据存储的效率与性能是决定整个系统健康状况的关键因素。Oracle 采用了一套精妙的逻辑存储管理体系来组织和分配数据&#xff0c;其中&#xff0c;“段&#xff08;Segment&#xff09;”和“区&#xff08;Extent&#xff09;…...

leetcode 142. Linked List Cycle II

题目描述 哈希表解法 这个方法很容易想到&#xff0c;但需要O(N)的空间。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode *detect…...

探索智能体的记忆:类型、策略和应用

AI Agent 中的记忆&#xff1a;类型、策略和应用 记忆实现是使智能体能够保持上下文、从过去的交互中学习并做出明智决策的关键组成部分。与人类记忆非常相似&#xff0c;智能体记忆允许 AI 系统随时间存储、检索和利用信息&#xff0c;从而为用户创造更连贯和个性化的体验。 …...

mysql集成Qwen大模型MCP计算【附实战代码】

mysql集成Qwen大模型MCP计算 题目分析步骤 1:在 MySQL 中构建核素半衰期数据库1.1 数据库设计1.2 安装和设置 MySQL1.3 创建数据库和表步骤 2:构建放射性活度计算函数2.1 依赖库2.2 Python 函数2.3 函数说明步骤 3:修复 MySQL 访问权限步骤 4:代码实践用户输入指导测试用例…...

006 yum和Linux生态

&#x1f984; 个人主页: 小米里的大麦-CSDN博客 &#x1f38f; 所属专栏: Linux_小米里的大麦的博客-CSDN博客 &#x1f381; GitHub主页: 小米里的大麦的 GitHub ⚙️ 操作环境: Visual Studio 2022 文章目录 Linux 软件包管理器 yum什么是软件包&#xff1f;基于 Linux 系统…...

一种扫描雷达超分辨成像检测一体化方法——论文阅读

一种扫描雷达超分辨成像检测一体化方法 1. 专利的研究目标与产业意义1.1 研究目标与实际问题1.2 产业意义2. 专利的创新方法:低秩稀疏约束与联合优化框架(重点解析)2.1 核心思路与模型构建2.2 迭代优化算法2.3 与传统方法的对比优势3. 实验设计与验证3.1 实验参数3.2 实验结…...

三款实用工具推荐:配音软件+Windows暂停更新+音视频下载!

各位打工人请注意&#xff01;今天李师傅掏出的三件套&#xff0c;都是经过实战检验的效率放大器。先收藏再划走&#xff0c;说不定哪天就能救命&#xff01; 一.祈风TTS-配音大师 做短视频的朋友肯定深有体会——配个音比写脚本还费劲&#xff01;要么付费买声音&#xff0c…...

云平台的文件如何备份

不同的云平台有不同的文件备份方式&#xff0c;以下以常见的阿里云、腾讯云为例进行介绍&#xff1a; 阿里云 对象存储 OSS 可以通过 OSS 控制台&#xff0c;选择需要备份的 Bucket&#xff08;存储桶&#xff09;和文件&#xff0c;手动发起备份操作&#xff0c;将数据复制到…...

密码学系列 - SR25519与ED25519

SR25519 SR25519 是一种高级的数字签名算法&#xff0c;它基于 Schnorr 签名方案&#xff0c;使用的是 Curve25519 椭圆曲线。这种签名算法在密码学社区中广受欢迎&#xff0c;特别是在区块链和加密货币领域。以下是关于 SR25519 的详细介绍。 SR25519 简介 SR25519 是一种 …...

XMP-Toolkit-SDK 编译与示例程序

一、前言 最近在调研图片的元数据读写方案&#xff0c;需要了解 XMP 空间以及如何在 XMP 空间中读写元数据&#xff0c;本文做一个相关内容的记录。 XMP-Toolkit-SDK 以及 XMP标准简介 XMP-Toolkit-SDK 是 Adobe 提供的一套开源软件开发工具包&#xff08;SDK&#xff09;&a…...

基于nnom的多选择器

核心组件 元件类型目的接口STM32F103CB微控制器主处理单元-MPU60506 轴 IMU移动侦测I2C 接口W25Q64 系列闪存信号和配置存储SPI 系列按钮用户输入模式选择和激活GPIO &#xff08;通用输出&#xff09;搭载了LED用户反馈系统状态指示GPIO &#xff08;通用输出&#xff09;RT6…...

铁塔基站项目用电能表有哪些?

简婷 安科瑞电气股份有限公司 上海嘉定 201801 引言&#xff1a;随着5G基站的迅猛发展&#xff0c;基站的能耗问题也越来越突出&#xff0c;高效可靠的基站配电系统方案&#xff0c;是提高基站能耗使用效率&#xff0c;实现基站节能降耗的重要保证&#xff0c;通过多回路仪表…...

ROS-仿真实验平台

&#xff08;1&#xff09;ROS基本架构 机器人操作系统&#xff08;Robot Operating System&#xff0c;ROS&#xff09;是一款基于开源协议的、针对 机器人进行开发的、灵活可扩展的的软件平台&#xff0c;整合多种软件功能包和开发工具&#xff0c;提 供机器人操作系统所需的…...

Loly: 1靶场渗透

Loly: 1 来自 <Loly: 1 ~ VulnHub> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182&#xff0c;靶场IP192.168.23.241 3&#xff0c;对靶机进行端口服务探测 n…...

LeetCode第191题_位1的个数

LeetCode 第191题&#xff1a;位1的个数 题目描述 编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&#xff09;&#xff0c;返回其二进制表达式中数字位数为 ‘1’ 的个数&#xff08;也被称为汉明重量&#xff09;。 难度 简单 题目链接 点…...

JVM——Java内存模型

Java内存模型 在Java多线程编程中&#xff0c;Java内存模型&#xff08;Java Memory Model, JMM&#xff09;是理解程序执行行为和实现线程安全的关键。下面我们深入探讨Java内存模型的内容。 Java内存模型概述 Java内存模型定义了Java程序中变量的内存操作规则&#xff0c;…...

JVM局部变量表和操作数栈的内存布局

局部变量表和操作数栈 首先看一段Java源码 public class Add_Sample{public int add(int i, int j){int k 100;int result i j k;return result;}public static void main(String[] args){int result new Add_Sample().add(10,20);System.out.println(result);} }使用ja…...

【MongoDB篇】MongoDB的分片操作!

目录 引言第一节&#xff1a;分片核心概念&#xff1a;为什么要分片&#xff1f;它是什么&#xff1f; &#x1f914;&#x1f4a5;&#x1f680;第二节&#xff1a;分片架构的“三大金刚”&#xff1a;核心组件解析 &#x1f9f1;&#x1f9e0;&#x1f6e3;️第三节&#xff…...

AI一键替换商品融入场景,5分钟打造专业级商品图

在电商行业&#xff0c;传统修图工具操作复杂、耗时费力&#xff0c;尤其是将商品自然融入多样化场景的需求&#xff0c;常让卖家头疼不已。如今&#xff0c;一款专为电商设计的AI工具-图生生&#xff0c;其核心功能“AI商品图-更换背景”&#xff0c;颠覆传统流程。只需上传一…...

《数据结构:二叉搜索树(Binary Search Tree)》

文章目录 :red_circle:一、二叉搜索树的概念:red_circle:二、二叉搜索树的性能分析:red_circle:三、二叉搜索树的操作&#xff08;一&#xff09;插入&#xff08;二&#xff09;查找&#xff08;三&#xff09;删除 :red_circle:四、二叉搜索树的实现代码&#xff08;一&#…...

isNotBlank和isNotEmpty有什么区别?

如下是hutool的StrUtil工具包下的源码 结果&#xff1a;如果字符串仅由空白字符组成&#xff08;比如 " "&#xff09;&#xff0c;那么isNotBlank将返回false&#xff0c;而isNotEmpty返回true。 isNotBlank当中的Blank是空白的意思&#xff0c;也就是是否不等于空…...