999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于國產操作系統對開源軟件集成開發的研究與應用

2023-07-10 14:00:32陳吉寧黃季洋
計算機應用文摘 2023年11期

陳吉寧 黃季洋

關鍵詞:國產操作系統;開源軟件;集成開發;JMeter

中圖法分類號:TP316 文獻標識碼:A

近年來,越來越多的單位開始進行國產化替代,用戶開始從Windows操作系統轉向國產操作系統。但在用戶使用過程中,一系列問題也開始暴露出來,如國產軟件生態的系統不完善、應用程序不豐富、缺乏相應的軟件體系和軟件工程方法等。開源軟件是一種版權持有人向公眾公開軟件源代碼,并允許公眾下載、編譯的軟件,在整個軟件行業中占有重要地位,其開發模式成為技術創新和推動軟件產業發展的主要方式。引入開源軟件可以很好地增添當下國產軟件生態的多樣性,豐富用戶的國產平臺使用體驗。通過對開源軟件的二次開發,能更好地實現本地化功能,更有利于貼合用戶使用場景,進而滿足各種繁雜的工作需求。

1開源軟件集成開發分析

1.1國產操作系統上搭建開發環境

經過國產操作系統不斷的更新迭代,目前對開發環境的支持已經足夠完善。即便是ARM架構的國產處理器平臺也具備了和Windows平臺相近的開發體驗。以目前主流的統信UOS和銀河麒麟Kylin為例,系統本身自帶JDK11和Python2,Python3,故搭建環境就只需要安裝集成開發環境(IDE)。截至目前,將統信UOS更新到最新版本1050,即可從應用商店中安裝Java開發常用的Intellij idea的免費社區版、Python開發常用的PyCharm等開發環境。其實際上的使用與Windows平臺并無太大區別,即可開始開發。

1.2依賴的管理

依賴(dependencies)是各種軟件開發項目中不可或缺的一部分,依賴可以理解為開發者要調用的附加代碼。現在的開發離不開各式各樣的依賴支撐,我們對開源軟件進行集成開發時碰到所需的依賴在項目中沒有提供,則需要引入外部依賴到項目中。以Java和Python為例,分析二者的依賴管理方式。

(1) Java。

早期Java項目的依賴管理全靠開發者自己搜羅相關的依賴Jar包,然后導人本地項目中,隨著Java開發的各種輔助插件工具的演變,現在的依賴管理工具已經可以從遠程倉庫中下載和安裝對應依賴包。在Java開發的依賴管理中,較為知名的有Maven和Gradle等。

由Apache

Maven進行依賴管理的項目引入新依賴比較簡單,前往mvnrepository.com或其他途徑查詢所需依賴的引入代碼,找到項目根目錄下的pom.xml文件,在的標簽內添加所需依賴的代碼,然后刷新項目即可自動下載安裝。

Gradle是一個基于Apache Ant和Apache Maven概念的項目自動化構建開源工具,與Maven類似,前往mvnrepository.com或其他途徑查詢到所需依賴的引入代碼,找到項目中的build. gradle文件或build.gradle.kts(Kotlin),粘貼到dependencies{}的花括號中,重新加載項目即可自動下載安裝。

(2) Python。

pip(package installer for Python)是用于管理Python中包的默認工具。通過命令行執行pip install相關依賴來完成對依賴的引入。部分Python開源軟件會提供一個requirements. txt文檔來指導用戶安裝所需的依賴,使用pip install-r requirements.txt即可完成依賴的下載與安裝。

Conda是一個通用的虛擬環境工具,在進行多個Python開源軟件開發時,可以使用Conda生成多個虛擬環境來安裝不同的依賴,以提高各個項目的獨立性。

1.3代碼結構的分析

若要對一款開源軟件進行二次開發,則必須了解它的項目代碼結構,才能針對功能需求下手。以JMeter 5.5的源碼為例,src文件夾存放的是JMeter核心源代碼,其中又分為眾多的模塊,如bom,bshclient,config,core,functions等。如圖1所示,可以看到src下每個模塊展開后的結構都是一個獨立的小項目,有自己的src文件夾存放源代碼,也有build文件夾存放編譯后的class文件。部分功能模塊有resouces文件夾存放資源文件,也有其單獨的build.gradle.kts依賴管理文件。

