主頁 >  其他 > QUIC在京東直播的應用與實踐

QUIC在京東直播的應用與實踐

2023-05-10 07:50:10 其他

作者:京東零售 周凱

一. 前言與背景

國內的互聯網直播技術從2005年前后興起,彼時最具代表性的直播產品是由PPLive創始人姚欣在華中科技大學就讀期間發起的校園直播專案PPLive,當時的直播技術用的還是基于windows系統自帶的mediaplayer內置的COM組件開發的播放器,采用的是RTSP協議,受當時的互聯網傳輸帶寬及成本限制,PPLive并沒有采用現在比較流行的單播技術,而是采用P2P技術分發直播流,國內的直播技術也進入了一段以P2P技術為主的時期,其中比較有代表性的就是PPLive和PPStream,用P2P技術分發直播流,具有運營成本低的明顯優勢,每一個參與播放的終端都是一個潛在的資料熱點,網路質量隨著觀看直播流的客戶端的增加而增加,但P2P技術也有自身的不足,缺乏觀眾的冷門資源因參與資料共享的客戶端稀少而難以保證播放質量,另外P2P難以保證UDP打洞穿透率、需要下載專用的播放器等都是限制用戶數量增長的因素,

P2P直播分發技術注定是一個過渡性的技術,2005年以后,由于早期的HTML標準尚不完善,各大瀏覽器存在實作上的差異,被寄予厚望的HTML5規范也還尚未定稿,基于HTML的視頻播放技術也不成熟,彼時,Adobe公司從Macromedia公司收購的網頁多媒體插件flashplayer在這種情況下脫穎而出,在開發層面,flashplayer因其優異的多媒體表現力以及完善的開發語言和除錯工具,降低了網頁播放器的開發門檻,在音視頻質量方面,Flashplayer內置的On2公司的VP6視頻編解碼器無論是在編碼質量還是在解碼效率上在當時都非常優秀,隨著2003年才定稿的H.264/AVC視頻編解碼器及更高質量的AAC音頻解碼器也很快被內置到flashplayer內核,進一步提高了flashplayer的音視頻能力,在播放器推廣層面,基于flashplayer開發的播放器檔案,能像分發網頁一樣通過網站服務器下發和更新,這極大地降低了視頻網站的推廣難度,上述原因,促使flashplayer成為當時最好的網頁視頻播放器內核,在flashplayer的技術加持下,視頻點播網站如雨后春筍般涌現,尤其在2006年google收購youtube后,網頁視頻點播網站迎來了爆發,六間房、優酷、土豆等視頻網站先后融入巨資,從眾多點播網站中脫穎而出,彼時,flashplayer作為絕大部分視頻點播網站統一使用的網頁播放器,裝機率快速提高,逐步成為事實上的網頁多媒體播放器標準,2009年,隨著Adobe將flashplayer內置的革命性的流媒體傳輸協議RTMP(Real-Time Messaging Protocol)規范開放,本就已經方興未艾的RTMP直播技術,進入了發展的快車道,各種基于RTMP協議的開源實作陸續出現,涵蓋服務器和播放器,由此,互聯網直播進入了由flashplayer和RTMP協議主導的時代,

RTMP是flashplayer原生支持的流媒體傳輸協議,支持點播和直播模式,經過十多年的大規模應用,已經成為當前國內應用最為廣泛的直播協議,各大CDN廠商都已經支持,國內技術圈還發展出了HTTP-FLV協議,即將RTMP中的直播音視頻流封裝成FLV檔案流,通過HTTP協議傳輸,這進一步降低了直播技術的接入成本和實作難度,

RTMP和HTTP-FLV都是基于TCP的直播協議,TCP固有的基于擁塞控制的傳輸策略在需要穩定、大量傳輸資料的直播場景下顯得過于保守,偶發的丟包或網路抖動都會造成資料收發速率的急劇下降,從而造成畫面及聲音的卡頓,影響直播的質量及體驗,而基于帶寬和延時預測的QUIC傳輸協議的出現,為直播行業提供了一個提升直播質量和用戶體驗的新的選項,

二. QUIC介紹

QUIC(讀作“quick”)是一個通用的傳輸層網路協議,最初由Google的Jim Roskind設計,該協議于2012年實作并部署,2013年隨著實驗范圍的擴大而公開發布,并向IETF描述,雖然長期處于互聯網草案(英語:Internet Draft)階段,但從Chrome瀏覽器至Google服務器的連接中超過一半的連接都使用了QUIC,Microsoft Edge、Firefox都已支持此協議;Safari實作了QUIC,但默認情況下沒有啟用,QUIC于RFC9000中被正式標準化,

