FPGA高端项目:SDI 视频+音频编解码,提供工程源码和技术支持

目录

  • 1、前言
    • 免责声明
  • 2、相关方案推荐
    • 我这里已有的 GT 高速接口解决方案
    • 我目前已有的SDI编解码方案
  • 3、设计思路和框架
    • 设计框图
    • GV8601A均衡EQ
    • GTX 时钟要求
    • GTX 调用与控制
    • SMPTE SD/HD/3G-SDI
      • SMPTE SD/HD/3G-SDI 接收
      • SMPTE SD/HD/3G-SDI 发送
    • SDI 视频接收数据处理
    • SDI 音频接收--UHD-SDI Audio解码
    • SDI 音频接收--i2s输出播放
    • 发送数据彩条
    • GV8500增强驱动
    • SDI 视频发送输出
  • 4、vivado工程详解
  • 5、工程移植说明
    • vivado版本不一致处理
    • FPGA型号不一致处理
    • 其他注意事项
  • 6、上板调试验证并演示
    • 准备工作
    • 输出静态演示
  • 7、福利:工程代码的获取

FPGA高端项目:SDI 视频+音频编解码,提供工程源码和技术支持

1、前言

Xilinx系列FPGA实现SDI视频编解码目前有两种方案:
一是使用专用编解码芯片,比如典型的接收器GS2971,发送器GS2972,优点是简单,比如GS2971接收器直接将SDI解码为并行的YCRCB,GS2972发送器直接将并行的YCRCB编码为SDI视频,缺点是成本较高,可以百度一下GS2971和GS2972的价格;另一种方案是使用FPGA实现编解码,利用FPGA的GTP/GTX/GTH/UltraScale GTH等资源实现解串,优点是合理利用了FPGA资源,缺点是操作难度大一些,对FPGA水平要求较高;UltraScale GTH 适用于Xilinx UltraScale系列的FPGA上,包括Virtex UltraScale、Kintex UltraScale、Zynq® UltraScale等器件,在UltraScale系列之下只有GTH,而UltraScale GTH相比于GTH,线速率更高,支持协议类型更多,功耗更低,带宽更高;同样的,Xilinx也提供了SDI视频编解码的专用IP,比如SMPTE UHD-SDI,该IP支持3G-SDI、6G-SDI、12G-SDI等视频编解码;目前市面上的SDI编解码方案一般都是视频的,而SDI音频的编解码方案却很少,要知道,SDI数据流中是可以包含音频的,而本设计就是解决这个问题,从输入的SDI数据流中分理处视频和音频;

本文使用Xilinx的7系列Kintex7–xc7k325tffg676-2型号的FPGA实现3G-SDI 视频+音频编解码;本设计分为3G-SDI 视频编码、3G-SDI 音频解码和3G-SDI 视频解码两部分,即3G-SDI 视频发送和视频+音频接收,三个部分功能做在一个工程里;3G-SDI 视频接收过程为:输入摄像头为标准的3G-SDI摄像头,开发板板载GV8601A芯片,SDI视频经过GV8601A起到均衡EQ的作用,也可以理解为单端转差分;然后调用Xilinx官方GTX的GTXE2_CHANNEL原语和GTXE2_COMMON原语进行SDI视频解串,将高速串行的SDI视频解为并行数据,GTX选择QPLL时钟;然后调用Xilinx官方的SMPTE SD/HD/3G-SDI IP核实现SDI视频解码,该IP在Kintex7器件上只支持SD-SDI、HD-SDI和3G-SDI视频编解码,本设计配置为3G-SDI模式;到这里,3G-SDI 视频解码工作就完成了,解码后的视频为并行的TTL电平的数据,此时的解码数据送入ILA中观察,也可以供用户做后续处理,比如缓存、颜色转换、缩放、图像识别等,本设计不做处理,只将数据留出来,给开发者更多利用空间;SDI接收到的数据流中是可以包含音频的,而本设计就是解决这个问题,从输入的SDI数据流中分理处视频和音频;调用Xilinx官方的 UHD-SDI Audio IP核解码SDI音频信号,该IP在Kintex7器件上只支持3G-SDI和6G-SDI音频编解码,本设计配置为3G-SDI模式;然后将解码后的音频送入i2s音频编码模块,输出标准的i2s音频时序;然后将音频数据送入板载的TLV320AIC3104音频编码芯片输出到外部扬声器即可播放SDI音频;3G-SDI 视频发送过程为:纯verilog实现的静态彩条作为视频源,然后调用Xilinx官方的SMPTE SD/HD/3G-SDI IP核实现SDI视频编码,该IP在Kintex7器件上只支持SD-SDI、HD-SDI和3G-SDI视频编解码,本设计配置为3G-SDI模式,这个过程是接收过程的逆过程;然后调用Xilinx官方GTX的GTXE2_CHANNEL原语进行SDI视频串化,将并行的SDI视频数据串化为高速串行数据,GTX选择CPLL时钟,这个过程是接收过程的逆过程;然后将视频信号送入板载的GV8500芯片,GV8500起到增强驱动的作用,也可以理解为差分转单端;我手里有一个SDI转HDMI的盒子,将输出的SDI视频接到盒子里,然后输出显示器即可输出显示了;本方案提供1套vivado2022.2版本的FPGA工程源码;

