手把手教你馴服Apache IoTDB時序數據庫,開啟時序數據管理新征程!

在這里插入圖片描述

在這里插入圖片描述

手把手教你馴服Apache IoTDB,開啟時序數據管理新征程!

本文是一篇幽默風趣的 Apache IoTDB 時序數據庫安裝使用教程。從 “這東西能不能吃” 的靈魂拷問切入,先科普 IoTDB 的 “真實身份”—— 一款專為時序數據設計的數據庫利器,適用于物聯網、工業監控等場景。接著手把手帶讀者搞定環境準備、單機部署(附 Linux 實操)、數據庫連接等操作,用生活化比喻拆解數據寫入、查詢等核心操作,還貼心整理了端口沖突等 “踩坑指南”。哪怕是數據庫小白,也能跟著本文輕松馴服這個 “時序猛獸”,開啟高效管理時序數據的新技能!

一、Apache IoTDB 是什么?能吃嗎?

loTDB

剛看到 “Apache IoTDB” 這個名字的時候,你是不是和我一樣,心里犯嘀咕:這是個啥?能吃嗎?咳咳,打住打住,它可不是什么美味佳肴,而是一款超厲害的時序數據庫!簡單來說,它就像是一個超級智能的倉庫,專門用來存放那些和時間緊密相關的數據。

想象一下,你的家里有無數個傳感器,時刻記錄著溫度、濕度、用電量等等信息。這些數據就像潮水一樣涌來,普通的數據庫應付起來可能會手忙腳亂,但 Apache IoTDB 卻能輕松應對,將它們安排得明明白白。它具有高吞吐量讀寫、低硬件成本、豐富查詢語義等特點,在物聯網、能源電力、工業制造等領域都有廣泛應用,比如智能工廠里設備運行狀態的監測數據,電網中實時的電力數據等,都可以用它來高效管理。

二、前期準備:工欲善其事,必先利其器

(一)環境要求

在安裝 Apache IoTDB 之前,咱們得先把環境這道 “門檻” 跨過去。首先,它對 Java 環境有要求,需要你安裝 JDK 1.8 及以上版本 ,并且要把JAVA_HOME環境變量配置好。這就好比你要開車,得先給車加好油,配置環境變量就是在給 IoTDB “加油”,讓它能順利跑起來。如果你還沒安裝 JDK,別慌,去 Oracle 官網或者 OpenJDK 官網下載一個,安裝過程就像給手機安裝 APP 一樣簡單,一路 “下一步” 就行。

另外,IoTDB 運行時會打開很多文件和建立大量連接,所以最好把系統的最大文件打開數和最大連接數都設置為 65535。要是你用的是 Linux 系統,可以通過ulimit -n 65535命令設置最大文件打開數,用sysctl -w net.core.somaxconn=65535命令設置最大連接數。這一步可不能省,不然 IoTDB 跑起來可能會 “發脾氣”,出現各種奇怪的問題。

(二)安裝包獲取

環境準備好了,接下來就是獲取 IoTDB 的安裝包啦。你可以前往 Apache IoTDB 的官方下載頁面:https://iotdb.apache.org/Download/ 。

在這里插入圖片描述

這里的安裝包版本眾多,就像進了一家糖果店,各種口味任你選。一般來說,建議選擇最新的發行版本,新的版本往往修復了之前的一些小毛病,還可能增加了新的功能,就像手機系統更新一樣,會帶來更好的體驗。

如果你是個追求穩定的人,也可以看看歷史版本,說不定某個舊版本更符合你的 “胃口”。下載的時候,注意選擇適合你系統的安裝包,比如 Windows 系統就選 Windows 版本的,Linux 系統就選 Linux 版本的。下載完成后,就可以準備進入下一步的安裝環節啦,是不是有點小期待呢?

三、安裝過程:步步為營,輕松搞定

(一)單機部署(以 Linux 為例)

準備好環境和安裝包后,就可以正式開始安裝啦!這里我們以 Linux 系統為例,來一場和 Apache IoTDB 的 “安裝之約”。

首先,把下載好的安裝包解壓 ,就像打開一個裝滿寶藏的盒子。假設你的安裝包是apache-iotdb-1.3.2-all-bin.zip ,在終端輸入解壓命令:

