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

基于Python实现的一款轻量、强大、好用的视频处理软件,可缩视频、转码视频、倒放视频、合并片段、根据字幕裁切片段、自动配字幕等

Quick Cut 是一款轻量、强大、好用的视频处理软件。它是一个轻量的工具,而不是像 Davinci Resolve、Adobe Premiere 那样专业的、复杂的庞然大物。Quick Cut 可以满足普通人一般的视频处理需求:压缩视频、转码视频、倒放视频、合并片段、根据字幕裁切片段、自动配字幕、自动剪辑……

完整代码下载地址:基于Python实现的一款轻量、强大、好用的视频处理软件

界面预览:

在这里插入图片描述

📝 背景

好几年前,有一次想将一个视频中的片段剪出来,才发现,市面上根本没有给普通用户用的视频处理软件。

我去百度、知乎上搜【视频剪辑软件】,陆续得到了以下结果:

  • Adobe Premiere,正版一年上千元、随时【停止运行】的专业剪辑软件
  • Vegas 等专业软件就不再列了
  • 爱剪辑,一个导出就带推广片头的中文剪辑软件
  • 格式工厂,一个老牌的国产转码编辑软件
  • 小丸工具箱,一个从 Bilibili 知道的压制软件
  • 还有大大小小的其它软件

我就只想剪一小个片段啊!专业软件学不起、买不起、电脑太卡带不起!可是其它小软件、许多国产剪辑软件,都有这一些问题:

  • 国外软件选项太多,各种参数看不懂。
  • 多数免费软件都带水印,或者导出后画质会下降,要么导出的体积巨大,耗时长不说,还不是无损剪辑。

用的最好的还是 格式工厂小丸工具箱 。但他们都功能很少,还有小丸工具箱,官网的下载地址是百度网盘链接已经挂了,也不知道从第三方下载的版本有没有木马、广告……

后来,从视频压制这个话题,我知道了 FFmpeg 这个神级开源工具,它的功能之强大、应用之广泛到惊掉了我的下巴!但它是个命令行工具,到百度上一搜,也只是些文章说怎样怎样的命令可以做什么、常用命令有什么。相关的图形界面工具,一个好用的都没有!(当然要点名表扬下 Lossless Cut,它还是很好用的,只是功能太少)。没有一个软件能让 FFmpeg 在普通大众用户手中发挥潜力,真是可惜了!

于是一通操作,把 FFmpeg 的官方文档逐句做了翻译,记了笔记,然后用它来处理视频,真是畅快!免费、无广告,剪出来的视频也可以画质无损。100 兆的视频压缩到 10 兆,肉眼画质无损,那是一个巴适!

但是有一个问题!每次要处理一个视频,都要手动输入命令行,非常的麻烦,有时候忘记执行某个操作是用哪个参数了,还要去翻笔记,难受!于是我就想做一个图形界面工具,想要做什么,在里面点两下,命令参数啥的都是自动生成,最后点击运行就好。于是先后做了基于 Tasker 的安卓端 FFmpeg GUI Tool、基于 Quicker 的 FFmpeg GUI Tool。

但是上面两个平台都局限太多,想要好用,还是得自己做 GUI。我自己只是入门 python 的水平,只能硬着头皮花了几天在学习平台 B 站看完了 PyQt 的入门。然后边查边做,因为 PyQt 的注释很少,有时一个简单的小细节要花半天到一天处理。最后,成品还是出来了!

当然,除了 FFmpeg 的功能外,我还做了 语音自动转字幕 功能。这里,我要不指名地 Diss 一些商家:

  • 首先是价格,贵的要 1元/分钟,便宜些的也要 4毛/分钟!转个 20 分钟的视频,就要收我 8 元,抢钱呐!啊?你们是没有语音引擎的,都是用的 API,大批量采购,你们用的 API 价格也就 1.2 元/小时 左右吧!用 API 成本几十倍的价格提供服务,这吃相,真是难看。
  • 然后是上传视频。语音转字幕,上传音频便足够了,一些商家却需要上传完整视频!2GB 的视频,通常其音频只有几十 MB 左右。你们是觉得:用户见转写了几十 MB 的视频,会觉得这么小的文件,1元/分钟的价格不值,转写了 2GB 的视频,一看这转写体积,就觉得花钱花的值?

