Apache DolphinScheduler 3.0.0 正式版發佈!

来源:https://www.cnblogs.com/DolphinScheduler/archive/2022/08/11/16575626.html
-Advertisement-
Play Games

​ 點亮 ⭐️ Star · 照亮開源之路 GitHub:https://github.com/apache/dolphinscheduler ​ 版本發佈 2022/8/10 2022 年 8 月 10 日,Apache DolphinScheduler 在經過 3.0.0 alpha、3.0.0 ...


 點亮 ⭐️ Star · 照亮開源之路 GitHub:https://github.com/apache/dolphinscheduler  

版本發佈 2022/8/10

2022 年 8 月 10 日,Apache DolphinScheduler 在經過 3.0.0 alpha、3.0.0-beta-1、3.0.0-beta-2 不斷驗證之後,終於迎來了社區期盼已久的第三個大版本! 3.0.0 正式版本發生了自發版以來的最大幅度變動,新增了眾多全新功能和特性,旨在為用戶帶來全新的體驗和更多價值。   經過迭代的 3.0.0 正式版與此前 3.0.0 alpha 版本更新文中所描述的主要功能和特性更新、優化項和 Bug 修複大致一致,包括“更快、更強、更現代化、更易維護”這四個關鍵詞總結。   對於版本迭代後新增的功能和優化,本文將再做補充。   關鍵詞:更快、更強、更現代化、更易維護 3.0.0 的關鍵字不變,“更快、更強、更現代化、更易維護”的特點相信大家在使用中可以體驗到。
  • 更快:重構了 UI 界面,新 UI 不僅用戶響應速度提高數十倍,開發者構建速度提高數百倍;
  • 更強:帶來了許多振奮人心的新功能,如數據質量保證、自定義時區、新增多個任務支持和多個告警插件;
  • 更現代化:新 UI 除了更快外,大到頁面佈局,細到圖標樣式都更加現代化;
  • 更易維護:後端服務拆分更加符合容器化和微服務化的發展趨勢,還能明確各個服務的職責,讓維護更加簡單。

 

新功能和新特性

前文已有詳細描述的新功能和新特性包括:    

 

3.0.0 最大的變化是引入了新的 UI,切換語言頁面無需重新載入,並且新增了深色主題。新 UI 使用了 Vue3,TSX,Vite 相關技術棧。對比舊版 UI,新 UI 不僅更加現代化,操作也更加人性化,前端的魯棒性也更強,使用戶在編譯時一旦發現代碼中的問題,可以對介面參數進行校驗,從而使前端代碼更加健壯。 此外,新架構和新技術棧不僅能讓用戶在操作 Apache DolphinScheduler 時響應速度有數十倍的提升,同時開發者本地編譯和啟動 UI 的速度有了數百倍的提升,這將大大縮短開發者調試和打包代碼所需的時間。   新 UI 使用體驗: ​本地啟動耗時對比   ​項目管理頁面     ​工作流定義頁面     shell 任務頁面     ​   MySQL 數據源頁面  

 

AWS 支持

隨著 Apache DolphinScheduler 用戶群體越來越豐富,吸引了很多海外用戶。但在海外業務場景下,用戶在調研過程中發現有兩個影響用戶便捷體驗 Apache DolphinScheduler 的點,一個是時區問題,另一個則是對海外雲廠商,尤其是對 AWS 的支持不足。此版本中,我們決定對 AWS 較為重要的組件進行支持,目前已經涵蓋 Amazon EMR 和 Amazon Redshift 兩個 AWS 的任務類型,以及實現了資源中心支持 Amazon S3 存儲。  
  • 針對 Amazon EMR,我們創建了一個新的任務類型,並提供了其 Run Job Flow 的功能,允許用戶向 Amazon EMR 提交多個 steps 作業,並指定使用的資源數量。
  詳情可見:https://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/guide/task/emr.html   Amazon EMR 任務定義  
  • 對於 Amazon Redshift,我們目前在 SQL 任務類型中擴展了對 Amazon Redshift 數據源的支持,現在用戶可以在 SQL 任務中選擇 Redshift 數據源來運行 Amazon Redshift 任務。
  ​   Amazon Redshift 支持
  • 對於 Amazon S3,我們擴展了 Apache DolphinScheduler 的資源中心,使其不僅能支持本地資源、HDFS 資源存儲,同時支持 Amazon S3 作為資源中心的儲存。詳情可見:https://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/guide/resource.html 中的 `resource.storage.type`