本博客详细描述了Xilinx的7系列Kintex7–xc7k325tffg676-2型号的FPGA实现6SDI 视频+音频编解码的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、相关方案推荐

我这里已有的 GT 高速接口解决方案

我的主页有FPGA GT 高速接口专栏,该专栏有 GTP 、 GTX 、 GTH 、 GTY 等GT 资源的视频传输例程和PCIE传输例程,其中 GTP基于A7系列FPGA开发板搭建,GTX基于K7或者ZYNQ系列FPGA开发板搭建,GTH基于KU或者V7系列FPGA开发板搭建,GTY基于KU+系列FPGA开发板搭建;以下是专栏地址:
点击直接前往

我目前已有的SDI编解码方案

我的博客主页开设有SDI视频专栏,里面全是FPGA编解码SDI的工程源码及博客介绍;既有基于GS2971/GS2972的SDI编解码,也有基于GTP/GTX资源的SDI编解码;专栏地址链接:点击直接前往

3、设计思路和框架

本文使用Xilinx的7系列Kintex7–xc7k325tffg676-2型号的FPGA实现3G-SDI 视频+音频编解码;本设计分为3G-SDI 视频编码、3G-SDI 音频解码和3G-SDI 视频解码两部分,即3G-SDI 视频发送和视频+音频接收,三个部分功能做在一个工程里;3G-SDI 视频接收过程为:输入摄像头为标准的3G-SDI摄像头,开发板板载GV8601A芯片,SDI视频经过GV8601A起到均衡EQ的作用,也可以理解为单端转差分;然后调用Xilinx官方GTX的GTXE2_CHANNEL原语和GTXE2_COMMON原语进行SDI视频解串,将高速串行的SDI视频解为并行数据,GTX选择QPLL时钟;然后调用Xilinx官方的SMPTE SD/HD/3G-SDI IP核实现SDI视频解码,该IP在Kintex7器件上只支持SD-SDI、HD-SDI和3G-SDI视频编解码,本设计配置为3G-SDI模式;到这里,3G-SDI 视频解码工作就完成了,解码后的视频为并行的TTL电平的数据,此时的解码数据送入ILA中观察,也可以供用户做后续处理,比如缓存、颜色转换、缩放、图像识别等,本设计不做处理,只将数据留出来,给开发者更多利用空间;SDI接收到的数据流中是可以包含音频的,而本设计就是解决这个问题,从输入的SDI数据流中分理处视频和音频;调用Xilinx官方的 UHD-SDI Audio IP核解码SDI音频信号,该IP在Kintex7器件上只支持3G-SDI和6G-SDI音频编解码,本设计配置为3G-SDI模式;然后将解码后的音频送入i2s音频编码模块,输出标准的i2s音频时序;然后将音频数据送入板载的TLV320AIC3104音频编码芯片输出到外部扬声器即可播放SDI音频;3G-SDI 视频发送过程为:纯verilog实现的静态彩条作为视频源,然后调用Xilinx官方的SMPTE SD/HD/3G-SDI IP核实现SDI视频编码,该IP在Kintex7器件上只支持SD-SDI、HD-SDI和3G-SDI视频编解码,本设计配置为3G-SDI模式,这个过程是接收过程的逆过程;然后调用Xilinx官方GTX的GTXE2_CHANNEL原语进行SDI视频串化,将并行的SDI视频数据串化为高速串行数据,GTX选择CPLL时钟,这个过程是接收过程的逆过程;然后将视频信号送入板载的GV8500芯片,GV8500起到增强驱动的作用,也可以理解为差分转单端;我手里有一个SDI转HDMI的盒子,将输出的SDI视频接到盒子里,然后输出显示器即可输出显示了;本方案提供1套vivado2022.2版本的FPGA工程源码;