在 Quick Cut 里,我做了 语音自动转字幕 功能,可以使用阿里或腾讯的 Api。就以阿里的 API 为例,普通元套餐的商用价格是 2.5 元/小时,四十五几乎就是不要钱!下面的帮助里,我写下了申请阿里 API 的教程,只要填入 API,就可以使用语音转字幕了。

另外,我还将另一个 自动剪辑神器 放进了 Quick Cut,将你的 Vlog、视频教程一键自动剪好。下面会有详细介绍。

同时,推荐 Quick Cut 中一个对学习外语的同学非常有用的功能:将字幕中的每一句话对应的视频剪成片段提取出来。用于制作外语学习的视频素材爽得不要不要的!应该算是 Anki 用户的一个福利功能吧!

✨ 特性

  • 简单的界面
  • FFmpeg 预设丰富
  • 可自定义预设
  • 合并视频片段
  • 逐句提取每句字幕对应的视频片段
  • 自动转字幕
  • 自动剪辑
  • ……更多待探索

🔮 界面和功能介绍

FFmpeg 界面

在这个界面,你可以使用许多 ffmpeg 预设,对音视频进行处理,比如说:

我想将手机上录制的视频压制下,减小它的大小,那么只需要:先在 输入1 框输入待压制的视频文件(此时会自动生成输出文件名),再在右侧预设列表选择 H264压制 预设(此时会自动生成总命令),最后点击底部的 运行 按钮,就会启动压制了。

还有啊,转格式是基本操作!输出框的后缀名填什么,就会输出对应的格式!

分割视频界面

这个界面有三个功能:根据字幕分割视频、根据大小分割视频、根据时长分割视频。

根据字幕分割视频是个神级功能,尤其适合于制作外语学习的视频素材。将例如美剧的视频放进去,再把相应的字幕文件放进去,就可以将每一句字幕对应的视频片段剪出来!如果你的字幕时间轴和视频时间轴有偏差,还可以进行手动的校准。

根据时间分割视频和根据大小分割视频主要是针对分享到短视频平台和微信平台的。

在这里插入图片描述

合并片段界面

这个简单,要合并的视频拖进去,调整下顺序,点击运行,就可以将这些视频合并成一个文件。从 ig 下载的 15 秒 story 视频片段就可以轻松合并啦!

在这里插入图片描述

下载视频界面

这个界面提供了两个命令行工具的图形界面用于下载视频,最简单的用法就是将链接复制进去,然后点击下载。支持的网站有很多比如优酷、B站、YouTube、P站(逃)……

另外你还可以在里面设置cookies,就能够用你大会员身份登录的 cookie 信息下载大会员视频画质了。
在这里插入图片描述

自动剪辑界面

自动剪辑的原理是通过给视频中有声音的片段和没有声音的片段施加不同的播放速度,达到只保留有关键信息部分的效果,非常适合做vlog和视频教程。

同时你也可以选择使用阿里云或者腾讯云的语音服务,先将视频转出字幕之后,再根据字幕中的关键词对视频片段进行保留和删除操作。

除了下面那个演示视频,在本教程中的所有视频,都使用了自动剪辑,然后才上传的。

在这里插入图片描述

自动转字幕界面

只要将你的视频或者音频文件拖进去,然后点击运行,就可以生成一个srt格式的字幕。

语音识别方面使用了阿里云或者腾讯云的引擎,准确率有95%以上。如果想给自己的视频配字幕,就可以先用这个功能,自动转出字幕之后,再手动修改一下里边偶尔的错别字,效率非常高。

语音识别引擎需要用户自己去阿里云官网申请 API 才能用(对申请过程我做了视频教程)。阿里云的语音服务开通后,每个新用户有3个月的免费试用时间,在这3个月内,每天都有两小时的录音文件转换额度。试用期过后,商业版的价格是每小时音频转换2.5元,随着使用量的增加,这个价格还会更低。如果买1000小时的套餐,价格可以低到1.5元每小时。

如果你对比一下目前网上能找到的视频转字幕服务,你就会知道 Quick Cut 的这个转字幕功能有多便宜:

  • 网易见外工作台,普通的视频转字幕,收费1元每分钟,60元每小时。英文转字幕价格翻倍。
  • 号称全网最低价的突字幕,收费0.005元每秒,3毛每分钟,18元每小时。
  • Arctime 收费30积分每分钟,也就是3毛每分钟,18元每小时。

