AV1 Bitstream Decoding Process Specification--[4]:语法结构

news2024/11/18 11:17:44
  • 原文地址:https://aomediacodec.github.io/av1-spec/av1-spec.pdf
  • 没有梯子的下载地址:AV1 Bitstream & Decoding Process Specification
  • 摘要:这份文档定义了开放媒体联盟(Alliance for Open Media)AV1视频编解码器的比特流格式和解码过程。
  • 规范:此文档规定了开放媒体联盟(Alliance for Open Media)AV1比特流格式和解码过程。

语法结构

通用(General)

  • 这一节以表格形式展示了语法结构。每个语法元素的含义在第6节中介绍。

低开销比特流格式(Low overhead bitstream format)

  • 本规范定义了一种低开销比特流格式,它是由本节中定义的OBU(Object Based Unit)语法元素序列构成的。使用此格式时,obu_has_size_field必须等于1。对于需要更容易跳过帧或时间单元的格式的应用,附件B中定义了一种长度限定的比特流格式。
  • 派生规范,例如使能存储AV1视频与音频或字幕一起的容器格式,应指明它们依赖于这些格式中的哪一种。也允许其他将OBUs打包成比特流格式的方法。

OBU语法(OBU syntax)

  1. 通用 OBU 语法( General OBU syntax)
    在这里插入图片描述
    在这里插入图片描述
  2. OBU 头部语法(OBU header syntax)
    在这里插入图片描述
  3. OBU 扩展头部语法(OBU extension header syntax)
    在这里插入图片描述
  4. 拖尾比特语法(Trailing bits syntax)
    在这里插入图片描述
  5. 字节对齐语法(Byte alignment syntax)
    在这里插入图片描述

保留 OBU 语法(Reserved OBU syntax)

在这里插入图片描述

  • 注意:保留的OBUs没有定义的语法。obu_type的保留值是为将来使用而保留的。如果解码器不理解obu_type,应该忽略整个OBU。可以根据obu_size来忽略OBU。对于这种OBU类型的有效负载数据的有效内容的最后一字节被认为是不等于零的最后一字节。这个规则是为了防止系统将尾随的零字节解释为OBU中尾随位的延续而丢弃有效的字节。这意味着,当这种OBU类型有任何有效负载数据时,至少有一个字节的有效负载数据(包括尾随位)不应等于0。

序列头部 OBU 语法(Sequence header OBU syntax)

  1. 通用序列头部 OBU 语法(General sequence header OBU syntax)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 颜色配置语法(Color config syntax)
    在这里插入图片描述
    在这里插入图片描述
  3. 时间信息语法(Timing info syntax)
    在这里插入图片描述
  4. 解码器模式信息语法(Decoder model info syntax)
    在这里插入图片描述
  5. 操作参数信息语法(Operating parameters info syntax)
    在这里插入图片描述

时间分隔符 obu 语法(Temporal delimiter obu syntax)

  • 注意:时间分隔符有一个空的有效载荷。
    在这里插入图片描述

填充 OBU 语法(Padding OBU syntax)

  • 注意:obu_padding_length(OBU填充长度)没有在比特流中编码,但可以根据obu_size(OBU大小)减去尾部字节的数量来计算。实际上,由于这是为了被跳过而添加的填充数据,解码器不需要确定该长度或尾部字节的数量。它们可以忽略整个OBU。可以根据obu_size忽略整个OBU。对于这种OBU类型的有效载荷数据,其有效内容的最后一个字节被认为是最后一个不为零的字节。这个规则是为了防止那些将尾部零字节解释为OBU中尾部位延续的系统错误地丢弃有效字节。这意味着,当这种OBU类型有任何有效载荷数据时,至少有一个字节的有效载荷数据(包括尾部位)不应等于0。
    在这里插入图片描述