unzip apache-iotdb-1.3.2-all-bin.zip

解壓完成后,進入解壓后的目錄:

cd apache-iotdb-1.3.2-all-bin

接下來就是配置環節,這可是個關鍵步驟,就像給新房子布置家具一樣,得根據自己的需求來。進入conf目錄,里面有一堆配置文件,比如iotdb-common.properties(系統通用配置文件)、iotdb-confignode.properties(ConfigNode 配置文件)、iotdb-datanode.properties(DataNode 配置文件)等 。

一般情況下,單機部署使用默認配置就行,不過要是你想修改一些參數,也沒問題。比如,你想修改 DataNode 對外提供服務的端口號(默認是 6667),就打開iotdb-datanode.properties文件 ,找到dn_rpc_address這一行 ,把后面的端口號改成你想要的,改完保存。
配置好后,就可以啟動 IoTDB 啦!在apache-iotdb-1.3.2-all-bin目錄下執行啟動腳本:

bash sbin/start-standalone.sh

如果啟動過程中沒有報錯,那就恭喜你,離成功又近了一步!你可以查看logs目錄下的日志文件 ,確認 IoTDB 是否成功啟動。要是看到類似 “IoTDB has started” 的信息,就說明它已經歡快地跑起來啦!

不過,安裝過程中難免會遇到一些小麻煩。比如,啟動時提示端口被占用,這時候你就得找出占用端口的程序,把它干掉或者換個端口。可以用lsof -i:端口號命令查看是哪個程序占用了端口,然后根據情況處理。要是遇到其他奇怪的錯誤,先別慌,去官方文檔或者社區論壇找找答案,說不定有很多小伙伴都遇到過同樣的問題,已經找到了解決辦法呢。

(二)集群部署(簡單介紹)

單機部署就像是一個人的小團隊,而集群部署則是一個超級大團隊。集群部署可以把多個節點組合在一起,提供更強的擴展性和高可用性,就像把多臺電腦連接起來,一起工作,處理能力大大增強。在集群中,數據會分布在多個節點上,就算某個節點出了問題,其他節點還能繼續工作,保證系統的穩定運行 。

集群部署的安裝和配置比單機部署要復雜一些,涉及到多個節點的協調和配置。比如,要設置好各個節點之間的通信、數據同步等參數 。不過別擔心,后續我會專門出一篇文章詳細講解集群部署的步驟和注意事項,感興趣的小伙伴可以持續關注哦。現在,你只要知道有集群部署這回事,并且了解它的優勢就行啦。

四、連接數據庫:初次見面,請多關照

IoTDB 安裝啟動成功后,就可以嘗試連接數據庫了,就像是終于打通了和神秘倉庫的通道,心里還有點小緊張呢。

(一)使用命令行連接

IoTDB 自帶了命令行客戶端工具 ,通過它可以很方便地連接到數據庫。在安裝目錄的sbin文件夾下 ,有一個start-cli.sh(Linux 或 MacOS 系統)或start-cli.bat(Windows 系統)腳本 ,這就是啟動命令行客戶端的 “鑰匙”。

假設你是在本機安裝的 IoTDB,并且沒有修改默認端口,那么在終端執行以下命令(以 Linux 系統為例):

bash sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root

這里的-h指定服務器地址(127.0.0.1表示本機),-p指定端口號(默認是 6667),-u指定用戶名,-pw指定密碼 。IoTDB 默認的用戶名和密碼都是root ,就像一個簡單的 “通關密碼”,初次連接時可千萬別輸錯了,不然就像拿著錯誤的鑰匙,打不開數據庫的大門哦。

如果一切順利,你會看到 IoTDB 的命令行提示符,比如IoTDB> ,這就表示你已經成功連接到數據庫啦,是不是很有成就感?

(二)使用客戶端工具連接(以 DBeaver 為例)

除了命令行,我們還可以使用一些可視化的客戶端工具來連接 IoTDB,這樣操作起來更加直觀,就像從文字版說明書升級到了圖文版。這里以 DBeaver 為例,給大家介紹一下連接方法。

在這里插入圖片描述

