重磅音视频开发资料库!!!

2023/6/5 21:44:56

为了更好的阅读请前往GitBook

一、前言

这里整理有着丰富的音视频开发的学习资源、开发工具、优秀书籍、教程和开源项目,旨在帮助开发者和爱好者更好地学习、实践和工作。而下图是开发处理的过程:

在这里插入图片描述

二、学习技能

语言重要度作用
C/C++★★★★★作为底层开发语言,可以实现音视频编码/解码,滤镜等高性能的操作,是音视频开发中最为重要的基础语言之一。
Python★★★☆☆Python 在音视频开发中可以用于快速开发或原型开发,尤其在深度学习及音视频处理应用中表现突出。
Java/Kotlin★★★☆☆Java/Kotlin 适用于 Android平台的音视频开发,它们提供了音视频录制、剪辑、播放等 API。
Objective-C/Swift★★★☆☆用于MacOS、iOS平台的开发,其开发API包含音视频流的处理和流媒体播放等。
JavaScript★☆☆☆☆JavaScript是Web开发的常用编程语言,它的WebRTC技术可以用于浏览器中的音视频流处理和实时通讯。
Shell★☆☆☆☆脚本编写、系统管理等。
CMake★☆☆☆☆跨平台编译、构建工具等。
GLSL★☆☆☆☆图形学、OpenGL着色器等。

三、学习音视频理论知识

1.重要知识点

知识点重要度作用
YUV/RGB★★★★★视频原始(裸流)数据,解码最终显示就是一帧帧YUV数据 。
PCM★★★★★音频原始(裸流)数据,解码最终播放的就是PCM数据。
H.264(AVC)★★★★★目前主流的视频编解码协议。
H.265(HEVC)★★★☆☆基于H.264的升级版,大幅度提升了编码大小和质量。因为版权和收费问题没有普及。
AAC★★★★★目前主流的音频编解码协议。
RTMP★★★☆☆直播推流,看侧重点
封装格式★★☆☆☆MP4、AVI、MKV、RMVB、FLV等容器,把音频、视频、字幕等通道封装成一个文件
webrtc(VP8)★★★☆☆P2P的音视频通话,看侧重点
OpenGL★★★☆☆使用GPU渲染视频,释放宝贵的CPU资源,看侧重点

2.书籍推荐

  • 书:音视频开发进阶指南:基于Android与iOS平台的实践(京东) :第1章 音视频基础概念;电子书往最后翻。
  • 书:Android 音视频开发_何俊林(京东) :第1章 音视频基础知识;电子书往最后翻。
  • 书:新一代视频压缩编码标准-H.264/AVC(第二版)(京东) : 讲述H.264等编解码原理实现,其中几个算法 这篇文章讲的很深刻。
  • 也可以在这里1 或者这里2 搜索。
  • 这系列文章通俗易懂讲述编解码的一些知识 。

3.实践

3.1.视音频数据处理入门

[总结]视音频编解码技术零基础学习方法 系列文章,介绍了视音频编解码技术大体上原理和流程,通俗易懂。包括以下文章:

  • 视音频数据处理入门:RGB、YUV像素数据处理 :视频就是由它们组成的。
  • 视音频数据处理入门:PCM音频采样数据处理 :音频就是由它们组成的。
  • 视音频数据处理入门:H.264视频码流解析 :视频编码技术的一种(现代音视频开发必须掌握)。
  • 视音频数据处理入门:AAC音频码流解析 :音频编码技术的一种(现代音视频开发必须掌握)。
  • 视音频数据处理入门:FLV封装格式解析 :音视频封装格式的一种。
  • 视音频数据处理入门:UDP-RTP协议解析 :音视频协议的一种。

3.2.完整的RTMP推送小项目

此过程,体现从0~1。0是采集到的原始视频和音频数据,进行编码、封装,变为1(文件)。

  • 直播推流全过程:总纲
  • 直播推流全过程:视频数据源之YUV
  • 直播推流全过程:音频数据源之PCM
  • 直播推流全过程:视频编码之H.264
  • 直播推流全过程:音频编码之AAC
  • 直播推流全过程:直播推流编码之RTMP
  • 其他:H.264符号描述
  • 其他:直播优化基础

