楊傳輝:從一體化架構,到一體化產品,為關鍵業務負載打造一體化數據庫

在剛剛結束的年度發布會上,OceanBase正式推出一體化數據庫的首個長期支持版本 4.2.1 LTS,這是面向 OLTP 核心場景的全功能里程碑版本,相比上一個 3.2.4 LTS 版本,新版本能力全面提升,適應場景更加豐富,有更全面的容災解決方案。

自發布以來,我們陸續收到很多客戶、用戶對一體化的好奇與咨詢,我們希望通過本文和大家更深入地探討 OceanBase 對一體化理念的思考和探索。

圖片

OceanBase 13 年前剛成立的時候,業界有很多非常流行的開源數據庫,比如大家都很熟悉的 MySQL,但是 MySQL 數據庫有兩個問題:只能處理簡單查詢,無法處理復雜查詢;只能處理小數據量,很難做擴展及處理大數據量。

正因此,團隊決定開始研發分布式數據庫 OceanBase,用一體化的思路解決單機與分布式的難題,不僅能處理小查詢,也能處理大查詢,從 KV 到 TP/AP一體化,從簡單查詢到復雜查詢,OceanBase 一直在通過應用場景不斷驅動自身創新,這也是 OceanBase 設計一體化思路的初心。

從 2010 年至今,OceanBase 專注 OLTP(事務處理)場景,逐步實現了多個一體化:TP/AP 一體化、云上云下一體化、單機分布式一體化。從 1.x 發展到今天的 4.x,在用戶的支持下,OceanBase 的產品能力得到了飛躍發展。作為自研數據庫的一員,聚焦到“關鍵業務負載”的核心系統訴求,我們需要在穩定性、高性能、高兼容和性價比這幾個維度上持續突破和深度打磨,這是 OceanBase 的核心競爭力,也是 OceanBase 在技術投入和產品打磨上一直以來投入的最重要的關鍵方向。

圖片

在一體化思路的指引之下,OceanBase 沒有選擇復用開源數據庫的代碼,選擇了一條應用驅動技術創新、完全自研的發展道路。在這個路線指引之下,OceanBase ?做了大量的技術創新,把分布式領域的核心技術逐步融入到關鍵數據庫領域里。

例如:通過把 Paxos 引入到關鍵數據庫,實現 RPO=0,RTO<8 秒;通過“三地五中心”實現了業內首個城市級無損容災;打榜 TPC-C,并且取得世界第一的成績;提出單機分布式一體化架構,并且把 LSM-Tree 存儲引擎引入到關鍵數據庫里面,大幅度地降低了存儲成本......

一體化的設計思路簡單來講可以分成三個層次,為了便于大家理解,我們以造房子作為舉例:

首先,需要搭地基,一體化思路的地基即2022年發布的單機分布式一體化架構,主要解決數據規模的問題,數據可大可小,有了這個架構之后,不管多大多小的數據量,都可以用一套系統全部統一地解決掉。

其次,在一體化架構基礎之上,進一步搭建一體化引擎,包括一體化的存儲引擎、一體化的事務,一體化的 SQL 引擎,以及云上云下存儲計算分離的引擎。這個層次主要解決了數據的存儲與計算問題。

第三,有一體化引擎之后,進一步搭建最終的一體化產品,即房子。這個產品解決的是如何給客戶提供數據服務的問題,包括如何支持多種工作負載、實現多種數據模型、實現多種數據接口、實現多種兼容模式等。

與傳統的關系型數據相比,JSON、XML 等半結構化數據的處理方式更加靈活,因此在處理復雜的應用中顯得尤為不可或缺。與此同時,對于處理 GIS 和 KV 等多樣數據的需求也日益凸顯。在此過程中,數據庫經歷了從事務型到分析型,再到支持 HTAP 兩種類型的發展,企業通常會根據不同問題使用不同的數據庫,這也導致了數據庫的不斷增加,數據的使用和管理變得越發復雜。而 OceanBase 今天的一體化思路核心理念是用一個數據庫解決 80% 的問題,注意這里是 80% 的問題,不是百分之百的問題。

圖片