元数据OBU语法(Metadata OBU syntax)

  1. 通用元数据 OBU 语法(General metadata OBU syntax)
    • 注意:当metadata_type(元数据类型)等于为将来使用或用户私有值保留的值时,此规范中并未定义metadata_obu(元数据OBU)的确切语法。如果解码器不理解metadata_type,应该忽略整个OBU。有效数据内容的最后一个字节被认为是最后一个不为零的字节。这个规则是为了防止那些将尾部零字节解释为OBU中尾部位延续的系统错误地丢弃有效字节。这意味着,当这种OBU类型有任何有效载荷数据时,至少有一个字节的有效载荷数据(包括尾部位)不应等于0。
      在这里插入图片描述
  2. 元数据 ITUT T35 语法(Metadata ITUT T35 syntax)
    • 注意:itu_t_t35_payload_bytes 的确切语法在本规范中未定义。外部规范可以定义语法。如果解码器不理解它,应该忽略整个OBU。有效数据内容的最后一个字节被认为是最后一个不为零的字节。这个规则是为了防止那些将尾部零字节解释为OBU中尾部位延续的系统错误地丢弃有效字节。这意味着,当这种OBU类型有任何有效载荷数据时,至少有一个字节的有效载荷数据(包括尾部位)不应等于0。
      在这里插入图片描述
  3. 元数据高动态范围HDR内容光照水平语法(Metadata high dynamic range content light level syntax)
    在这里插入图片描述
  4. 元数据高动态范围HDR主控显示色域体积语法(Metadata high dynamic range mastering display color volume syntax)
    在这里插入图片描述
  5. 元数据可分层语法(Metadata scalability syntax)
    在这里插入图片描述
  6. 可分层结构语法(Scalability structure syntax)
    在这里插入图片描述
  7. 元数据时间码语法(Metadata timecode syntax)
    在这里插入图片描述

帧头部 OBU 语法(Frame header OBU syntax)

  1. 通用帧头部 OBU 语法(General frame header OBU syntax)
    在这里插入图片描述
  2. 未压缩头部语法(Uncompressed header syntax)
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
  3. 获取相对距离函数(Get relative distance function)
    • 这个函数通过将两个顺序提示值相减的结果进行符号扩展,来计算它们之间的距离。

在这里插入图片描述

  1. 参考帧标记函数(Reference frame marking function)
    在这里插入图片描述

  2. 帧大小语法( Frame size syntax)
    在这里插入图片描述

  3. 渲染大小语法(Render size syntax)
    在这里插入图片描述

  4. 有参考性的帧大小语法(Frame size with refs syntax)
    在这里插入图片描述

  5. 超分辨率参数语法(Superres params syntax)
    在这里插入图片描述

  6. 计算图像大小函数(Compute image size function)
    在这里插入图片描述

  7. 插值滤波语法(Interpolation filter syntax)
    在这里插入图片描述

  8. 环路滤波参数语法(Loop filter params syntax)
    在这里插入图片描述在这里插入图片描述

  9. 量化参数语法(Quantization params syntax)
    在这里插入图片描述在这里插入图片描述

  10. 量化增量语法(Delta quantizer syntax)
    在这里插入图片描述

  11. 段参数语法(Segmentation params syntax)
    在这里插入图片描述在这里插入图片描述

    • 在这种语法中使用的常量查找表被定义为:
      在这里插入图片描述
  12. 瓦片 Tile 信息语法(Tile info syntax)
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

  13. 瓦片 Tile 大小计算函数(Tile size calculation function)

    • tile_log2 返回最小的值 k,使得 blkSize << k 大于或等于目标值。
      在这里插入图片描述
  14. 量化器索引增量参数语法(Quantizer index delta parameters syntax)
    在这里插入图片描述

  15. 环路滤波增量参数语法(Loop filter delta parameters syntax)
    在这里插入图片描述

  16. CDEF 参数语法(CDEF params syntax)
    - (Constrained Directional Enhancement Filter, 限制性方向增强滤波器)
    在这里插入图片描述
    在这里插入图片描述

  17. 环路恢复参数语法(Loop restoration params syntax)
    在这里插入图片描述

  • 其中 Remap_Lr_Type 是一个常量查找表,规定如下:
    在这里插入图片描述
  1. 变换模式语法(TX mode syntax)
    在这里插入图片描述

  2. 跳过模式参数语法(Skip mode params syntax)
    在这里插入图片描述
    在这里插入图片描述

  3. 帧参考模式语法(Frame reference mode syntax)
    在这里插入图片描述

  4. 全局运动参数语法(Global motion params syntax)
    在这里插入图片描述
    在这里插入图片描述

  5. 全局参数语法(Global param syntax)
    - 注意:当 force_integer_mv 等于 1 时,仍然会读取一些用于平移分量的小数位。然而,在设置全局运动矢量(Setup Global MV)的过程中,这些小数位将被丢弃。
    在这里插入图片描述

  6. 解码带有引用的带符号下标指数语法(Decode signed subexp with ref syntax)

    • 注意:decode_signed_subexp_with_ref 将返回一个在 low 到 high - 1(含)范围内的值。
      在这里插入图片描述
  7. 解码带有引用的无符号下标指数语法(Decode unsigned subexp with ref syntax)

    • 注意:decode_unsigned_subex_with_ref 将返回一个在 0 到 mx - 1(含)范围内的值。
      在这里插入图片描述
  8. 解码下标语法(Decode subexp syntax)
    在这里插入图片描述

  9. 逆中心化函数(Inverse recenter function)
    在这里插入图片描述

  10. 电影颗粒参数语法(Film grain params syntax)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  11. 时间点信息语法(Temporal point info syntax)
    在这里插入图片描述