3.3.播放器小项目

此过程,体现从1~0。与3.2正好相反,把封装的文件(网络数据)通过解封装和解码,得到原始的裸数据(一帧帧图片)进行播放。

  • AFPlayer项目 Android实现FFmpeg、OpenSL ES、OpenGL SE、MediaCodec等,实现简单的播放器,主要体现出相关知识点的使用。

四、学习过程的分析工具

工具作用下载地址
VideoEye来自雷神的强大实时视频码流分析软件。地址
CodecianH264/H265等分析工具(跨平台)。地址
H264VisaH.264/AVC实时视频分析工具。(略)
Hxd Hex Editor16进制查看工具。地址
ffprobeffmpeg中自带的分析工具,非常强大,不过上手有难度。参考

五、重点开发工具/组件/开源库

1.FFmpeg

音视频开发是绕不开FFmpeg的,因为它是一个"集大成者",里面已经包含或可集成现代几乎所有的音视频技术(库)。

1.1.学习途径

  • 阅读官方文档
  • 学习官方例子(源码中doc/examples/xxx
  • [总结]FFMPEG视音频编解码零基础学习方法
  • FFmpeg 中文文档
  • 书籍(电子书往最后翻)
  • 1.FFmpeg从入门到精通(京东)
  • 2.FFMPEG_FFPLAY源码剖析(CSDN)
  • 3.音视频开发进阶指南:基于Android与iOS平台的实践(京东)
  • 4.Android 音视频开发_何俊林(京东)

1.2.学习路线

这里不推荐直接学习雷神的 [总结]FFMPEG视音频编解码零基础学习方法,建议是通过在学习FFmpeg官方例子中进行学习,避免先入为主使用了过时的API。

1.2.1.源码编译

编译ffmpeg4.2.2通过这篇文章我们基本可以编译出我们想要的FFmpeg库

1.2.2.源码阅读

  • 源码导入:FFmpeg导入到Clion(MacOS) 、 使用Clion阅读FFmpeg源码(支持跳转)
  • 阅读参考:FFMPEG_FFPLAY源码剖析(CSDN) 、雷神的FFmpeg源代码系列

1.2.3.学习官方例子

  • FFmpeg重要结构体(转载) ,因为在学习FFmpeg中,必须得知道结构体中重要参数的含义,否则举步维艰。
  • FFmpeg Demuxing(解封装) 对应 doc/examples/demuxing_decoding.c 中的解封装部分。
  • FFmpeg Muxing(封装) 对应 doc/examples/muxing.c
  • FFmpeg Remuxing(重新封装) 对应 doc/examples/remuxing.c
  • FFmpeg Decode(解码) 对应 doc/examples/decode_audio.cdoc/examples/decode_video.c
  • FFmpeg Encode(编码) 对应 doc/examples/encode_audio.cdoc/examples/encode_video.c
  • FFmpeg 简单实现转码 汇总解封装、解码、编码、封装放到一起方便理解 。
  • FFmpeg Filter和SDL(Video) 对应 doc/examples/filtering_video.c
  • FFmpeg Filter和SDL(Audio) 对应 doc/examples/filtering_video.c
  • FFmpeg Transcode(转码) 对应 doc/examples/transcoding.c
  • FFmpeg Swscale(图像转换) 对应 doc/examples/scaling_video.c

1.2.4.音视频同步

  • FFmpeg 音视频同步处理

1.2.5.FFmpeg相关

  • FFmpeg 命令使用指南:分析ffmpeg、ffprobe、ffplay工具使用文档,关联官方文档,以及滤镜、协议、视频合并、各种播放参数等相关介绍

2 OpenGL

OpenGL使用GPU渲染视频,释放宝贵的CPU资源,学习它是必不可少的。但是,正如雷神所说 :作为一个搞视频技术的人研究OpenGL,需要耗费大量时间和精力,这样学习不是很经济。所以推荐只学习有关视频渲染相关知识。

  • OpenGL介绍,和相关程序库
  • 纹理有关的基础知识 、OpenGL播放RGB/YUV 、OpenGL播放YUV420P(通过Texture,使用Shader)
  • Android OpenGL ES官方文档
  • LearnOpenGL-CN
  • OpenGL电子书下载
  • OpenGL基础知识
  • GLSL(着色器语言)中文手册
  • AFPlayer:OpenGL ES播放RGB
  • OpenGL ES推荐:WebGL编程指南(资源见下)

3.音频相关处理库

库名称作用平台项目地址
SoXSoX 可以进行音频处理,如音调、声速、混响、后暂式等等Linux、macOS、Windowshttps://github.com/chirlu/sox
EssentiaEssentia 可以进行音频处理、分析、提取等,提供了很多现成的功能算法Windows、macOS、Linux、Android、iOShttps://github.com/MTG/essentia
SpleeterSpleeter 是一款分离歌曲音轨的库,可以分离歌曲中的伴奏、人声等(如:不带背景乐的伴奏)Linux、macOS、Windowshttps://github.com/deezer/spleeter
libsndfilelibsndfile 可以读写、处理多种音频文件,支持变速、变调等处理Linux、macOS、Windowshttp://www.mega-nerd.com/libsndfile/
Rubber Band AudioRubber Band Audio 可以进行音频处理,支持变速、变调、变形和时间拉伸等多种处理操作Linux、macOS、Windowshttps://breakfastquay.com/rubberband/
librubberbandlibrubberband 是 Rubber Band Audio 的 C++ 接口,简化了音频处理操作。Linux、macOS、Windowshttps://github.com/breakfastquay/rubberband/tree/master/src
SoundTouchSoundTouch 可用进行音频连续变速变调处理,包括作品(“chipway/Pydub-Playground”),可实现歌曲同步播放。Windows、macOS、Linux、Android、iOShttps://gitlab.com/soundtouch/soundtouch
SonicSonic 可实现音频变速、变调等处理,运用于 播客、游戏等领域。Windows、macOS、Linux、Android、iOShttps://github.com/waywardgeek/sonic

4.视频相关处理库

库名称作用平台项目地址
FFmpegFFmpeg 可以转换视频文件格式、添加滤镜、剪辑、提取音频等功能Linux、macOS、Windowshttps://github.com/FFmpeg/FFmpeg
Libavlibav 同样可以转换视频文件格式、添加滤镜、剪辑、提取音频等功能,是 FFmpeg 的一个分支版本Linux、macOS、Windowshttps://libav.org/
GStreamerGStreamer 是一个流媒体框架,支持流式传输视频文件并进行处理,可以添加滤镜、编解码、格式转换等功能Linux、macOS、Windowshttps://gstreamer.freedesktop.org/
MLT FrameworkMLT Framework 可以用于视频混合、转换、添加滤镜、效果等,也是 Kdenlive 软件所使用的引擎Linux、macOS、Windowshttps://github.com/mltframework/
OpenCVOpenCV 是一个计算机视觉库,但也支持读取、写入视频文件、添加滤镜、实现对象追踪等功能Linux、macOS、Windowshttps://github.com/opencv/opencv
BlenderBlender 是一个 3D 制作软件,支持读取、写入视频文件、添加滤镜、实现对象制作等功能Linux、macOS、Windowshttps://www.blender.org/
MLV AppMLV App 主要用于处理和编辑 Magic Lantern 的电影录制格式,可以进行视频转换和色彩分级等Linux、macOS、Windowshttps://bitbucket.org/dmilligan/mlv_app/
HandBrakeHandBrake 是一个跨平台的视频转换器,支持多种输入、输出格式,可以添加滤镜、转换分辨率等操作Linux、macOS、Windowshttps://github.com/HandBrake/HandBrake
AvidemuxAvidemux 是一款视频编辑器,支持许多基本的编辑功能,如修建、编码、添加滤镜等Linux、macOS、Windowshttp://avidemux.sourceforge.net/
ShotcutShotcut 是一个跨平台的视频编辑器,支持多种基本编辑功能,并提供了丰富的视频滤镜Linux、macOS、Windowshttps://www.shotcut.org/
LightworksLightworks 是一款视频编辑软件,支持多种高级编辑功能,如多个视频轨道、音频同步、字幕、剪辑等Linux、macOS、Windowshttps://www.lwks.com/
KinoKino 是一款开源的视频编辑器,支持视频的剪辑、滤镜、导出等Linuxhttp://www.kinodv.org/
Cinelerra GGCinelerra GG 是截至目前正在活跃开发的 Cinelerra 的一个独特分支,具有更多先进的编辑功能Linuxhttps://cinelerra-gg.org/
FlowbladeFlowblade 是一个跨平台的视频编辑器,具有自动编辑、视频剪辑、渐变调色、音轨图、文本动画等功能Linux、macOShttps://github.com/jliljebl/flowblade
OliveOlive 是一款跨平台的视频编辑器,支持多个视频、音频和图像轨道,具有类似 Adobe Premiere 和 Final Cut Pro 等视频编辑器的界面Linux、macOS、Windowshttps://www.olivevideoeditor.org/

5.其他常用库

库名称描述作用平台项目地址
ARToolKit一个用于创建增强现实体验的开源跟踪库多平台https://github.com/artoolkit/ARToolKit5/
Kurento可以集成WebRTC和媒体服务器的平台Webhttps://www.kurento.org/
Webrtc实时通信的开源项目,包括音频、视频和数据通信Webhttps://webrtc.org/
VLC一个免费的开源跨平台媒体播放器和框架,可播放大多数多媒体文件多平台https://www.videolan.org/vlc/index.html
ExoPlayer一个可扩展的Android媒体播放器,包括支持DASH和HLS的内置组件Androidhttps://github.com/google/ExoPlayer
VitamioAndroid和iOS的流媒体解决方案Android,iOShttps://www.vitamio.org/en/
AVPlayer一个iOS播放器框架,支持本地和网络音频和视频文件iOShttps://developer.apple.com/documentation/avfoundation/avplayer
FFmpegKitFFmpeg库的原生iOS和Android包装器iOS,Androidhttps://github.com/tanersener/ffmpeg-kit
libVLC适用于Android、iOS、tvOS和macOS的VLC音视频框架Android,iOS,tvOS,macOShttps://code.videolan.org/videolan/libvlc-framework
AVKit一个macOS框架,提供音频和视频播放和处理功能macOShttps://developer.apple.com/documentation/avkit
Unity Video Player一种用于在游戏中播放视频的Unity组件Unityhttps://docs.unity3d.com/Manual/class-VideoPlayer.html
Three.js一个基于WebGL的跨平台JavaScript库,可用于创建和显示3D计算机图形Webhttps://threejs.org/
A-Frame一个用于构建虚拟现实和增强现实的Web框架Webhttps://aframe.io/
WebVR一种可用于任何Web浏览器的虚拟现实解决方案Webhttps://webvr.info/
Web Audio APIJavaScript API,用于处理和操纵音频Webhttps://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API
Tone.js用于Web音乐软件的框架Webhttps://tonejs.github.io/
Pygame用于开发2D游戏的Python库Pythonhttps://www.pygame.org/news
OpenAL多平台上的跨API的3D音频库多平台https://www.openal.org/
SDL_mixer用于游戏和其他多媒体应用程序的音频库多平台https://www.libsdl.org/projects/SDL_mixer/
Houdini针对3D艺术家和游戏开发人员的3D建模、动画和视觉效果软件多平台https://www.sidefx.com/
Natron免费的、开源的视频合成软件多平台https://natrongithub.github.io/
OBS Studio免费、开源、跨平台的流媒体和录制软件多平台https://obsproject.com/
GIMP免费的开源图像编辑器多平台https://www.gimp.org/
Inkscape一个用于创建和编辑矢量图形的开源软件多平台https://inkscape.org/
MediaInfo一个开源的多媒体信息解析器,用于获取媒体文件的各种信息多平台https://mediaarea.net/en/MediaInfo
libde265一种异步HEVC解码器库多平台https://github.com/strukturag/libde265
libvpx适用于WebRTC、VP8和VP9的开源视频编解码器多平台https://github.com/webmproject/libvpx
x264一种高质量的H.264 / AVC编码器多平台https://www.videolan.org/developers/x264.html
x265一种用于UHD编码的开源HEVC编码器多平台https://bitbucket.org/multicoreware/x265_git
Theora一种开源视频编解码器Webhttps://www.theora.org/
Ogg一种开源多媒体容器格式,通常与Theora和Vorbis一起使用Webhttps://www.xiph.org/ogg/
Vorbis一种开源音频编解码器Webhttps://xiph.org/vorbis/
WebVTT一种用于视频文本替代品的Web文本轨道Webhttps://w3c.github.io/webvtt/
PyAV基于FFmpeg的Python封装,可用于解码、编码和处理音频和视频Pythonhttps://pyav.org/
FFpyplayerPython+FFmpeg解决方案,在Python中播放音频和视频Pythonhttps://ffpyplayer.readthedocs.io/en/latest/
SoundManager2一个轻型、大众化的JavaScript音频播放器库Webhttps://github.com/scottschiller/SoundManager2
wave.js用于简化Web音频的JavaScript库Webhttps://github.com/jaz303/waveform-data
Howler.js用于现代Web音频的JavaScript音频库Webhttps://github.com/goldfire/howler.js
Web Audio DAW用于在浏览器中创建数字音频工作站(DAW)的Web Audio EditorWebhttps://beryju.org/web

六、实践项目

  • AFPlayer项目 Android实现FFmpeg、OpenSL ES、OpenGL SE、MediaCodec等,实现简单的播放器,主要体现出相关知识点的使用。
  • OpenGLES基本使用 :点、线、三角形、四边形、矩阵、纹理(贴纸)、摄像头显示、FBO、EGL、滤镜叠加、视频流编码输出。
  • 直接阅读上方优秀开源库效果更佳…

七、最后

  • 面试题整理:祝君拿到满意的offer!

音视频学习资料

创作皆不易,有条件的朋友请支持原版,谢谢!
密码:lqi9

    网易视频
    价值几千块的音视频视频
    动脑视频
    C++侯捷视频
    音视频开发进阶指南:基于Android与iOS平台的实践.pdf
    音视频05-H265码流分析.pdf
    音视频04-H265之CU TU PU划分.pdf
    音视频03-H265深度解析.pdf
    音视频02-H265编码与H264区别.pdf
    音视频01-H265编码.pdf
    新一代视频压缩编码标准-H.264_AVC(第二版).pdf
    数字信号处理教程(第四版).pdf
    视频技术手册(第5版).pdf
    《FFmpeg从入门到精通》.pdf
    《FFmpeg_Basics(260页)》.pdf
    webrtc介绍.pdf
    WebGL编程指南.zip
    video_file_format_spec_v10_1.pdf
    STL源码剖析简体中文完整版(清晰扫描带目录).pdf
    SDL2-API手册.doc
    rtmp规范翻译1.0.docx
    rtmp_specification_1.0.pdf
    rtmp.part3.Commands-Messages.pdf
    rtmp.part2.Message-Formats.pdf
    rtmp.part1.Chunk-Stream.pdf
    jni基础介绍.pdf
    OpenGL ES 2.0 编程指南 中文版.pdf
    OpenGL+着色语言第三版.pdf
    OpenGL.ES.2.0.Programming.Guide.pdf
    OpenGL着色语言.pdf
    ISO_IEC_14496-14_2003-11-15.pdf
    ISO_IEC-14496-3-2009.pdf
    hls-mpeg-ts-VB_WhitePaper_TransportStreamVSProgramStream_rd2.pdf
    hls-mpeg-ts-iso13818-1.pdf
    H.264官方中文版.pdf
    H.264_MPEG-4-Part-10-White-Paper.pdf
    H.264-AVC-ISO_IEC_14496-15.pdf
    H.264-AVC-ISO_IEC_14496-10.pdf
    ffmpeg命令大全.pdf
    FFmpeg命令大全.docx
    FFMPEG_FFPLAY源码剖析.7z
    CMake中文手册.pdf
    Cmake在Android studio Ndk使用.pdf
    C++ Primer(第5版)中文版.pdf
    C++ Primer Plus(第6版)中文版.azw3
    C Primer中文版 第五版 .pdf
    Android 音视频开发_何俊林.pdf
    amf3_spec_121207.pdf
    amf0_spec_121207.pdf
    Advanced C and C++ Compiling.pdf

维护地址:https://xhunmon.github.io/VABlog/


http://www.jnnr.cn/a/369279.html

相关文章

3.30--Redis之常用数据结构--跳表之总结篇(总结篇)------加油呀

跳表 跳表是在链表基础上改进过来的,实现了一种「多层」的有序链表,这样的好处是能快读定位数据 优势是能支持平均 O(logN) 复杂度的节点查找。 只有 Zset 对象的底层实现用到了跳表,zset 结构体里有两个数据结构:一个是跳表,一个…

FasterNet实战:使用FasterNet实现图像分类任务(二)

文章目录训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整算法设置混合精度,DP多卡,EMA定义训练和验证函数训练函数验证函数调用训练和验证方法运行以及结果查看测试热力图可视化展示一…

【数据库管理】⑤归档日志Archive Log

1.日志归档的概述和用途 日志归档是指将数据库的归档日志文件保存到指定的位置,以便在需要时进行恢复和回滚操作。在Oracle数据库中,日志归档是一种重要的备份和恢复策略,可以保证数据库的数据完整性和可靠性。 日志归档的主要用途包括&#…

CVE-2020-1948 Apache dubbo远程命令执行漏洞

预备知识 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。 RPC是远程过程调用的简称,广泛应用在大规模分布式应用中,作用是有助于系统的垂直…

Netty组件

Netty组件 EventLoop 事件循环对象 EventLoop本质是一个单线程执行器(同时维护了一个Selector,里面有run方法处理Channel上源源不断的io事件 它的继承关系比较复杂 一条线是继承自 j.u.c.ScheduledExecutorService 因此包含了线程池中所有的方法另一条线是继承…

R 语言基础

R 语言基础 一门新的语言学习一般是从输出 “Hello, World!” 程序开始&#xff0c;R 语言的 “Hello, World!” 程序代码如下&#xff1a; ## 实例&#xff08;helloworld.R&#xff09;myString <- "Hello, World!"print ( myString )以上实例将字符串 “Hell…

SQL注入进阶练习(二)常见绕过手段、防御的解决方案

常见绕过手段、防御的解决方案1.常用SQL注入绕过手段1.1 注释符绕过1.2 大小写绕过1.3 内联注释绕过1.4 双写关键字绕过1.5 特殊编码绕过1.6 空格过滤绕过1.7 过滤 or and xor (异或) not 绕过1.8 过滤等号绕过1.9 过滤大小于号绕过1.10 过滤引号绕过1.11 过滤逗号绕过1.12 过滤…

★LDO相关

1.型号 TPS79501 TPS79301 2.PSRR值&#xff0c;频率 TPS795_50dB&#xff0c;10kHz TPS793_70dB&#xff0c;10kHz 电源抑制比&#xff1a;供电电压纹波对输出电压影响&#xff0c;值越高越好&#xff08;某个频段的AC从输入到输出的衰减程度&#xff0c;衰减越高&#x…

提升集群吞吐量与稳定性的秘诀: Dubbo 自适应负载均衡与限流策略实现解析

作者&#xff1a;刘泉禄 整体介绍 本文所说的“柔性服务”主要是指 consumer 端的负载均衡和 provider 端的限流两个功能。在之前的 Dubbo 版本中&#xff0c;负载均衡部分更多的考虑的是公平性原则&#xff0c;即 consumer 端尽可能平等的从 provider 中作出选择&#xff0c;…

笔记本电脑自带录屏在哪?一步教您找到

案例&#xff1a;怎么找到笔记本电脑上的自带录屏功能&#xff1f; “从网上了解到笔记本电脑有自带的录屏功能&#xff0c;但我不知道笔记本自带的录屏叫什么名字&#xff0c;也不知道笔记本自带录屏在哪。有没有小伙伴知道&#xff1f;” 随着科技的不断进步&#xff0c;越…

【面试题】简单的说说对原型链的了解

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 前言 作为Javascript的基础之一&#xff0c;原型一直贯穿我们的JS代码并且成为面试的常考…

基于Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的应用

植被是陆地生态系统中最重要的组分之一&#xff0c;也是对气候变化最敏感的组分&#xff0c;其在全球变化过程中起着重要作用&#xff0c;能够指示自然环境中的大气、水、土壤等成分的变化&#xff0c;其年际和季节性变化可以作为地球气候变化的重要指标。此外&#xff0c;由于…

eclipse上的Java静态分析工具

相比动态测试而言。静态分析效率高&#xff0c;成本较低&#xff0c;对于提高产品质量非常重要。 下面介绍几个elcipse上的静态分析插件 1. findugs a) 安装findbugs插件 1&#xff09;点击菜单 Help ->Eclipse Marketplace 在弹出窗口中的搜索条件中输入 ”findbugs“后…

[素数筛][容斥原理]:埃拉托斯特尼筛法

求解问题&#xff1a;不超过一个给定正整数N的素数的个数 方法介绍&#xff1a; 根据合数的性质&#xff1a;一个合数可以被一个不超过它的平方根的素数整除 这里举例N100&#xff1a; 介绍&#xff1a;为了找出不超过100的素数个数&#xff0c;首先根据合数的性质可以知道…

Docker详解,windows上安装与使用

Hi I’m Shendi Docker详解&#xff0c;windows上安装与使用 Docker详解 Docker 容器是一个开源的应用容器引擎&#xff0c;让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何安装了docker引擎的服务器上&#xff08;包括流行的…

面试时被问:为什么裁员只裁你,不裁别人,该怎么回答?

面试官总有各种奇奇怪怪的问题&#xff0c;比如这个&#xff1a;为什么裁员裁了你&#xff0c;而不是裁别人&#xff1f;这个充满恶意的问题该怎么回答&#xff1f;网友给出了各种各样的答案&#xff0c;有人说&#xff0c;就说行业动荡&#xff0c;不稳定。有人说&#xff0c;…

Golang每日一练(leetDay0023)

目录 67. 二进制求和 Add Binary &#x1f31f; 68. 文本左右对齐 Text Justification &#x1f31f;&#x1f31f;&#x1f31f; 69. x 的平方根 Sqrt x &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C…

vscode软件设置头文件路径的方法

一. 设置头文件路径原因 在使用 vscode 软件进行 C 开发过程中&#xff0c;有些 .c 文件引用的头文件&#xff0c;提示会找不到头文件路径。因此&#xff0c;vscode 软件需要设置头文件路径。 二. vscode设置头文件路径 在 vscode 软件打开的情况下&#xff0c;默认打开一…

UNIX环境高级编程——UNIX基础知识

1.1 引言 所有操作系统都为它们所运行的程序提供服务&#xff0c;典型的服务包括&#xff1a; 执行新程序打开文件读文件分配存储区获得当前时间… 1.2 UNIX体系结构 可将操作系统定义为一种软件&#xff0c;它控制计算机硬件资源&#xff0c;提供程序运行环境&#xff0c;…

JAVA打飞机游戏的设计与实现

手机软件现状 在信息社会中&#xff0c;手机及其他无线设备越来越多的走进普通百姓的工作和生活&#xff0c;随着信息网络化的不断进展&#xff0c;手机及其他无线设备上网络势在必行。但是传统手机存在以下弊端&#xff1a; 1. 传统手机出厂时均由硬件厂商固化程序&#xf…