一直以來,OceanBase 專注于 OLTP 場景,從 2010 年開始逐步打造滿足現代數據架構需求的多模態、多兼容模式、多租戶、多工作負載、多基礎設施等核心能力,推出的一體化數據庫,為用戶提供簡化復雜性的全新可能性。

  • 多租戶:統一技術棧,極大簡化數據庫基礎設施的復雜度。OceanBase 在早期 1.0 版本已經實現工程一體化,并提供多租戶以及資源隔離能力,可將更多的數據庫實例整合一個集群中。從用戶業務視角不用再關心資源隔離問題,可直接通過多租戶帶來的統一技術棧,即可極大簡化數據庫基礎設施的復雜度,并顯著提高系統利用率。

  • 多兼容模式:一個數據庫,同時兼容 MySQL 和 Oracle。OceanBase 2.0 版本開始提供多兼容模式,高度兼容 Oracle 和 MySQL,支持存儲過程、觸發器等高級特性。用戶無需關心兼容性問題,通過一體化 SQL 引擎同時兼容 MySQL 以及 Oracle 主流數據庫,同時提供自動遷移工具,支持遷移評估和反向同步以保障數據遷移安全,支撐金融、政府、運營商等關鍵業務系統升級。?

  • 多工作負載:一份數據,所有工作負載中提供出色的性能和性價比。3.0 版本加速進化多工作負載能力,用戶無需關系 ETL 復雜性,通過一個系統、一份數據就可以在高性能 OLTP 基礎上支持實時分析能力,并從根本上保持數據一致性。

  • 單機分布式一體化架構:一個數據庫,滿足用戶從小到大的業務規模化訴求:4.0 版本推出,用戶無需關心集中式或分布式技術路線選型,可以在業務量小的情況下從小規格單機部署起步使用完備功能的單機部署形態,隨著業務壓力的變化將數據庫從單機平滑擴容到多機甚至超大規模的分布式集群,同時具備多機平滑縮容到單機的能力,通過一套數據庫滿足業務從小到大的集中式和分布式架構訴求。

  • 多模型:一個數據庫,支持多種現代數據類型:4.0 版本開始提供多模型能力,通過OBKV提供融合多模數據支持,無論應用的簡單性還是復雜性,無論處理的是關系型數據、JSON、Key-Value 還是 GIS 等非結構化數據,都可以在同一個的數據庫上獲得卓越的支持,降低應用開發難度和運維復雜性。

  • 多基礎設施:從“云下”到“云上”,按需選擇基礎設施:4.0 版本開始支持本地數據中心、阿里云、AWS 等多基礎設施以及跨基礎設施部署,通過一致的架構和一致的管理顯著降低復雜性。每一個企業的基礎設施都各不相同,不論是應用還是數據庫都可以部署在專有云、公有云和混合云中,選擇權完全交給企業自己。
    ?

圖片

去年,OceanBase 發布了業內首個單機分布式一體化數據庫 4.0 (小魚),單機分布式一體化的核心是采用一套系統,實現從單機到分布式對用戶完全透明。通過單機分布式一體化架構,可以實現可大可小,既能應用到大企業,也能應用在中小企業,甚至是一些創業公司。此外,OceanBase 單機分布式一體化架構在平滑伸縮、小規格部署、RTO <30s 縮短至 RTO<8s 的故障恢復能力方面上均進行了創新。

有了單機分布式一體化架構這個底座之后,就可以進一步搭建一體化的存儲引擎、一體化的SQL 引擎,以及存儲計算分離的引擎。

(一)一體化存儲引擎

今天,業內都在談論 HTAP,眾所周知? OLTP 需要行存,OLAP 需要用列存,如何設計一套一體化的存儲引擎能夠把行存和列存完全融合到一套系統里面,有兩種比較經典的設計思路。

第一種設計思路,OceanBase 是一個 Shared-Nothing 的多副本架構,每個副本仍然采用相同的存儲格式,都采用行存或者都采用行列混合式存儲,所有的 OLAP 和 OLTP 的請求都直接由主副本提供服務,這種方式的好處很明顯,它沒有任何一致性的問題,也沒有任何數據延時的問題,但是它的問題在于因為沒有支持列存,所以 OLAP 能力相對來講差一些,比較適合 OLTP+非常輕量的 OLAP 的場景,比如跑批,或者 OLTP 場景里面的復雜查詢。