首先,打開 DBeaver 軟件 ,點擊菜單欄中的 “數據庫” -> “新建連接” 。在彈出的 “新建數據庫連接” 窗口中,找到 “IoTDB” 驅動(如果沒有,需要手動添加驅動,下載對應的 IoTDB JDBC 驅動包,然后在 DBeaver 的驅動管理器中添加)。

接著,在連接設置頁面,填寫連接信息:

  1. 主機名 / 地址:填寫 IoTDB 服務器的地址,要是在本機安裝的,就填127.0.0.1
  2. 端口:填6667,這是 IoTDB 默認的 RPC 端口。
  3. 數據庫:留空就行,因為 IoTDB 是通過存儲組來管理數據的,不是傳統意義上的數據庫名稱。
  4. 用戶名和密碼:還是root

填好后,點擊 “測試連接” 按鈕 ,要是顯示 “連接成功”,就大功告成啦!之后點擊 “完成”,就能在 DBeaver 中看到 IoTDB 的連接了,通過它可以方便地執行 SQL 語句、查看數據等操作,就像有了一個超級助手,幫你輕松管理數據庫。

五、基本操作:小試牛刀,初嘗甜頭

成功連接到 IoTDB 數據庫后,就像打開了一個裝滿寶藏的寶箱,接下來就可以對里面的數據進行各種操作啦,比如寫入和查詢,這就像是往寶箱里放東西和從寶箱里找東西一樣。

(一)數據寫入

在 IoTDB 中寫入數據,可以使用 SQL 語句來完成。假設我們有一個智能設備,它會實時采集溫度和濕度數據 ,設備的路徑是root.device1 ,溫度測點是temperature ,濕度測點是humidity 。現在要往數據庫里寫入一條數據,時間戳為1677721600000(對應 2023 年 3 月 1 日 00:00:00),溫度是 25.5 攝氏度,濕度是 60%,SQL 語句如下:

INSERT INTO root.device1(timestamp,temperature,humidity) VALUES(1677721600000,25.5,60)

這條語句就像是給 IoTDB 下了一道指令,告訴它在root.device1這個設備下,在指定的時間戳記錄下溫度和濕度的值。你可以把 IoTDB 想象成一個超級秘書,只要你用正確的格式(SQL 語句)告訴它要記錄什么,它就會乖乖地把數據記下來 。

如果要批量寫入數據,也很簡單。比如有 10 條數據要寫入,只需要把VALUES后面的數據按照順序羅列即可 ,就像給秘書一次性安排多項任務。例如:

INSERT INTO root.device1(timestamp,temperature,humidity) VALUES(1677721600000,25.5,60),(1677721660000,25.3,61),(1677721720000,25.7,59)......

這樣就能一次性把多條數據快速寫入 IoTDB ,大大提高了數據寫入的效率,就像批量發送快遞,比一個一個單獨發送要快得多。

(二)數據查詢

寫入數據后,當然要查詢出來看看啦。IoTDB 提供了豐富的查詢語句,讓你能輕松找到自己想要的數據。比如,我們想查詢root.device1設備在 2023 年 3 月 1 日這一天的所有溫度數據 ,可以使用如下 SQL 語句:

SELECT temperature FROM root.device1 WHERE time >= 1677721600000 AND time < 1677808000000

這里的time就是時間戳,通過>=<來限定時間范圍 ,就像在一個大倉庫里,通過時間這個 “坐標”,精準地找到我們需要的數據。這就好比你在圖書館找某一天出版的書籍,只要告訴管理員時間范圍,管理員就能幫你找到相關的書籍,IoTDB 就是這個超級智能的 “管理員”。

如果你想查詢root.device1設備的溫度和濕度數據 ,并且按照時間倒序排列,只顯示最新的 10 條數據 ,SQL 語句可以這樣寫:

SELECT temperature,humidity FROM root.device1 ORDER BY time DESC LIMIT 10

ORDER BY time DESC表示按照時間倒序排列 ,LIMIT 10表示只顯示前 10 條數據 。這就像你在查看自己的購物記錄時,想看看最近買的 10 件商品,通過這樣的查詢語句,IoTDB 就能快速把你想要的數據呈現出來 。

再比如,你想統計root.device1設備在一段時間內的平均溫度和平均濕度 ,可以使用聚合函數:

SELECT AVG(temperature),AVG(humidity) FROM root.device1 WHERE time >= 1677721600000 AND time < 1677808000000