帧 OBU 语法(Frame OBU syntax)

在这里插入图片描述

瓦片组 OBU 语法(Tile group OBU syntax)

  1. 通用瓦片组 OBU 语法( General tile group OBU syntax)
    在这里插入图片描述
    在这里插入图片描述

  2. 解码瓦片语法(Decode tile syntax)
    在这里插入图片描述
    其中 Sgrproj_Xqd_Mid 和 Wiener_Taps_Mid 是被规定为如下的常量查找表:
    在这里插入图片描述

  3. 清除块解码标志函数(Clear block decoded flags function)
    在这里插入图片描述

  4. 解码分区语法(Decode partition syntax)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  5. 解码块语法(Decode block syntax)
    在这里插入图片描述
    在这里插入图片描述
    其中 reset_block_context() 被指定为:
    在这里插入图片描述

  6. 模式信息语法(Mode info syntax)
    在这里插入图片描述

  7. 帧内模式信息语法(Intra frame mode info syntax)
    在这里插入图片描述
    在这里插入图片描述

  8. 帧内段ID语法(Intra segment ID syntax)
    在这里插入图片描述

  9. 读取段 ID 语法(Read segment ID syntax)
    在这里插入图片描述
    其中neg_deinterleave是一个函数,定义如下:
    在这里插入图片描述

  10. skip模式语法(Skip mode syntax)
    在这里插入图片描述

  11. skip语法(Skip syntax)
    在这里插入图片描述

  12. 量化器索引增量语法(Quantizer index delta syntax)
    在这里插入图片描述

  13. 环路滤波增量语法(Loop filter delta syntax)
    在这里插入图片描述

  14. 段特征激活函数(Segmentation feature active function)
    在这里插入图片描述

  15. 变换大小语法(TX size syntax)
    在这里插入图片描述
    Max_Tx_Depth 表指定了每个块大小的最大变换深度:
    在这里插入图片描述
    注意:Max_Tx_Depth 包含了变换必须分割的次数,以达到 4x4 变换大小。这个数字可以大于 MAX_TX_DEPTH。然而,不可能编码一个大于 MAX_TX_DEPTH 的变换深度,因为 tx_depth 只能编码范围在 0 到 2 之间的值。

  16. 块变换大小语法(Block TX size syntax)
    在这里插入图片描述

  17. 可变变换大小语法(Var TX size syntax)
    read_var_tx_size 用于读取变换大小树。
    在这里插入图片描述

  18. 帧间模式信息语法(Inter frame mode info syntax)
    在这里插入图片描述

  19. 帧间段ID语法(Inter segment ID syntax)
    这在跳过语法元素被读取之前(preSkip 等于 1)和之后(preSkip 等于 0)被调用。
    在这里插入图片描述
    在这里插入图片描述

  20. 是帧间语法(Is inter syntax)
    在这里插入图片描述

  21. 获取段ID函数(Get segment ID function)
    预测的段ID是当前块覆盖的分割图中屏幕上的区域中找到的最小值。
    在这里插入图片描述

  22. 帧内块模式信息语法(Intra block mode info syntax)
    在这里插入图片描述

  23. 帧间模式信息语法(Inter block mode info syntax)
    在这里插入图片描述
    在这里插入图片描述
    函数 has_nearmv 被定义为:
    在这里插入图片描述
    函数needs_interp_filter被定义为:
    在这里插入图片描述

  24. 过滤帧内模式信息语法(Filter intra mode info syntax)
    在这里插入图片描述

  25. 参考帧语法(Ref frames syntax)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  26. 分配运动矢量语法(Assign MV syntax)
    在这里插入图片描述
    在这里插入图片描述

  27. 读取运动模式语法(Read motion mode syntax)
    在这里插入图片描述
    其中 is_scaled 是一个函数,用于确定参考帧是否使用了缩放,并且被指定为:
    在这里插入图片描述

  28. 读取帧间帧内语法(Read inter intra syntax)
    在这里插入图片描述

  29. 读取复合类型语法(Read compound type syntax)
    在这里插入图片描述
    在这里插入图片描述

  30. 获取模式函数(Get mode function)
    在这里插入图片描述

  31. 运动矢量语法(MV syntax)
    在这里插入图片描述

  32. 运动矢量分量语法(MV component syntax)
    在这里插入图片描述

  33. 计算预测语法(Compute prediction syntax)
    在这里插入图片描述
    在这里插入图片描述

  34. 残差语法(Residual syntax)
    在这里插入图片描述
    在这里插入图片描述

  35. 变换块语法(Transform block syntax)
    在这里插入图片描述
    在这里插入图片描述

  36. 变换树语法(Transform tree syntax)
    transform_tree 用于读取以变换树形式排列的多个变换块。
    在这里插入图片描述
    其中 find_tx_size 用于找到与给定尺寸匹配的变换大小,其定义如下:
    在这里插入图片描述

  37. 获取变换大小函数(Get TX size function)
    在这里插入图片描述

  38. 获取平面残差尺寸函数(Get plane residual size function)
    get_plane_residual_size 函数返回指定平面的残差块的大小。(残差块的宽度和高度至少都将等于4。)
    在这里插入图片描述
    Subsampled_Size 表被定义为:
    在这里插入图片描述

  39. 系数语法(Coefficients syntax)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  40. 计算变换类型函数(Compute transform type function)
    在这里插入图片描述
    在这里插入图片描述
    其中 Tx_Type_In_Set_Inter 和 Tx_Type_In_Set_Intra 两个表被如下指定:
    在这里插入图片描述

  41. 获取扫描函数(Get scan function)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  42. 帧内角度信息亮度分量语法(Intra angle info luma syntax)
    在这里插入图片描述

  43. 帧内角度信息色度分量语法(Intra angle info chroma syntax)
    在这里插入图片描述

  44. 是否为方向模式函数(Is directional mode function)
    在这里插入图片描述

  45. 读取 CFL alphas 语法(Read CFL alphas syntax)
    在这里插入图片描述

  46. 调色板模式信息语法(Palette mode info syntax)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    • 函数 sort(arr, i1, i2)会将数组 arr 中的子数组就地按升序排序。需要排序的子数组包含索引 i1 和 i2 之间的元素(包括索引 i1 和 i2)。
    • 注意:调色板颜色是按升序生成的。调色板缓存也是按升序排列的。这意味着在实现中,排序函数可以通过合并两个已排序的列表来替代。
    • 其中,函数 get_palette_cache,用于将上方和左侧的调色板合并形成一个缓存,其规定如下:

