ubuntu录屏转格式 webm转mp4

news/2024/11/19 21:02:50/文章来源:https://www.cnblogs.com/PrepAndPonder/p/18432710

起因

想着将一些操作录屏记录下来。之前在win上面,使用EV录屏或者用CS(CamtasiaStudio)。这次用ubuntu,发现系统自带的录屏似乎就可以用,于是试了一下。操作确实很方便,但录屏生成的文件是.webm后缀,似乎要上传一些平台需要转格式。遂祭起AI大旗。

AI协助转格式

在Ubuntu上,你可以使用多种工具将WebM格式的录屏文件转换成其他格式,比如MP4、AVI等。其中最常用的一个工具是ffmpeg,它是一个非常强大的多媒体框架,可以用来记录、转换视频和音频流。

如果你还没有安装ffmpeg,可以通过以下命令来安装:

sudo apt update
sudo apt install ffmpeg

一旦你安装了ffmpeg,就可以使用它来转换你的WebM文件。下面是一些常见的转换示例:

转换成MP4格式

要将WebM文件转换为MP4格式,可以在终端中运行如下命令:

ffmpeg -i input.webm -c:v libx264 -c:a aac output.mp4

这里:

  • -i input.webm 指定了输入文件。
  • -c:v libx264 选择了H.264编码器来处理视频流。
  • -c:a aac 选择了AAC编码器来处理音频流。
  • output.mp4 是输出文件的名字。
转换成AVI格式

若要转换为AVI格式,可以使用如下命令:

ffmpeg -i input.webm -c:v libxvid -c:a mp3 output.avi

这里:

  • -c:v libxvid 选择XviD编码器用于视频。
  • -c:a mp3 选择MP3编码器用于音频。
自定义设置

ffmpeg 提供了大量的选项来自定义输出,例如调整分辨率、比特率等。你可以在官方文档或通过man ffmpeg查看更多详细信息。

按照说明操作

报错了!

 ffmpeg -i 录屏\ 2024-09-26\ 08-17-40.webm -c:v libx264 -c:a aac checkIP1.mp4