设计框图

本设计参考了Xilinx官方设计文档,官方的参考设计框图如下:
在这里插入图片描述
具体到本工程详细设计方案框图如下:
在这里插入图片描述

GV8601A均衡EQ

3G-SDI 视频接收过程为:输入摄像头为标准的3G-SDI摄像头,开发板板载GV8601A芯片,SDI视频经过GV8601A起到均衡EQ的作用,也可以理解为单端转差分;原理图部分截图如下:
在这里插入图片描述

GTX 时钟要求

根据Xilinx推荐的硬件设计要求,GTX需要两路差分时钟,一路148.5M和一路148.351M,后者可以通过148.5M差分晶振匹配电阻得到;

GTX 调用与控制

然后调用Xilinx官方GTX的GTXE2_CHANNEL原语和GTXE2_COMMON原语进行SDI视频解串与串化,接收时为解串,发送时为串化,将高速串行的SDI视频解为并行数据,GTX选择QPLL时钟;代码位置截图如下:
在这里插入图片描述
需要注意的是,这里并没有直接例化GTX IP核,而是直接调用其GTXE2_CHANNEL和GTXE2_COMMON原语,需要开发者对GTX有着极高的熟练度,这里直接调用原语的目的是方便配置与复位,因为我们设计的GTX支持HD-SDI、3G-SDI和6G-SDI的解串与串化,每种输入的线速率不一样,所以需要控制GTX在不同输入状态下的线速率切换,线速率切换后,需要改变GTX内部状态机逻辑和复位才能使GTX在变速后工作稳定,GTX的变速和配置需严格按照官方数据手册时序进行,所以代码中有专门的GTX变速配置模块;代码中包含了GTXE2_CHANNEL和GTXE2_COMMON原语,分别对应GTX官方文档中的对应结构,GTXE2_CHANNEL负责具体的解串与串化,GTXE2_COMMON原语负责QPLL时钟配置,两者可通过GTX变速配置模块中的DRP进行动态配置;

SMPTE SD/HD/3G-SDI

然后调用Xilinx官方的SMPTE SD/HD/3G-SDI IP核实现SDI视频编解码,对于接收来说是解码,对于发送来说是编码;该IP在Kintex7器件上只支持SD-SDI、HD-SDI和3G-SDI编解码,本设计配置为3G-SDI模式;代码位置截图如下:
在这里插入图片描述
IP配置如下:
在这里插入图片描述
SMPTE SD/HD/3G-SDI 用法与SMPTE UHD-SDI IP类似,调用都很简单,但使用相对复杂,用户接口众多,详情请参考官方数据手册,接口关系请参考,这里只做简单解读,如下:
根据官方手册,参考SMPTE UHD-SDI数据收发架构如下:
在这里插入图片描述

SMPTE SD/HD/3G-SDI 接收

SMPTE SD/HD/3G-SDI 用法与SMPTE UHD-SDI IP类似,参考SMPTE UHD-SDI 接收端的框图如下:
在这里插入图片描述
来自串行收发器 RX 的数据通过 rx_data_in 端口进入 SMPTE UHD-SDI接收器,对于 SD、HD 和 3G 模式,每个时钟周期 20 位;对于 6G 和 12G 模式,每个时钟周期 40 位。在 SD 模式下,rx_data_in 上的 20 位数据转到 DRU (data recovery unit), DRU 从 11 倍过采样数据中恢复 10 位数据。数据由 SDI解扰器解扰,然后由 SDI 成帧器进行字对齐。之后就是同步位恢复功能。 此功能可还原由变送器修改的 3FF 和 000值,以减少 6G 和 12G-SDI 模式下的运行长度。这三个模块以全 rx_clk 速度运行,并根据 SDI 模式在每个时钟周期处理 40、20 或 10 位数据。 数据进入 stream demux,该 demux 确定有多少数据流交织在一起,然后在单独的数据路径上分离每个数据流,最多支持 16 个数据流。每路数据流进入一个处理单元,该单元进行 CRC 错误检查、行号捕获和 ST 352 包捕获。还可以从 stream demux 中
提取视频时序并产生 rx_eav,rx_sav 和 rx_trs 时序信号。这些时序信号由 SDI 模式检测并给传输检测模块使用。