AVG函數就是用來計算平均值的 ,通過這樣的查詢,你就能快速得到設備在指定時間段內的平均溫度和濕度情況,就像老師統計全班同學的平均成績一樣,IoTDB 能輕松完成這些統計任務。

六、常見問題及解決:打怪升級,一路向前

在安裝和使用 Apache IoTDB 的過程中,就像玩游戲一樣,難免會遇到一些 “小怪獸”,不過別擔心,下面就給大家分享一些常見問題及解決方法,助你輕松 “打怪升級” 。

(一)端口沖突

問題現象:啟動 IoTDB 時,報錯提示某個端口被占用,比如常見的 6667 端口(默認的 RPC 端口) 。這就好比你要租一個房子,結果發現已經有人住進去了,IoTDB 也沒辦法在被占用的端口上啟動服務。

解決辦法:首先,找出占用端口的程序。在 Linux 系統下,可以使用lsof -i:端口號命令 ,比如lsof -i:6667 ,它會列出占用 6667 端口的程序信息。如果是 Windows 系統,可以在命令提示符中輸入netstat -ano | findstr 端口號 ,比如netstat -ano | findstr 6667 ,會顯示占用該端口的進程 ID(PID) 。知道是哪個程序占用端口后,如果這個程序是你不需要運行的,就可以直接結束它的進程。在 Linux 系統下,可以用kill -9 PID命令結束進程(PID是實際的進程 ID) ;在 Windows 系統下,可以打開任務管理器,在 “詳細信息” 選項卡中找到對應的 PID,然后結束任務 。要是這個程序你還想用,那就只能給 IoTDB 換個端口啦。找到 IoTDB 的配置文件(比如iotdb-datanode.properties) ,修改對應的端口號,保存后重新啟動 IoTDB,它就會在新的端口上運行啦 。

(二)Java 環境問題

問題現象:啟動 IoTDB 時,提示找不到 Java 環境或者 Java 版本不兼容 。這就像汽車沒有合適的發動機,IoTDB 沒有正確的 Java 環境就無法正常啟動。

解決辦法:先檢查JAVA_HOME環境變量是否配置正確 。在 Linux 系統下,可以編輯.bashrc或.bash_profile文件 ,確認JAVA_HOME變量指向了正確的 JDK 安裝目錄 ,并且PATH變量中包含了$JAVA_HOME/bin 。比如:

export JAVA_HOME=/usr/local/jdk1.8.0_361
export PATH=$JAVA_HOME/bin:$PATH

修改完后,執行source ~/.bashrc(或source ~/.bash_profile)使配置生效 。在 Windows 系統下,右鍵 “此電腦”,選擇 “屬性” -> “高級系統設置” -> “環境變量” ,在 “系統變量” 中檢查JAVA_HOME和PATH變量是否正確配置 。如果 Java 版本不兼容,那就去下載符合要求的 JDK 版本 ,安裝完成后重新配置JAVA_HOME環境變量 ,再嘗試啟動 IoTDB 。

(三)連接失敗

問題現象:使用命令行客戶端或可視化工具連接 IoTDB 時,提示連接失敗 ,就像你拿著鑰匙卻打不開門,急得團團轉。

解決辦法:先檢查 IoTDB 服務器是否已經成功啟動 ,可以查看logs目錄下的日志文件確認 。如果服務器已經啟動,再檢查連接信息是否正確,比如服務器地址、端口號、用戶名和密碼 。要是使用的是遠程連接,還要確保服務器的防火墻沒有阻止連接 。在 Linux 系統下,可以暫時關閉防火墻(systemctl stop firewalld) ,測試連接是否成功 ,如果成功,再重新配置防火墻規則,開放 IoTDB 使用的端口 。如果是使用 DBeaver 等可視化工具連接,還要檢查驅動是否正確安裝 ,可以嘗試重新添加或更新驅動 。

(四)數據寫入或查詢異常

問題現象:在進行數據寫入或查詢操作時,出現語法錯誤或者查詢結果不符合預期 ,就像你寫了一篇作文,結果語法錯誤連篇,或者老師給的評語和你想的不一樣。