在这里插入图片描述
在这里插入图片描述
注意:get_palette_cache 函数的作用相当于将上方和左侧可用的调色板颜色一起排序,并去除任何重复项。

  1. 变换类型语法(Transform type syntax)
    在这里插入图片描述
    在这里插入图片描述
    其中函数中使用的反转表被如下指定:
    在这里插入图片描述

  2. 获取变换设置函数(Get transform set function)
    在这里插入图片描述

  3. 调色板标记语法(Palette tokens syntax)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  4. 调色板颜色上下文函数(Palette color context function)
    在这里插入图片描述
    在这里插入图片描述

  5. 是否在内部函数(Is inside function)
    is_inside 函数用于确定候选位置是否在当前瓦片内部。
    在这里插入图片描述

  6. 是否在内部滤波器区域函数(Is inside filter region function)
    is_inside_filter_region 函数用于确定候选位置是否在用于CDEF滤波的区域内。
    在这里插入图片描述

  7. 限制运动矢量行函数(Clamp MV row function)
    在这里插入图片描述

  8. 限制运动矢量列函数(Clamp MV col function)
    在这里插入图片描述

  9. 清除 CDEF 函数(Clear CDEF function)
    在这里插入图片描述

  10. 读取CDEF语法(Read CDEF syntax)
    在这里插入图片描述

  11. 读取循环恢复语法(Read loop restoration syntax)
    在这里插入图片描述
    在这里插入图片描述
    其中 count_units_in_frame 是一个被指定为的函数:
    在这里插入图片描述

  12. 读取循环恢复单元语法(Read loop restoration unit syntax)
    在这里插入图片描述
    在这里插入图片描述
    其中,Wiener_Taps_Min、Wiener_Taps_Max、Wiener_Taps_K、Sgrproj_Xqd_Min 和 Sgrproj_Xqd_Max 是固定的查找表:
    在这里插入图片描述
    Sgr_Params 是在第 7.17.3 节定义的固定查找表,而 decode_signed_subexp_with_ref_bool 是一个函数,其规定如下:
    在这里插入图片描述
    注意:decode_signed_subexp_with_ref_bool 函数与 decode_signed_subexp_with_ref 函数相似,不同之处在于用于表示符号的比特是使用算术编码而不是直接从比特流中读取。