雖然QUIC的名稱最初是“快速UDP互聯網連接”(Quick UDP Internet Connection)的首字母縮寫,但IETF指定的標準中QUIC并不是任何內容的縮寫,QUIC提高了目前使用TCP的面向連接的網路應用的性能,它通過使用用戶資料報協議(UDP)在兩個端點之間建立若干個多路連接來實作這一目標,其目的是為了在網路層淘汰TCP,以滿足許多應用的需求,因此該協議偶爾也會獲得 “TCP/2”的昵稱,

QUIC與HTTP/2的多路復用連接協同作業,允許多個資料流獨立到達所有端點,因此不受涉及其他資料流的丟包影響,相反,HTTP/2建立在傳輸控制協議(TCP)上,如果任何一個TCP資料包延遲或丟失,所有多路資料流都會遭受隊頭阻塞延遲,

QUIC的次要目標包括降低連接和傳輸時延,以及每個方向的帶寬估計以避免擁塞,它還將擁塞控制演算法移到了兩個端點的使用者空間,而不是內核空間,據稱這將使這些演算法得到更快的改進,此外,該協議還可以擴展前向糾錯(FEC),以進一步提高預期錯誤時的性能,這被視為協議演進的下一步,

三. 京東直播技術簡介

京東直播體系從零開始構建,如下圖所示,涵蓋四大業務模塊:推流端、中臺源站、直播云CDN及播放端,

圖1.京東直播產品體系

從上圖可以看出,直播流的端到端傳輸,中間要經過多個鏈路,直播資料因資料量大、占用帶寬高、傳輸距離長而符合典型的Long-Fat(長肥)網路定義,在應用QUIC技術之前,京東的直播產品都是使用基于TCP的協議(RTMP/HTTP-FLV/HLS等)進行直播流資料傳輸,TCP因其保守的擁堵控制策略,在應對Long-Fat網路應用場景時差強人意,QUIC技術的出現,為優化直播傳輸質量提供了新的選擇,

京東從2021年上半年開始研究QUIC,基于QUIC ietf v1版本開發了自研的QUIC實作QUIC-Pro,并最先在京東的直播場景落地,QUIC在京東直播技術體系的落地程序并非一蹴而就,而是循序漸進的,考慮到直播資料流從CDN邊緣服務器分發到用戶端是最復雜的“最后一公里”問題,因此,我們選擇QUIC最初的落地場景是直播的分發和播放,

QUIC落地之前,為了量化直播質量,方便對比優化收益,我們制定了統一的全鏈路質量監控及資料上報標準,收集推流端、直播源站、直播云CDN及播放端等所有環節的跟傳輸、播放相關的監控資料,并統一上報到資料收集平臺進行聚合、分類及統計,在眾多質量指標中,選定畫面首開時長、卡頓率及播放失敗率作為播放質量的重要量化參考指標,

本文將分別從推流端、中臺源站、直播云CDN及播放端四個部分串燒式地介紹與直播相關的一些技術實踐,并重點介紹QUIC技術的應用情況及收益,

四. 推流端技術

京東直播支持的推流端包括京東視頻APP,PC桌面端推流工具以及web網頁端企業直播工具,京東視頻APP及PC桌面端推流工具除支持真人直播及美顏功能外,還支持數字人直播,數字人直播資料流程如下圖所示,

圖2.京東數字人直播SDK架構

上圖中,VideoSource和AudioRecord分別控制影像和聲音資料的輸出,當真人直播時,VideoSource打開CameraCapturer,采集攝像頭影像資料,并送到Filter濾鏡鏈條進行美顏等操作,然后進行視頻編碼并打包發送,音頻則通過AudioRecord打開MicrophoneRecord,采集麥克風聲音進行錄制、編碼并打包發送,

當采用數字人直播時,流程經過圖中黃色模塊,TextureFactory模擬攝像頭運行機制,按幀率設定定期生成空白紋理,紋理經過VideoSource進入濾鏡鏈條,濾鏡鏈條中有一個3DEngineFilter濾鏡,將京東自研的數字人3D引擎生成的數字人影像渲染到紋理,然后在螢屏上展示該紋理,同時將紋理上的影像進行編碼、打包、發送,數字人的音頻,則通過AudioPlayer控制音頻播放到設備的同時,將音頻采樣資料輸出到AudioRecord,然后經過編碼、打包,并發送出去,