SMPTE SD/HD/3G-SDI 发送

SMPTE SD/HD/3G-SDI 用法与SMPTE UHD-SDI IP类似,参考SMPTE UHD-SDI 发射端的框图如下:
在这里插入图片描述
SMPTE UHD-SDI最多可以支持 16 路 SDI 数据流,数据流首先通过 ST 352 插入模块,可以有选择地插入 ST 352 有效负载 ID 数据包,从 ST 352 插入模块输出的数据流称为 tx_ds1_st352_out 至tx_ds16_st352_out。输出这些流可以方便用户在 ST 352 数据包后插入辅助数据。 发送器的其余部分可以直接使用ST 352 数据包插入模块输出的流,也可以使用 16 个 tx_ds1_anc_in 到 tx_ds16_anc_in 数据流。请注意,如果使用tx_dsn_anc_in 数据流,则它们必须是完整的 SDI 数据流,而不仅仅是辅助数据。通常情况下,每个 Y/C 数据流对的 Y 数据流中只插入 ST 352 包。而在 3G-SDI level A mode-only 模式下,数据流 1 和数据流 2 都必须插入 ST 352 报文。然后每对 Y / C 数据流经过一个数据流处理模块,该模块可以进行进行行号插入和 CRC 生成及插入。在流处理之后,数据流被 MUX 交织,形成 40、20 或 10 位宽的多路复用 SDI 数据流。然后,由 SDI 加扰器对多路复用的数据流进行加扰。最后,数据在 tx_txdata 端口上输出到对应的串行收发器。

SDI 视频接收数据处理

到这里,3G-SDI 视频解码工作就完成了,解码后的视频为并行的TTL电平的数据,此时的解码数据送入ILA中观察,也可以供用户做后续处理,比如缓存、颜色转换、缩放、图像识别等,本设计不做处理,只将数据留出来,给开发者更多利用空间;开发者可以通过ILA观察SDI接收数据的正确性,在此基础上可以做后续处理;

SDI 音频接收–UHD-SDI Audio解码

SDI接收到的数据流中是可以包含音频的,而本设计就是解决这个问题,从输入的SDI数据流中分理处视频和音频;调用Xilinx官方的 UHD-SDI Audio IP核解码SDI音频信号,该IP在Kintex7器件上只支持3G-SDI和6G-SDI音频编解码,本设计配置为3G-SDI模式;UHD-SDI Audio在代码中位置和IP配置如下:
在这里插入图片描述
在这里插入图片描述

SDI 音频接收–i2s输出播放

然后将解码后的音频送入i2s音频编码模块,输出标准的i2s音频时序;然后将音频数据送入板载的TLV320AIC3104音频编码芯片输出到外部扬声器即可播放SDI音频;该部分代码位置如下:
在这里插入图片描述

发送数据彩条

发送数据彩条由纯verilog实现,为静态彩条,作为 3G-SDI视频发送的数据源,代码位置截图如下:
在这里插入图片描述

GV8500增强驱动

发送过程经过静态彩条生成、SMPTE UHD-SDI编码、GTX串化后,将视频信号送入板载的GV8500芯片,GV8500起到增强驱动的作用,也可以理解为差分转单端;原理图部分截图如下:
在这里插入图片描述

SDI 视频发送输出

3G-SDI 视频发送通路,经GV8500增强驱动后,通过板载的BNC接头连接SDI转HDMI的盒子,将输出的SDI视频接到盒子里,然后输出显示器即可输出显示了;

4、vivado工程详解

