ffmpeg命令详解
原文网址:ffmpeg命令详解_IT利刃出鞘的博客-CSDN博客
简介
本文介绍ffmpeg命令的用法。
命令示例
1.mp4和avi的基本互转
ffmpeg -i D:\input.mp4 E:\output.avi
ffmpeg -i D:\input.avi E:\output.mp4
-i 表示input,即输入。后面填一个输入地址和一个输出地址,这种方式没有指定任何参数和解码器,都用默认,会发现转换得到的文件压缩严重,avi文件只有200kbps的码率。
2.mp4和avi的无损互转
mp4转换avi
ffmpeg -i D:\input.mp4 -qscale 0 E:\output.avi
或者
ffmpeg -i D:\input.mp4 -c copy E:\output.avi
这里更推荐第一种方式,-qscale表示质量控制,0表示0损失,现在的ffmpeg已经采用qsacle取代了原来的sameq方式。
第二种方式 -c copy表明会把原视频的所有流一模一样的复制,即不进行解码和重新编码,这种情况下得到的avi文件需要额外的解码器如potplayer才能打开,win10自带的是不行的。
注:-c copy包含了-c:v copy(视频流),-c:a copy(音频流)等所有流。另外其他写法如-vcodec -codec:v与-c:v copy是同义的,其余以此类推。
avi转mp4
ffmpeg -i D:\input.mp4 -c:v copy -c:a copy E:\output.avi -y
-y表示不用确认覆盖文件,如果有重名的文件一般会在命令行向用户确认。
mp4转avi就直接copy就可以了,win10自带也能播。
3.截取视频片段
ffmpeg -i input.avi -c:v copy -c:a copy -ss 00:00:00 -to 00:00:30 cutout.avi -y
这是截取30s的,和前面一样,如果只是截取视频片段就不要重新编码了,一个-c copy搞定。
-ss后面跟的是时间位置,开始时间 -to 结束时间。
4.批量截取视频图片
for /R %v IN (*.avi) do ( ffmpeg -i %v -r 1 -f image2 %v%d.jpeg)
假设一个视频文件夹里有很多avi文件,我想每一个avi文件都间隔一帧截图,就是这条语句了。for…IN…do是命令行的循环格式。%v是文件名,%d是自动递增的数字名。-r定义的是间隔多少帧截图一次。
5.把大量图片组合成视频
ffmpeg -f image2 -framerate 30 -i %d.jpg xxx.avi
-framerate设定帧数,这里设成了30,也就是一秒30张图片,%d表示从1开始的图片,这里推荐大家一个软件renamer,免费版的就足够使用了,可以快速批量重命名文件,不用每次写重命名代码了。
命令详解
用法
ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
- options 全局参数
- infile options 输入文件参数
- infile 输入文件
- outfile options 输出文件参数
- outfile 输出文件
全局选项
参数 | 说明 |
-loglevel loglevel | 设置日志登记,具体用法可以通过man ffmpeg查看,例如ffmpeg -loglevel verbose -i 1080p.mp4,可选:quiet panic fatal error warning info verbose debug trace |
-v loglevel | 设置日志登记,具体用法可以通过man ffmpeg查看,例如ffmpeg -v verbose -i 1080p.mp4,可选:quiet panic fatal error warning info verbose debug trace |
-report | 生成一个报告,报告的名字是ffmpeg自动生成的,例如ffmpeg -report -i 1080p.mp4,想要自定义文件以及日志等级可以使用宏FFREPORT,例如FFREPORT=file=ffreport.log:level=32 ffmpeg -i 1080p.mp4 |
-max_alloc bytes | 设置通过ffmpeg的malloc函数系列设置在堆上分配块的最大大小限制。嵌入式设备可能会用到这个选项 |
-y | 覆盖输出文件 |
-n | 切勿覆盖输出文件 |
-ignore_unknown | 忽略未知的流类型 |
-filter_threads | 定义用于处理过滤器管道的线程数。每个管道将生成一个线程池,其中包含许多可用于并行处理的线程。默认是可用CPU的数量 |
-filter_complex_threads | 定义用于处理filter_complex图的线程数。类似于filter_threads但仅用于-filter_complex图形。默认值为可用 CPU 的数量 |
-stats | 编码期间打印进度报告 |
-max_error_rate maximum | 在所有输入中设置解码帧失败的比例,当超过时ffmpeg将返回退出代码69。超过此阈值不会终止处理。值的范围是0到1之间的浮点数。默认值为2/3 |
-bits_per_raw_sample number | 设置每个原始样本的位数 |
-vol volume | 改变音量 ,volume默认值是256,也就是它把音量分为256等分,例如要把音量放大为原来的两倍(2562):ffmpeg -vol 512 -y -i bugua.mp3 output.mp3 |
输入输出选项
选项 | 说明 | 例子 |
-f fmt | force format | 设置输入容器是mp4 ffmpeg -i bugua.mp3 -f mp4 output.m4a |
-c codec | codec name | 设置输入编码格式是ac3 ffmpeg -y -i bugua.mp3 -c ac3 output.m4a |
-codec codec | codec name | 设置输入编码格式是ac3 ffmpeg -y -i bugua.mp3 -codec ac3 output.m4a |
-pre preset | preset name | - |
-map_metadata outfile[,metadata]:infile[,metadata] | set metadata information of outfile from infile | - |
-t duration | record or transcode “duration” seconds of audio/video | 设置只录制前50秒 ffmpeg -i bugua.mp3 -t 50 output.mp3 |
-to time_stop | record or transcode stop time | 设置只录制前50秒 ffmpeg -i bugua.mp3 -t 50 output.mp3 |
-fs limit_size | set the limit file size in bytes | 设置输出文件大小限制在0.1MB ffmpeg -y -i bugua.mp3 -fs 0.1MB output.mp3 |
-ss time_off | set the start time offset | 设置从第50秒开始录制 fmpeg -ss 50 -y -i bugua.mp3 output.mp3 |
-sseof time_off | set the start time offset relative to EOF | 设置从倒数第50秒开始录制 ffmpeg -sseof -50 -y -i bugua.mp3 output.mp3 |
-seek_timestamp | 此选项使用-ss选项在输入文件中启用或禁用按时间戳搜索。默认情况下它是禁用的。如果启用,则-ss选项的参数被视为实际时间戳,并且不会被文件的开始时间偏移。这仅适用于不从时间戳 0 开始的文件,例如传输流 | - |
-timestamp time | 在容器中设置录制时间戳 | |
-metadata string=string | 设置修改容器这一层的metadata | 设置标题 ffmpeg -i in.avi -metadata title=“my title” out.flv |
-program title=string:st=number… | 添加或者修改program的Metadata | 设置program标题 ffmpeg -y -i 1080p.mp4 -program title=“XXXXXX”:st=1 -c copy output.mp4 |
-target type | 指定目标文件类型 (“vcd”, “svcd”, “dvd”, “dv” or “dv50” with optional prefixes “pal-”, “ntsc-” or “film-”) | ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg |
-apad | 音频填充(追加) | 在音频文件的最后追加10秒静音 ffmpeg -y -i bugua.mp3 -af “apad=pad_dur=10” output.mp3 |
-frames number | 设置要输出的帧数 | 只写入200帧 ffmpeg -i 1080p.mp4 -frames 200 -c copy output.mp4 |
-filter filter_graph | 设置简单的filter(不对音视频内容进行任何处理的filter) | 把视频帧的PTS设置为原来的0.5倍 ffmpeg -y -i 1080p.mp4 -filter:v “setpts=0.5PTS” output.mp4 |
-filter_script filename | read stream filtergraph description from a file | - |
-reinit_filter | reinit filtergraph on input parameter changes | - |
-discard | 允许从流中丢弃特定的流或帧。使用值all会丢弃所有的流,在解复用时从流中选择要丢弃的帧,并非所有解复用器都支持 | 去掉视频中的音频 ffmpeg -y -discard:a all -i 1080p.mp4 -c copy output.mp4 |
-disposition | 设定特定的流作为默认流 | 使第二个音频流成为默认流 ffmpeg -i in.mkv -c copy -disposition:a:1 default out.mkv |
视频选项
选项 | 说明 | 例子 |
-vframes number | set the number of video frames to output | 输出200帧 ffmpeg -y -i 1080p.mp4 -vframes 200 output.mp4 |
-r rate | set frame rate (Hz value, fraction or abbreviation) | 设置输出帧率为10帧 ffmpeg -y -i 1080p.mp4 -r 10 -vframes 500 output.mp4 |
-fpsmax rate | set max frame rate (Hz value, fraction or abbreviation) | 设置最大帧率为15帧 ffmpeg -y -i 1080p.mp4 -fpsmax 15 -vframes 500 output.mp4 |
-s size | set frame size (WxH or abbreviation) | 把视频裁剪为640x480 ffmpeg -y -i 1080p.mp4 -s 640x480 -vframes 500 output.mp4 |
-aspect aspect | set aspect ratio (4:3, 16:9 or 1.3333, 1.7777) | 视频比例改为4:3 ffmpeg -y -i 1080p.mp4 -aspect 4:3 -vframes 500 output.mp4 |
-bits_per_raw_sample number | set the number of bits per raw sample | - |
-vn | disable video | 只输出音频 ffmpeg -y -i 1080p.mp4 -vn -c copy output.mp4 |
-vcodec codec | force video codec (‘copy’ to copy stream) | 设置输出编码器为libx265 ffmpeg -y -i 1080p.mp4 -vframes 500 -vcodec libx265 output.mp4 |
-timecode hh:mm:ss[:;.]ff | set initial TimeCode value. | - |
-pass n | select the pass number (1 to 3) | - |
-vf filter_graph | set video filters | 逆时针旋转 ffmpeg -y -i 1080p.mp4 -vframes 300 -vf “transpose=2” output.mp4 |
-ab bitrate | audio bitrate (please use -b:a) | 设置音频输出码率为56k ffmpeg -y -i 1080p.mp4 -ab 56k -vn output.mp4 |
-b bitrate | video bitrate (please use -b:v) | 设置视频输出码率为256k ffmpeg -y -i 1080p.mp4 -b 256k -an output.mp4 |
-dn | disable data | - |
音频选项
选项 | 说明 | 例子 |
-aframes number | set the number of audio frames to output | 只写入1000帧音频数据 ffmpeg -y -i 1080p.mp4 -vn -aframes 1000 output.mp4 |
-aq quality | set audio quality (不同的编码器使用不同的数字表示不同的码率) | 这里以MP3为例,把码率设置为245kbps左右 ffmpeg -y -i bugua.mp3 -aq -0 output.mp3 |
-ar rate | set audio sampling rate (in Hz) | 重采样为16k ffmpeg -y -i 1080p.mp4 -vn -aframes 1000 -ar 16000 output.mp4 |
-ac channels | set number of audio channels | 改为双声道 ffmpeg -y -i 1080p.mp4 -vn -aframes 1000 -ac 2 output.mp4 |
-an | disable audio | 只输出视频 ffmpeg -y -i 1080p.mp4 -an -c copy output.mp4 |
-acodec codec | force audio codec (‘copy’ to copy stream) | 强制使用ac3编码器 ffmpeg -y -i 1080p.mp4 -vn -aframes 1000 -acodec ac3 output.mp4 |
-vol volume | change audio volume (256=normal) | 把声音调为原来的2倍 ffmpeg -y -i 1080p.mp4 -vn -aframes 1000 -vol 512 output.mp4 |
-af filter_graph | set audio filters | 写入音频之前先进行afade处理 ffmpeg -y -i 1080p.mp4 -vn -aframes 1000 -af afade output.mp4 |
副标题选项
选项 | 说明 | 例子 |
-s size | set frame size (WxH or abbreviation) | - |
-sn | disable subtitle | - |
-scodec codec | force subtitle codec (‘copy’ to copy stream) | - |
-stag fourcc/tag | force subtitle tag/fourcc | - |
-fix_sub_duration | fix subtitles duration | - |
-canvas_size size | set canvas size (WxH or abbreviation) | - |
-spre preset | set the subtitle options to the indicated preset | - |
查看帮助文档
简单文档
可以用此命令查看详解:
ffmpeg --help
结果:
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...Getting help:-h -- print basic options-h long -- print more options-h full -- print all options (including all format and codec specific options, very long)-h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocolSee man ffmpeg for detailed description of the options.Print help / information / capabilities:
-L show license
-h topic show help
-? topic show help
-help topic show help
--help topic show help
-version show version
-buildconf show build configuration
-formats show available formats
-muxers show available muxers
-demuxers show available demuxers
-devices show available devices
-codecs show available codecs
-decoders show available decoders
-encoders show available encoders
-bsfs show available bit stream filters
-protocols show available protocols
-filters show available filters
-pix_fmts show available pixel formats
-layouts show standard channel layouts
-sample_fmts show available audio sample formats
-dispositions show available stream dispositions
-colors show available color names
-sources device list sources of the input device
-sinks device list sinks of the output device
-hwaccels show available HW acceleration methodsGlobal options (affect whole program instead of just one file):
-loglevel loglevel set logging level
-v loglevel set logging level
-report generate a report
-max_alloc bytes set maximum size of a single allocated block
-y overwrite output files
-n never overwrite output files
-ignore_unknown Ignore unknown stream types
-filter_threads number of non-complex filter threads
-filter_complex_threads number of threads for -filter_complex
-stats print progress report during encoding
-max_error_rate maximum error rate ratio of decoding errors (0.0: no errors, 1.0: 100% errors) above which ffmpeg returns an error instead of success.Per-file main options:
-f fmt force format
-c codec codec name
-codec codec codec name
-pre preset preset name
-map_metadata outfile[,metadata]:infile[,metadata] set metadata information of outfile from infile
-t duration record or transcode "duration" seconds of audio/video
-to time_stop record or transcode stop time
-fs limit_size set the limit file size in bytes
-ss time_off set the start time offset
-sseof time_off set the start time offset relative to EOF
-seek_timestamp enable/disable seeking by timestamp with -ss
-timestamp time set the recording timestamp ('now' to set the current time)
-metadata string=string add metadata
-program title=string:st=number... add program with specified streams
-target type specify target file type ("vcd", "svcd", "dvd", "dv" or "dv50" with optional prefixes "pal-", "ntsc-" or "film-")
-apad audio pad
-frames number set the number of frames to output
-filter filter_graph set stream filtergraph
-filter_script filename read stream filtergraph description from a file
-reinit_filter reinit filtergraph on input parameter changes
-discard discard
-disposition dispositionVideo options:
-vframes number set the number of video frames to output
-r rate set frame rate (Hz value, fraction or abbreviation)
-fpsmax rate set max frame rate (Hz value, fraction or abbreviation)
-s size set frame size (WxH or abbreviation)
-aspect aspect set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)
-display_rotation angle set pure counter-clockwise rotation in degrees for stream(s)
-display_hflip set display horizontal flip for stream(s) (overrides any display rotation if it is not set)
-display_vflip set display vertical flip for stream(s) (overrides any display rotation if it is not set)
-vn disable video
-vcodec codec force video codec ('copy' to copy stream)
-timecode hh:mm:ss[:;.]ff set initial TimeCode value.
-pass n select the pass number (1 to 3)
-vf filter_graph set video filters
-b bitrate video bitrate (please use -b:v)
-dn disable dataAudio options:
-aframes number set the number of audio frames to output
-aq quality set audio quality (codec-specific)
-ar rate set audio sampling rate (in Hz)
-ac channels set number of audio channels
-an disable audio
-acodec codec force audio codec ('copy' to copy stream)
-ab bitrate audio bitrate (please use -b:a)
-af filter_graph set audio filtersSubtitle options:
-s size set frame size (WxH or abbreviation)
-sn disable subtitle
-scodec codec force subtitle codec ('copy' to copy stream)
-stag fourcc/tag force subtitle tag/fourcc
-fix_sub_duration fix subtitles duration
-canvas_size size set canvas size (WxH or abbreviation)
-spre preset set the subtitle options to the indicated preset
细节文档
命令 | 说明 |
ffmpeg -L | 显示License |
ffmpeg -version | 显示当前版本 |
ffmpeg help -buildconf | 显示编译此ffmpeg的configuration |
ffmpeg help -formats | 显示支持的文件格式,同时显示muxers和demuxers |
ffmpeg help -muxers | 显示支持的muxers格式 |
ffmpeg help -demuxers | 显示支持的demuxers格式 |
ffmpeg help -devices | 显示支持的设备,包括音视频设备 |
ffmpeg help -codecs | 显示支持的格式,同时显示视频、音频、字幕、帧内编码、有损压缩和无损压缩的解编码支持情况 |
ffmpeg help -decoders | 显示支持的解码器 |
ffmpeg help -encoders | 显示支持的编码器 |
ffmpeg help -bsfs | 显示支持的二进制流过滤器,例如h264_metadata、h264_mp4toannexb、hevc_mp4toannexb等 |
ffmpeg help -protocols | 显示支持的可用的协议,区分Input和Output,例如file、http、hls、rtmp、rtp、pipe、tee等 |
ffmpeg help -filters | 显示支持的可用的过滤器 |
ffmpeg help -pix_fmts | 显示支持的可用的像素格式 |
ffmpeg help -layouts | 显示支持的声道布局,例如mono、stereo、2.1、2.0、3.0、5.0、5.1等 |
ffmpeg help -sample_fmts | 显示支持的音频采样格式,例如u8、s16、s32、flt等 |
ffmpeg help -colors | 显示支持的颜色 |
ffmpeg help -sources device | 列出输入设备的源 |
ffmpeg help -sinks device | 列出输出设备的槽(节点) |
ffmpeg help -hwaccels | 显示可用的硬件加速方法 |
相关文章:
ffmpeg命令详解
原文网址:ffmpeg命令详解_IT利刃出鞘的博客-CSDN博客 简介 本文介绍ffmpeg命令的用法。 命令示例 1.mp4和avi的基本互转 ffmpeg -i D:\input.mp4 E:\output.avi ffmpeg -i D:\input.avi E:\output.mp4 -i 表示input,即输入。后面填一个输入地址和一…...
【漏洞复现】CVE-2022-43396
漏洞信息 NVD - CVE-2022-43396 In the fix for CVE-2022-24697, a blacklist is used to filter user input commands. But there is a risk of being bypassed. The user can control the command by controlling the kylin.engine.spark-cmd parameter of conf. 背景介绍…...
文件的摘要算法(md5、sm3、sha256、crc)
为了校验文件在传输中保证完整性和准确性,因此需要发送方先对源文件产生一个校验码,并将该值传输给接收方,将附件通过ftph或http方式传输后,由接收方使用相同的算法对接收文件再获取一个新的校验码,将该值和发送方传的…...
如何借助AI生成PPT,让创作轻松又高效
PPT是现代职场中不可或缺的表达工具,但同时也可能是令人抓狂的时间杀手。几页幻灯片的制作,常常需要花费数小时调整字体、配色与排版。AI的飞速发展为我们带来了革新——AI生成PPT的技术不仅让制作流程大大简化,还重新定义了效率与创意的关系…...
云技术-docker
声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团…...
对docker安装的mysql实现主从同步
1:分别安装mysql主,从数据库 将主库容器名称改为mysql_master,将从库容器名称改为mysql_slave 安装教程:docker安装mysql 2:配置主库的my.cnf挂载文件 [mysqld] #log-bin:表示启用binlog功能,并指定二进制日志的存储目录。 log-binmysql-bin #binlog_f…...
【不定长滑动窗口】【灵神题单】【刷题笔记】
采摘水果 fruits[i]表示第i棵树上的水果种类目的是尽可能多收集水果规矩: 只有两个篮子,且每个篮子只能装一种水果,但是每个篮子能装的总量没限制一旦开始采摘,就会连续采摘,把两个篮子都用掉也就是说,采摘到最后一颗…...
AI写论文指令
一、论文选题指令 1、确定研究对象:我是一名xxx,请从以下素材内容中,结合xx相关知识,提炼出可供参考的学术概念 。以下是结合素材内容,提炼出的几个可供参考的学术概念 概念a:概念b:概念C&…...
2625扁平化嵌套数组
请你编写一个函数,它接收一个 多维数组 arr 和它的深度 n ,并返回该数组的 扁平化 后的结果。 多维数组 是一种包含整数或其他 多维数组 的递归数据结构。 数组 扁平化 是对数组的一种操作,定义是将原数组部分或全部子数组删除,…...
QT6学习第五天 第一个QT Quick程序
QT6学习第五天 第一个QT Quick程序 概述创建Qt Quick程序使用Qt资源文件 概述 如果将程序的用户界面成为前端,程序的数据存储和逻辑业务成为后端,那么传统QT Widgets程序的前后端都是用C完成的。对于现代软件开发而言,前端演化速度远快于后端…...
【开发商城系统】
在广西开发商城系统,可以按照以下步骤进行: 确定项目需求:与客户沟通,了解商城系统所需的功能和特性,并确定项目的预算和时间限制。 进行市场调研:了解广西地区的电商市场情况,包括竞争对手、消…...
(11)(2.2) BLHeli32 and BLHeli_S ESCs(二)
文章目录 前言 1 传递支持 前言 BLHeli 固件和配置应用程序的开发是为了允许配置 ESC 并提供额外功能。带有此固件的 ESC 允许配置定时、电机方向、LED、电机驱动频率等。在尝试使用 BLHeli 之前,请按照 DShot 设置说明进行操作(DShot setup instructions)。 1 传…...
C++ 11重点总结1
智能指针 智能指针: C11引入了四种智能指针: auto_ptr(已弃用)、unique_ptr、shared_ptr和weak_ptr。智能指针可以更有效地管理堆内存,并避免常见的内存泄漏问题。 shared_ptr: 自定义删除器。 shared_ptr使用引用计数来管理它指向的对象的生命周期。多个shared_ptr实例可以指向…...
海康VsionMaster学习笔记(学习工具+思路)
一、前言 VisionMaster算法平台集成机器视觉多种算法组件,适用多种应用场景,可快速组合算法,实现对工件或被测物的查找测量与缺陷检测等。VM算法平台依托海康威视在图像领域多年的技术积淀,自带强大的视觉分析工具库,可…...
基于Python语言的Web爬虫设计源码
基于Python语言的Web爬虫设计源码地址 该项目是一个基于Python语言的Web爬虫设计源码,包含20个文件,其中18个为Python源代码文件,1个Markdown文件用于文档说明,以及1个配置文件。该爬虫专注于网络信息的抓取与处理。 关键词 Py…...
学习日志 --A5rZ
24.11.27 0001:2024 强网杯青少年专项赛 EnterGam 复现已完成 0002:在x86上模拟arm64(搁置,原因:资料过少,可行性过低) 0003:2024 强网杯青少年专项赛 Flip_over 复现终止(无arm真机) 0004: 开始复现 2024 强网杯青少年专项赛 journey_story...
JVM_垃圾收集器详解
1、 前言 JVM就是Java虚拟机,说白了就是为了屏蔽底层操作系统的不一致而设计出来的一个虚拟机,让用户更加专注上层,而不用在乎下层的一个产品。这就是JVM的跨平台,一次编译,到处运行。 而JVM中的核心功能其实就是自动…...
Javascript Insights: Visualizing Var, Let, And Const In 2024
11/2024 出版 MP4 |视频:h264, 19201080 |音频:AAC,44.1 KHz 语言:英语 |大小: 2.96 GB |时长: 5 小时 34 分钟 为所有认真的 JavaScript 开发人员可视化与 VAR、LET、CONST 和 EXECUTON CONTE…...
KL散度改写为一个可用于优化的形式
理解 KL 散度及其公式推导过程 在信息论和概率论中,KL散度(Kullback-Leibler Divergence)是衡量两个概率分布之间差异的重要工具。本文将从 KL 散度的定义入手,详细解析其公式来源以及如何将其改写为一个可用于优化的形式。 1. 什…...
Java代码操作Zookeeper(使用 Apache Curator 库)
1. Zookeeper原生客户端库存在的缺点 复杂性高:原生客户端库提供了底层的 API,需要开发者手动处理很多细节,如连接管理、会话管理、异常处理等。这增加了开发的复杂性,容易出错。连接管理繁琐:使用原生客户端库时&…...
【Linux】Make/Makefile
这个3/4行的语法和1/2行是一样的。也是依赖关系和依赖方法。 make命令扫描makefile文件时,从上向下扫描,默认形成一个目标文件。 指定make clean的时候才回去执行对应的清除。 为什么要给我们的clean.PHONY:clean声明它是伪目标呢? PHONY类…...
C++练级计划->《多态》虚函数表,菱形继承多态
目录 什么是多态? 多态的条件 虚函数: 虚函数的重写: 协变 析构函数的重写 C11 final 和 override final: override: 总结: 三重对比:重载重写重定义对比 抽象类 多态的原理 虚函数…...
OkHttp3 - 2. OkHttp的核心组件与架构
1 OkHttp的工作原理 OkHttp3 的核心设计遵循以下原则: 请求与响应的分离:通过 Request 和 Response 对象解耦请求构建与结果处理。异步与同步支持:使用 Call 对象管理请求,可以同步或异步执行。高效连接复用:通过连接…...
异或操作解决一些问题
前提: 异或操作符合交换律,结合律(因为其根本上来抽象理解,就是查看所有项二进制数相同位是否有奇数个1,对运算结果二进制数而言,没有该位为0,有该位为1,与顺序无关)。 …...
操作系统之输入输出
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
Centos 安装 Node.js 和 npm
方法2:使用 NVM(Node Version Manager)安装 安装 NVM curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 重新加载配置 source ~/.bashrc 安装最新的 LTS 版本的 Node.js nvm install --lts 验证安装…...
C语言——指针初阶(一)
目录 一.什么是指针??? 指针是什么? 指针变量: 总结: 总结: 二.指针和指针类型 指针-整数: 总结: 指针的解引用 总结: 三.野指针 如何规避野指针 往期…...
React Native 原生开发指南
写在前面 React Native (RN) 是一个用于构建跨平台移动应用的框架。它允许开发者使用 JavaScript 和 React 来编写应用程序,并将其转换为原生代码。虽然 RN 提供了许多内置的组件和 API,但有时候你可能需要访问原生平台的特定功能或性能优化。为此&…...
【前端】JavaScript中的柯里化(Currying)详解及实现
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 💯前言💯什么是柯里化?💯柯里化的特点💯柯里化的简单示例💯通用的柯里化实现💯柯里化让代码更易读的原因💯…...
解决 docker 部署 vsftpd 速度慢问题
解决 docker 部署 vsftpd 速度慢问题 Docker 部署 ftp version: 3.8services:ftps:image: fauria/vsftpdcontainer_name: my-ftpsenvironment:- FTP_USERyourusername- FTP_PASSyourpassword- PASV_ADDRESS192.168.0.123 # 使用环境变量或直接指定IP地址- PASV_MIN_PORT4900…...
弄个小程序要多少钱/搜索引擎优化简称
1.定义变量:declare name varchar(20) 用declare定义一个名字为name的字符串类型的变量,变量前面需要加 2.为变量赋值:set name %奥迪% ,用set来进行赋值操作(也可以用select)这里的值可以是一个值也可以…...
wordpress邮件验证评论/网站推广优化排名公司
一 kafka消费端的参数 二 实现案例 2.1 订阅某个主题 创建一个独立消费者,消费 kafka-ljf主题中数据。 注意:在消费者 API 代码中必须配置消费者组 id。命令行启动消费者不填写消费者组 id 会被自动填写随机的消费者组 id。 2.消费者代码package com.lj…...
为什么有的公司做很多个网站/深圳网络推广公司排名
1、简单介绍该错误发生的背景: 1) 数据库版本:MySQL5.7.19 2) 对一个大表修改字段类型DDL(将主键id int变为bigint),为了不影响主库业务,先在从库上执行DDL操作,然后通过…...
昆明网站建设方案报价/北京百度推广排名优化
美团 一面: 1、ConcurrentHashMap实现原理 2、HashMap实现原理 3、锁的实现原理 4、synchronized和重入所实现原理以及区别 5、一个char[]数组,里面有空格,以&结束。 6、jvm内存模型,都存什么。以及垃圾回收算法,…...
大数据平台网站建设/软件注册推广平台
1.实现目标: 选择用户角色,自动勾选权限。 2. (1)MySQL数据库的建立 (2)ng-repeat指令显示用户权限 (3)ng-checked指令控制用户权限 3.实例 (1)MySQL数据库的建立 t_role表 id rolename 1 系统管理员 2 总经理 r_right表 id …...
如何做网络网站推广/推广文案范例
最近一个项目要用到ActiveMq,并且需要最大程度的保证消息不丢失。以前对activeMq不是很熟悉,完全是摸着石头过河,目前基 本配置都搞定了。只是对于它的自动重连一直找不到好的解决办法,我希望的效果是当一个broker(假设…...