五. 直播源站與CDN分發網路

京東直播包括實時音視頻源站、實時轉碼、錄制、審核等業務,推流端的實時音視頻流都是先推到中臺源站,然后再經過處理通過京東直播云CDN分發到播放端,中臺源站還負責直播連麥相關業務的處理,包括混音、合屏等操作,

圖3.京東中臺直播源站低延遲直播服務架構

直播云CDN通過京東云對外提供賦能,直播云CDN承載了京東主站、京喜等含直播功能的產品的日常直播流分發服務,經過近一年的密切合作,京東直播中臺團隊和京東直播云CDN團隊已將共建的QUIC直播流分發服務全量部署到所有服務節點,直播云服務流程如下圖所示,

圖4.京東直播云CDN分發流程圖

上圖是京東直播云CDN對直播流的分發流程圖,最左側是直播源站或直播應用直推直播流到邊緣推流集群,經過錄制、轉碼截圖、中轉集群等中間模塊及服務處理,最后轉推給第三方CDN或經由邊緣播放集群分發給播放端,

六. QUIC服務端設計

當前網路上開源的服務端QUIC協議堆疊實作方案有多種,例如Chromium QUIC、Lsquic、Nginx 官方quic、cloudfare quic等,其中Chromium QUIC發展的最早,也相對最成熟,因此JDQUIC服務端依托Chromium QUIC,使用了其QUIC協議堆疊相關原始碼,服務器框架及其他所有代碼則為自研,

6.1.JDQUIC服務器模式

為盡量減少對現有直播CDN分發體系的改造,并保持QUIC的可擴展性及高效迭代更新,JDQUIC服務器采用反向代理模式進行QUIC直播流的請求、轉換與分發,

圖5.JDQuicServer作業流程

如上圖顯示,手機端播放器發送QUIC直播流拉流請求到JDQuic-Server服務器,JDQuic-Server服務器將請求格式轉換為普通的http或tcp資料,發送給后端Web或者TCP服務器,然后接收后端HTTP-FLV服務器回傳的直播流資料并通過HTTP/QUIC協議下發給播放器,整個服務程序無需對后端服務體系作任何修改,

由于JDQUIC服務器一般和后端服務器部署在同一機房、甚至同一機器上,兩者之間的資料傳輸延遲基本可以忽略不計,

6.2. JDQUIC服務端架構

JDQUIC服務端采用多行程單執行緒架構,訊息驅動采用了Libevent epoll模式,QUIC協議堆疊則使用了Chromium QUIC協議堆疊相關代碼,如下所示:

圖6.JDQuic-Servrer內部架構

JDQUIC 服務端采用單執行緒多行程架構,單機多行程采用內核ebpf進行負載均衡,

單執行緒內部采用Libevent epoll進行訊息監聽和分發,TCP UDP Unix domain、http等多種協議依托Libevnet進行收發,同時超時和異步訊息也通過Libevent架構進行回呼,

Libevent 收上來的UDP資料包,在Chromium QUIC協議堆疊進行決議,還原出原始Http或者裸資料,這些資料經過執行緒內無鎖調度模塊,傳給后端Nghttp2或tcp udp client模塊,發送給后端服務器,

6.3. JDQUIC連接遷移

網路的切換在當今移動網路大規模普及的背景下,是經常發生的事情,考慮如下場景,當用戶正在戶外用移動4G/5G網路看著直播的程序中,走到了一個具備WIFI網路的地方,連上了可用的wifi網路,此時,網路切換便發生了,如果要保證直播連接在網路切換后仍然保持暢通,需要實作一套連接遷移機制,JDQUIC-server的實作及作業原理,如圖7所示:

圖7.JDQuic-Server連接遷移原理

【作業流程】

  1. 手機端從4G網路切到wifi網路,

  2. 手機端網路連到不同的運營商機房(從移動機房切到聯通機房),

  3. Ospf和nftable負載分配到一個機器quic server實體,

  4. Quic server 通過quic資料包中的connection id中第一個位元組,判斷資料包該發回哪個機房,

  5. Quic server 把資料包轉發給原來的機房,

  6. 原來的機房再負載到正確的quic實體,

【說明】

? Ospf負載: 三層負載均衡服務,硬體負載,效率很高,