解決辦法:如果是語法錯誤,仔細檢查 SQL 語句 ,IoTDB 的 SQL 語法和標準 SQL 有一些差異,比如時間戳的表示方式等 ,可以參考官方文檔中的語法說明 。如果查詢結果不符合預期,先檢查查詢條件是否正確 ,比如時間范圍、設備路徑等 。還可以嘗試簡化查詢語句,逐步排查問題 。要是數據寫入異常,檢查數據格式是否符合 IoTDB 的要求 ,比如數據類型、時間戳格式等 。另外,也可以查看logs目錄下的日志文件 ,里面可能會有詳細的錯誤信息,幫助你定位問題 。

七、總結與展望:未來已來,攜手共進

恭喜你,一路 “披荊斬棘”,完成了 Apache IoTDB 的安裝與初步使用,是不是感覺自己離技術大神又近了一步呢?回顧一下,我們從認識這個神奇的時序數據庫開始,就像打開了一扇通往新世界的大門 。接著準備好環境和安裝包,一步步完成了單機部署,成功連接到數據庫后,還進行了數據寫入和查詢的操作,是不是很有成就感呢?在這個過程中,雖然遇到了一些問題,但我們也都一一解決了,每一次解決問題都是一次成長,現在的你,已經掌握了 IoTDB 的基本使用方法,是不是可以小小地驕傲一下啦!

不過,IoTDB 的強大功能遠不止這些,它就像一個神秘的寶藏庫,還有很多高級特性等待你去挖掘 。比如,它的分布式存儲和查詢功能,可以讓你輕松應對海量數據的處理;和大數據生態系統(如 Hadoop、Spark 等)的集成,能讓你進行更復雜的數據分析 。后續我也會持續分享更多關于 IoTDB 的高級教程,記得關注哦!

在未來,隨著物聯網、工業互聯網等領域的快速發展,時序數據的應用場景會越來越廣泛 。Apache IoTDB 作為一款優秀的時序數據庫,必將在這個數據的海洋中發揮重要作用 。希望大家能繼續深入探索 IoTDB,用它來解決更多實際問題,讓數據創造更大的價值 。說不定哪天,你用 IoTDB 做出的項目,就能改變世界呢!加油,未來的技術之星們!

了解博主

????xcLeigh 博主全棧領域優質創作者,博客專家,目前,活躍在CSDN、微信公眾號、小紅書、知乎、掘金、快手、思否、微博、51CTO、B站、騰訊云開發者社區、阿里云開發者社區等平臺,全網擁有幾十萬的粉絲,全網統一IP為 xcLeigh。希望通過我的分享,讓大家能在喜悅的情況下收獲到有用的知識。主要分享編程、開發工具、算法、技術學習心得等內容。很多讀者評價他的文章簡潔易懂,尤其對于一些復雜的技術話題,他能通過通俗的語言來解釋,幫助初學者更好地理解。博客通常也會涉及一些實踐經驗,項目分享以及解決實際開發中遇到的問題。如果你是開發領域的初學者,或者在學習一些新的編程語言或框架,關注他的文章對你有很大幫助。

????親愛的朋友,無論前路如何漫長與崎嶇,都請懷揣夢想的火種,因為在生活的廣袤星空中,總有一顆屬于你的璀璨星辰在熠熠生輝,靜候你抵達。

???? 愿你在這紛繁世間,能時常收獲微小而確定的幸福,如春日微風輕拂面龐,所有的疲憊與煩惱都能被溫柔以待,內心永遠充盈著安寧與慰藉。

????至此,文章已至尾聲,而您的故事仍在續寫,不知您對文中所敘有何獨特見解?期待您在心中與我對話,開啟思想的新交流。


???? 💞 關注博主 🌀 帶你實現暢游前后端!

???? 🏰 大屏可視化 🌀 帶你體驗酷炫大屏!

???? 💯 神秘個人簡介 🌀 帶你體驗不一樣得介紹!

???? 🥇 從零到一學習Python 🌀 帶你玩轉技術流!

???? 🏆 前沿應用深度測評 🌀 前沿AI產品熱門應用在線等你來發掘!

???? 💦 :本文撰寫于CSDN平臺,作者:xcLeigh所有權歸作者所有) ,https://xcleigh.blog.csdn.net/,如果相關下載沒有跳轉,請查看這個地址,相關鏈接沒有跳轉,皆是抄襲本文,轉載請備注本文原地址。