後續我們將支持更多 AWS 任務,敬請期待。

 

服務拆分

全新的 UI 是 3.0.0 前端的最大變化,而後端最大的變化就是對服務進行拆分。考慮到容器和微服務的概念越來越火熱,Apache DolphinScheduler 開發者做出了重大決定:對後端服務進行拆分。按照職能,我們將服務拆分成了以下幾部分:
  • master-server: master服務
  • worker-server: worker服務
  • api-server: API服務
  • alert-server: 告警服務
  • standalone-server: standalone用於快速體驗 dolphinscheduler 功能
  • ui: UI資源
  • bin: 快速啟動腳本,主要是啟動各個服務的腳本
  • tools: 工具相關腳本,主要包含資料庫創建,更新腳本
  所以的服務都可以通過
`bin/dolphinscheduler-daemon.sh`
的方式進行啟動或者停止。  

數據質量保證

此版本中,用戶們從 2.0.0 開始就期待已久的數據質量保證應用功能上線,解決了從源頭同步的數據條數準確性,單表或多表周均、月均波動超過閾值告警等數據質量問題。Apache DolphinScheduler 此前版本解決了將任務以特定順序和時間運行的問題,但數據運行完之後對數據的質量一直沒有較為通用的衡量標準,用戶需要付出額外的開發成本。   現在,3.0.0 已經實現了數據質量原生支持,用戶可以直接通過配置的方式,輕鬆實現數據質量監控,在保證工作流運行的前提下,保證運行結果的準確性。   ​   ​  

任務組

任務組主要用於控制任務實例併發並明確組內優先順序。用戶在新建任務定義時,可配置當前任務對應的任務組,並配置任務在任務組內運行的優先順序。當任務配置了任務組後,任務的執行除了要滿足上游任務全部成功外,還需要滿足當前任務組正在運行的任務小於資源池的大小。當大於或者等於資源池大小時,任務會進入等待狀態等待下一次檢查。當任務組中多個任務同時進到待運行隊列中時,會先運行優先順序高的任務。 詳見 鏈接:https://dolphinscheduler.apache.org/zh-cn/docs/3.0.0/user_doc/guide/resource.html    

 

自定義時區

在 3.0.0 之前版本,Apache DolphinScheduler 預設的時間是 UTC+8 時區,但隨著用戶群體擴大,海外用戶和在海外開展跨時區業務的用戶在使用中經常被時區所困擾。3.0.0 支持時區切換後,失去問題迎刃而解,滿足海外用戶和出海業務伙伴的需求。例如,如當企業業務涉及的時區包含東八區和西五區,想要使用同一個 DolphinScheduler 集群時,可以分別創建多個用戶,每個用戶使用自己當地時區,對應 DolphinScheduler 對象顯示的時間均會切換為對應時區的當地時間,更加符合當地開發者的使用習慣。   詳見 鏈接:https://dolphinscheduler.apache.org/zh-cn/docs/3.0.0/user_doc/guide/howto/general-setting.html

 

任務定義列表

使用 Apache DolphinScheduler 3.0.0 此前版本,用戶如果想要操作任務,需要先找到對應的工作流,併在工作流中定位到任務的位置之後才能編輯。然而,當工作流數量變多或單個工作流有較多的任務時,找到對應任務的過程將會變得非常痛苦,這不是 Apache DolphinScheduler 所追求的 easy to use 理念。所以,我們在 3.0.0 中增加了任務定義頁面,讓用戶可以通過任務名稱快速定位到任務,並對任務進行操作,輕鬆實現批量任務變更。 詳見 鏈接:https://dolphinscheduler.apache.org/zh-cn/docs/3.0.0/user_doc/guide/project/task-instance.html  

 