来对比一下:阿里云 2.5 元每小时,前三个月每天免费用两小时,用得越多价,格还会更低。

腾讯云方面的价格还会更低,只是转换速度没有阿里云快。所以推荐使用阿里云。就算是用商业版每小时2.5元的价格也不心疼。

如果你急着把最新的美剧视频下载下来,字幕组还没有出字幕,但是生肉太难啃,就可以用这个转字幕功能,将英文字幕转出来,配合着看。

如果你是视频工作者、UP主、视频公司负责人,平常有大量的视频需要转换字幕,用这个就可以舍去使用其他网上平台导致的每小时几十元的成本,一个月下来成本或许能节约到上千元。。

哎,说实话,要是这软件推广开来,对一些视频转字幕的服务商,真的是断人财路,杀人父母。

在这里插入图片描述

语音识别输入界面

如果你已经添加上阿里云的语音引擎,就可以使用阿里云的一句话识别服务进行语音识别输入。在任意界面,只要长按键盘上的大写锁定键超过0.3秒钟,就可以开始说话,进行语音识别。松开按键之后,识别结果会自动打到输入框。

有人推荐使用讯飞的语音识别,但是讯飞语音识别的快捷键在 F6 那个位置,离主键盘的位置非常远,手指够过去费劲;而且那里有很多大小一样的按键,这个快捷键也不好找;他还会和很多软件的快捷键冲突。

而长按大写锁定键进行语音识别就非常方便,离打字的手非常近,需要的时候很轻松就能按到,也不会有快捷键冲突。

阿里云语音识别的准确率非常高,这篇文章大部分都是用这个语音识别功能打的,然后修改了少量错字。

在这里插入图片描述

设置界面

在设置界面你就可以在这里配置语音识别的引擎。

勾选上 点击关闭按钮时隐藏到托盘 ,就可以让软件常驻到后台,方便快捷的调出来剪辑视频、语音输入。Quick Cut 的资源占用量非常少,可以放心地放到后台,不影响性能。

在这里插入图片描述

帮助界面

在帮助界面里,有如下按钮,见名知意:
在这里插入图片描述

🔨 开发

这一节普通用户就不用看了。你们只要到发布界面下载使用已打包好的软件就行了,如果你想对源代码进行修改,就可以看下这一节。

搭建环境

你需要 pip 安装这些包:

srt
keyboard
numpy
setuptools
aliyun-python-sdk-core
PyQt5
audiotsm
scipy
cos-python-sdk-v5
tencentcloud-sdk-python
oss2
pyaudio
auditok @ git+https://github.com/amsehili/auditok@v0.1.8
requests

其中,pyaudio 很难安装!编译成功有很多要求。所以 Windows 用户可以直接到 这里 下载已经被志愿者编译好的 whl 包,用 pip 安装,注意下载对应你 python 版本的包。

Linux 的用户,经 @shniubobo 的测试,Ubuntu 用户在安装 pyaudio 前只要装这个就行了:

sudo apt install portaudio19-dev

其他包可以通过requirements.txt安装:

pip install -r requirements.txt
阿里云语音识别 sdk

然后还需要安装阿里云语音识别引擎的sdk, 这篇阿里云官方文档 只说了用下面的方法安装:

pip install setuptools

下载Python SDK。

 # 打包 python setup.py bdist_egg # 安装 python setup.py install

不过有用户反馈可以用下面这个命令直接安装,不过我还没试验:

pip install aliyun-python-sdk-nls-cloud-meta

运行问题:

安装完依赖之后开始运行脚本,你可能会遇到这些问题:

  • 安装完依赖后,你运行脚本,却发现 import oss2 时提示出错:No module named 'winrandom',这时,你需要修改 Python38\Lib\site-packages\Crypto\Random\OSRNG 下的 nt.py 文件,将 import winrandom 修改为:from Crypto.Random.OSRNG import winrandom

这些问题的原因是一些模块用了其它依赖,而这些其它依赖已经好久没更新了。只能遇到一个问题就搜一下,解决掉。上面这些问题都是我遇到后,在网上找了解法,根据自己的情况做了改动,使得问题得以解决。

