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

音视频相关的一些基本概念

音视频相关的一些基本概念

文章目录

    • 音视频相关的一些基本概念
      • RTT
      • H264
      • profile & level
      • I帧 vs IDR
      • MP4 封装格式
      • AAC封装格式
      • TS封装格式
      • Reference

RTT

TCP中的RTT指的是“往返时延”(Round-Trip Time),即从发送方发送数据开始,到发送方接收到来自接收方的确认消息所经过的时间。
RTT时延通常由三部分决定:链路的传播时间、末端系统的处理时间、路由器等网络中间节点的缓存和排队时间。
正常情况下报文的传输时间和在应用处理时间相对固定,在网络拥堵情况下会出现RTT时延的波动。

RTT是衡量网络传输性能的重要指标之一,能够反映出数据在网络中传输的速度和稳定性。
通常情况下,RTT越短,网络传输的速度就越快,反之则越慢。
因此,通过监测TCP中的RTT时延,可以初步判断网络的性能如何。
但需要注意的是,RTT时延只是一个指标,要全面评估网络性能还需要结合其他指标进行综合分析。

H264

从功能角度分为两层: 视频编码层(VCL)和网络提取层(NAL)
从码流解析的角度: H264 码流实际可以理解为由一个一个的 NALU 单元组成。

视频编码层(VCL)

VCL: 进行视频编解码,包括预测(帧内预测和帧间预测),DCT 变化和量化,熵编码和切分数据等功能,是为了实现更高的视频压缩比。
NAL: 负责以网络所要求的恰当的方式对 VCL 数据进行打包和传送.
VCL工作过程:

  1. 压缩:预测(帧内预测和帧间预测)-> DCT 变化和量化 -> 比特流编码;
  2. 切分数据,主要为了第三步。这里一点,网上看到的“切片(slice)”、“宏块(macroblock)”是在VCL 中的概念,一方面提高编码效率和降低误码率、另一方面提高网络传输的灵活性。
  3. 压缩切分后的 VCL 数据会包装成为 NAL 中的一部分

NAL单元-NALU

NALU分为NAL unit header 和 NAL unit payoad

  • NALU header结构
    forbidden_zero_bit 在网络传输中发生错误时,会被置为 1,告诉接收方丢掉该单元;否则为 0。
    nal_ref_idc 用于表示当前NALU的重要性,值越大,越重要。解码器在解码处理不过来的时候,可以丢掉重要性为 0 的 NALU。NALU类型说明
  • NALU类型说明
    在这里插入图片描述
  • NALU header 解析举例

00 00 00 01 06: SEI
00 00 00 01 67: 0x67&0x1f = 0x07: SPS
00 00 00 01 65: 0x65&0x1f = 0x05: IDR

  • H264分层结构
    在这里插入图片描述

profile & level

Profile和Level是H.264中一个非常重要的概念,Profile用于确定视频编码过程中帧间压缩使用的算法(例如是否包含B帧、CABAC支持、颜色空间支持等),Profile越高,就说明采用了越高级的压缩特性,对应的对编解码硬件的要求也越高;
Level是对视频本身特性的一些描述(码率,分辨率,fps等),Level越高,视频的码率、分辨率、fps越高。

对于H.264的Profile和Level比较专业化的描述是:Profile@Level,例如Main@4.2,Baseline@3.1,High@5.0。

I帧 vs IDR

举个例子,在一段视频中,
存在以下帧:I P B P B P B B P1 I P2 B…
如果这段视频应用了多重参照帧,那么P2 帧在参照他前面的I 帧的同时,还可能会参照I 帧之前的P1 帧,由于I 帧前后的场景可能会有很大的反差甚至根本不同,所以此时P 帧参考I帧之前的帧不但会没有意义,反而会造成很多问题。
所以一种新型的帧被引入,那就是IDR 帧。如果这段视频应用了多重参考帧的同时采用了IDR 帧,那么帧的顺序就会变成这样:I P B P B P B B P1 IDR P2 B…由于IDR 帧禁止后面的帧向自己前面的帧参照,所以这回P2 帧就不会参照P1 帧了。

MP4 封装格式

Bento4-SDK-1-6-0-639.x86_64-microsoft-win32\bin\mp4dump.exe --verbosity 0 D:\test.mp4 >D:\test.txt