JMeter對每個子模塊進行單獨管理,實現其極高的開放性和可再開發性。并非所有開源軟件的代碼結構都如JMeter復雜,小型的開源軟件項目結構單一,代碼文件較少,也存在代碼復用性、可讀性差的開源軟件。

2基于JMeter的二次開發實例

本次JMeter二次開發實例采用的是JMeter5.5版本,涉及引入依賴、函數插件的開發、取樣器插件的開發3個環節,均在國產桌面整機寶德PT620K上完成,該整機搭載了ARM架構的國產處理器鯤鵬920,操作系統則為統信UOSV20(1050)。

2.1引入所需外部依賴

本文在開發functions功能模塊時,發現JMeter自帶的Json相關依賴并不能滿足需求,需要引入外部依賴org.json,該依賴提供了眾多Json解析方法。第一步則是前往mvnrepository.com查詢需要的依賴,并復制該依賴的Gradle引入代碼,如implementation("org.json:json:20220924")。第二步是將復制的引入代碼粘貼到functions下的build.gradle.kts文件中,如圖2所示,然后重新加載Gradle項目即可自動下載和安裝該依賴。

2.2函數插件的設計與開發

JMeter的函數插件是二次開發中廣泛使用的模塊,函數插件可以通過JMeter圖形化中的工具→函教助手對話框進行調用,還可以嵌入性能測試腳本中進行調用。函數插件模塊位于JMeter源碼src文件夾下的functions,JMeter原生的函數插件都繼承自AbstractFunction,這是JMeter提供的抽象類方法,其中規定了函數插件的4種重寫方法。

鑒于目前Web應用系統大多使用加密算法對用戶賬號密碼進行加密,自然性能測試中也會涉及對賬號密碼加密的流程,JMeter原生插件中并沒有主流RSA算法的加解密插件,本文就對此進行二次開發。于functions下的src/main/java/org. apache.jmeter.funcitons新建Java類,部分代碼如圖3所示,通過setParameters()規定了僅接受2個人參,分別是明文和公鑰,重寫getReferenceKey(),告訴JMeter此函數在框架中的應用名稱,重寫getArgumentDesc()將人參名稱集合List返回給JMeter,通過execute()實現了RSA中使用公鑰對明文進行加密并輸出密文的處理邏輯。

2.3取樣器插件的設計與開發

取樣器(Sampler)為JMeter性能測試中的一個重要組件,平時針對Web應用系統的性能測試需要先創建取樣器中的HTTP請求。相較于函數插件,取樣器插件的二次開發賦予開發者的自由度更高,能實現的功能也更多,不受性能測試的限制。取樣器模塊位于JMeter源碼src文件夾下的protocol,protocol文件夾下還有許多以協議命名的子模塊。

本文選取了java請求類型進行二次開發,設計了一個簡單的驗證輸入數字是否存在反數的功能,于protocol/java/src/main/java/org. apache. jmeter.protocol.java.test下新建Java類,同樣需要繼承自JMeter提供的AbstractjavaSamplerClient。實現方式仍是重寫父類中的實現方法來實現自己的邏輯。如圖4所示,重寫getDefaultParameters(),設置參數名為num,默認值為空字符串,重寫setupTest(),讓每個線程執行前獲取人參賦予方法中的變量x。

如圖5所示,核心邏輯方法需要重寫runTest()來實現,使用SampleResult設置取樣器在前臺的回顯,并可以通過setSuccessful規定本方法的調用成功與否,logger.info記錄的日志會同步在JMeter前臺顯示。當人參數字不是反數時,該Java請求取樣器會響應失敗,反之則會響應成功。

最后,如圖6所示,還可以重寫teardownTest(),在整個取樣器執行完畢后再執行個性化的邏輯,本文編制了一個返回測試結果的簡單邏輯。

2.4開發功能展示