瓦片列表 OBU 语法(Tile list OBU syntax)

  1. 通用瓦片列表 OBU 语法(General tile list OBU syntax)
    在这里插入图片描述

  2. 瓦片列表头目语法(Tile list entry syntax)
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动态规划:汉诺塔问题|循环汉诺塔

目录 1. 汉诺塔游戏简介 2.算法原理 3.循环汉诺塔 1. 汉诺塔游戏简介 汉诺塔游戏是一个经典的数学智力游戏&#xff0c;其目标是将塔上不同大小的圆盘全部移动到另一个塔上&#xff0c;且在移动过程中必须遵守以下规则&#xff1a; 每次只能移动一个圆盘较大的圆盘不能放在…

linux cmake版本升级教程(Centos7)

有时候,当前系统的cmake版本,并一定能满足编译要求,所以需要进行升级到高于某个版本才能正常编译。本章教程,主要在centos7上进行升级cmake版本。 一、查看当前的cmake版本 cmake --version二、下载指定版本的cmake wget https://github.com/Kitware/CMake/releases/down…

2.2 vc-align源码分析 -- ant-design-vue系列

vc-align源码分析 源码地址&#xff1a;https://github.com/vueComponent/ant-design-vue/tree/main/components/vc-align 1 基础代码 1.1 名词约定 需要对齐的节点叫source&#xff0c;对齐的目标叫target。 1.2 props 提供了两个参数&#xff1a; align&#xff1a;对…

华为ensp中vlan与静态路由技术的实现

vlan 同一网段的设备&#xff0c;可以互通&#xff1b; 虚拟局域网&#xff1a;将局域网从逻辑上划分为多个局域网&#xff0c;不同通过vlan编号区分&#xff1b; 实现网络隔离。提高了网络安全性&#xff1b; vlan编号为12位&#xff1b; 范围1-4094可以用来配置 默认处于…

3.2 Upload源码分析 -- ant-design-vue系列

Upload源码分析 – ant-design-vue系列 源码地址&#xff1a;https://github.com/vueComponent/ant-design-vue/blob/main/components/upload/Upload.tsx 1 概述 本篇是对Upload组件的分析&#xff0c;这个组件调用了vc-upload&#xff0c;是对vc-upload的封装。 作用包括&…

【【通信协议之ICMP协议】】

【【通信协议之ICMP协议】】 下面先展示出ICMP协议的数据格式 用户数据打包在 ICMP 协议中&#xff0c;ICMP 协议又是基于 IP 协议之上的&#xff0c;IP 协议又是走 MAC 层发送的&#xff0c;即从包含关系来说&#xff1a;MAC 帧中的数据段为 IP 数据报&#xff0c;IP 报文中…

LCSS—最长回文子序列

思路分析 关于”回文串“的问题&#xff0c;是面试中常见的&#xff0c;本文提升难度&#xff0c;讲一讲”最长回文子序列“问题&#xff0c;题目很好理解&#xff1a; 输入一个字符串 s&#xff0c;请找出 s 中的最长回文子序列长度。 比如输入 s"aecda"&#xff0c…

【数据结构】字符串与JSON字符串、JSON字符串及相应数据结构(如对象与数组)之间的相互转换