新告警類型支持

在 3.0.0 中,告警類型也進行了擴展,我們增加了對 Telegram、Webexteams 告警類型的支持。   ​  

Python API 新功能

3.0.0 中,Python API 最大的變化是將對應的 PythonGatewayServer 集成到了 API-Server 服務, 並將其重命名 PythonGatewayService, 現在用戶在啟動 api-server 時會預設啟動 PythonGatewayService;如果不想要啟動 PythonGatewayService,可以將 application.yaml 中的 python-gateway.enabled 設置成 false。   此外, Python API 還增加了 CLI 和 configuration 模塊。Configuration 模塊允許用戶修改 Python API 預設的配置, 如修改工作流預設的用戶名、worker 分組等內容, 可以通過環境變數、直接修改文件、Python 動態修改來改變值。  
# environment variable
export PYDS_JAVA_GATEWAY_ADDRESS="192.168.1.1"
export PYDS_WORKFLOW_USER="custom-user"
# file change
Directly change ~/pydolphinscheudler/config.yaml
# CLI
pydolphinscheduler config --set java_gateway.address 192.168.1.1
pydolphinscheduler config --set java_gateway.address 192.168.1.1 --set java_gateway.port 25334

 

  目前 CLI 只有 version 和 config 兩個子命令, 用於確認當前版本以及增刪配置文件。後續,我們將引入更加多功能,方便用戶通過命令行操作 DolphinScheduler。  
# version
pydolphinscheduler verison
# 3.0.0
# config
pydolphinscheduler config --get java_gateway.address --get java_gateway.port
# The output look like below:
# java_gateway.address = 127.0.0.1
# java_gateway.port = 25333
pydolphinscheduler config --set java_gateway.address 192.168.1.1 --set java_gateway.port 25334

 

  

  值得註意的是,Python API 還支持新增和上傳資源中心文件功能,方便資源管理;支持同一個 project 不同 workflow 寫入不同名稱;增加集成測試,讓測試更加便捷。  

此前版本未公佈的功能和特性更新

支持 Flink 任務類型

在該版本中,我們擴展了 Flink 任務類型,使其支持運行 Flink SQL 任務,其使用 sql-client.sh 提交任務。在此前的版本中, 我們僅支持通過 flink cli 的方式提交任務, 這種方式需要結合資源中心, 將資源文件提交到資源中心, 然後在任務定義頁面引用改資源, 對於版本化和用戶透明都不是十分友好. 隨著 flink sql 逐漸成為 flink 使用者的主流, 加之直接在編輯頁面寫 sql 更加用戶透明, 我們採納了向社區貢獻的 flink sql 功能. 3.0.0 以後的版本用戶可以更加方便的使用 flink 任務了。 更多詳情查看:[flink sql client](https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/sqlclient/) 對應 PR:https://github.com/apache/dolphinscheduler/pull/9840      

新增 Zepplin 任務類型

  在該版本中,我們增加了 Zeppelin 任務類型,用於創建並執行 Zeppelin 類型任務。Worker 執行該任務時,會通過 Zeppelin Cient API 觸發 Zeppelin Notebook 段落。   對應PR:https://github.com/apache/dolphinscheduler/pull/9810   ​  

Bash 傳參功能