? Nftable單機負載: 作業系統內核級別的負載服務,

? QUIC服務: quic服務器,可以將quic協議轉換為http去后端FMS/SRS拉流,

? 后端FMS/SRS:直播流媒體/CDN服務器,

? 紅色箭頭:手機端首次播放直播的拉流路線,

? 藍色箭頭:手機端網路切換WIFI后進行連接遷移的拉流路線,

6.4. JDQUIC DCID設計

連接遷移時,聯通機房的quic server想要找到回源的機器,需要從quic資料包的DestionationConntion id欄位獲取機房資訊,如下圖所示,

圖8.JDQuic-Server CID擴展設計方案

CID欄位取一個位元組來映射機房資訊,例如0x01表示長春移動,0x02表示長春聯通等,

6.5. JDQUIC ebpf設計

6.5.1. eBPF簡介

Linux 內核一直是實作監控/可觀測性、網路和安全功能的理想地方, 不過很多情況下這并非易事,因為這些作業需要修改內核原始碼或加載內核模塊, 最終實作形式是在已有的層層抽象之上疊加新的抽象, eBPF 是一項革命性技術,它能在內核中運行沙箱程式(sandbox programs), 而無需修改內核原始碼或者加載內核模塊,

將 Linux 內核變成可編程之后,就能基于現有的(而非增加新的)抽象層來打造更加智能、 功能更加豐富的基礎設施軟體,而不會增加系統的復雜度,也不會犧牲執行效率和安全性,

圖9.eBPF原理及作業流程

6.5.2. eBPF在JDQuic-Server中的應用

linux內核中,通過ebpf維護兩個映射表,并撰寫一段ebpf JIT(即時編譯)程式,客戶端QUIC資料包進來后,ebpf JIT程式根據ip埠、CID進行hash,分別訪問兩個map表,來判斷需要轉發給哪個后端QUIC實體,其中,ip和埠為UDP協議資料包的欄位,包括源IP、目的IP、源埠、目的埠(合稱四元組),如圖所示,

圖10.JDQuic-Server內部ebpf負載均衡原理

七. QUIC技術收益

QUIC協議基于帶寬瓶頸預測及環路延時預測的傳輸控制演算法,相比TCP的基于網路擁塞的控制演算法,在抗網路抖動、提高網路傳輸速率方面有顯著優勢,根據QuicPro在線上Android應用內的直播場景中的使用情況統計資料顯示,直播卡頓率較TCP由1.43%降為1.14%,降幅為20%,首開時間較TCP的949毫秒降為659毫秒,降幅為30.5%,如下圖所示:

圖11.TCP與QUIC分別在直播卡頓率及首開時間上的對比

八. 結語

京東直播經過4年多的發展,技術上無論是服務架構還是播放協議都經過了多輪迭代,截至本文成文,仍在進行迄今為止最大規模的改造升級,涉及全鏈路的協議升級與架構優化,協議上,將原有的基于TCP的信令、推流、分發、播放等環節升級為QUIC協議,在服務架構上,進行推流及媒體服務邊緣化改造,在分發上,中臺與京東云直播CDN兄弟部門共建低延遲分發網路,我們共同的目標是提升傳輸質量、降低卡頓率的同時,將直播端到端的延遲降低到2秒甚至是1秒以內,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/551999.html

標籤:其他

上一篇:【三維CAD軟體】上海道寧為您帶來國際一流的國產自主可控的三維CAD軟體——天工CAD

下一篇:返回列表