在這里插入圖片描述

???? 📣 親,碼字不易,動動小手,歡迎 點贊 ? 收藏,如 🈶 問題請留言(或者關注下方公眾號,看見后第一時間回復,還有海量編程資料等你來領!),博主看見后一定及時給您答復 💌💌💌

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

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

相關文章

劇本殺小程序系統開發:開啟沉浸式推理社交新紀元

在數字化浪潮席卷的當下&#xff0c;傳統娛樂方式正經歷著前所未有的變革&#xff0c;劇本殺這一融合了推理、角色扮演與社交互動的熱門游戲&#xff0c;也搭上了科技的快車&#xff0c;劇本殺小程序系統開發應運而生&#xff0c;為玩家們開啟了一扇通往沉浸式推理社交新世界的…

Ubuntu系統VScode實現opencv(c++)視頻的處理與保存

通過OpenCV等計算機視覺工具&#xff0c;開發者可以像處理靜態圖像一樣對視頻流逐幀分析&#xff1a;從簡單的裁剪、旋轉、色彩校正&#xff0c;到復雜的穩像、目標跟蹤、超分辨率重建。而如何將處理后的高幀率、高動態范圍數據高效壓縮并封裝為通用格式&#xff08;如MP4、AVI…

三坐標測量技術解析:從基礎原理到斜孔測量難點突破

基礎原理 三坐標測量儀&#xff08;Coordinate Measuring Machine&#xff0c;CMM&#xff09;這種集機械、電子、計算機技術于一體的三維測量設備&#xff0c;其核心技術原理在于&#xff1a;當接觸式或非接觸式測頭接觸感應到工件表面時&#xff0c;測量系統會瞬間記錄三個坐…

【MySQL基礎篇】:MySQL常用內置函數以及實用示例

?感謝您閱讀本篇文章&#xff0c;文章內容是個人學習筆記的整理&#xff0c;如果哪里有誤的話還請您指正噢? ? 個人主頁&#xff1a;余輝zmh–CSDN博客 ? 文章所屬專欄&#xff1a;MySQL篇–CSDN博客 文章目錄內置函數一.日期函數二.字符串函數三.數學函數四.其他函數內置函…

Mirror學習筆記

Mirror官方案例操作 一、導入Mirror 在unity商城訂閱Mirror https://assetstore.unity.com/packages/tools/network/mirror-129321 使用unity創建工程 &#xff08;推薦版本&#xff1a;目前建議使用 Unity 2020 或 2021 LTS 版本&#xff1b;超出這些版本的可能可以運行…

R4周打卡——Pytorch實現 LSTM火災預測

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習記錄博客&#x1f356; 原作者&#xff1a;K同學啊 一、準備工作 1.1導入數據 1.2數據集可視化 二、構建數據集 2.1數據集預處理 2.2設置X、Y 2.3檢查數據集中有沒有空值 2.4劃分數據集 三、構建模型 3.1定義訓…

【視覺識別】Ubuntu 22.04 上編譯安裝OPENCV 4.12.0 魯班貓V5

系列文章目錄 提示&#xff1a;這里可以添加系列文章的所有文章的目錄&#xff0c;目錄需要自己手動添加 例如&#xff1a;第一章 Python 機器學習入門之pandas的使用 提示&#xff1a;寫完文章后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目…

基于vue的財務管理系統/基于php的財務管理系統

基于vue的財務管理系統/基于php的財務管理系統

機器學習技術在訂單簿大單檢測中的應用研究

訂單簿數據的特點 訂單簿&#xff08;Order Book&#xff09;是記錄市場上所有未成交買賣訂單的數據結構&#xff0c;通常包括價格、數量、買賣方向等信息。訂單簿數據具有以下特點&#xff1a; 高頻率&#xff1a;訂單簿數據更新速度極快&#xff0c;通常以毫秒甚至微秒為單位…

Spring MVC框架中DispatcherServlet詳解

1. DispatcherServlet概述1.1 什么是DispatcherServlet&#xff1f;DispatcherServlet是Spring MVC框架的核心組件&#xff0c;它本質上是一個Java Servlet&#xff0c;作為前端控制器(Front Controller)負責接收所有HTTP請求&#xff0c;并根據特定規則將請求分發到相應的處理…