Mac 和 Linux 用户请注意:

为了在 Windows 上运行时候不弹黑窗口,我在用 subprocess 的时候用了一个 subprocess.STARTUPINFO() 类,但是在 Linux 或 Mac 上好像不能用它,所以你们在使用前,要删除几段代码:

首先是末尾的这三行:

subprocessStartUpInfo = subprocess.STARTUPINFO()
subprocessStartUpInfo.dwFlags = subprocess.STARTF_USESHOWWINDOW
subprocessStartUpInfo.wShowWindow = subprocess.SW_HIDE

然后再全局搜索 , startupinfo=subprocessStartUpInfo 将其删掉。理论上就好了。

搭建好环境可以运行之后,如果修改了源代码然,后要进行发布,就应当打包成可以独立运行的exe文件,下面提供两种方法进行编译打包:

使用 nuitka 编译:

使用它打包出来的程序运行更快,只是相对步骤多一些。

先下载安装上 MinGW64 8.1

再安装上 nuitka:

pip install nuitka

在实际编译的时候,先使用这个命令进行编译:

nuitka --mingw64  --standalone --show-progress --show-memory --plugin-enable=qt-plugins --plugin-enable=pylint-warnings --recurse-all --recurse-not-to=numpy,jinja2 --windows-icon=icon.ico --nofollow-imports --assume-yes-for-downloads --output-dir=out QuickCut.py

这时,可能会遇到如下错误:

在这里插入图片描述

就是因为代码里面有中文字符,默认使用的英文编码在转码时出现了错误,你就需要找到并打开最后指示的那个 MainControl.py 文件,将里面出错的那一行的 latin1 修改为 utf-8 ,然后就可以编译成功。

以后其实还并不能运行,因为 nuitka 对于某些包并不会自动导入,还需要你手动导入才行。

所以在实际编译的时候,还是先使用这个命令进行编译:

nuitka --mingw64  --standalone --show-progress --show-memory --plugin-enable=qt-plugins --plugin-enable=pylint-warnings --recurse-all --recurse-not-to=numpy,jinja2 --windows-icon=icon.ico --nofollow-imports --assume-yes-for-downloads --output-dir=out QuickCut.py

然后再编译的导出目录在命令行窗口中将 QuickCut.exe 打开,会看到类似这样的错误:

在这里插入图片描述

这时候,就需要亲自到 Python 的安装目录下找到这个包:

在这里插入图片描述

将它手动复制到导出目录的根目录中:

在这里插入图片描述

重复运行,再次出现包缺失:

在这里插入图片描述

都需要找到这个包:

在这里插入图片描述

粘贴到编译导出目录的根目录中。这个过程要重复很多次,直到将所有缺失的包都复制到导出目录。

你可以将这些需要手动导入的包都再复制到另一个文件夹做备份,再次编译后,直接复制进去就行。

编译完成,你启动后可能是这个样子的:

在这里插入图片描述

长得很丑对吧。这是因为缺失了 styles 文件夹,你需要到 PyQt5 的安装目录,找到 styles 文件夹:

在这里插入图片描述

将其复制到编译导出目录的根目录之后,再次启动就正常了。

还有,记得将 icon.ico 、sponsor.jpg、README.html 复制到编译导出的文件夹,没有图标文件的话,就无法启动托盘。

再次编译。测试成功后,就可以使用下面这个命令进行编译:

nuitka --mingw64 --windows-disable-console --standalone --show-progress --show-memory --plugin-enable=qt-plugins --plugin-enable=pylint-warnings --plugin-enable=numpy --recurse-all --recurse-not-to=numpy,jinja2 --windows-icon=icon.ico --nofollow-imports --assume-yes-for-downloads --output-dir=out QuickCut.py

这样就可以将命令行窗口隐藏。

如果你是 Mac 编译,为了图标格式兼容,要使用:

nuitka --mingw64 --windows-disable-console --standalone --show-progress --show-memory --plugin-enable=qt-plugins --plugin-enable=pylint-warnings --plugin-enable=numpy --recurse-all --recurse-not-to=numpy,jinja2 --windows-icon=icon.icns --nofollow-imports --assume-yes-for-downloads --output-dir=out QuickCut.py

pyinstaller 编译:

先安装上 pyinstaller :