ffmpeg version 6.1.1-3ubuntu5+esm2 Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 13 (Ubuntu 13.2.0-23ubuntu4)configuration: --prefix=/usr --extra-version=3ubuntu5+esm2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --disable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-sharedWARNING: library configuration mismatchavcodec     configuration: --prefix=/usr --extra-version=3ubuntu5+esm2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --disable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared --enable-version3 --disable-doc --disable-programs --disable-static --enable-libaribb24 --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc --enable-libsmbclientlibavutil      58. 29.100 / 58. 29.100libavcodec     60. 31.102 / 60. 31.102libavformat    60. 16.100 / 60. 16.100libavdevice    60.  3.100 / 60.  3.100libavfilter     9. 12.100 /  9. 12.100libswscale      7.  5.100 /  7.  5.100libswresample   4. 12.100 /  4. 12.100libpostproc    57.  3.100 / 57.  3.100
Input #0, matroska,webm, from '录屏 2024-09-26 08-17-40.webm':Metadata:encoder         : GStreamer matroskamux version 1.24.2creation_time   : 2024-09-26T00:17:40.675211ZDuration: 00:01:00.36, start: 0.010000, bitrate: 391 kb/sStream #0:0(eng): Video: vp8, yuv420p(tv, bt709, progressive), 1081x711, SAR 1:1 DAR 1081:711, 1k tbr, 1k tbn (default)Metadata:title           : Video
Stream mapping:Stream #0:0 -> #0:0 (vp8 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 0x61d007072f80] width not divisible by 2 (1081x711)
[vost#0:0/libx264 @ 0x61d007072b80] Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.
Error while filtering: Generic error in an external library
[out#0/mp4 @ 0x61d007073600] Nothing was written into output file, because at least one of its streams received no packets.
frame=    0 fps=0.0 q=0.0 Lsize=       0kB time=N/A bitrate=N/A speed=N/A    
Conversion failed!

继续丢给AI

AI分析报错

从你提供的错误信息来看,问题出在视频的宽度(1081像素)不是2的倍数,这导致了libx264编码器无法处理。H.264编码通常要求宽度和高度都是偶数,以保证宏块(macroblock)对齐。

要解决这个问题,你可以使用ffmpeg来调整视频的分辨率,使其宽度成为偶数。这里有一个修改后的命令示例,它会将视频缩放到最近的偶数宽度,并保持原始宽高比:

ffmpeg -i "录屏 2024-09-26 08-17-40.webm" -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -c:v libx264 -c:a aac checkIP1.mp4

这里的-vf "scale=trunc(iw/2)*2:trunc(ih/2)*2"是一个视频过滤器选项,用于确保输出视频的宽度和高度都是偶数。iwih分别代表输入视频的宽度和高度,trunc(iw/2)*2trunc(ih/2)*2则确保结果是偶数。

如果你希望指定一个特定的分辨率,比如1080p (1920x1080),你可以直接替换为:

ffmpeg -i "录屏 2024-09-26 08-17-40.webm" -vf scale=1920:1080 -c:v libx264 -c:a aac checkIP1.mp4

请根据你的具体需求选择合适的分辨率。如果这个命令解决了你的问题,请告诉我。如果有其他问题或需要进一步的帮助,随时让我知道!

使用特定分辨率输出文件

$ ffmpeg -i "录屏 2024-09-26 08-17-40.webm" -vf scale=1920:1080 -c:v libx264 -c:a aac checkIP1.mp4
ffmpeg version 6.1.1-3ubuntu5+esm2 Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 13 (Ubuntu 13.2.0-23ubuntu4)configuration: --prefix=/usr --extra-version=3ubuntu5+esm2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --disable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-sharedWARNING: library configuration mismatchavcodec     configuration: --prefix=/usr --extra-version=3ubuntu5+esm2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --disable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared --enable-version3 --disable-doc --disable-programs --disable-static --enable-libaribb24 --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc --enable-libsmbclientlibavutil      58. 29.100 / 58. 29.100libavcodec     60. 31.102 / 60. 31.102libavformat    60. 16.100 / 60. 16.100libavdevice    60.  3.100 / 60.  3.100libavfilter     9. 12.100 /  9. 12.100libswscale      7.  5.100 /  7.  5.100libswresample   4. 12.100 /  4. 12.100libpostproc    57.  3.100 / 57.  3.100
Input #0, matroska,webm, from '录屏 2024-09-26 08-17-40.webm':Metadata:encoder         : GStreamer matroskamux version 1.24.2creation_time   : 2024-09-26T00:17:40.675211ZDuration: 00:01:00.36, start: 0.010000, bitrate: 391 kb/sStream #0:0(eng): Video: vp8, yuv420p(tv, bt709, progressive), 1081x711, SAR 1:1 DAR 1081:711, 1k tbr, 1k tbn (default)Metadata:title           : Video
File 'checkIP1.mp4' already exists. Overwrite? [y/N] y
Stream mapping:Stream #0:0 -> #0:0 (vp8 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 0x57a737bdafc0] using SAR=1081/1264
[libx264 @ 0x57a737bdafc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x57a737bdafc0] profile High, level 6.1, 4:2:0, 8-bit
[libx264 @ 0x57a737bdafc0] 264 - core 164 r3108 31e19f9 - H.264/MPEG-4 AVC codec - Copyleft 2003-2023 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=18 lookahead_threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'checkIP1.mp4':Metadata:encoder         : Lavf60.16.100Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt470bg/bt709/bt709, progressive), 1920x1080 [SAR 1081:1264 DAR 1081:711], q=2-31, 1k fps, 16k tbn (default)Metadata:title           : Videoencoder         : Lavc60.31.102 libx264Side data:cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
frame=  689 fps=109 q=33.0 size=     256kB time=00:00:00.68 bitrate=3057.6kbits/[vost#0:0/libx264 @ 0x57a737bdabc0] More than 1000 frames duplicated
frame= 1586 fps=216 q=33.0 size=     512kB time=00:00:01.58 bitrate=2648.2kbits/frame= 2431 fps=152 q=33.0 size=     768kB time=00:00:02.42 bitrate=2590.3kbits/frame= 2465 fps=102 q=33.0 size=     768kB time=00:00:02.46 bitrate=2554.5kbits/frame= 2824 fps=110 q=33.0 size=    1024kB time=00:00:02.82 bitrate=2972.7kbits/
......
frame=59057 fps=103 q=33.0 size=   22528kB time=00:00:59.05 bitrate=3125.0kbits/frame=59058 fps=103 q=33.0 size=   22528kB time=00:00:59.05 bitrate=3125.0kbits/frame=60335 fps=103 q=33.0 size=   23040kB time=00:01:00.33 bitrate=3128.4kbits/[out#0/mp4 @ 0x57a737bdb640] video:23213kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 3.050443%
frame=60398 fps=103 q=-1.0 Lsize=   23921kB time=00:01:00.39 bitrate=3244.6kbits/s dup=59859 drop=0 speed=0.103x    
[libx264 @ 0x57a737bdafc0] frame I:242   Avg QP:16.82  size: 60812
[libx264 @ 0x57a737bdafc0] frame P:15220 Avg QP:22.53  size:   265
[libx264 @ 0x57a737bdafc0] frame B:44936 Avg QP:38.25  size:   112
[libx264 @ 0x57a737bdafc0] consecutive B-frames:  0.8%  0.0%  0.0% 99.2%
[libx264 @ 0x57a737bdafc0] mb I  I16..4: 31.0% 55.1% 13.9%
[libx264 @ 0x57a737bdafc0] mb P  I16..4:  0.1%  0.1%  0.0%  P16..4:  0.2%  0.1%  0.0%  0.0%  0.0%    skip:99.5%
[libx264 @ 0x57a737bdafc0] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.7%  0.0%  0.0%  direct: 0.0%  skip:99.3%  L0:35.7% L1:64.2% BI: 0.0%
[libx264 @ 0x57a737bdafc0] 8x8 transform intra:53.4% inter:57.9%
[libx264 @ 0x57a737bdafc0] coded y,uvDC,uvAC intra: 16.6% 15.8% 10.6% inter: 0.0% 0.0% 0.0%
[libx264 @ 0x57a737bdafc0] i16 v,h,dc,p: 44% 54%  1%  1%
[libx264 @ 0x57a737bdafc0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 72% 12% 12%  0%  0%  0%  1%  0%  1%
[libx264 @ 0x57a737bdafc0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 38% 34%  9%  3%  4%  3%  4%  3%  4%
[libx264 @ 0x57a737bdafc0] i8c dc,h,v,p: 76% 16%  7%  1%
[libx264 @ 0x57a737bdafc0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x57a737bdafc0] ref P L0: 88.6%  5.1%  4.9%  1.4%
[libx264 @ 0x57a737bdafc0] ref B L0: 19.6% 80.2%  0.1%
[libx264 @ 0x57a737bdafc0] ref B L1: 98.7%  1.3%
[libx264 @ 0x57a737bdafc0] kb/s:3148.32

差不多1分钟的视频,耗费了不少时间,文件体积也大了不少。继续调整ffmpeg转换参数。

继续提问AI

如果你希望加快视频转换的速度,可以调整ffmpeg的一些参数来优化性能。以下是一些可以提高转换速度的方法:

1. 使用更快的预设

libx264编码器提供了一系列预设,从最慢(最高质量)到最快(最低质量)。默认情况下,ffmpeg使用的是中等速度的预设。你可以通过设置-preset选项来选择一个更快的预设,比如veryfast

ffmpeg -i "录屏 2024-09-26 08-17-40.webm" -vf scale=1280:720 -c:v libx264 -preset veryfast -c:a aac checkIP1.mp4
2. 减少比特率

降低输出视频的比特率可以减少处理时间,但这会牺牲一些视频质量。可以通过-b:v选项来指定视频比特率。

ffmpeg -i "录屏 2024-09-26 08-17-40.webm" -vf scale=1280:720 -c:v libx264 -preset veryfast -b:v 1000k -c:a aac checkIP1.mp4

这里-b:v 1000k设置了视频比特率为1000 kbps。你可以根据需要调整这个值。

3. 使用硬件加速

如果你的计算机支持硬件加速(例如Intel Quick Sync, NVIDIA NVENC, AMD VCE),你可以利用这些功能来显著加快编码速度。下面是一个使用NVIDIA GPU的例子:

ffmpeg -i "录屏 2024-09-26 08-17-40.webm" -vf scale_npp=1280:720 -c:v h264_nvenc -c:a aac checkIP1.mp4

对于Intel和AMD的硬件加速,命令会有所不同,请查阅ffmpeg文档以获取具体的支持情况和正确的命令行参数。

4. 并行处理

如果你有多个CPU核心,确保ffmpeg能够充分利用它们。通常ffmpeg会自动检测并使用所有可用的核心,但你可以通过-threads选项手动设置线程数。

ffmpeg -i "录屏 2024-09-26 08-17-40.webm" -vf scale=1280:720 -c:v libx264 -preset veryfast -threads 4 -c:a aac checkIP1.mp4

这里的-threads 4指定了使用4个线程进行编码。你可以根据你的CPU核心数量来调整这个值。

5. 减少音频质量

如果你不介意稍微降低音频质量,可以通过降低音频比特率来加快转换速度。

ffmpeg -i "录屏 2024-09-26 08-17-40.webm" -vf scale=1280:720 -c:v libx264 -preset veryfast -c:a aac -b:a 64k checkIP1.mp4

这里的-b:a 64k设置了音频比特率为64 kbps。

结合以上方法,你可以找到适合你需求的平衡点,在保证一定质量的同时加快转换速度。希望这些建议对你有帮助!如果还有其他问题或需要进一步的帮助,请告诉我。

综合AI方案
$ ffmpeg -i "录屏 2024-09-26 08-17-40.webm" -vf scale=1280:720 -c:v libx264 -preset veryfast -c:a aac -b:a 64k checkIP2.mp4

速度快了些,体积也降到了10MB。

新技能GET!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/803870.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

飞驰云联亮相”电子半导体数智化年会” 获”数据交换领域最佳厂商奖”

2024年9月20日,“2024第二届电子半导体/智能制造数智化年会暨品牌出海论坛”于上海隆重开幕,Ftrans飞驰云联作为国内领先的数据安全交换厂商,应邀携半导体全场景产品和解决方案亮相此次峰会。会上进行了“智象奖”评选,Ftrans飞驰云联凭借创新的技术以及优质的服务,荣获“…

智能同步,效率倍增:Ftrans文件自动化实时同步技术革新!

随着企业结构分散化,企业内部数据流转更加频繁,为了保证数据在不同平台和设备之间的一致性和可用性、保障数据的安全性并有效支撑业务开展,越来越多的企业需要将内部数据在多个数据中心之间、多台服务器之间、多云和本地间进行服务器文件自动化实时同步处理。通过同步软件,…

跨地域协作新篇章:异地传输文件的最优方案!

基于市场拓展、获取丰富资源、实现长期战略目标、分散运营风险等考量,企业会在多个城市或国家设立分支机构,用以覆盖更广泛的市场和客户群体,提高业务的可靠性和稳定性。企业在实现总分支机构之间异地传输文件时,会面临以下挑战: 1.管理难统一 不同业务部门、机构之间进行…

鸿蒙应用开发——Scroll/List组件无法触发滑动,检查子组件的高度是否被固定/是否内嵌了Tabs组件

鸿蒙应用开发——Scroll/List组件无法触发滑动,检查子组件的高度是否被固定/是否内嵌了Tabs组件鸿蒙应用开发——Scroll/List组件无法触发滑动 一、检查子组件的高度是否被固定 若Scroll/List组件的子组件的高度超出了Scroll/List组件高度则能够滚动,此时子组件的高度固定且不…

多线程极速导出/9字段10W行只需2秒/导入导出打印组件/功能丰富简单易用

一、功能特点组件同时集成了导出数据到csv、xls、pdf和打印数据。 所有操作全部提供静态方法无需new,数据和属性等各种参数设置采用结构体数据,极为方便。 同时支持QTableView、QTableWidget、QStandardItemModel、QSqlTableModel等数据源。 提供静态方法直接传入QTableView、…

python-生成器

生成器(generator)其实是一类特殊的迭代器。前面博客我们每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据。为了达到记录当前状态,并配合next()函数进行…

Cisco ASAv 9.22.1 发布,新增功能概览

Cisco ASAv 9.22.1 发布,新增功能概览Cisco ASAv 9.22.1 - 思科自适应安全虚拟设备 (ASAv) Cisco Adaptive Security Virtual Appliance (ASAv) 请访问原文链接:https://sysin.org/blog/cisco-asav/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org思科自适应安…

C++ 容器操作

▲ 容器操作 《C++ Primer》 P295

Day1 介值定理

介值定理 设 $ f(x) $ 是 $ [l,r] $ 上的连续函数,且 $ f(l) \le f(r) $ ,则 $ \forall \ v \in [f(l),f(r)] \ , \exists \ u \in [l,r] \ , f(u)=v $ 上午 思考题有n个物品,每个物品有重量wi和体积vi且密度均匀。 你可以切物品,每次可以选一个物品切成两部分,也就是选一…

C++ 顺序容器类型

▲ 顺序容器类型 《C++ Primer》 P294

读构建可扩展分布式系统:方法与实践15可扩展系统的基本要素

并发系统1. 可扩展系统的基本要素 1.1. 分布式系统在本质上就是复杂的,你必须考虑多种故障模式,并设计应对所有可能发生的情况的处理方式 1.2. 大规模应用程序需要协调大量的硬件和软件组件,共同实现低延迟和高吞吐量的能力 1.3. 面临的挑战是将所有活动部件组合成一个应用程…