前言&#xff1a; 下面打印日志用的是FastJSON依赖库中的 Log4j2。依赖&#xff1a; <!-- Alibaba Fastjson --> <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.80</version> …

prometheus 集成 grafana 保姆级别安装部署

前言 本文 grafana 展示效果只需要 prometheus node_exporter grafana 其他的选择安装 环境和版本号 系统: CentOS 7.9 prometheus: 2.54.1 pushgateway: 1.9.0 node_exporter: 1.8.2 alertmanager: 0.27.0 grafana:11.2.0 官网:https://prometheus.io/ 下载地址:h…

算法基础-二分查找

左闭右闭 [ left&#xff0c;right ] [1,1]可以 while( left < right ) if( a[mid] > target ) right mid - 1 else if( a[mid] < target ) left mid 1 左闭右开 [ left&#xff0c;right ) …

工业平板电脑轻薄与耐用并存

在现代工业环境中&#xff0c;工业平板电脑的应用越来越广泛。它们不仅需要具备轻薄的设计以便于携带和操作&#xff0c;还必须具备耐用性以应对恶劣的工作条件。 一、工业平板电脑的定义与特点 工业平板电脑是一种专为工业环境设计的计算设备&#xff0c;通常具备防尘、防水、…

MySQL分页查询(DQL)

因DataGrip我的激活到期&#xff0c;也没太多精力去破解&#xff0c;最后换了Navicat&#xff0c;实际上操作是一样的&#xff0c;不变。 先看我的表数据&#xff0c;以我的数据作为例子 基本语法 select 字段列表 from 表名 起始索引&#xff0c;查询记录数。 1.查询第1页员…

[数据集][目标检测]车油口挡板开关闭合检测数据集VOC+YOLO格式138张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;138 标注数量(xml文件个数)&#xff1a;138 标注数量(txt文件个数)&#xff1a;138 标注类别…

期权组合策略有什么风险?期权组合策略是什么?

今天期权懂带你了解期权组合策略有什么风险&#xff1f;期权组合策略是什么&#xff1f;期权组合策略是通过结合不同期权合约&#xff08;如看涨期权和看跌期权&#xff09;&#xff0c;以及标的资产&#xff08;如股票&#xff09;来实现特定投资目标的策略。 期权组合策略市…

2024.9.13 重拾数据库,不用就忘T-T

在之前学习Web的时候&#xff0c;电脑安装过mysql和navicate&#xff0c;所以安装步骤跳过 直接使用navicate创建一个新的连接&#xff0c;然后在这个连接里面新建数据库 新建数据库弹出要求如下图 一般的数据库学习教程都是字符集选择utf-8&#xff08;有中文&#xff09;&a…

PyTorch安装指南:轻松上手深度学习框架(CUDA)

PyTorch 是一个非常流行的开源深度学习框架&#xff0c;它支持动态图&#xff0c;这使得开发者能够更容易地构建和调试复杂的模型。PyTorch 可以运行在 CPU 上&#xff0c;也可以利用 NVIDIA 的 CUDA 平台加速计算&#xff0c;从而在 GPU 上执行。下面是如何在你的系统上安装 P…

JS面试真题 part5

JS面试真题 part5 21、说说对事件循环的理解22、JavaScript本地存储方式有哪些&#xff1f;区别及应用场景&#xff1f;23、大文件上传如何断点续传&#xff1f;24、ajax原理是什么&#xff1f;如何实现&#xff1f;25、什么是防抖和节流&#xff1f;有什么区别&#xff1f;如何…

如何在Windows10系统安装docker?

1.wsl安装 Windows Subsystem for Linux(简称WSL)是一个在Windows 10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。 通过适用于 Linux 的 Window…

UE5 阴影通道

Shadow Pass Switch节点中 Default代表模型遮罩的效果 Shadow代表阴影的生成遮罩效果

Web开发:使用C#创建、安装、调试和卸载服务

目录 一、创建服务 1.创建项目&#xff08;.NET Framework&#xff09; 2.重命名 3.编写逻辑代码 二、安装服务 1.方案一&#xff1a;利用VS2022安装文件的配置 选择添加安装程序 安装文件的介绍及配置 ​编辑​ 重新编译 工具安装 2.方案二&#xff1a;编写bat脚本安…