第二種設計思路,OceanBase 的多個副本可以采用不同的存儲格式,主副本支持行存支持OLTP,某一個備副本用列存來支持 OLAP。這種方式的好處在于通過引入列存大幅度提升了 OLAP 的處理能力。但是,問題在于主副本與備副本之間會額外引入毫秒級的延遲,有短暫時間的數據不一致,比較適合簡單的 OLTP 的場景加上中等的 OLAP 的場景。當然,今天講的 HTAP 無法解決百分之百的 OLTP+OLAP 融合到一套系統里面的問題。

(二)一體化 SQL 引擎

談到混合負載,就一定有簡單查詢,也有復雜查詢。如何設計一套一體化的 SQL 引擎把簡單查詢和復雜查詢融入到一套系統里面去?

因為簡單查詢,用戶比較關注簡單查詢的延遲,所以簡單查詢比較好的實現方式是串行執行,并且由 SQL 層往存儲層拉數據;復雜查詢因為涉及的數據量比較大,用戶比較關注能否發揮整個數據庫所有的并行處理能力,比較好的實現方式是用并行執行,SQL 層把執行計劃下推到存儲層,從而降低網絡上數據傳輸的開銷。

今天 OceanBase 的一體化 SQL 引擎實現了推拉結合的模式,對簡單查詢拉數據,復雜查詢推執行計劃,通過這樣的方式實現了把簡單查詢和復雜查詢很好地融入到一套系統里。同時,OceanBase 支持了一個非常有用的功能叫 Auto DOP,自動設計并行,優化器可以根據統計信息自動地判斷到底應該采用簡單查詢、串行執行還是并行執行以及并行執行具體的并發度。

當然,只要講到混合負載一定面臨簡單查詢與復雜查詢 OLTP 與 OLAP 之間資源隔離的問題,之前 OceanBase 已經支持了在數據庫內部的 CPU 和內存的資源隔離,今年 OceanBase 進一步增強了基于 IO 能力的資源隔離。

(三)存算分離引擎

作為一個多副本的 Shared-Nothing 架構,如何把 Shared-Nothing 架構部署到多云基礎設施也是一個很大的技術挑戰。這里面涉及到如何把 Shared-Nothing 架構與通常在云上的 Shared-Storage 架構融合起來。? ??

比較幸運的是,OceanBase 的底層存儲引擎是 LSM-Tree,雖然 OceanBase 采用了多個副本的存儲架構,但是 LSM-Tree 把數據分成了基線數據+增量數據,OceanBase 多個副本之間的基線數據是一模一樣的。

當 OceanBase 把多個副本部署到多云基礎設施的時候,此時,多個副本的基線數據可以共享同樣一份共享存儲,最終可以做到只有接近一份數據的存儲成本。當然,OceanBase 也可以通過一些日志副本或者仲裁副本的方式,進一步降低計算成本的開銷,最終做到接近一個副本的存儲,接近兩個副本的計算,實現 RPO = 0,并且在云上實現了彈性,最終做到 Shared-Nothing 和 Shared-Storage 架構完美融合。有了一體化引擎之后,就可以在引擎之上進一步地搭建一體化的產品。

圖片

過去一年,OceanBase 在一體化的產品層面做了很多事,舉三個例子:

(一)一體化 SQL 功能

一體化的設計理念有一個核心的目標,就是希望能夠做到在分布式架構實現與集中式數據庫與單機數據庫完全對標的 SQL 功能,但是某一些? SQL 功能在分布式架構下是非常難以實現。

舉兩個例子。第一個例子是大事務,如果一個大事務設計的參與數、分區數特別多,比如幾萬個甚至幾十萬個參與者,分布式事務基本上不可能完成;另外一個例子是表鎖,比如要在分布式系統里面鎖住一張表格,這張表格設計的分區數特別多,因為要鎖每個分區,所以這也基本上不可能實現。這個問題的本質在于,原有的原生分布式數據庫一般來講每個分區有一個獨立的日志流,使得大事務表鎖這樣的操作,它的復雜度會與分區的個數成正比。

OceanBase 通過單機分布式一體化架構,通過其中的動態日志流的技術,把一臺機器上所有的分區動態地融入到一個日志流里面,使得大事務、表鎖這樣的復雜度只與機器數成正比,不與分區數成正比,最終在 4.2 版本里,OceanBase 實現了任意大事務沒有限制,以及全功能的 DDL,包括表鎖在內。