开发板FPGA型号:Xilinx的7系列Kintex7–xc7k325tffg676-2;
开发环境:Vivado2022.2;
输入:3G-SDI摄像头,解码后不做处理;
输出:静态彩条视频经3G-SDI编码后输出、输出SDI音频至扬声器;
应用:FPGA高端项目:SDI 视频+音频编解码;
工程代码架构如下:
在这里插入图片描述
资源消耗和功耗预估如下:
在这里插入图片描述

5、工程移植说明

vivado版本不一致处理

1:如果你的vivado版本与本工程vivado版本一致,则直接打开工程;
2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件–>另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;
在这里插入图片描述
3:如果你的vivado版本高于本工程vivado版本,解决如下:
在这里插入图片描述
打开工程后会发现IP都被锁住了,如下:
在这里插入图片描述
此时需要升级IP,操作如下:
在这里插入图片描述
在这里插入图片描述

FPGA型号不一致处理

如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;

其他注意事项

1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行配置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;
2:根据你自己的原理图修改引脚约束,在xdc文件中修改即可;
3:纯FPGA移植到Zynq需要在工程中添加zynq软核;

6、上板调试验证并演示

准备工作

FPGA开发板;
3G-SDI相机;
BNC转SMA同轴线;
SDI转HDMI盒子;
HDMI显示器;

输出静态演示

音频输出没法演示,请见谅。。。
发送端,3G-SDI 静态彩条视频输出如下:
在这里插入图片描述

7、福利:工程代码的获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mysql实时数据同步工具Alibaba Canal 使用

目录 Mysql实时数据同步工具Alibaba Canal 使用Canal是什么?工作原理重要版本更新说明 环境准备安装Canalwindow Java : Canal Client 集成依赖编码 工作流程其他学习canal资料 个人主页: 【⭐️个人主页】 需要您的【💖 点赞关注】支持 💯 M…

2024美赛数学建模思路A题B题C题D题E题F题思路汇总 选题分析