新版本還新增了通過 bash 傳參的功能,如果你想在下游任務中使用 bash 變數而不是常量值 export 參數,你可以在通過 setValue 和 Bash 變數實現,它更加靈活,可以讓你動態地獲取現有的本地或 HTTP 資源獲取設定變數。 可以使用類似的語法  
lines_num=$(wget https://raw.githubusercontent.com/apache/dolphinscheduler/dev/README.md -q -O - | wc -l | xargs)echo "#{setValue(set_val_var=${lines_num})}"

 

 

允許用戶上傳沒有尾碼的文件

  之前資源中心只能上傳有尾碼的文件,在 3.0.0 版本後,我們支持用戶上傳沒有尾碼的文件。  

 

其他功能增強

除了上述功能新增外,3.0.0 版本還進行了很多細節功能增強,如重構任務插件、數據源插件模塊,讓擴展更簡單;恢復了對 Spark SQL 的支持;E2E 測試已經完美相容新 UI 等。  

 

主要優化項

  • 任務後端插件優化,新插件只需要修改插件自帶的模塊
  • 在工作流下提交/創建 cron 時驗證結束時間和開始時間
  • Dependent 添加依賴時可以選擇全局項目
  • AlertSender 優化及關閉優化,如 MasterServer
  • 增加 slot 條件查詢資料庫, 減少返回數據記錄
  • 通過將 python gatewar 遷移到 apiserver 來精簡 dist 包
  • [python] 將 pythonGatewayServer 遷移到 api 伺服器
  • [python] 添加缺失的配置和連接遠程伺服器文檔
  • [Master/Worker] 將任務 ack 更改為運行回調
  • [Master] 添加任務事件線程池
 

 

主要 Bug 修複

  • 修複使用 S3a Minio 創建租戶失敗的問題
  • 修複文本文件 busy 的問題
  • 修複項目授權時生成一個重覆授權項目的問題
  • 修複因無法連接到 postgresql 而啟動伺服器失敗的問題
  • 修複消息顯示找不到數據源插件“Spark”的問題
  • 修複 MapReduce 生成的命令內置參數位置錯誤的問題
  • 解決更改參數用戶,隊列在 ProcessDefinition 中失效的問題
  • 解決使用依賴組件的進程無法在測試和生產環境之間遷移
  • 解決了資源文件刪除條件的問題
  • 修複編輯複製節點的表單時影響原始節點數據的問題
  • 解決了 Worker 資源耗盡並導致停機的問題
  • 解決了某些類型的警報無法顯示項目名稱的問題
  • 3.0.0 各個部署方式出現的問題
  • 任務組為空時頁面報錯問題
  • treemap 視圖深度錯誤問題
  • 告警信息不明確問題:告警組為空時報錯信息不明確,批量刪除工作流有異常時報錯信息不明確,租戶內容錯長的錯誤提示,刪除
  • 參數校驗問題:數據源中心的參數校驗問題,修改密碼時密碼不一致提示,發告警前校驗 alert scriptb
  • Python api:不能設置 release state 問題,本地參數有值但是校驗失敗問題
  • token 查詢不遵循時區問題
  • 修複 HTTPS 和 HTTP 字元串識別問題
  • 修複 alert server 健康監測失效問題
  • 修複 condition 任務分支失敗問題
  • 修複 docker 鏡像不支持多平臺問題
  • 修複帶有任務組優先順序的工作流創建時不能正確寫資料庫的問題
  • master 任務的失效問題
  • 修複串列等待不運行的問題
  • 時區問題:調度時區錯誤問題,日誌增加時區支持
  • 重新運行、暫停工作流實例失敗問題
  • 資源中心實例化失敗問題
  • 修複郵件告警模板分隔線問題
  • 修複Standalone模式下數據初始化問題
  • 修複監控中心DB不存在時的頁面展示問題
  • 修複創建工作流參數無效問題
  • 修複K8S部署時zookeeper埠異常問題
  • 修複Standalone模式下服務啟動失敗問題
  • 修複LDAP登錄失敗問題
  • Python api: 修複同一個項目下不同工作流的任務組件名稱不支持重名問題
  • Python api: 修複SQL任務組件SQL類型錯誤問題
  • 修複資源文件重命名錶單異常問題
  • 修複根據定時設置獲取工作流可執行時間錯誤問題
  • 升級了Logback、Log4j等模塊依賴
  • 修複任務失敗問題
  • 修複好HDFS NPE 問題
  • 修複任務組異常導致master死鎖問題
  • 修複一些列穩定性問題
 

文檔修改

  • 更正部署文檔
  • 修複、更新部分使用文檔:WebexTeams 中文文檔,本地參數、全局參數文檔,Kubernetes FAQ 文檔,Spark 註意事項文檔,DataX 使用文檔,刪除 Flink API 文檔,修複 open-api 的錯誤,修複數據質量中的錯誤文檔;新增 stand-alone 切換資料庫文檔;新增 shell 中判斷 Yarn 運行狀態文檔;新增更新系統截圖; 參數傳遞、全局參數、參數優先順序文檔,告警組件嚮導、Telegram、釘釘告警文檔,告警FAQ文檔,Shell組件文檔,Switch任務組件文檔,資源中心配置詳情文檔,工作流定義補數文檔
  • 更正部分開發文檔:明確支持的操作系統,修複開發環境搭建文檔,新增自己構建 docker 鏡像文檔
 

 

Release note

GitHub: https://github.com/apache/dolphinscheduler/releases/tag/3.0.0   下載:https://dolphinscheduler.apache.org/en-us/download/download.html  

 

感謝貢獻者

Aaron Lin、Amy0104、Assert、BaoLiang、Benedict Jin、BenjaminWenqiYu、Brennan Fox、Dannila、Desperado2、Devosend、DingPengfei、DuChaoJiaYou、EdwardYang、Eric Gao、Frank Chen、GaoTianDuo、HanayoZz、HeChuan、HomminLee、Hua Jiang、Hwting、Ivan0626、Jeff Zhan、Jiajie Zhong、JieguangZhou、Jiezhi.G、JinYong Li、J·Y、Kerwin、Kevin.Shin、KingsleyY、Kirs、KyoYang、LinKai、LiuBodong、LongJGun、Luke Yan、Lyle Shaw、Manhua、Martin Huang、Maxwell、Molin Wang、Mr.An、OS、PJ Fanning、Paul Zhang、QuakeWang、ReonYu、SbloodyS、Sheldon、Shiwen Cheng、ShuiMuNianHuaLP、ShuoTiann、SongTao Zhuang、Stalary、Sunny Lei、Tom、Town、Tq、WangJPLeo、Wenjun Ruan、X&Z、XiaochenNan、Yanbin Lin、Yao WANG、Yiming Guo、Zonglei Dong、aCodingAddict、aaronlinv、aiwenmo、caishunfeng、calvin、calvinit、cheney、chouc、chuxing、czeming、devosend、exmy、gaojun2048、guodong、guoshupei、hjli、hstdream、huangxiaohai、janeHe13、jegger、jiachuan.zhu、jon-qj、juzimao、kezhenxu94、labbomb、leiwingqueen、lgcareer、lhjzmn、lidongdai、lifeng、lilyzhou、litiliu、liubo1990、liudi1184、longtb、lvshaokang、lyq、mans2singh、mask、mazhong、mgduoduo、myangle1120、naziD、nobolity、ououtt、ouyangyewei、pinkhello、qianli2022、qinchaofeng、rickchengx、rockfang、ronyang1985、seagle、shuai hou、simsicon、sneh-wha、songjianet、sparklezzz、springmonster、sq-q、syyangs799、uh001、wangbowen、wangqiang、wangxj3、wangyang、wangyizhi、wind、worry、wqxs、xiangzihao、xiaodi wang、xiaoguaiguai、xuhhui、yangyunxi、yc322、yihong、yimaixinchen、youzipi、zchong、zekai-li、zhang、zhangxinruu、zhanqian、zhuxt2015、zixi0825、zwZjut、天仇、小張、弘樹丶、張俊傑、旭旭同學、時光、旺陽、王強、百歲、秋天、羅銘濤、阿福Chris、陳家名、陳爽、飛俠美如畫  

參與貢獻

  隨著國內開源的迅猛崛起,Apache DolphinScheduler 社區迎來蓬勃發展,為了做更好用、易用的調度,真誠歡迎熱愛開源的伙伴加入到開源社區中來,為中國開源崛起獻上一份自己的力量,讓本土開源走向全球。   參與 DolphinScheduler 社區有非常多的參與貢獻的方式,包括:   ​     貢獻第一個PR(文檔、代碼) 我們也希望是簡單的,第一個PR用於熟悉提交的流程和社區協作以及感受社區的友好度。   社區彙總了以下適合新手的問題列表:https://github.com/apache/dolphinscheduler/issues/5689   非新手問題列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22   如何參與貢獻鏈接:https://dolphinscheduler.apache.org/zh-cn/community/development/contribute.html   來吧,DolphinScheduler開源社區需要您的參與,為中國開源崛起添磚加瓦吧,哪怕只是小小的一塊瓦,匯聚起來的力量也是巨大的。   參與開源可以近距離與各路高手切磋,迅速提升自己的技能,如果您想參與貢獻,我們有個貢獻者種子孵化群(Leonard-ds) ,手把手教會您( 貢獻者不分水平高低,有問必答,關鍵是有一顆願意貢獻的心 )。   添加小助手時請說明想參與貢獻。   來吧,開源社區非常期待您的參與。   活動推薦   Apache DolphinScheduler社區8月聯合了Apache Kylin社區,共同舉辦Meetup主題為《大數據底座的構建與展望,助力企業數字化轉型》即將重磅開啟!我們也有幸邀請到了來自伊利、T3出行、白鯨開源、Apache Kylin社區等企業的資深大數據工程師與開發者,從數據分析引擎、數據調度、數字化轉型、維護開源視角等話題探討在兩個開源項目的開發實踐。  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 老闆加薪!看我做的WPF Loading!!! 控制項名:RingLoading 作者:WPFDevelopersOrg 原文鏈接: https://github.com/WPFDevelopersOrg/WPFDevelopers 框架使用大於等於.NET40; Visual Studio 2022 ...
  • 基於.NetCore的積木化服務框架(Gitee地址),主要將常規解決方案進行進一步的抽象下沉形成相關基礎可選框架單元(在Framework 目錄),併在此基礎上實現常規系統模塊(在Modules 目錄),如用戶管理,許可權管理等。 當前項目,目的是為了提供一個思路,而不是模板。除了 Framewor ...
  • 此案例是《.Net WebView2 項目,實現 嵌入 WEB 頁面 Chromium內核》文的續集。 主要是針對WebView2的一些微軟自己封裝的不熟悉的API,有一些人已經對 PuppeteerSharp很熟悉了,那麼,直接用 PuppeteerSharp的話,那就降低了學習成本,那還是很有必 ...
  • 1.避免Scoped模式註冊的服務變成Singleton模式 當提供一個生命周期模式為Singleton的服務實例時,如果發現該服務中還依賴生命周期模式為Scoped的服務實例(Scoped服務實例將被一個Singleton服務實例所引用),那麼這個被依賴的Scoped服務實例最終會成為一個Sing ...
  • 作為一個沒有系統學習過依賴註入的開發者而言,如果直接在一個使用依賴註入的框架下進行開發,往往對於依賴註入的存在是沒有明顯的察覺,通過代碼追根溯源你都會看不出對象是從哪裡創建的。但這並不影響你進行開發的工作,你可以參照現有代碼的使用形式,將需要使用的對象加入到構造函數的參數列表上,你就可以使用對象,調 ...
  • 1.JDBC體繫系統 一組規範:介面 JDBC介面(API)包括兩個層次: 面嚮應用的API:Java API,抽象介面,供應用開發人員使用(連接資料庫,執行SQL語句,獲得結果) 面向資料庫的API:Java Driver API,供開發商開發資料庫驅動程式 JDBC是sun公司提供一套用於資料庫 ...
  • 3. ETCD 常用命令 etcdctl是一個命令行的客戶端,它提供了一些命令,可以方便我們在對服務進行測試或者手動修改資料庫內容。etcdctl與kubectl和systemctl的命令原理及操作類似,其基本用法如下所示: etcdctl [global options] command [com ...
  • 前言 最近在centos8系統下部署django項目時,要用到mysql資料庫,在安裝中遇到了點坑,之後參考了一位博主的文章,也是順利的安裝配置成功,博主原文連接: []((20條消息) centos8安裝mysql8.0.22教程(超詳細)_上善若水滴世界的博客-CSDN博客_centos mys ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...