(二)多模融合

這里面的多模型不僅僅在一個產品里面支持多個不同的模型,還包括如何實現多個模型之間的互相操作。

舉個例子,OceanBase 經常有一些 HBase 的用戶,有人說 HBase 的接口比較好用,但是 HBase 獨接口特別簡單,語義不夠豐富,不支持 SQL。當很多 HBase 用戶把他們的業務遷移到 OceanBase 之后,他們仍然使用與 HBase 兼容的方式來寫入,但是讀取的時候直接采用 SQL 語言。在發布會現場,很多人已經前往展臺體驗了多模 Live Demo,現場有很多直接用 HBase、JSON 等寫入、SQL 讀取的場景實例。

OceanBase 4.0 版本開始提供多模型能力,通過 OBKV 提供融合多模數據支持,無論應用的簡單性還是復雜性,無論處理的是關系型數據、JSON、Key-Value 還是 GIS 等非結構化數據,都可以在同一個的數據庫上獲得卓越的支持,降低應用開發難度和運維復雜性。

(三)一體化產品家族

工具產品方面,我們希望圍繞關鍵業務負載場景做工具產品核心能力的升級, 去兼容更多的關鍵生態,在過去一年無論是 ODC、OMS、Binlog,還是 OCP、OAS 都在面向關鍵業務場景做了大量的能力升級。

ODC,打造企業級協同開發平臺?

ODC 致力于打造企業級的開發者協同平臺,把企業需要的安全合規流程融入到數據庫開發者的工作流程中,使得所有的變更操作都可以做到可回溯、可回滾,這件事情對于核心業務場景、關鍵業務負載非常重要。

OMS,雙向同步、一鍵逃生

所有把OceanBase應用到關鍵業務負載的客戶一定會提兩個需求:第一個,希望能夠做到老系統與新系統之間的長期并跑,一鍵逃生。另外,希望能深度掌控 OceanBase。OMS 提供了雙向同步的能力,長期并跑一鍵逃生,萬一新系統出現問題,不管什么原因,最終都能夠保證一鍵逃生到系統。

OCP 全場景管控+ OAS 診斷自治,一體化智能運維診斷平臺?

在 OCP 層面,OceanBase 進一步增強了診斷監控功能,支持全場景的管控。通過積累在螞蟻、支付寶多年的運維、穩定性相關的經驗,進一步將產品進化成 OAS 自助服務輸出給客戶。

Binlog,打通 MySQL生態

同時,OceanBase 也在持續完善 MySQL 及 Oracle 兼容性,在新增內核兼容功能的同時還提供 MySQL Binlog 協議的支持,幫助用戶更方便地把數據庫接入到下游 MySQL 生態。

圖片

今天,OceanBase 4.2.1 LTS 版本正式發布 ,其是一體化數據庫的首個長期支持版本,包括三個最重要的核心能力升級:

第一,支持完整的 OLTP 功能,是面向 OLTP 核心場景的全功能里程碑版本,可以說,OceanBase 4.2.1 LTS版本的發布意味著 OceanBase 在分布式 OLTP 核心功能已經就緒,這個非常重要;第二,更是更強的性能,相比 3.2 LTS 版本,4.2.1 LTS 版本的 OLTP 性能是 3.2 版本的 1.9 倍,OLAP TPC-DS 100G 場景性能是? 3.2 版本的 2.7 倍;第三,是更低的容災成本,通過引入基于仲裁的無損容災方案,通過兩個副本實現 RPO=0。