pip install pyinstaller

直接使用这个命令进行编译:

pyinstaller --hidden-import pkg_resources.py2_warn --noconfirm -w -i icon.ico QuickCut.py

如果你是 Mac 编译,为了图标格式兼容,要使用:

pyinstaller --hidden-import pkg_resources.py2_warn --noconfirm -w -i icon.icns QuickCut.py

其中,--hide-import pkg_resources.py2_warn 这一句比较重要,其实整个软件用到了这个模块,但是 pyinstaller 没有自动编译进去。当你电脑上的 setuptools 版本在 45.0.0 到 49.1.1 之间时,会出现这个问题。将 setuptools 升级到最新,应该就不会有这个问题了:

pip install pyinstaller
pip install setuptools --upgrade
pyinstaller -wy -i icon.ico QuickCut.py  # Windows 用户用这个
pyinstaller -wy -i icon.icns QuickCut.py # 为了图标格式兼容,Mac 用户请用这个

编译后打包后要做的事

编译完成后,还有几个事要做,首先,下载对应系统的 ffmpeg 和 ffprobe 放到编译根目录,再把本 README.md 导出成 README.html ,同 icon.icosponsor.jpglanguages 一起放入编译根目录(Mac 用户放 icon.icns),再下载对应系统的 annie 放入编译根目录。

如果是 Mac 、Linux 打包的,那一定要给编译目录下的可执行文件用 chmod +x 授予可执行权限!

然后就可以打包了,Windows 下可以打包成 7z 格式,Mac、Linux 用户不要打包 zip7z 格式!因为这会让可执行文件的权限消失!Mac、Linux 用户可以用 tar.gz 或者 dmg 格式打包。

建议打包后的命名成类似 QuickCut_Mac_v1.2.0_pyinstaller.dmg 这样的。如果你是志愿者,为这个项目打包,你也可以在命名后面加上你的 id 等信息。

在发包的时候,建议上传到蓝奏云、天翼云,新建一个文件夹,将包放到这个文件夹里,再把这个文件夹的分享链接发出来,这样,以后要更新的话,只要把新版本放到那个文件夹,分享链接就不用变了。

完整代码下载地址:基于Python实现的一款轻量、强大、好用的视频处理软件

相关文章:

基于Python实现的一款轻量、强大、好用的视频处理软件,可缩视频、转码视频、倒放视频、合并片段、根据字幕裁切片段、自动配字幕等

Quick Cut 是一款轻量、强大、好用的视频处理软件。它是一个轻量的工具,而不是像 Davinci Resolve、Adobe Premiere 那样专业的、复杂的庞然大物。Quick Cut 可以满足普通人一般的视频处理需求:压缩视频、转码视频、倒放视频、合并片段、根据字幕裁切片段…...

深入探讨 Golang 中的追加操作

通过实际示例探索 Golang 中的追加操作 简介 在 Golang 编程领域,append 操作是一种多才多艺的工具,使开发人员能够动态扩展切片、数组、文件和字符串。在这篇正式的博客文章中,我们将踏上一段旅程,深入探讨在 Golang 中进行追加…...

三网话费余额查询的API系统 基于thinkphp6.0框架

本套系统是用thinkphp6.0框架开发的,PHP需大于8.2,系统支持用户中心在线查询和通过API接口对接发起查询,用户余额充值是对接usdt接口,源码全开源,支持懂技术的人二次开发~搭建教程1、源码上传后,吧运行目录…...

LeetCode —— dfs和bfs