標籤雲
其他(158707) Python(38124) JavaScript(25407) Java(18024) C(15222) 區塊鏈(8262) C#(7972) AI(7469) 爪哇(7425) MySQL(7172) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5336) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4570) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2432) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1965) Web開發(1951) HtmlCss(1932) python-3.x(1918) 弹簧靴(1913) C++(1912) xml(1889) PostgreSQL(1875) .NETCore(1857) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • QUIC在京東直播的應用與實踐

    本文將分別從推流端、中臺源站、直播云CDN及播放端四個部分串燒式地介紹與直播相關的一些技術實踐,并重點介紹QUIC技術的應用情況及收益。 ......

    uj5u.com 2023-05-10 07:50:10 more
  • 【三維CAD軟體】上海道寧為您帶來國際一流的國產自主可控的三維C

    天工CAD?融合了新迪數字收購的國際一流三維CAD軟體技術和十幾年CAD軟體研發積累,是一款國產自主可控的三維CAD軟體,產品成熟度和技術能力比肩國際先進水平滿足工業企業研發設計需求 ......

    uj5u.com 2023-05-10 07:49:49 more
  • 人人實作ChatGPT自由,手把手教你零擼部署自己聊天私服

    我們知道chat gpt最近非常的火爆,朋友圈啊,短視頻到處都是chat gpt身影。 但是網上看到各種教程資源,都是不是百分一百的免費,毫無保留教給你的,要么是賣賬號 要么是割韭菜的。其實沒有什么可以學習的,使用他也很簡單,付費學習這些真不值得, 大家不要再去看網上那些其亂七八糟的了,什么使用需要 ......

    uj5u.com 2023-05-10 07:49:26 more
  • 你還在糾結怎么選IDE嗎?常用IDE工具分享

    近期有不少剛學編程的小伙伴來問我,市面上那么多IDE工具,該怎么選?今天在這里跟大家分享幾款個人比較鐘愛的IDE工具,供大家參考。 Visual Studio 優點:支持多種語言,包括C#, C++, Visual Basic等,可用于Web應用程式、桌面應用程式、移動應用程式等開發;集成了多種工具 ......

    uj5u.com 2023-05-10 07:48:10 more
  • 使用 shell 腳本自動申請進京證 (六環外) —— debug 程序

    寫好的自動辦理六環外進京證腳本跑不通,總是回傳辦理業務人數較多 (500) 錯誤,Charles / VNET 抓包、android 交叉編譯 jq、升級 curl…都不起作用,最侄訓是神奇的 adb shell 幫了大忙,最后定位到根因,居然是用 shell 字串長度作為資料長度導致的,這錯誤犯... ......

    uj5u.com 2023-05-10 07:47:50 more
  • 1000個已成功入職的軟體測驗工程師簡歷經驗總結:軟體測驗工程師簡

    軟體測驗面試常見問題通常分為兩大類,一類是考察你的專業技能,另一類是考察你的穩定性、努力程度、情商等因素。并且所有初級測驗工程師的面試題中我發現超過90%都是基礎性的面試題,2020年只要掌握功能測驗和介面測驗,然后有一定的自動化基礎,再加上面試的時候態度ok(不卑不亢即可), 基本上在一線找一份薪... ......

    uj5u.com 2023-05-10 07:47:18 more
  • 精準測驗之程序與實踐

    精準測驗的核心組件包含的軟體測驗示波器、用例和代碼的雙向追溯、智能回歸測驗用例選取、覆寫率分析、缺陷定位、測驗用例聚類分析、測驗用例自動生成系統,這些功能完整的構成了精準測驗技術體系。 ......

    uj5u.com 2023-05-10 07:39:49 more
  • 網路基礎 登錄對接CAS-跨域導致的一個意想不到的Bug

    登錄對接CAS-跨域導致的一個意想不到的Bug 背景描述 業務需求是平臺登錄,接入Cas驗證 問題描述 平臺登錄頁,點擊登錄方式,跳轉Cas登錄頁,提交登錄請求,結果發現,又回傳平臺登錄頁; 再次點擊登錄方式,登錄成功,跳轉到目標頁面。 問題排查 排查方向-瀏覽器兼容性問題 這個問題,開發人員在其本 ......

    uj5u.com 2023-05-09 08:14:20 more
  • 太卷了!4年測驗在崗,薪資卻被剛剛招來的年輕人超過了...

    在目前公司已經作業4年了,在崗聽他說是兢兢業業,很少請假,甚至遲到生病都很少,任務也基本都完成,但是薪資漲的比較慢,他也沒什么抱怨,畢竟沒什么對比,他也樂在其中,直到最近,公司一個作業差不多半年的小伙子,薪資直線飆升,半年時間漲了4次工資,這次漲完,工資都已經比他高了,他真的感覺自己受委屈了,覺得公... ......

    uj5u.com 2023-05-09 08:13:54 more
  • 對比編程語言的四種錯誤處理方法,哪種才是最優方案?

    作者:Andrea Bergia 譯者:豌豆花下貓@Python貓 英文:Error handling patterns 轉載請保留作者及譯者資訊! 錯誤處理是編程的一個基本要素。除非你寫的是“hello world”,否則就必須處理代碼中的錯誤。在本文中,我將討論各種編程語言在處理錯誤時使用的最常 ......

    uj5u.com 2023-05-09 08:13:40 more