OceanBase 4.2.1 LTS 版本有五大核心能力:

  • 內核能力方面,OceanBase 4.2.1 LTS 版本包括三種技術特性,第一支持一體化的產品能力,包括混合負載以及多模能力,OceanBase 4.2.1 LTS 支持 Auto DOP 自動設置并行度 SPM SQL 執行計劃管理,相信 Oracle DBA 和用戶非常熟悉,這兩個功能對于一個企業級數據庫支持復雜查詢非常重要,支持 KV,支持 JSON,也把 LOB 的上限提升到 512MB;第二支持一體化的 SQL 和事務的能力,實現任意大小的事務無限制,并且實現全功能的 DDL;第三實現了更好的高可用的能力,既能支持與傳統的集中式數據庫完全對標的組備庫的方式,也實現了通過仲裁的方式,以兩個副本的成本實現 RPO=0。

  • 性能提升方面,相比 3.2 LTS 版本,OceanBase 4.2.1 LTS 版本的 TP 性能是 3.2 版本的 1.9 倍,AP 性能是3.2版本的2.7倍,導入性是 3.2 版本的 6 倍。

  • 兼容性方面,OceanBase 4.2.1 LTS 版本進一步增強了 MySQL 8.0 的兼容,并且提升了 Oracle 的兼容性,支持 DBLink、表鎖等 Oracle 常見的特性。通過兼容 MySQL Binlog 的方式直接接入到下游數據生態。

  • 工具平臺方面,OMS 支持雙向同步一鍵逃生,ODC 打造企業級協同開發平臺,OCP 支持全場景的管控,OAS 實現智能診斷自治服務。可以說,大家可以把關鍵業務場景非常放心地遷移到 OceanBase 4.2.1 LTS 版本,OceanBase 4.2.1 LTS 版本不管是內核能力、遷移過程以及遷移之后的運維穩定性,都能夠很好地支持關鍵業務負載。這個版本可以讓關鍵業務負載用得非常省心、放心,運維也非常安心。

  • 單機模式方面,OceanBase 4.2.1 LTS 版本支持單機模式,之所以叫單機模式,意味著它可以按需升級到多機模式,按需擴展到分布式。同時相比 MySQL 單機數據庫,OceanBase 4.2.1 LTS 版本能夠更好地支持混合負載,提供更好的數據壓縮能力,并且也有更好的高可用能力,包括前面提到的通過仲裁的方式,以兩個副本的開銷實現 RTO=0。

作為一體化的產品,OceanBase 的 OLAP 能力也在非常快速地迭代,當然了,作為 OLAP 領域新進入的一員,OceanBase 需要向業界一流的產品學習,包括 ClickHouse。

圖片

OceanBase 列存實驗室版本與 ClickHouse 的跑分演練

通過跑分可以看到,同等硬件條件之下,OceanBase 列存實驗室版本的性能在實時 OLAP 在大寬表場景已經達到了 ClickHouse 同一水平,甚至 OceanBase 的性能稍微快那么一點點。

圖片

作為從事十余年的數據庫基礎設施廠商,OceanBase 所提的一體化產品以及數據庫基礎設施,有兩件事情是永恒不變的話題:性能更快,成本更低。

OceanBase 永遠都在追求極致的性能與最佳的成本,一體化的產品正是能夠在追求分布式架構下的極致性能和最佳產品。目前,OceanBase 的單機性能已經達到甚至超過了 MySQL 的性能,在單機形態、硬件成本以及遷移學習成本上有著顯著的優勢:

  • 單機部署形態成本:在單機部署形態下,在同等硬件條件下,OceanBase 的 SQL 及事務處理性能和 MySQL 相當,部分場景下存儲成本可降低至原有的1/3;

  • 垂直/線性擴展帶來的硬件成本:隨著業務規模的增大,無論在云上還是 on-prem,為提升性能都需要升級硬件。在此過程中,相較于傳統數據庫的非線性成本增長(尤其是高速網絡/SAN 存儲設備的價格和單機部署時的差異巨大), OceanBase 的水平擴展可以做到真正的線性擴展,帶來的成本也是線性增長,幫助用戶更好的降低數據庫成本;

  • 遷移和學習成本:OceanBase 實現了單機和分布式架構的統一,同時兼容集中式數據庫的行為和使用方式。這使得用戶在基本不修改業務代碼的情況下,能夠平滑地從單機形態擴容到分布式形態,而無需額外的遷移及學習成本。

最后,和大家分享下 OceanBase 4.x 產品路線圖。去年 8 月份,也就是去年 OceanBase 產品發布會,首次發布了單機分布式一體化架構以及 OceanBase 4.0,今年 3 月份,OceanBase 發布了面向開發者的里程碑版本 OceanBase 4.1。今天,OceanBase 發布了 4.x 的首個 LTS 版本 OceanBase 4.2.1,明年 4 月份 OceanBase 4.3 版本即將發布,包含前面提到的列存功能,明年 10 月份,OceanBase 4.4 版本將會和大家見面,支持存儲計算分離的能力。歡迎大家關注 OceanBase,一起打造更好的一體化數據庫。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166462.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166462.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166462.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