797. 所有可能的路径 给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序)。 graph[i] 是一个从节点 i 可以访问的所有节点的列表(即从节点 i 到节点…...

【ROS 2 基础-常用工具】-7 Rviz仿真机器人

所有内容请查看:博客学习目录_Howe_xixi的博客-CSDN博客...

循环神经网络(RNN)

定义 循环神经网络(RNN)是一种深度学习神经网络,专门用于处理序列数据,如文本、语音和时间序列数据。RNN的独特之处在于它具有循环连接,允许信息在网络内持续流动,以便处理先前的输入信息,具体…...

ESP32C3 LuatOS TM1650②动态显示累加整数

--注意:因使用了sys.wait()所有api需要在协程中使用 -- 用法实例 PROJECT "ESP32C3_TM1650" VERSION "1.0.0" _G.sys require("sys") local tm1650 require "tm1650"-- 拆分整数,并把最低位数存放在数组最大索引处 loc…...

文心一言 VS 讯飞星火 VS chatgpt (117)-- 算法导论10.3 2题

二、用go语言,对一组同构对象用单数组表示法实现,写出过程ALLOCATE-OBJECT和FREE-OBJECT。 文心一言: 在Go语言中,我们通常使用指针和结构体来表示和操作复杂的数据结构。对于一组同构对象,我们可以使用一个数组来存…...

专业修图软件 Affinity Photo 2 mac中文版编辑功能

Affinity Photo for Mac是应用在MacOS上的专业修图软件,支持多种文件格式,包括psD、PDF、SVG、Eps、TIFF、JPEG等。 Affinity Photo mac提供了许多高级图像编辑功能,如无限制的图层、非破坏性操作、高级的选择工具、高级的调整层、HDR合成、全…...

Excel 5s内导入20w条简单数据(不使用多线程)

文章目录 Excel 5s内导入20w条数据1. 生成20w条数据1.1 使用Excel 宏生成20w条数据1.2 生成成功 2. ExecutorType:批量操作执行器类型2.1 ExecutorType.SIMPLE2.2 ExecutorType.BATCH2.3 ExecutorType.REUSE 3. 20w条数据直接插入数据库3.1 使用ExecutorType.SIMPLE…...

计算机毕业设计 基于SpringBoot笔记记录分享网站的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...

Windows Ubuntu子系统使用USB教程

Windows Ubuntu子系统使用USB教程 Windows Subsystem for Linux (WSL)允许您在Windows上运行Linux。以下指南涉及如何在WSL2中连接和使用USB设备。 WSL版本 在WSL内部运行 uname -a应该显示内核版本为5.10.60.1或更高版本。你需要运行WSL 2发行版本。 USB/IP 客户端工具 在W…...

如何理解TCP/IP协议?

一、是什么 TCP/IP,传输控制协议/网际协议,是指能够在多个不同网络间实现信息传输的协议簇 TCP(传输控制协议) 一种面向连接的、可靠的、基于字节流的传输层通信协议 IP(网际协议) 用于封包交换数据网…...

如何开发出来一款解决抖音本地生活的软件营销工具?

一、智能剪辑、矩阵分发、无人直播、爆款文案于一体独立应用开发 抖去推----主要针对本地生活的----移动端(小程序软件系统,目前是全国源头独立开发),开发功能大拆解分享,功能大拆解: 7大模型剪辑法(数学阶乘&#x…...

GO 语言如何用好变长参数?

函数重载 对于函数重载相信编码过的 xdm 肯定不会陌生,函数重载就是在同一个作用域内定义多个具有相同名称但参数列表不同的函数 此处的参数列表不同,可以是参数的类型不同,参数的个数不同 那么我们一起分别来看看 C 语言,C 语…...

怎么解决 Http 协议无状态?

一、Http 协议无状态的含义 1.1 有状态协议 常见的许多七层协议实际上是有状态的,例如 SMTP 协议,它的第一条消息必须是 HELO,用来握手,在 HELO 发送之前其他任何命令都是不能发送的;接下来一般要进行 AUTH 阶段&#…...

FlinkCDC for mysql to Clickhouse

完整依赖 <dependencies><!-- https://mvnrepository.com/artifact/org.apache.flink/flink-core --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-core</artifactId><version>1.13.0</version>…...

沃通SSL证书服务多省区一体化政务服务平台

近年来&#xff0c;我国政务服务数字化水平不断提升&#xff0c;数字政府建设取得积极成效。依托全国一体化政务服务平台&#xff0c;政务服务效能不断提升&#xff0c;“一网通办”能力显著增强&#xff0c;为创新政府治理、优化营商环境提供了有力支撑。沃通SSL证书具备保护数…...

Linux程序地址

目录 一、定义 二、问题引出 三、虚拟地址和物理地址 &#xff08;一&#xff09;问题解释 &#xff08;二&#xff09;什么是进程地址空间 &#xff08;三&#xff09;为什么要有进程地址空间 一、定义 #include <stdio.h> #include <stdlib.h>//geten…...

华为OD k 对元素最小值(100分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...