[ftyp] size=8+24major_brand = mp42minor_version = 1compatible_brand = mp42compatible_brand = mp41compatible_brand = isomcompatible_brand = avc1
[free] size=8+0
[mdat] size=8+11329609
[moov] size=8+157226[mvhd] size=12+96timescale = 1000duration = 300011duration(ms) = 300011[trak] size=8+96887[tkhd] size=12+80, flags=1enabled = 1id = 1duration = 300000width = 240.000000height = 136.000000[mdia] size=8+96787[mdhd] size=12+20timescale = 30000duration = 8999991duration(ms) = 299999language = und[hdlr] size=12+44handler_type = videhandler_name = Test MP4 - Video AVC[minf] size=8+96691[vmhd] size=12+8, flags=1graphics_mode = 0op_color = 0000,0000,0000[dinf] size=8+28[dref] size=12+16, flags=acf9fd[url ] size=12+0, flags=1location = [local to file][stbl] size=8+96627[stsd] size=12+135, flags=11e840entry_count = 1[avc1] size=8+123data_reference_index = 1width = 240height = 136compressor = [avcC] size=8+37Configuration Version = 1Profile = MainProfile Compatibility = 40Level = 13NALU Length Size = 4Sequence Parameter = [67 4d 40 0d 96 62 07 89 fc b0 80 00 00 32 00 00 0b b5 47 8a 14 89]Picture Parameter = [68 ee 3c 80][stts] size=12+12entry_count = 1[ctts] size=12+57276entry_count = 7159[stss] size=12+868entry_count = 216[stsc] size=12+28entry_count = 2[stsz] size=12+35972sample_size = 0sample_count = 8991[stco] size=12+2252entry_count = 562[trak] size=8+60215[tkhd] size=12+80, flags=1enabled = 1id = 2duration = 300011width = 0.000000height = 0.000000[mdia] size=8+60115[mdhd] size=12+20timescale = 48000duration = 14400512duration(ms) = 300010language = und[hdlr] size=12+44handler_type = sounhandler_name = Test MP4 - Audio AAC[minf] size=8+60019[smhd] size=12+4balance = 0[dinf] size=8+28[dref] size=12+16, flags=73b98f[url ] size=12+0, flags=1location = [local to file][stbl] size=8+59959[stsd] size=12+79, flags=a29ce1entry_count = 1[mp4a] size=8+67data_reference_index = 1channel_count = 2sample_size = 16sample_rate = 48000[esds] size=12+27[ESDescriptor] size=2+25es_id = 0stream_priority = 0[DecoderConfig] size=2+17stream_type = 5object_type = 64up_stream = 0buffer_size = 0max_bitrate = 0avg_bitrate = 0DecoderSpecificInfo = 11 90 [Descriptor:06] size=2+1[stts] size=12+12entry_count = 1[stsc] size=12+28entry_count = 2[stsz] size=12+56260sample_size = 0sample_count = 14063[stco] size=12+3520entry_count = 879

AAC封装格式

AAC(Advance Audio Coding):
即高级音频编码,出现在1997年,基于MPEG-2的音频编码技术,当时被称为MPEG-2 AAC,因此把其作为MPEG-2(MP2)标准的延伸。是由Fraunhofer IIS、杜比实验室、AT&T、Sony等公司共同开发,目的是取代MP3格式,随着MPEG-4(MP4)标准在2000年的成型,则为AAC也叫M4A。

AAC格式包括ADIF,ADTS和LATM. 需要说明的是ADIF,ADTS和LATM只是AAC的三种封装方式,只是封装方式不同,编码数据都是一致的。

1:ADIF:只有一个头,其余后面都跟着raw data,文件存储体积小,只能从开始处一帧一帧解码,无法跳播,无法从中间位置解码。

Audio Data Interchange Format 音频数据交换格式,该格式一般应用在将音频通过写文件方式存储在磁盘里的场景,不能进行随机访问,不允许在文件中间开始进行解码;只能从文件头开始解码,无法跳播。

2:ADTS:每帧都有7个字节的头,方便跳播,从任何位置都可以直接进行解码。

