Python 注释进阶之Google风格
文章目录
- 1. Google 风格 Docstring 的核心特点
- 2. Google 风格的基本结构
- 3. 编写规则和注意事项
- 4. 最常用的 Google 风格 Docstring 示例
- 示例 1:普通函数
- 示例 2:带默认参数和可变参数的函数
- 示例 3:类
- 示例 4:生成器函数
- 示例 5:模块级 Docstring
- 5. 高级用法和扩展
- 6. 常见错误和如何避免
- 7. 为什么选择 Google 风格
- 8. 总结
Google 风格的 Python Docstring 是一种广泛使用的文档字符串格式,旨在以清晰、简洁的方式描述 Python 代码的功能、参数、返回值等信息。它由 Google 提出,定义在 Google Python Style Guide 中,因其结构化、可读性强且易于解析,受到许多开发者和项目的青睐(如 TensorFlow、Google Cloud 等)。Google 风格 Docstring 使用三引号(
"""
或
'''
)定义,遵循特定结构,适合手动阅读和自动文档生成工具(如 Sphinx)。
以下是对 Google 风格 Docstring 的全面讲解,包括其结构、规则、常用场景、注意事项,以及最常用的几个示例。
1. Google 风格 Docstring 的核心特点
- 结构化:采用固定的标题(如
Args
、Returns
、Raises
等)来组织信息,便于快速查找。 - 简洁但详尽:描述应清晰,避免冗长,重点突出函数或类的用途、输入输出及可能的异常。
- 人类可读:优先考虑开发者的阅读体验,同时支持工具解析。
- 灵活性:适用于函数、方法、类、模块等多种代码单元。
- 与类型提示结合:虽然 Google 风格允许在
Args
中指定参数类型,但现代 Python 更推荐使用类型提示(type hints),Docstring 则专注于描述参数的含义。
2. Google 风格的基本结构
Google 风格 Docstring 通常包括以下部分(按需选择):
-
顶层描述:
- 函数、类或模块的简要概述,说明其主要功能或目的。
- 通常是一两句话,放在 Docstring 开头。
-
Args:
- 列出所有参数及其描述。
- 格式为:
参数名 (类型): 描述
。 - 如果参数有默认值或特殊约束,应在描述中说明。
- 对于
*args
或**kwargs
,需要说明它们的用途。
-
Returns:
- 描述函数的返回值及其类型。
- 格式为:
(类型): 描述
。 - 如果函数返回多个值(如元组),需要说明每个部分的含义。
-
Yields(生成器函数):
- 对于生成器函数,描述每次
yield
的值及其类型。 - 格式与
Returns
类似。
- 对于生成器函数,描述每次
-
Raises:
- 列出函数可能抛出的异常及其触发条件。
- 格式为:
异常类型: 描述
。
-
Attributes(类或模块):
- 描述类或模块的公共属性(变量)。
- 格式为:
属性名 (类型): 描述
。
-
Examples(可选):
- 提供使用示例,展示函数或类的典型用法。
- 通常以代码块形式(缩进)编写。
-
Note(可选):
- 提供额外信息,如实现细节、性能考虑或警告。
-
See Also(可选):
- 指向相关的函数、类或外部资源。
3. 编写规则和注意事项
- 缩进:Docstring 内容应与三引号的缩进对齐,通常为 4 个空格。
- 空行:
- 顶层描述与后续部分(如
Args
)之间加一个空行。 - 每个部分(如
Args
、Returns
)之间不需要空行,除非内容复杂。
- 顶层描述与后续部分(如
- 参数描述:
- 参数名后跟类型(括号包裹),类型后跟冒号和描述。
- 描述以大写字母开头,句号结尾,保持完整句子。
- 如果参数是可选的或有默认值,需在描述中说明。
- 类型信息:
- 虽然可以在 Docstring 中指定类型,但推荐使用 Python 的类型提示(
def func(x: int)
),Docstring 仅描述含义。 - 如果未使用类型提示,Docstring 中的类型描述尤为重要。
- 虽然可以在 Docstring 中指定类型,但推荐使用 Python 的类型提示(
- 一致性:
- 项目中应统一风格,避免混用不同 Docstring 格式。
- 对于复杂项目,建议结合 Sphinx 等工具生成文档。
- 避免冗余:
- 如果函数名或参数名已经足够自描述,Docstring 应避免重复信息。
- 例如,
def get_name() -> str
不需要过多描述返回值。
4. 最常用的 Google 风格 Docstring 示例
以下是最常见的几种场景,展示了 Google 风格 Docstring 的实际应用,涵盖函数、类、模块和生成器等。
示例 1:普通函数
def calculate_area(length: float, width: float) -> float:"""Calculate the area of a rectangle.Args:length (float): The length of the rectangle in meters.width (float): The width of the rectangle in meters.Returns:float: The area of the rectangle in square meters.Raises:ValueError: If length or width is negative."""if length < 0 or width < 0:raise ValueError("Length and width must be non-negative.")return length * width
说明:
- 顶层描述简洁,说明函数用途。
Args
列出参数,类型明确,描述含义。Returns
指定返回值类型和单位。Raises
说明异常情况。
示例 2:带默认参数和可变参数的函数
def send_message(recipient: str, message: str, priority: str = "normal", *args, **kwargs) -> bool:"""Send a message to a recipient with optional priority and metadata.Args:recipient (str): The email address of the recipient.message (str): The content of the message.priority (str): The priority level of the message. Defaults to "normal".*args: Additional positional arguments for message formatting.**kwargs: Additional metadata for the message (e.g., sender, timestamp).Returns:bool: True if the message was sent successfully, False otherwise.Examples:>>> send_message("user@example.com", "Hello!", priority="high", sender="admin")True"""# 实现代码省略return True
说明:
- 处理默认参数(
priority
)和可变参数(*args
、**kwargs
)。 Examples
展示典型用法。- 返回值类型简单,描述清晰。
示例 3:类
class DatabaseConnection:"""A class to manage database connections.Args:host (str): The database host address.port (int): The database port number.username (str): The username for authentication.password (str): The password for authentication.Attributes:connection (Connection): The active database connection object.is_connected (bool): Whether the connection is currently active.Raises:ConnectionError: If the connection cannot be established."""def __init__(self, host: str, port: int, username: str, password: str):self.host = hostself.port = portself.username = usernameself.password = passwordself.connection = Noneself.is_connected = False# 连接逻辑省略def query(self, sql: str) -> list:"""Execute a SQL query and return results.Args:sql (str): The SQL query string.Returns:list: The query results as a list of rows."""# 查询逻辑省略return []
说明:
- 类级 Docstring 描述类功能,包含构造参数(
__init__
的参数)和属性。 - 方法级 Docstring 描述具体方法。
Attributes
列出类的重要属性。
示例 4:生成器函数
def fibonacci(n: int) -> Iterator[int]:"""Generate the first n Fibonacci numbers.Args:n (int): The number of Fibonacci numbers to generate.Yields:int: The next Fibonacci number in the sequence.Raises:ValueError: If n is negative."""if n < 0:raise ValueError("n must be non-negative.")a, b = 0, 1for _ in range(n):yield aa, b = b, a + b
说明:
- 使用
Yields
描述生成器的每次返回值。 - 异常情况明确说明。
示例 5:模块级 Docstring
"""A module for handling file operations.This module provides utilities for reading, writing, and managing files.Attributes:DEFAULT_ENCODING (str): The default file encoding, set to 'utf-8'.Functions:read_file: Read the contents of a file.write_file: Write content to a file.
"""
DEFAULT_ENCODING = "utf-8"def read_file(file_path: str) -> str:"""Read the contents of a file.Args:file_path (str): The path to the file.Returns:str: The contents of the file.Raises:FileNotFoundError: If the file does not exist."""with open(file_path, "r", encoding=DEFAULT_ENCODING) as f:return f.read()
说明:
- 模块级 Docstring 描述模块的整体功能和内容。
- 使用
Attributes
和Functions
列出模块的公共接口。 - 函数级 Docstring 保持一致风格。
5. 高级用法和扩展
-
复杂参数:
- 如果参数是复杂对象(如字典或自定义类),可以在
Args
中详细描述其结构。 - 示例:
def process_config(config: dict) -> None:"""Process a configuration dictionary.Args:config (dict): A dictionary with configuration settings.Expected keys:- 'host' (str): The server host.- 'port' (int): The server port.- 'timeout' (float, optional): Connection timeout in seconds."""# 实现省略pass
- 如果参数是复杂对象(如字典或自定义类),可以在
-
多行描述:
- 如果参数或返回值的描述较长,可以换行,但保持缩进对齐。
- 示例:
def fetch_data(url: str) -> dict:"""Fetch data from a remote API.Args:url (str): The API endpoint URL. Must be a valid HTTPS URLstarting with 'https://' and include necessary query parameters.Returns:dict: The parsed JSON response from the API, containingthe requested data or an error message."""# 实现省略return {}
-
与 Sphinx 集成:
- Google 风格 Docstring 可通过
sphinx.ext.napoleon
扩展直接解析,生成 HTML 或 PDF 文档。 - 需要在 Sphinx 配置文件中启用
napoleon
:extensions = ['sphinx.ext.napoleon'] napoleon_google_docstring = True
- Google 风格 Docstring 可通过
6. 常见错误和如何避免
-
不一致的类型信息:
- 如果使用类型提示,确保 Docstring 中的类型与注解一致。
- 错误示例:
def func(x: int) -> str:"""Args: x (float): A number."""return str(x)
- 修正:将 Docstring 中的
float
改为int
。
-
缺少必要部分:
- 如果函数有返回值但未写
Returns
,或抛出异常但未写Raises
,可能导致文档不完整。 - 解决:检查函数逻辑,确保所有可能的情况都描述。
- 如果函数有返回值但未写
-
过于冗长:
- 避免在 Docstring 中重复代码逻辑或写不必要的细节。
- 错误示例:
def add(a: int, b: int) -> int:"""Add a and b. This function takes a, adds b to it, and returns the result."""return a + b
- 修正:简化为
"Add two numbers."
。
7. 为什么选择 Google 风格
- 易读性:结构清晰,标题明确,适合快速浏览。
- 社区支持:许多开源项目(如 TensorFlow)使用 Google 风格,开发者熟悉度高。
- 工具兼容:与 Sphinx、PyCharm 等工具无缝集成,支持文档生成和代码补全。
- 灵活性:适用于各种规模的项目,从小型脚本到大型框架。
8. 总结
Google 风格 Docstring 是 Python 中一种强大的文档工具,通过结构化的 Args
、Returns
、Raises
等部分,提供清晰的代码描述。它适合需要高可读性和文档生成的项目,尤其在团队协作和开源项目中。开发者应结合类型提示,遵循项目一致性,并在复杂场景下补充 Examples
或 Note
等部分。
相关文章:
Python 注释进阶之Google风格
文章目录 1. Google 风格 Docstring 的核心特点2. Google 风格的基本结构3. 编写规则和注意事项4. 最常用的 Google 风格 Docstring 示例示例 1:普通函数 示例 2:带默认参数和可变参数的函数示例 3:类示例 4:生成器函数示例 5&…...
写测试文档时,需要的环境配置怎么查看
操作系统 cat /etc/os-releaseCPU信息 lscpu 内存 sudo dmidecode --type memory | grep -E "Size:|Type:|Speed:"硬盘 列出当前系统中 所有块设备(Block Devices) 的信息,并显示指定列(-o 参数) lsblk…...
强化学习的数学原理(十)actor-critic 方法
由于全文太长,只好分开发了。(已完结!在专栏查看本系列其他文章) 个人博客可以直接看全文~ 本系列为在学习赵世钰老师的“强化学习的数学原理” 课程后所作笔记。 课堂视频链接https://www.bilibili.com/video/BV1sd4y167NS/ 第十章 acto…...
多个定时器同时工作时,会出现哪些常见的bug ,如何解决??(定时任务未实时更新但刷新后正常的问题分析)
1. 定时器冲突与覆盖 问题:后设置的定时器可能覆盖先前的定时器,导致前一个定时器失效 原因:未正确管理定时器ID或未清除前一个定时器 2. 性能问题 内存泄漏:未清除不再需要的定时器会导致内存占用不断增加 CPU过载:…...
代码随想录算法训练营day5(哈希表)
华子目录 有效的字母异位词思路 有效的字母异位词 https://leetcode.cn/problems/valid-anagram/description/ 思路 使用哈希表,这里哈希表使用数组先申请一个26空间的大小的数组遍历第一个字符串,记录每个字符出现的次数1遍历第二个字符串,…...
Python(17)Python字符编码完全指南:从存储原理到乱码终结实战
目录 背景介绍一、字符编码核心原理1. 计算机存储本质2. Python3的编码革命3. 主流编码格式对比 二、编码转换核心方法1. 编码(Encode)过程2. 解码(Decode)过程3. 错误处理策略 三、文件操作编码实战1. 文本文件读写2. 二进制模式…...
Node.js 文件读取与复制相关内容
Node.js 文件读取与复制相关内容的系统总结,包括 同步读取、异步读取、流式读取、复制操作、两者对比及内存测试。 🧩 一、Node.js 文件读取方式总结 Node.js 使用 fs(文件系统)模块进行文件操作: 1. 同步读取&#…...
大数据面试问答-HBase/ClickHouse
1. HBase 1.1 概念 HBase是构建在Hadoop HDFS之上的分布式NoSQL数据库,采用列式存储模型,支持海量数据的实时读写和随机访问。适用于高吞吐、低延迟的场景,如实时日志处理、在线交易等。 RowKey(行键) 定义…...
jupyter 文件浏览器,加强版,超好用,免费exe
第一步:github搜索 lukairui的 jupyter-viewer-plus 仓库 第二步: git clone 到本地。 解压zip包 第三步: 进入压缩包,第一次双击打开jupyter-viewer-plus.exe运行,第一次运行后,界面上有一个“设为…...
【AI工具】用大模型生成脑图初试
刚试用了一下通过大模型生成脑图,非常简单,记录一下 一、用大模型生成脑图文件 关键:存在markdown文件 举例:使用Deepseek,输入问题:“针对大模型的后训练,生成一个开发计划,用ma…...
数据结构-树与二叉树
一、树的定义与基本术语 1.1 树的定义 树(Tree)是一种非线性的数据结构,它是由 n(n ≥ 0)个有限节点组成的集合。如果 n 0,称为空树;如果 n > 0,则: 有一个特定的节…...
STL_unordered_map_01_基本用法
👋 Hi, I’m liubo👀 I’m interested in harmony🌱 I’m currently learning harmony💞️ I’m looking to collaborate on …📫 How to reach me …📇 sssssdsdsdsdsdsdasd🎃 dsdsdsdsdsddfsg…...
ARCGIS国土超级工具集1.5更新说明
ARCGIS国土超级工具集V1.5版本更新说明:因作者近段时间工作比较忙及正在编写ARCGISPro国土超级工具集(截图附后)的原因,故本次更新为小更新(没有增加新功能,只更新了已有的工具)。本次更新主要修…...
主流物理仿真引擎和机器人/强化学习仿真平台对比
以下是当前主流的物理仿真引擎和机器人/强化学习仿真平台的特点和适用场景,方便根据需求选择: 🧠 NVIDIA 系列 ✅ Isaac Lab v1.4 / v2 特点: 基于 Omniverse Isaac Sim,属于高端视觉机器人仿真框架v2 更加模块化&a…...
STM32 HAL库内部 Flash 读写实现
一、STM32F407 内部 Flash 概述 1.1 Flash 存储器的基本概念 Flash 存储器是一种非易失性存储器,它可以在掉电的情况下保持数据。STM32F407 系列微控制器内部集成了一定容量的 Flash 存储器,用于存储程序代码和数据。Flash 存储器具有擦除和编程次数的…...
C++学习:六个月从基础到就业——面向对象编程:构造函数与析构函数
C学习:六个月从基础到就业——面向对象编程:构造函数与析构函数 本文是我C学习之旅系列的第十篇技术文章,主要讨论C中构造函数与析构函数的概念、特点和使用技巧。这些是C对象生命周期管理的关键组成部分。查看完整系列目录了解更多内容。 引…...
dfs二叉树中的深搜(回溯、剪枝)--力扣129、814、230、257
目录 1.1题目链接:129.求根节点到叶结点数字之和 1.2题目描述:给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。 1.3解法(dfs-前序遍历): 2.1题目链接:814.二叉树剪枝 2.2题目描述&…...
Python Selenium 一小时速通教程
Python Selenium 一小时速通教程 实战案例 一、环境配置(10分钟) 安装Python 确保已安装Python 3.x(官网下载)。 安装Selenium 在终端运行: pip install selenium下载浏览器驱动 Chrome:访问 ChromeDriv…...
通过GO后端项目实践理解DDD架构
最近在工作过程中重构的项目要求使用DDD架构,在网上查询资料发现教程五花八门,并且大部分内容都是长篇的概念讲解,晦涩难懂,笔者看了一些github上入门的使用DDD的GO项目,并结合自己开发中的经验,谈谈自己对…...
MybatisPlus最新版分页无法使用
在使用分页的时候发现分页拦截器关键API会报错,其实根本原因是在之前只需要导入一个mybatisplus依赖,而现在分页似乎被单独分离出来了,需要额外导入新依赖使其支持 <dependency><groupId>com.baomidou</groupId><art…...
【Android学习记录】工具使用
文章目录 一. 精准找视图资源ID1. 准备工作2. 使用 uiautomator 工具2.1. 获取设备的窗口内容2.2. Pull XML 文件2.3. 查看 XML 文件 3. 直接使用 ADB 命令4. 使用 Android Studio 的 Layout Inspector总结 二. adb shell dumpsys activity1. 如何使用 ADB 命令2. 输出内容解析…...
youtube视频和telegram视频加载原理差异分析
1. 客户侧缓存与流式播放机制 流式视频应用(如 Netflix、YouTube)通过边下载边播放实现流畅体验,其核心依赖以下技术: 缓存预加载:客户端在后台持续下载视频片段(如 DASH/HLS 协议的…...
在机器视觉检测中为何选择线阵工业相机?
线阵工业相机,顾名思义是成像传感器呈“线”状的。虽然也是二维图像,但极宽,几千个像素的宽度,而高度却只有几个像素的而已。一般在两种情况下使用这种相机: 1. 被测视野为细长的带状,多用于滚筒上检测的问…...
lwip记录
Index of /releases/lwip/ (gnu.org) 以太网(Ethernet)是互联网技术的一种,由于它是在组网技术中占的比例最高,很多人 直接把以太网理解为互联网。 以太网是指遵守 IEEE 802.3 标准组成的局域网,由 IEEE 802.3 标准规定的主要是位于 参考模…...
Redis清空缓存
尽管redis可以设置ttl过期时间进行指定key的定时删除,但是在某些场景下,比如: 测试时需要批量删除指定库下所有库下所有的数据,则会涉及到缓存清除的话题。 如下为具体的操作及说明: 场景类型操作指令清空当前库下所有…...
WPF 依赖注入启动的问题
原因是在App.xaml 设置了 StartupUri“MainWindow.xaml” 1.依赖注入后启动的主窗体存在无参构造 程序正常启动,但是主窗体界面会弹出2个窗体。 2.依赖注入后启动的主窗体存在有参构造 报错...
Arcgis经纬线标注设置(英文、刻度显示)
在arcgis软件中绘制地图边框,添加经纬度度时常常面临经纬度出现中文,如下图所示: 解决方法,设置一下Arcgis的语言 点击高级--确认 这样Arcgis就转为英文版了,此时在来看经纬线刻度的标注,自动变成英文...
【电子通识】案例:电缆的安装方式也会影响设备的可靠性?
背景 在日常生活中,我们常常会忽略一些看似微不足道的细节,但这些细节有时却能决定设备的寿命和安全性。比如,你知道吗?一根电缆的布置方式,可能会决定你的设备是否会因为冷凝水而损坏。 今天,我们就来聊聊…...
房屋装修费用预算表:45594 =未付14509 + 付清31085【时间:20250416】
文章目录 引言I 房屋装修费用预算表II 市场价参考防水搬运3000III 装修计划整体流程进度细节国补IV 付款凭证(销售单)伟星 PPR +PVC+太阳线+地漏=6500入户门设计通铺大板瓷砖 | 湿贴 3408(地)+3600(加)+5209(墙)=12217元门头铁空调引言 关注我,发送【装修记账】获取预…...
Python文件操作完全指南:从基础到高级应用
目录 一、文件基础概念 1.1 什么是文件? 1.2 文件的存储方式 文本文件 二进制文件 二、Python文件操作基础 2.1 文件操作三步曲 2.2 核心函数与方法 2.3 文件读取详解 基本读取示例 文件指针机制 2.4 文件打开模式 写入文件示例 2.5 高效读取大文件 三…...
03(总)-docker篇 Dockerfile镜像制作(jdk,jar)与jar包制作成docker容器方式
全文目录,一步到位 1.前言简介1.1 专栏传送门1.1.2 上文传送门 2. docker镜像制作一: jdk2.1 制作jdk镜像2.1.1 准备工作2.1.2 jdk镜像的Dockerfile2.1.3 基于Dockerfile构建镜像2.1.4 docker使用镜像运行容器2.1.5 进入jdk1.8容器内测试 3. docker镜像制作二: java镜像(jar包)…...
CUDA的安装
打开nvidia控制面板 找到组件 打开 CUDA Toolkit Archive | NVIDIA Developer 下载CUDA...
四六级听力调频广播有线传输无线覆盖系统:弥补单一发射系统安全缺陷,构建稳定可靠听力系统平台
四六级听力调频广播有线传输无线覆盖系统:弥补单一发射系统安全缺陷,构建稳定可靠听力系统平台 北京海特伟业科技有限公司任洪卓发布于2025年4月16日 随着英语四六级考试的规模不断扩大,听力考试部分的设备可靠性问题日益凸显。传统的无线发射系统存在…...
信创服务器-大国崛起,信创当道!
信创产业是数据安全、网络安全的基础,也是新基建的重要组成部分。在政策的推动下,2020-2022 年,中国信创服务器出货量整体呈现出快速增长的趋势,其中党政、电信、金融等领域采购频次高,单次采购量大,是中国…...
【仿Mudou库one thread per loop式并发服务器实现】SERVER服务器模块实现
SERVER服务器模块实现 1. Buffer模块2. Socket模块3. Channel模块4. Poller模块5. EventLoop模块5.1 TimerQueue模块5.2 TimeWheel整合到EventLoop5.1 EventLoop与线程结合5.2 EventLoop线程池 6. Connection模块7. Acceptor模块8. TcpServer模块 1. Buffer模块 Buffer模块&…...
冒泡与 qsort 排序策略集
今天我们要学习两种排序方法,分别是冒泡排序和qsort函数排序,冒泡排序相对qsort函数排序要简单一点,更易于理解。 1.冒泡排序 冒泡排序(Bubble Sort)是一种简单的排序算法,它通过重复遍历元素列并比较相邻元素来实现排…...
【Linux】第七章 控制对文件的访问
目录 1. 什么是文件系统权限?它是如何工作的?如何查看文件的权限? 2. 解释‘-rw-r--r--’这个字符串。 3. 使用什么命令可以更改文件和目录的权限?写出分别使用符号法和数值法将权限从 754 修改为 775 的命令。 4. 如何修改文…...
网站301搬家后谷歌一直不收录新页面怎么办?
当网站因更换域名或架构调整启用301重定向后,许多站长发现谷歌迟迟不收录新页面,甚至流量大幅下滑。 例如,301跳转设置错误可能导致权重传递失效,而新站内容与原站高度重复则可能被谷歌判定为“低价值页面”。 即使技术层面无误&a…...
socket 客户端和服务器通信
服务器 using BarrageGrab; using System; using System.Collections.Concurrent; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading;namespace Lyx {class Server{private TcpListener listener;private Concurre…...
C实现md5功能
md5在线验证: 在线MD5计算_ip33.com 代码如下: #include "md5.h" #include <string.h> #include "stdio.h"/** 32-bit integer manipulation macros (little endian)*/ #ifndef GET_ULONG_LE #define GET_ULONG_LE(n,b,i) …...
【项目】CherrySudio配置MCP服务器
CherrySudio配置MCP服务器 (一)Cherry Studio介绍(二)MCP服务环境搭建(1)环境准备(2)依赖组件安装<1> Bun和UV安装 (3)MCP服务器使用<1> 搜索MCP…...
第五节:React Hooks进阶篇-如何用useMemo/useCallback优化性能
反模式:滥用导致的内存开销React 19编译器自动Memoization原理 React Hooks 性能优化进阶:从手动到自动 Memoization (基于 React 18 及以下版本,结合 React 19 新特性分析) 一、useMemo/useCallback 的正确使用场景…...
【Qt】QWidget 核⼼属性详解
🍑个人主页:Jupiter. 🚀 所属专栏:QT 欢迎大家点赞收藏评论😊 目录 🏝 一.相关概念🎨二. 核⼼属性概览🍄2.1 enabled🥭2.2geometry🌸 2.3 windowTitle&#…...
如何知道raid 有问题了
在 Rocky Linux 8 上,你的服务器使用了 RAID5(根据 lsblk 输出,/dev/sda3、/dev/sdb1 和 /dev/sdc1 组成 md127 RAID5 阵列)。为了监控 RAID5 阵列中磁盘的健康状态,并及时发现某块磁盘损坏,可以通过以下方…...
操作系统之shell实现(上)
🌟 各位看官好,我是maomi_9526! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习C语言的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更…...
精益数据分析(3/126):用数据驱动企业发展的深度解析
精益数据分析(3/126):用数据驱动企业发展的深度解析 大家好!一直以来,我都坚信在当今竞争激烈的商业环境中,数据是企业获得竞争优势的关键。最近深入研究《精益数据分析》这本书,收获颇丰&…...
React 18/19 使用Ant Design全局弹窗message
react 18 及以上,拥有并发模式,不允许在渲染过程中直接触发副作用(如弹窗、网络请求等),应将其放至 useEffect 中,确保其在渲染完成后调用 useEffect(() > {message.success(操作成功!);}, …...
【spark3.2.4】--完全分布式集群搭建
一、spark-env.sh 文件配置(操作路径:$SPARK_HOME/conf/spark-env.sh) 如果还没创建: cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh然后编辑(比如用 vim): vim…...
Web3技术下数字资产数据保护的实践探索
在这个信息爆炸的时代,数字资产已经成为我们生活中不可或缺的一部分。随着Web3技术的兴起,它以其去中心化、透明性和安全性的特点,为数字资产的管理和保护提供了新的解决方案。本文将探讨Web3技术在数字资产数据保护方面的实践探索࿰…...
灰度共生矩阵(GLCM)简介
灰度共生矩阵(GLCM)简介 1. 基本概念 灰度共生矩阵(Gray-level Co-occurrence Matrix, GLCM)是一种用于分析图像纹理特征的统计方法。它通过计算图像中特定空间关系的像素对出现的频率,来描述纹理的规律性1。 核心思想:统计图像中相距为d、方向为θ的两个像素点,分别具…...