数据脱敏工具:基于 FFmpeg 的视频批量裁剪
在数据处理和隐私保护领域,数据脱敏是一项重要的任务,尤其是在处理包含敏感信息的视频数据时。本文介绍了一种使用 Python 和 FFmpeg 实现的视频批量裁剪工具,该工具可以将视频中的敏感区域裁剪掉,从而实现数据脱敏。通过使用 PyInstaller 将 Python 脚本打包成独立的可执行文件,确保该工具可以在没有安装 FFmpeg 的计算机上正常运行。本文详细介绍了工具的实现过程、打包方法以及测试步骤,旨在为数据安全和隐私保护提供一种高效、可靠的解决方案。
1.安装必要的库,首先,确保你已经安装了以下库:
tkinter:用于文件对话框的选择。
subprocess:用于调用外部命令(如 FFmpeg)。
os 和 sys:用于文件路径操作和获取可执行文件的目录。
1.2 下载 FFmpeg
下载 FFmpeg 的 Windows 版本可执行文件,并将其放置在你的项目目录中。你可以从 FFmpeg官方网站 下载适合的版本。
2.编写 Python 脚本
2.1 获取 FFmpeg 路径
为了确保在打包后的 exe 文件中能够正确找到 FFmpeg,我们需要动态获取 FFmpeg 的路径。使用 sys._MEIPASS 可以在打包后的环境中获取可执行文件的目录。
import os
import subprocess
import sys
import tkinter as tk
from tkinter import filedialogdef get_ffmpeg_path():# 获取可执行文件的目录if hasattr(sys, '_MEIPASS'):exe_dir = sys._MEIPASSelse:exe_dir = os.path.dirname(os.path.abspath(__file__))# FFmpeg 可执行文件的相对路径ffmpeg_path = os.path.join(exe_dir, 'ffmpeg-win64-v4.2.2.exe')return ffmpeg_path
2.2 视频裁剪函数
定义一个函数 crop_video,用于调用 FFmpeg 进行视频裁剪。
def crop_video(input_file, output_file, x1, y1, x2, y2):# 获取 FFmpeg 可执行文件的路径ffmpeg_path = get_ffmpeg_path()# 构建 FFmpeg 命令command = [ffmpeg_path,'-i', input_file, # 输入文件'-vf', f'crop={x2 - x1}:{y2 - y1}:{x1}:{y1}', # 裁剪参数'-c:v', 'libx264', # 使用 H.264 编码器'-crf', '18', # 设置 CRF 值'-preset', 'slow', # 设置编码速度/质量权衡'-b:v', '5000k', # 设置视频比特率'-c:a', 'copy', # 复制音频流output_file # 输出文件]# 执行命令try:subprocess.run(command, check=True)except subprocess.CalledProcessError as e:print(f"Error executing FFmpeg: {e}")except FileNotFoundError as e:print(f"FFmpeg not found: {e}")
2.3 批量裁剪函数
定义一个函数 batch_crop_videos,用于遍历输入文件夹中的所有视频文件,并调用 crop_video 进行裁剪。
def batch_crop_videos(input_folder, output_folder, x1, y1, x2, y2):# 确保输出文件夹存在if not os.path.exists(output_folder):os.makedirs(output_folder)# 遍历输入文件夹中的所有文件for filename in os.listdir(input_folder):if filename.endswith(('.wmv', '.mp4', '.avi', '.mkv')): # 支持的视频格式input_file = os.path.join(input_folder, filename)# 生成输出文件路径,统一为 .mp4 格式output_filename = os.path.splitext(filename)[0] + '.mp4'output_file = os.path.join(output_folder, output_filename)print(f"Cropping {input_file} to {output_file}")crop_video(input_file, output_file, x1, y1, x2, y2)
2.4 主函数
定义主函数 main,用于创建 Tkinter 窗口,让用户选择输入和输出文件夹,并设置裁剪区域坐标。
def main():# 创建 Tkinter 窗口root = tk.Tk()root.withdraw() # 隐藏主窗口# 选择输入文件夹input_folder = filedialog.askdirectory(title="Select Input Folder")if not input_folder:print("No input folder selected. Exiting.")return# 选择输出文件夹output_folder = filedialog.askdirectory(title="Select Output Folder")if not output_folder:print("No output folder selected. Exiting.")return# 设置裁剪区域坐标x1 = 250 # 左上角 X 坐标y1 = 137 # 左上角 Y 坐标x2 = 1030 # 右下角 X 坐标y2 = 820 # 右下角 Y 坐标batch_crop_videos(input_folder, output_folder, x1, y1, x2, y2)if __name__ == "__main__":main()
3. 打包成可执行文件
3.1使用 PyInstaller 打包
使用 PyInstaller 将 Python 脚本打包成独立的可执行文件。确保将 FFmpeg 可执行文件包含在内。
pyinstaller --onefile --add-binary "ffmpeg-win64-v4.2.2.exe;." crop_videos.py
3.2 解释打包命令
–onefile:将所有依赖项打包成一个单独的可执行文件。
–add-binary “ffmpeg-win64-v4.2.2.exe;.”:将 FFmpeg 可执行文件包含在内,并将其放置在可执行文件的同一目录中。
crop_videos.py:你的 Python 脚本文件名。
4. 测试可执行文件
将生成的 exe 文件发送到没有安装 FFmpeg 的计算机上进行测试,确保其能够正常运行。完整脚本如下:
import os
import subprocess
import sys
import tkinter as tk
from tkinter import filedialogdef get_ffmpeg_path():# 获取可执行文件的目录if hasattr(sys, '_MEIPASS'):exe_dir = sys._MEIPASSelse:exe_dir = os.path.dirname(os.path.abspath(__file__))# FFmpeg 可执行文件的相对路径ffmpeg_path = os.path.join(exe_dir, 'ffmpeg-win64-v4.2.2.exe')return ffmpeg_pathdef crop_video(input_file, output_file, x1, y1, x2, y2):# 获取 FFmpeg 可执行文件的路径ffmpeg_path = get_ffmpeg_path()# 构建 FFmpeg 命令command = [ffmpeg_path,'-i', input_file, # 输入文件'-vf', f'crop={x2 - x1}:{y2 - y1}:{x1}:{y1}', # 裁剪参数'-c:v', 'libx264', # 使用 H.264 编码器'-crf', '18', # 设置 CRF 值'-preset', 'slow', # 设置编码速度/质量权衡'-b:v', '5000k', # 设置视频比特率'-c:a', 'copy', # 复制音频流output_file # 输出文件]# 执行命令try:subprocess.run(command, check=True)except subprocess.CalledProcessError as e:print(f"Error executing FFmpeg: {e}")except FileNotFoundError as e:print(f"FFmpeg not found: {e}")def batch_crop_videos(input_folder, output_folder, x1, y1, x2, y2):# 确保输出文件夹存在if not os.path.exists(output_folder):os.makedirs(output_folder)# 遍历输入文件夹中的所有文件for filename in os.listdir(input_folder):if filename.endswith(('.wmv', '.mp4', '.avi', '.mkv')): # 支持的视频格式input_file = os.path.join(input_folder, filename)# 生成输出文件路径,统一为 .mp4 格式output_filename = os.path.splitext(filename)[0] + '.mp4'output_file = os.path.join(output_folder, output_filename)print(f"Cropping {input_file} to {output_file}")crop_video(input_file, output_file, x1, y1, x2, y2)def main():# 创建 Tkinter 窗口root = tk.Tk()root.withdraw() # 隐藏主窗口# 选择输入文件夹input_folder = filedialog.askdirectory(title="Select Input Folder")if not input_folder:print("No input folder selected. Exiting.")return# 选择输出文件夹output_folder = filedialog.askdirectory(title="Select Output Folder")if not output_folder:print("No output folder selected. Exiting.")return# 设置裁剪区域坐标x1 = 250 # 左上角 X 坐标y1 = 137 # 左上角 Y 坐标x2 = 1030 # 右下角 X 坐标y2 = 820 # 右下角 Y 坐标batch_crop_videos(input_folder, output_folder, x1, y1, x2, y2)if __name__ == "__main__":main()
打包命令pyinstaller --onefile --add-binary "ffmpeg-win64-v4.2.2.exe;." main.py
5. 总结
通过上述步骤,我们可以将一个使用 FFmpeg 进行视频裁剪的 Python 脚本打包成独立的可执行文件,并确保在没有安装 FFmpeg 的计算机上能够正常运行。希望本文对你有所帮助。如果有任何问题或建议,请随时留言交流。
相关文章:
数据脱敏工具:基于 FFmpeg 的视频批量裁剪
在数据处理和隐私保护领域,数据脱敏是一项重要的任务,尤其是在处理包含敏感信息的视频数据时。本文介绍了一种使用 Python 和 FFmpeg 实现的视频批量裁剪工具,该工具可以将视频中的敏感区域裁剪掉,从而实现数据脱敏。通过使用 PyI…...
从零开始:使用 Spring Boot 开发图书管理系统
如何利用是springboot搭建一个简单的图书管理系统,下面让我们一起来看看吧 文章目录 项目结构1. 主类 LibraryApplication.java功能与注意事项: 2. 模型类 Book.java功能与注意事项: 3. 数据仓库接口 BookRepository.java功能与注意事项&…...
深入浅出:大数据架构中的流处理与实时分析
1. 引言 随着数据产生速度的不断加快,传统的批处理架构已经无法满足实时数据处理和快速响应的需求。流处理成为解决这一问题的关键技术之一,广泛应用于金融、互联网、物联网等领域。流处理技术能够处理不断到来的数据流,实时分析和反馈,使得系统能够迅速做出反应,提供实时…...
基于Multisim的汽车尾灯控制电路设计与仿真
1、电路由四个按键控制,分别对应左转、右转、刹车和检查。 2、当左转或右转键按下时,左侧或右侧的 3个汽车尾灯按照左循环或右循环的顺!2/3 点亮,点亮时间为 1秒。 3、当刹车时,所有的尾灯同时闪烁,闪烁时间为1秒。 4、当检查时…...
WebStorm 2024.3/IntelliJ IDEA 2024.3出现elementUI提示未知 HTML 标记、组件引用爆红等问题处理
WebStorm 2024.3/IntelliJ IDEA 2024.3出现elementUI提示未知 HTML 标记、组件引用爆红等问题处理 1. 标题识别elementUI组件爆红 这个原因是: 在官网说明里,才版本2024.1开始,默认启用的 Vue Language Server,但是在 Vue 2 项目…...
【大数据学习 | Spark-Core】详解分区个数
RDD默认带有分区的,那么创建完毕rdd以后他的分区数量是多少? 从hdfs读取文件的方式是最正规的方式,我们通过计算原理可以推出blk的个数和分区数量是一致的,本地化计算。 我们可以发现数据的读取使用的是textInputFormatÿ…...
(二)Sping Boot学习——Sping Boot注意事项
1.springboot默认是扫描的类是在启动类的当前包或者下级包。 2.运行报错 ERROR:An incompatible version [1.2.33] of the Apache Tomcat Native library is installed, while Tomcat requires version [1.2.34] 网上试了很多方法,直接重新安装更新版…...
深入浅出,快速安装并了解汇编语言
1.什么是汇编语言 了解汇编语言需要先从了解机器语言开始,在计算机发展的初期阶段,机器语言是计算机直接理解和执行的二进制代码语言,其核心特点包括直接执行性、资源高效性、学习难度大以及平台依赖性。它主要由指令码构成,这些…...
LLM的原理理解6-10:6、前馈步骤7、使用向量运算进行前馈网络的推理8、注意力层和前馈层有不同的功能9、语言模型的训练方式10、GPT-3的惊人性能
目录 LLM的原理理解6-10: 6、前馈步骤 7、使用向量运算进行前馈网络的推理 8、注意力层和前馈层有不同的功能 注意力:特征提取 前馈层:数据库 9、语言模型的训练方式 10、GPT-3的惊人性能 一个原因是规模 大模型GPT-1。它使用了768维的词向量,共有12层,总共有1.…...
JavaScript中的箭头函数以及编写优化
箭头函数 1.1.1 箭头函数的概念 箭头函数时ES 6之后增加一种编写函数的方法,并且它比函数的表达式要更加简洁 箭头函数不会绑定this,arguments属性箭头函数不能作为构造函数来使用(不能和new一起来使用,会出现错误) //1.之前的方…...
Thymeleaf模板引擎生成的html字符串转换成pdf
依赖引入implementation("org.springframework.boot:spring-boot-starter-thymeleaf")implementation("org.xhtmlrenderer:flying-saucer-pdf")将ITemplateEngine注入到spring管理的类中, Context context new Context(); context.setVariable…...
Android 实现双列图片瀑布流式布局
Android 实现双列图片瀑布流式布局 实现双列图片瀑布流布局,关键在于 RecyclerView 的 StaggeredGridLayoutManager 和图片的动态加载。以下是实现步骤: 1. 添加必要依赖 使用 Glide 加载图片。确保在 build.gradle 中添加依赖: implement…...
运维Tips:Docker或K8s集群拉取Harbor私有容器镜像仓库配置指南
[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] Docker与Kubernetes集群拉取Harbor私有容器镜像仓库配置 描述:在现在微服务、云原生的环境下,通常我们会在企业中部署Docker和Kubernetes集群,并且会在企业内部搭建Harbor私有镜像仓库以保证开发源码安全,以及加快…...
显示类控件
文章目录 1 QLabel1.1 常用属性1.2 例子1,设置文本 (textFormat)1.3 例子2,设置widget背景图片 (pixmap和scaledContents)1.4 例子3,设置对齐方式 (alignment)1.5 例子4,设置自动换行,缩进和边距1.5.1 设置换行 (wordW…...
AOC显示器915Sw按键失灵维修记
大家好,我是 程序员码递夫 今天给大家分享的是自己维修老古董AOC液晶显示器按键失灵的的过程,实属DIY记录。 1、引子 家里有台老古董的19寸AOC液晶显示器(型号915Sw), 一直作为我的副显示器陪伴着左右,显示还正常&a…...
PyQt学习笔记
一.PyQt5的安装 当我们安装好开发环境后,打开pycharm在其设置里面点击按钮自动安装即可。 安装完成后我们会在这里面看到这几个东西说明安装成功了。 二.PyQt5 GUI程序框架 1.一个简单的PyQt5应用程序 首先我们用pycharm创建一个demo.py的文件。 我们创建文件为s…...
LLMops产品介绍
文章目录 字节跳动的扣子优点低代码开发丰富的插件与能力扩展强大的记忆与数据交互能力应用场景广泛 不足模型选择相对受限定制化程度受限输出效果有待提高应用部署范围有限市场认知度和用户基础不足 开悟大模型运营管理系统(LLMOPS)优点全生命周期管理降…...
【GPTs】Front-end Expert:助力前端开发的智能工具
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | GPTs应用实例 文章目录 💯GPTs指令💯前言💯 Front-end Expert主要功能适用场景优点缺点 💯小结 💯GPTs指令 中文翻译: 使用Dalle生成用户…...
一篇保姆式centos/ubuntu安装docker
前言: 本章节分别演示centos虚拟机,ubuntu虚拟机进行安装docker。 上一篇介绍:docker一键部署springboot项目 一:centos 1.卸载旧版本 yum remove docker docker-client docker-client-latest docker-common docker-latest doc…...
人工智能大趋势下软件开发的未来
随着人工智能(AI)技术的不断演进,软件开发领域正经历着深刻的变革。中国电信推出的星辰大模型软件工厂,作为国内首款破局性AI开发工具,其全自动流水线的特性——自动生成前后端代码、自主测试和纠错等,为软…...
string的模拟实现
string的模拟实现 一.string的模拟实现1.1构造函数和析构函数,以及一些简单函数1.2迭代器1.3增删查改 二.运算符重载三.流插入和流提取 一.string的模拟实现 string本质上是是一种char类型的顺序表,结构上和顺序表相似。 namespace Mystring {class st…...
Qt桌面应用开发 第七天(绘图事件 绘图设备)
目录 1.绘图事件paintEvent 2.高级绘图 3.图片绘制 4.绘图设备 4.1QPixmap 4.2QBitmap 4.3QImage 4.4QPicture 1.绘图事件paintEvent paintEvent——绘图事件 需求:利用QPainter绘制点、线、圆、矩形、文字;设置画笔改为红色,宽度为…...
PDF内容提取,MinerU使用
准备环境 # python 3.10 python3 -m pip install huggingface_hub python3 -m pip install modelscope python3 -m pip install -U magic-pdf[full] --extra-index-url https://wheels.myhloli.com下载需要的模型 import json import osimport requests from huggingface_hub…...
基于lora的llama2二次预训练
基于lora的llama2二次预训练 一、为什么需要对llama2做基于lora的二次预训练? 加入中文训练语料进行llama2的二次预训练,这样模型就可以增加支持中文输出的能力。 二、基于lora的llama2二次预训练的目标是什么? 在保持预训练模型权重不变的情况下&a…...
机器学习之量子机器学习(Quantum Machine Learning, QML)
量子机器学习(Quantum Machine Learning, QML)是一门结合量子计算与机器学习的新兴交叉领域。它利用量子计算的优势(如并行计算、量子叠加和量子纠缠)来解决传统机器学习中难以处理的问题,或提升算法效率和性能。 QML 的核心要素 量子计算的特性: 量子叠加:允许量子比特…...
【2024 Optimal Control 16-745】【Lecture 3 + Lecture4】minimization.ipynb功能分析
主要功能-最小化问题 目标函数分析: 定义函数 f ( x ) f(x) f(x) 及其一阶、二阶导数。使用绘图工具可视化函数的形状。 实现数值优化: 使用牛顿法寻找函数的极值点,结合一阶和二阶导数加速收敛。使用正则化牛顿法解决二阶导数矩阵可能不正定的问题。 可视化过程…...
一种新的电机冷却方式——热管冷却
在现代工业设备中,电机作为一种核心动力装置,广泛应用于各个领域。例如,家用电器、自动化生产线、交通工具等都离不开电机的运作。然而,随着电机功率的不断提升和负载的增加,电机在运行过程中产生的热量也随之增多&…...
虚拟机上搭建达梦DSC简略步骤
vmware 17 centos 7.6 达梦 dm8_20240920_x86_rh7_64.iso cd /d C:\Program Files (x86)\VMware\VMware Workstation\.\vmware-vdiskmanager.exe -c -s 100MB -a lsilogic -t 2 "F:\vm\dmdsc\sharedisk\share-dcr.vmdk" .\vmware-vdiskmanager.exe -c -s 100MB -a l…...
C++ 矩阵旋转
【问题描述】 编写一个程序,读入一个矩阵,输出该矩阵以第一行第一列数字为中心,顺时针旋转90度后的新矩阵,例如: 输入的矩阵为: 1 2 3 4 5 6 顺时针旋转90度后输出的矩阵为: 4 1 5 2 6 3 【输入…...
mongodb基础操作
创建数据库 use admin授权 db.auth("admin","123456")创建用户 db.createUser({ user: "xxx", pwd: "xxxxxx", roles: [ { role: "readWrite", db: "iot" } ] })查询数据库大小 show dbs;查询结果数量 db.mo…...
以思维链为线索推理隐含情感
❀ 以思维链为线索推理隐含情感 简介摘要引言THORTHOR核心代码实验结果代码运行总结 简介 本文主要对2023ACL论文《Reasoning Implicit Sentiment with Chain-of-Thought Prompting》主要内容进行介绍。 摘要 尽管情绪分析任务常依据文本中的直接意见表达来判定目标的情绪倾向…...
(笔记,自己可见_1)简单了解ZYNQ
1、zynq首先是一个片上操作系统(Soc),结合了arm(PS)和fpga(PL)两部分组成 Zynq系统主要由两部分组成:PS(Processing System)和PL(Programmable L…...
部署自动清理任务解决ORA-00257: archiver error. Connect internal only, until freed
使用oracle数据库的时候,我们一般都会开启归档,确保数据库的日志连续和和数据安全。但随着数据库的运行,归档文件会越来越多,最终撑满磁盘空间,数据库无法继续归档,出现“ORA-00257: archiver error. Conne…...
scau编译原理综合性实验
一、题目要求 题目: 选择部分C语言的语法成分,设计其词法分析程序、语法语义分析程序。 要求: 设计并实现一个一遍扫描的词法语法语义分析程序,将部分C语言的语法成分(包含赋值语句、if语句、while循环语句…...
[Docker-显示所有容器IP] 显示docker-compose.yml中所有容器IP的方法
本文由Markdown语法编辑器编辑完成。 1. 需求背景: 最近在启动一个服务时,突然发现它的一个接口,被另一个服务ip频繁的请求。 按理说,之前设置的是,每隔1分钟请求一次接口。但从日志来看,则是1秒钟请求一次ÿ…...
PICO VR串流调试Unity程序
在平时写Unity的VR程序的时候,需要调试自己写的代码,但是有的时候会发现场景过于复杂,不是HMD一体机能运行的,或者为了能够更方便的调试,不需要每次都将程序部署到眼睛里,这样非常浪费时间,对于…...
ESP-KeyBoard:基于 ESP32-S3 的三模客制化机械键盘
概述 在这个充满挑战与机遇的数字化时代,键盘已经成为我们日常学习、工作、娱乐生活必不可少的设备。而在众多键盘中,机械键盘,以其独特的触感、清脆的敲击音和经久耐用的特性,已经成为众多游戏玩家和电子工程师的首选。本文将为…...
PML和金属边界区别
一、完美匹配层(PML)边界 原理:PML是一种特殊的吸收边界条件。它基于麦克斯韦方程组的特殊解来设计,其材料参数是经过精心选择的,使得在这个边界区域内,电磁波能够无反射地进入并被吸收。从数学上来说&…...
机器学习基础--基于线性回归房价预测
经典的线性回归模型主要用来预测一些存在着线性关系的数据集。回归模型可以理解为:存在一个点集,用一条曲线去拟合它分布的过程。如果拟合曲线是一条直线,则称为线性回归。如果是一条二次曲线,则被称为二次回归。线性回归是回归模…...
【Y20030007】基于java+servlet+mysql的垃圾分类网站的设计与实现(附源码 配置 文档)
网垃圾分类网站的设计与实现 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 随着全球环境保护意识的提升,垃圾分类已成为一项紧迫且重要的任务。为了有效推动垃圾分类的实施,提升公众的环保意识和参与度,垃圾分类已…...
47小型项目的规划与实施
每天五分钟学Linux | 第四十七课:小型项目的规划与实施 大家好!欢迎再次来到我们的“每天五分钟学Linux”系列教程。在前面的课程中,我们学习了并发编程的知识,包括如何管理和使用进程与线程。今天,我们将探讨如何规划…...
Linux---ps命令
Linux ps 命令 | 菜鸟教程 (runoob.com) process status 用于显示进程的状态 USER: 用户名,运行此进程的用户名。PID: 进程ID(Process ID),每个进程的唯一标识号%CPU: 进程当前使用的CPU百分比%MEM: 进程当前使用的…...
Qt Qt::UniqueConnection 底层调用
在这里插入图片描述 步骤1: 1:判断槽函数连接方式, 以及信号对象是否有效2: 信号计算格式是否 大于 signal_index 目前调试 signal_index 不太清楚怎末计算的(有清楚的帮忙街道)3:获取槽函数对…...
Jenkins + gitee 自动触发项目拉取部署(Webhook配置)
目录 前言 Generic Webhook Trigger 插件 下载插件 编辑 配置WebHook 生成tocken 总结 前言 前文简单介绍了Jenkins环境搭建,本文主要来介绍一下如何使用 WebHook 触发自动拉取构建项目; Generic Webhook Trigger 插件 实现代码推送后,触…...
2025-2026财年美国CISA国际战略规划(下)
文章目录 前言四、加强综合网络防御(一)与合作伙伴共同实施网络防御,降低集体风险推动措施有效性衡量 (二)大规模推动标准和安全,以提高网络安全推动措施有效性衡量 (三)提高主要合作…...
aws ses生产环境申请
* aws ses生产环境申请经验: 要有域名邮箱作为反馈联系邮箱 且有收发记录 最好使用aws的WorkMail要说明清晰的使用用途、预估量、如何处理退信和投诉、防spam策略 等内容,这里可以先问问AI(比如:如何处理退信和投诉?…...
velocity unable to find resource ‘xxx.vm‘ in any resource loader
大家好,我是 程序员码递夫。 [TOC]velocity unable to find resource ‘xxx.vm’ in any resource loader 1.问题 今天帮客户解决一个远古 java web系统的bug , 客户的系统用了非常古老的框架 jdk1.6struc1.1 velocity1.5 运行在tomcat6环境。 客户想迁移到 tomc…...
InfluxDB时序数据库笔记(一)
InfluxDB笔记一汇总 1、时间序列数据库概述2、时间序列数据库特点3、时间序列数据库应用场景4、InfluxDB数据生命周期5、InfluxDB历史数据需要另外归档吗?6、InfluxDB历史数据如何归档?7、太麻烦了,允许的话选择设施完备的InfluxDB云产品吧8、…...
c#编码技巧(十九):各种集合特点汇总
.NET 常用集合对比: .NET 常见的线程安全集合 .NET 只读集合...
Python中的__init__()函数
什么是__init__()函数? __init__()函数其实是用于初始化新建对象的状态,当你创建一个类的实例时,__init__()函数的方法就会被自动调用,允许你为对象设置初始属性或执行初始化操作。 接下来这里让我们举例说明: 首先,…...