文章目录 1 赛题思路2 美赛比赛日期和时间3 赛题类型4 美赛常见数模问题5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 美赛比赛日期和时间 比赛开始时间:北京时间2024年2月2日(周五&#xff…

excel 函数技巧

1:模糊查询 LOOKUP(1,0/FIND(F1062,Sheet1!C$2:Sheet1!C$9135),Sheet1!B$2:Sheet1!B$9135) 函数含义:寻找F列1062行和sheet1中的C2行到C9135行进行模糊查询,返回该行对应的B2行到B9135行的结果。未查到返回结果0 函数公式: LO…

leetcode贪心算法题总结(一)

此系列分三章来记录leetcode的有关贪心算法题解,题目我都会给出具体实现代码,如果看不懂的可以后台私信我。 本章目录 1.柠檬水找零2.将数组和减半的最少操作次数3.最大数4.摆动序列5.最长递增子序列6.递增的三元子序列7.最长连续递增序列8.买卖股票的最…

设计模式-过滤器模式

设计模式专栏 模式介绍模式特点应用场景Java中的过滤器介绍代码示例Java实现过滤器模式Python实现过滤器模式 过滤器模式在spring中的应用 模式介绍 过滤器模式是一种设计模式,它允许开发人员使用不同的标准来过滤一组对象。这种模式是通过运算逻辑以解耦的方式将它…

XIAO ESP32S3之物体检测加入视频流

一、前言 由于XIAO ESP32S3开发套件没有显示屏配件,因此加入http视频流功能,可通过浏览器请求ESP32S3上的视频流。 二、思路 1、XIAO ESP32S3启动后通过wifi连接到AP; 2、启动http服务器,注册get_mjpeg处理函数; 3…

2023年中职“网络安全”——B-5:网络安全事件响应(Server2216)

B-5:网络安全事件响应 任务环境说明: 服务器场景:Server2216(开放链接) 用户名:root密码:123456 1、黑客通过网络攻入本地服务器,通过特殊手段在系统中建立了多个异常进程,找出启…

【Pytorch】学习记录分享8——PyTorch自然语言处理基础-词向量模型Word2Vec

【Pytorch】学习记录分享7——PyTorch自然语言处理基础-词向量模型Word2Vec 1. 词向量模型Word2Vec)1. 如何度量这个单词的?2.词向量是什么样子?3.词向量对应的热力图:4.词向量模型的输入与输出![在这里插入图片描述](https://img-blog.csdni…

Java面试题及答案汇总来啦!快来领取

Java面试题及答案汇总来啦!快来领取 还有不到两个月就要过年了,过完年紧接着“金三银四”招聘热季就要到了,在过年期间只想着吃吃喝喝玩玩,这习是学不了一点。那就趁着过年前这段时间开始恶补Java面试题,实现弯道超车吧…

ArkTS基本概念装饰器

目录 ArkTS基本概念 装饰器汇总 ArkTS基本概念 ArkTS是HarmonyOS的主力应用开发语言。 它在TypeScript(简称TS)的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨…

FTP简介FTP服务器的搭建【虚拟机版】以及计算机端口的介绍

目录 一. FTP简介 二. FTP服务器的搭建【虚拟机Windows2012版】 1. 启用防火墙 2. 打开服务器管理器➡工具➡计算机管理 3. 选择本地用户与组➡新建组 4. 给组命名,输入描述,点击创建 5. 新建用户,设置用户名称,添加描述&a…

立体匹配算法(Stereo correspondence)SGM

SGM(Semi-Global Matching)原理: SGM的原理在wiki百科和matlab官网上有比较详细的解释: wiki matlab 如果想完全了解原理还是建议看原论文 paper(我就不看了,懒癌犯了。) 优质论文解读和代码实现 一位大神自己用c实现…

IntelliJ IDEA [插件 MybatisX] mapper和xml间跳转

文章目录 1. 安装插件2. 如何使用3. 主要功能总结 MybatisX 是一款为 IntelliJ IDEA 提供支持的 MyBatis 开发插件 它通过提供丰富的功能集,大大简化了 MyBatis XML 文件的编写、映射关系的可视化查看以及 SQL 语句的调试等操作。本文将介绍如何安装、配置和使用 In…

redis 三主六从高可用docker(不固定ip)

redis集群(cluster)笔记 redis 三主三从高可用集群docker swarm redis 三主六从高可用docker(不固定ip) 此博客解决,redis加入集群后,是用于停掉后重启,将nodes.conf中的旧的Ip替换为新的IP,从而达到不会因为IP变化导致集群无法…

StackOverflowError的JVM处理方式

背景: 事情来源于生产的一个异常日志 Caused by: java.lang.StackOverflowError: null at java.util.stream.Collectors.lambda$groupingBy$45(Collectors.java:908) at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169) at java.util.ArrayL…

阿里云 ACK 云上大规模 Kubernetes 集群高可靠性保障实战

作者:贤维 马建波 古九 五花 刘佳旭 引言 2023 年 7 月,阿里云容器服务 ACK 成为首批通过中国信通院“云服务稳定运行能力-容器集群稳定性”评估的产品, 并荣获“先进级”认证。随着 ACK 在生产环境中的采用率越来越高,稳定性保…

【ES6】Class继承-super关键字

目录 一、前言二、ES6与ES5继承机制区别三、super作为函数1、构造函数this1)、首先要明确this指向①、普通函数②、箭头函数③、注意事项 2)、其次要明确new操作符做了哪些事情 2、super()的用法及注意点1)、用法2)、注意点 四、s…

Unity引擎有哪些优点

Unity引擎是一款跨平台的游戏引擎,拥有很多的优点,如跨平台支持、强大的工具和编辑器、灵活的脚本支持、丰富的资源库和强大的社区生态系统等,让他成为众多开发者选择的游戏开发引擎。下面我简单的介绍一下Unity引擎的优点。 跨平台支持 跨…

用Xshell连接虚拟机的Ubuntu20.04系统记录。虚拟机Ubuntu无法上网。本机能ping通虚拟机,反之不能。互ping不通

先别急着操作,看完再试。 如果是:本机能ping通虚拟机,反之不能。慢慢看到第8条。 如果是:虚拟机不能上网(互ping不通),往下一直看。 系统是刚装的,安装步骤:VMware虚拟机…

TCP 滑动窗口

滑动窗口(Sliding window)是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据&#xff0…