DBA急救手冊:拆解Oracle死鎖圖,ORA-00060錯誤秒級定位終極指南

關于“死鎖圖”&#xff08;Deadlock Graph&#xff09;的一點淺見 當 Oracle 檢測到死鎖時&#xff0c;檢測到死鎖的會話中的當前 SQL 將被取消&#xff0c;并執行“語句級回滾”&#xff0c;以釋放資源并避免阻塞所有活動。 檢測到死鎖的會話仍然“存活”&#xff0c;并且事務…

C++中的默認函數學習

今天在學習QT別人的項目時看到有個函數在聲明和調用時參數個數不一樣&#xff0c;查了下是c中的一種函數類型&#xff0c;這個類型的函數可以讓代碼更簡潔、靈活。定義&#xff1a;在函數聲明時&#xff0c;給某些參數預先設定一個默認值。調用函數時&#xff0c;如果省略這些參…

HBase分片技術實現

HBase分片技術實現概述HBase是基于Hadoop的分布式、可擴展的NoSQL數據庫&#xff0c;采用列族存儲模型。HBase的分片機制通過Region自動分割和負載均衡實現水平擴展&#xff0c;支持PB級數據存儲和高并發訪問。HBase架構核心組件HMaster: 集群管理節點&#xff0c;負責Region分…

Python爬蟲實戰:研究awesome-python工具,構建技術資源采集系統

1. 引言 1.1 研究背景 Python 憑借語法簡潔、生態豐富等特點,已成為全球最受歡迎的編程語言之一。截至 2024 年,PyPI(Python Package Index)上的第三方庫數量已突破 45 萬個,涵蓋從基礎工具到前沿技術的全領域需求。然而,海量資源也帶來了 "信息過載" 問題 —…

【實時Linux實戰系列】實時視頻監控系統的開發

隨著技術的不斷發展&#xff0c;實時視頻監控系統在安防、交通管理、工業自動化等領域得到了廣泛應用。實時Linux系統因其高效的實時性和穩定性&#xff0c;成為開發高性能視頻監控系統的理想選擇。掌握基于實時Linux的視頻監控系統開發技能&#xff0c;對于開發者來說不僅能夠…

力扣-11.盛最多水的容器

題目鏈接 11.盛最多水的容器 class Solution {public int maxArea(int[] height) {int res 0;for (int i 0, j height.length - 1; i < j; ) {res Math.max(res, Math.min(height[i], height[j]) * (j - i));if (height[i] < height[j]) {i;} else {j--;}}return r…

大型音頻語言模型論文總結

大型音頻語言模型&#xff08;Large Audio Language Model, LALM&#xff09;是一類基于深度學習的智能系統&#xff0c;專門針對音頻信號&#xff08;如語音、音樂、環境聲等&#xff09;進行理解、生成、轉換和推理。它借鑒了大型語言模型&#xff08;LLM&#xff09;的“預訓…

如何解決網頁視頻課程進度條禁止拖動?

function skip() {let video document.getElementsByTagName(video)for (let i0; i<video.length; i) {video[i].currentTime video[i].duration} } setInterval(skip,6666)無法拖動視頻進度。 使用F12啟動調試模式。 function skip() {let video document.getElements…

基于deepSeek的流式數據自動化規則清洗案例【數據治理領域AI帶來的改變】

隨著AI大模型的大量普及&#xff0c;對于傳統代碼模式產生了不小的影響&#xff0c;特別是對于大數據領域&#xff0c;傳統的規則引擎驅動的數據治理已經無法滿足數據增長帶來的治理需求。因此主動型治理手段逐漸成為主流&#xff0c;因此本文介紹一個基于deepSeek的流式數據自…

【論文分析】【Agent】SEW: Self-Evolving Agentic Workflows for Automated Code Generatio

1.論文信息標題&#xff1a;SEW: Self-Evolving Agentic Workflows for Automated Code Generatio&#xff1a;用于自動代碼生成的自我進化的代理工作流程收錄的會議/期刊&#xff1a;作者信息&#xff1a;arxiv&#xff1a;&#x1f517;github網站&#xff1a;&#x1f517;g…