ADTS:Audio Data Transport Stream 音频数据传输流。这种格式的特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始。它的特征类似于mp3数据流格式。这种格式可以用于广播电视。
ADIF只有一个文件头,ADTS每个包前面有一个文件头。
在这里插入图片描述

3:LATM:LATM格式具有很大的灵活性,每帧的音频配置单元既可以带内传输,又可以带外传输。正因为如此,LATM不仅适用于流传输还可以用于RTP传输,特别时CMMB广播默认码流格式为LATM。

LATM 的全称为“Low-overhead MPEG-4 Audio TransportMultiplex”(低开销音频传输复用),是MPEG-4 AAC制定的一种高效率的码流传输方式,MPEG-2 TS 流也采用LATM作为AAC 音频码流的封装格式之一。

TS封装格式

TS 全称是 MPEG2-TS,MPEG2-TS 是一种标准容器格式,传输与存储音视频、节目与系统信息协议数据,广泛应用于数字广播系统,我们日常数字机顶盒接收到的就是 TS(Transport Stream,传输流)流。

+-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
|  TS   |  =  |  Packet 1 |  Packet 2 |  Packet 3 | ... | Packet n-1|  Packet n |
+-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

TS 传输流中几个基本概念:

  • ES (Elementary Stream):基本流,直接从编码器出来的数据流,可以是编码过的音频、视频或其他连续码流;
  • PES (Packetized Elementary Streams):PES流是ES流经过打包处理后形成的数据流,在这个过程中完成了将ES流分组、加入包头信息(PTS、DTS 等)操作。PES流的基本单位是PES包,PES包由包头和payload组成;
  • PS 流 (Program Stream):节目流,PS 流由 PS 包组成,而一个 PS 包又由若干个 PES 包组成。一个 PS 包由具有同一时间基准的一个或多个 PES 包复合合成;
  • TS 流 (Transport Stream):传输流,TS 流由固定长度(188 字节)的 TS 包组成,TS 包是对 PES 包的另一种封装方式,同样由具有同一时间基准的一个或多个 PES 包复合合成。PS 包是不固定长度,而 TS 包为固定长度;

TS 文件分为三层:TS 层、PES 层、ES 层。ES 层就是音视频数据,PES 层是在音视频数据上加了时间戳等数据帧的说明信息,TS层是在PES层上加入了数据流识别和传输的必要信息。

TS 包大小固定为 188 字节,TS 层分为三个部分:TS header、adaptation field、payload;
TS header 固定 4 个字节(0x47开头作为同步字节);
adaptation field 可能存在也可能不存在,主要作用是给不足 188 字节的数据做填充;
payload 是 PES 数据;

One TS Packet:4bytes          xbytes          (184-x)bytes
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| TS header | adaptation field | payload(PES) | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
One payload(PES):+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| PES header | optional PES header | payload(ES) | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
One payload(ES NALU)Video:3 or 4 bytes    1byte       xbytes
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| StartCode  | NAL header | H264 data | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Audio:7bytes        xbytes
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| ADTS header | AAC data | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Reference

TCP中RTT时延的理解

H264码流结构详解
H.264中的Profile和Level
I帧、P帧和B帧的特点及IDR

AAC_ADTS_1
AAC_ADTS_2

音视频封装 - TS 封装格式
TS文件格式详解及解封装过程

相关文章:

音视频相关的一些基本概念

音视频相关的一些基本概念 文章目录 音视频相关的一些基本概念RTTH264profile & levelI帧 vs IDRMP4 封装格式AAC封装格式TS封装格式Reference RTT TCP中的RTT指的是“往返时延”(Round-Trip Time),即从发送方发送数据开始,到…...

pikachu文件上传漏洞通关详解

声明:文章只是起演示作用,所有涉及的网站和内容,仅供大家学习交流,如有任何违法行为,均和本人无关,切勿触碰法律底线 目录 概念:什么是文件上传漏洞一、客户端check二、MIME type三、getimagesi…...

【拥抱AI】向量数据库有哪些常见的检索算法?

在信息检索领域,有许多常见的算法用于帮助用户从大量数据中找到相关的信息。以下是一些常见的检索算法: 布尔模型示例(文本操作) 在文本操作中,布尔模型可以通过编写一个简单的脚本来实现。例如,你可以创…...