web前端之若依框架圖標對照表、node獲取文件夾中的文件名,并通過數組返回文件名、在html文件中引入.svg文件、require、icon

MENU 前言效果圖htmlJavaScripstylenode獲取文件夾中的文件名 前言 需要把若依原有的icon的svg文件拿到哦&#xff01; 注意看生成svg的路徑。 效果圖 html <div id"idSvg" class"svg_box"></div>JavaScrip let listSvg [404, bug, build, …

02 如何快速讀懂一個C++程序

系列文章目錄 02 如何快速讀懂一個C程序 目錄 系列文章目錄 文章目錄 前言 一、C 的基本語法 二、如何看懂一個c程序&#xff1f; 1.了解程序結構 2.C 中的分號 & 語句塊 3.C 注釋 總結 前言 C 是一種高級編程語言&#xff0c;它具有豐富的特性&#xff0c;用于…

CentOS7安裝Docker運行環境

1 引言 Docker 是一個用于開發&#xff0c;交付和運行應用程序的開放平臺。Docker 使您能夠將應用程序與基礎架構分開&#xff0c;從而可以快速交付軟件。借助 Docker&#xff0c;您可以與管理應用程序相同的方式來管理基礎架構。通過利用 Docker 的方法來快速交付&#xff0c;…

11.前綴和、異或前綴和、差分數組練習題

前綴和 前綴和可以用來求滿足條件的子數組的和、個數、長度 更多前綴和題目&#xff1a; 560. 和為 K 的子數組 974. 和可被 K 整除的子數組 1590. 使數組和能被 P 整除 523. 連續的子數組和 525. 連續數組 560. 和為 K 的子數組 中等 給你一個整數數組 nums 和一個整數…

在新疆烏魯木齊的汽車托運

在新疆烏魯木齊要托運的寶! 看過來了 找汽車托運公司了 連夜吐血給你們整理了攻略!! ??以下&#xff1a; 1 網上搜索 可以在搜索引擎或專業的貨運平臺上搜索相關的汽車托運公司信息。在網站上可以了解到公司的服務范圍、托運價格、運輸時效等信息&#xff0c;也可以參考其他車…

2024年的云趨勢:云計算的前景如何?

本文討論了2024年云計算的發展趨勢。 適應復雜的生態系統、提供實時功能、優先考慮安全性和確保可持續性的需求正在引領云計算之船。多樣化的工作負載允許探索通用的公共云基礎設施范例之外的選項。由于需要降低成本、提高靈活性和降低風險&#xff0c;混合云和多云系統越來越受…

RabbitMQ 消息隊列編程

安裝與配置 安裝 RabbitMQ 讀者可以在 RabbitMQ 官方文檔中找到完整的安裝教程&#xff1a;Downloading and Installing RabbitMQ — RabbitMQ 本文使用 Docker 的方式部署。 RabbitMQ 社區鏡像列表&#xff1a;https://hub.docker.com/_/rabbitmq 創建目錄用于映射存儲卷…

YOLOv5 分類模型 預處理 OpenCV實現

YOLOv5 分類模型 預處理 OpenCV實現 flyfish YOLOv5 分類模型 預處理 PIL 實現 YOLOv5 分類模型 OpenCV和PIL兩者實現預處理的差異 YOLOv5 分類模型 數據集加載 1 樣本處理 YOLOv5 分類模型 數據集加載 2 切片處理 YOLOv5 分類模型 數據集加載 3 自定義類別 YOLOv5 分類模型…

Bin、Hex、ELF、AXF的區別

1.Bin Bin文件是最純粹的二進制機器代碼, 或者說是"順序格式"。按照assembly code順序翻譯成binary machine code&#xff0c;內部沒有地址標記。Bin是直接的內存映象表示&#xff0c;二進制文件大小即為文件所包含的數據的實際大小。 BIN文件就是直接的二進制文件&…

關于python 語音轉字幕,字幕轉語音大雜燴