(1)新增的函數插件功能如圖7所示,提供了明文和公鑰2個入參,點擊生成后即可輸出經過RSA加密過后的密文,同時會生成函數字符串,可以直接在性能測試腳本中調用。

(2)新增的取樣器插件功能如圖8所示,需要先創建線程組,然后新建取樣器中的Java請求,在右側下拉選擇新增的Java請求功能。當輸入的num為反數時,執行該線程組后,在結果樹中的輸出為:請求成功,結果為0。當輸入的num為負數時,結果樹中的輸出為:請求失敗,結果為-1。

3結束語

本文針對不同開發語言的開源軟件在國產操作系統上如何進行集成開發進行了歸納分析,以JMeter為例分析了其代碼結構,完成了引入外部依賴和函數、取樣器插件的開發。集成開發所增添的功能很好地豐富了JMeter的使用場景,與國產操作系統互補,給用戶提供更多的便利。

本文的不足在于沒有更廣泛地研究、探索JMeter等大型開源軟件的功能模塊,如JMeter仍有眾多值得集成開發的功能有待掌握。希望更多的開源軟件能夠擁抱國產平臺,以及更多的開發者加入二次開發的行列中來,以降低用戶的使用門檻、豐富信創軟件生態。

作者簡介:

陳吉寧(1980—),碩士,研究方向:計算機應用與網絡安全。

黃季洋(1997—),本科,研究方向:Java編程與軟件編譯。

主站蜘蛛池模板: 欧美在线免费| 精品黑人一区二区三区| 国产精品免费入口视频| 亚洲AV无码乱码在线观看裸奔| a欧美在线| 在线va视频| 久久77777| 亚洲有无码中文网| 亚洲最猛黑人xxxx黑人猛交| 99在线观看视频免费| 亚洲毛片一级带毛片基地| 久久99久久无码毛片一区二区| 欧美日本激情| 欧美精品亚洲二区| 5555国产在线观看| 国产国产人免费视频成18| 99这里只有精品免费视频| 伊人久久福利中文字幕| 亚洲人成色77777在线观看| 国产精品白浆无码流出在线看| 亚洲一级毛片在线播放| 91成人免费观看在线观看| 久久99热这里只有精品免费看| 天堂岛国av无码免费无禁网站 | 亚洲AⅤ波多系列中文字幕| 91视频区| 国语少妇高潮| 色噜噜狠狠狠综合曰曰曰| 日韩经典精品无码一区二区| 青青青国产视频| 在线观看免费人成视频色快速| 91精品国产情侣高潮露脸| 色爽网免费视频| 国产99视频精品免费视频7| 欧美精品在线观看视频| 伊人丁香五月天久久综合 | 久久青草视频| 婷婷丁香色| 久久久久亚洲av成人网人人软件| 亚洲男人的天堂在线| 亚洲无线国产观看| 亚洲欧美综合在线观看| 国产后式a一视频| 99re精彩视频| 精品视频一区二区观看| 看国产一级毛片| 国产主播在线一区| 9丨情侣偷在线精品国产| 97精品伊人久久大香线蕉| 992tv国产人成在线观看| 欧美国产日韩在线| 最新精品久久精品| 99精品伊人久久久大香线蕉| 大香网伊人久久综合网2020| 996免费视频国产在线播放| 激情无码字幕综合| 精品91视频| 久久黄色小视频| 欧美一区二区福利视频| 亚洲三级色| 国产白浆视频| 国产99精品久久| 国产一区二区色淫影院| 天天综合网色| 久久国产精品无码hdav| 99热这里只有精品国产99| 免费观看男人免费桶女人视频| 午夜影院a级片| www.99在线观看| 超薄丝袜足j国产在线视频| 亚洲精品国产乱码不卡| 老熟妇喷水一区二区三区| 毛片免费视频| 欧美精品伊人久久| 欧美精品一二三区| 久久精品亚洲专区| 久久免费看片| 熟女成人国产精品视频| 欧洲成人免费视频| 亚洲欧美日韩中文字幕在线| 亚洲码在线中文在线观看| 亚洲全网成人资源在线观看|