Webpack前端工程化进阶系列(二) —— HMR热模块更新(图文+代码)

前言 之前更新过一篇Webpack文章:Webpack入门只看这一篇就够了(图文代码),没想到颇受好评,很快就阅读量就破万了hhh,应读者私信的要求,决定继续更新Webpack进阶系列的文章! 进入今天的主题 —— HMR 热模块替换(HotM…...

【RAG 项目实战 07】替换 ConversationalRetrievalChain(单轮问答)

【RAG 项目实战 07】替换 ConversationalRetrievalChain(单轮问答) NLP Github 项目: NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用,分享大…...

godot游戏引擎_瓦片集和瓦片地图介绍

在 Godot 中,TileSet 和 TileMap 是用于处理瓦片地图的两个关键概念,它们的作用和用途有明显的区别。以下是两者的详细对比: 1. TileSet(瓦片集) TileSet 是资源,定义瓦片的内容和属性。 特点&#xff1a…...

7、深入剖析PyTorch nn.Module源码

文章目录 1. 重要类2. add_modules3. Apply(fn)4. register_buffer5. nn.Parametersister_parameters6. 后续测试 1. 重要类 nn.module --> 所有神经网络的父类,自定义神经网络需要继承此类,并且自定义__init__,forward函数即可: #!/usr…...

如何提升编程能力第二篇

如何提升编程能力2 1. 引言2. 掌握理论基础2.1 理解编程语言的核心2.2 数据结构与算法2.3 计算机基础与系统设计3.1 多写代码3.2 参与开源项目3.3 开发自己的项目 4. 提高代码质量4.1 代码风格与可读性4.2 测试驱动开发 1. 引言 编程是推动现代科技发展的核心技能,…...

问:SpringBoot核心配置文件都有啥,怎么配?

在SpringBoot的开发过程中,核心配置文件扮演着至关重要的角色。这些文件用于配置应用程序的各种属性和环境设置,使得开发者能够灵活地定制和管理应用程序的行为。本文将探讨SpringBoot的核心配置文件,包括它们的作用、区别,并通过…...

RHCSA作业

课后练习 将整个 /etc 目录下的文件全部打包并用 gzip 压缩成/back/etcback.tar.gz [rootlocalhost ~]# tar -czvf /back/etcback.tar.gz -C / etc 使当前用户永久生效的命令别名:写一个命令命为hello,实现的功能为每输入一次hello命令,就有hello&#…...

ESP32学习笔记_FreeRTOS(3)——SoftwareTimer

摘要(From AI): 这篇笔记全面介绍了 FreeRTOS 软件定时器的核心概念和使用方法,包括定时器的创建、管理、常用 API 和辅助函数,并通过示例代码演示了如何启动、重置和更改定时器的周期。它强调了软件定时器的灵活性、平台无关性以及与硬件定时器的对比 …...

文心一言与千帆大模型平台的区别:探索百度AI生态的双子星

随着人工智能技术的迅猛发展,越来越多的公司开始投入资源开发自己的AI解决方案。在中国,百度作为互联网巨头之一,不仅在搜索引擎领域占据重要位置,还在AI领域取得了显著成就。其中,“文心一言”和“千帆大模型平台”便…...

【c语言】文件操作详解 - 从打开到关闭

文章目录 1. 为什么使用文件?2. 什么是文件?3. 如何标识文件?4. 二进制文件和文本文件?5. 文件的打开和关闭5.1 流和标准流5.1.1 流5.1.2 标准流 5.2 文件指针5.3 文件的打开和关闭 6. 文件的读写顺序6.1 顺序读写函数6.2 对比一组…...

Flink Sink的使用

经过一系列Transformation转换操作后,最后一定要调用Sink操作,才会形成一个完整的DataFlow拓扑。只有调用了Sink操作,才会产生最终的计算结果,这些数据可以写入到的文件、输出到指定的网络端口、消息中间件、外部的文件系统或者是…...

pcl::PointCloud<PointType>::Ptr extractedCloud; 尖括号里的值表示什么含义?

在C中&#xff0c;pcl::PointCloud<PointType>::Ptr是一种智能指针&#xff0c;它是Point Cloud Library (PCL)中用于管理pcl::PointCloud对象的智能指针类型。这里的<pcl::PointCloud<PointType>::Ptr>尖括号里的值表示智能指针所指向的对象类型。 让我们分…...

《基于FPGA的便携式PWM方波信号发生器》论文分析(三)——数码管稳定显示与系统调试

一、论文概述 基于FPGA的便携式PWM方波信号发生器是一篇由任青颖、庹忠曜、黄洵桢、李智禺和张贤宇 等人发表的一篇期刊论文。该论文主要研究了一种新型的信号发生器&#xff0c;旨在解决传统PWM信号发生器在移动设备信号调控中存在的精准度低和便携性差的问题 。其基于现场可编…...

VsCode 插件推荐(个人常用)

VsCode 插件推荐&#xff08;个人常用&#xff09;...

路由策略与路由控制实验

AR1、AR2、AR3在互联接口、Loopback0接口上激活OSPF。AR3、AR4属于IS-IS Area 49.0001&#xff0c;这两者都是Level-1路由器&#xff0c;AR3、AR4的系统ID采用0000.0000.000x格式&#xff0c;其中x为设备编号 AR1上存在三个业务网段A、B、C&#xff08;分别用Loopback1、2、3接…...

训练的decoder模型文本长度不一致,一般设置为多大合适,需要覆盖最长的文本长度么

在训练解码器模型时,文本长度不一致是常见的情况,需要根据任务的特性和数据集的长度分布来设置合理的最大长度 (max_length)。以下是一些指导原则,帮助你设置合适的最大长度: 1. 是否需要覆盖最长文本长度 覆盖最长文本长度: 如果任务对完整性要求很高(例如生成数学公式、…...

过滤条件包含 OR 谓词,如何进行查询优化——OceanBase SQL 优化实践

这篇博客涉及两个点&#xff0c;一个是 “OR Expansion 改写”&#xff0c;另一个是 “基于代价的改写”。 背景 在写SQL查询时&#xff0c;难以避免在过滤条件中使用 OR 谓词&#xff0c;但其往往会导致索引利用效率下降的问题 。本文将分享如何通过查询改写的2种方式进行优化…...

通过异步使用消息队列优化秒杀

通过异步使用消息队列优化秒杀 同步秒杀流程异步优化秒杀异步秒杀流程基于lua脚本保证Redis操作原子性代码实现阻塞队列的缺点 同步秒杀流程 public Result seckillVoucher(Long voucherId) throws InterruptedException {SeckillVoucher seckillVoucher iSeckillVoucherServi…...

AI产业告别“独奏”时代,“天翼云息壤杯”高校AI大赛奏响产学研“交响乐”

文 | 智能相对论 作者 | 陈泊丞 人工智能产业正在从“独奏”时代进入“大合奏”时代。 在早期的AI发展阶段&#xff0c;AI应用主要集中在少数几个领域&#xff0c;如语音识别、图像处理等。这些领域的研究和开发工作往往由少数几家公司或研究机构即可独立完成&#xff0c;犹…...

Hot100 - 字母异位词分组

Hot100 - 字母异位词分组 最佳思路&#xff1a;排序 时间复杂度&#xff1a; O(nmlogm)&#xff0c;其中 n 为 strs 数组的长度&#xff0c;m 为每个字符串的长度。 代码&#xff1a; class Solution {public List<List<String>> groupAnagrams(String[] strs) …...

力扣hot100-->排序

排序 1. 56. 合并区间 中等 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&#xff1a; 输…...

【VRChat 全身动捕】VIVE 手柄改 tracker 定位器教程,低成本光学动捕解决方案(持续更新中2024.11.26)

更新 0.0.1&#xff08;2024/11/26&#xff09;&#xff1a; 1.解决了内建蓝牙无法识别、“steamVR 蓝牙不可用” 的解决方案 2.解决了 tracker 虽然建立了连接但是在 steamVR 界面上看不到的问题 3.解决了 VIVE 基站1.0 无法被蓝牙识别 && 无法被 steamVR 搜索到 &…...

【Nginx】核心概念与安装配置解释

文章目录 1. 概述2. 核心概念2.1.Http服务器2.2.反向代理2.3. 负载均衡 3. 安装与配置3.1.安装3.2.配置文件解释3.2.1.全局配置块3.2.2.HTTP 配置块3.2.3.Server 块3.2.4.Location 块3.2.5.upstream3.2.6. mine.type文件 3.3.多虚拟主机配置 4. 总结 1. 概述 Nginx是我们常用的…...

Qt界面篇:QMessageBox高级用法

1、演示效果 2、用法注意 2.1 设置图标 用于显示实际图标的pixmap取决于当前的GUI样式。也可以通过设置icon pixmap属性为图标设置自定义pixmap。 QMessageBox::Icon icon(...

【二叉树】【2.1遍历二叉树】【刷题笔记】【灵神题单】

关注二叉树的三个问题&#xff1a; 什么情况适合自顶向下&#xff1f;什么时候适合用自底向上&#xff1f;一般来说&#xff0c;DFS的递归边界是空节点&#xff0c;什么情况下要额外把叶子节点作为递归边界&#xff1f;在什么情况下&#xff0c;DFS需要有返回值&#xff1f;什…...

Mongo数据库 --- Mongo Pipeline

Mongo数据库 --- Mongo Pipeline 什么是Mongo PipelineMongo Pipeline常用的几个StageExplanation with example:MongoDB $matchMongoDB $projectMongoDB $groupMongoDB $unwindMongoDB $countMongoDB $addFields Some Query Examples在C#中使用Aggreagtion Pipeline**方法一: …...

Adobe Illustrator 2024 安装教程与下载分享

介绍一下 下载直接看文章末尾 Adobe Illustrator 是一款由Adobe Systems开发的矢量图形编辑软件。它广泛应用于创建和编辑矢量图形、插图、徽标、图标、排版和广告等领域。以下是Adobe Illustrator的一些主要特点和功能&#xff1a; 矢量绘图&#xff1a;Illustrator使用矢量…...

网站建设案例分析/做网站推广的公司

相关需求是: 1.从FTP上下载文件(此FTP不知因为什么原因.下载东东时二次连接才会连上一次.FTP软件是,在.NET程序下一样如此). 2.下载文件时先要看这个文件的控制文件在不在,在才下载,不在不下载. 3.解析文件每行数据.客户会给出这个字段在这行数据中的位置.如Name(0,8),Status(8…...

江苏省建设工程管理局网站/百度竞价推广费用

理论上这个安装应该没什么问题。。 我看到网上攻略都是说全局安装express&#xff0c;然后因为4.0版本将命令行工具分离出来了。 所以需要安装npm install express-generator -g 但是我的node.js有点特殊&#xff0c;我之前安装一个什么东西将npm版本降低了。。然后前几天又安…...

网站建设中图片/网络营销专家

Alpha版本测试报告 1.测试找出的BUG 1.1 修复的bug * 注册接口后台没完善数据校验&#xff0c;导致会上传一些不合法的数据 * 用户保持登陆态的session内含字段出现错误 * 新增商品时没有对商品图片进行类型限制 * 买下的闲置物品依旧会出现在全部商品的界面 * 显示闲置物品时&…...

赣州建设信息网/购买seo关键词排名优化官网

Objects类是一个提供对象基础操作的工具类&#xff0c;其提供的方法包括null-safe或tolerant-safe的对象hashcode计算&#xff0c;toString和比较等。所在路径&#xff1a;javautilObjects.javaObjects类方法列表一、构造器Objects类被final修饰&#xff0c;不能被继承。其构造…...

廊坊网站建设技术外包/百度推广登录平台官网

目录 一、安装mongoDB安装包 二、配置 三、启动服务端 四、启动客户端 五、关闭服务端 六、关闭客户端 一、安装mongoDB安装包 1. cd /usr/local 2. mkdir mongodb 3. cd mongodb 4. wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.7.tgz 5. tar…...

中山网站建设gdyouzi/网站seo应用

数据库使用锁是为了支持更好的并发&#xff0c;提供数据的完整性和一致性。InnoDB是一个支持行锁的存储引擎&#xff0c;锁的类型有&#xff1a;共享锁&#xff08;S&#xff09;、排他锁&#xff08;X&#xff09;、意向共享&#xff08;IS&#xff09;、意向排他&#xff08;…...