文字轉語音 Python語音合成之第三方庫gTTs/pyttsx3/speech橫評(內附使用方法)_python_腳本之家 代碼示例 from gtts import gTTStts gTTS(你好你在哪兒&#xff01;,langzh-CN)tts.save(hello.mp3)import pyttsx3engine pyttsx3.init() #創建對象"""語速"…

目前比較好用的護眼臺燈,小學生適合的護眼臺燈推薦

隨著技術的發展&#xff0c;燈光早已成為每家每戶都需要的東西。但是燈光不好可能會對眼睛造成傷害是很多人沒有注意到的。現在隨著護眼燈產品越來越多&#xff0c;市場上臺燈的選擇越來越多樣化&#xff0c;如何選擇一個對眼睛無傷害、無輻射的臺燈成為許多家長首先要考慮的問…

【C++初階】四、類和對象(構造函數、析構函數、拷貝構造函數、賦值運算符重載函數)

相關代碼gitee自取&#xff1a; C語言學習日記: 加油努力 (gitee.com) 接上期&#xff1a; 【C初階】三、類和對象 &#xff08;面向過程、class類、類的訪問限定符和封裝、類的實例化、類對象模型、this指針&#xff09; -CSDN博客 引入&#xff1a;類的六個默認成員函數…

如何使用springboot服務端接口公網遠程調試——實現HTTP服務監聽

&#x1f308;個人主頁&#xff1a;聆風吟 &#x1f525;系列專欄&#xff1a;網絡奇遇記、Cpolar雜談 &#x1f516;少年有夢不應止于心動&#xff0c;更要付諸行動。 文章目錄 &#x1f4cb;前言一. 本地環境搭建1.1 環境參數1.2 搭建springboot服務項目 二. 內網穿透2.1 安裝…

ATA-2042高壓放大器在細胞的剪切應力傳感器研究中的應用

微流控技術是一種通過微小的通道和微型裝置對流體進行精確操控和分析的技術。它是現代醫學技術發展過程中的一種重要的生物醫學工程技術&#xff0c;具有廣泛的應用前景和重要性。它在高通量分析、個性化醫療、細胞篩選等方面有著巨大的潛力&#xff0c;Aigtek安泰電子今天就將…

.Net面試題4

1.請解釋一下泛型&#xff08;Generics&#xff09;在C#中的作用。 泛型是一種將數據類型參數化的機制&#xff0c;使得代碼可以在編譯時具有更強的類型安全性和靈活性。C#中的泛型可以用于類、接口、方法等的定義和實例化。泛型允許在編寫代碼時使用具有不同實參的類型&#x…

HR8833 雙通道H橋電機驅動芯片

HR8833為玩具、打印機和其它電機一T化應用提供一種雙通道電機驅動方案。HR8833提供兩種封裝&#xff0c;一種是帶有L露焊盤的TSSOP-16封裝&#xff0c;能改進散熱性能&#xff0c;且是無鉛產品&#xff0c;引腳框采用100&#xff05;無錫電鍍。另一種封裝為SOP16&#xff0c;不…

智駕芯片全矩陣「曝光」,這家企業的車載品牌正式官宣

隨著汽車智能化加速&#xff0c;智能駕駛芯片格局逐漸清晰。 針對L0-L2&#xff0c;業內基本采用智能前視一體機方案&#xff1b;要實現高速NOA、城市NOA等更為高階的智駕功能等&#xff0c;則基本采用域控制器方案。從前視一體機至域控&#xff0c;再逐步演進到艙駕一體、中央…

python基于DETR(DEtection TRansformer)開發構建鋼鐵產業產品智能自動化檢測識別系統

在前文中我們基于經典的YOLOv5開發構建了鋼鐵產業產品智能自動化檢測識別系統&#xff0c;這里本文的主要目的是想要實踐應用DETR這一端到端的檢測模型來開發構建鋼鐵產業產品智能自動化檢測識別系統。 DETR (DEtection TRansformer) 是一種基于Transformer架構的端到端目標檢…

springboot項目修改項目名稱

參考該文章正確修改項目名稱&#xff1a;SpringBoot項目怎么重命名_springboot修改項目名稱-CSDN博客

【Lodash】 Filter 與Map 的結合使用

用Filter過濾數據之后&#xff0c;想給某個字段重新賦值 在使用 filter() 方法過濾數據后&#xff0c;如果你想給某個字段賦值&#xff0c;你可以使用 map() 方法來修改數組中的元素。map() 方法可以對數組中的每個元素應用一個函數&#xff0c;并返回一個新的數組。 以下是一…