亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于國(guó)產(chǎn)操作系統(tǒng)對(duì)開(kāi)源軟件集成開(kāi)發(fā)的研究與應(yīng)用

        2023-07-10 09:10:56陳吉寧黃季洋

        陳吉寧 黃季洋

        關(guān)鍵詞:國(guó)產(chǎn)操作系統(tǒng);開(kāi)源軟件;集成開(kāi)發(fā);JMeter

        中圖法分類號(hào):TP316 文獻(xiàn)標(biāo)識(shí)碼:A

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

        1開(kāi)源軟件集成開(kāi)發(fā)分析

        1.1國(guó)產(chǎn)操作系統(tǒng)上搭建開(kāi)發(fā)環(huán)境

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

        1.2依賴的管理

        依賴(dependencies)是各種軟件開(kāi)發(fā)項(xiàng)目中不可或缺的一部分,依賴可以理解為開(kāi)發(fā)者要調(diào)用的附加代碼?,F(xiàn)在的開(kāi)發(fā)離不開(kāi)各式各樣的依賴支撐,我們對(duì)開(kāi)源軟件進(jìn)行集成開(kāi)發(fā)時(shí)碰到所需的依賴在項(xiàng)目中沒(méi)有提供,則需要引入外部依賴到項(xiàng)目中。以Java和Python為例,分析二者的依賴管理方式。

        (1) Java。

        早期Java項(xiàng)目的依賴管理全靠開(kāi)發(fā)者自己搜羅相關(guān)的依賴Jar包,然后導(dǎo)人本地項(xiàng)目中,隨著Java開(kāi)發(fā)的各種輔助插件工具的演變,現(xiàn)在的依賴管理工具已經(jīng)可以從遠(yuǎn)程倉(cāng)庫(kù)中下載和安裝對(duì)應(yīng)依賴包。在Java開(kāi)發(fā)的依賴管理中,較為知名的有Maven和Gradle等。

        由Apache

        Maven進(jìn)行依賴管理的項(xiàng)目引入新依賴比較簡(jiǎn)單,前往mvnrepository.com或其他途徑查詢所需依賴的引入代碼,找到項(xiàng)目根目錄下的pom.xml文件,在的標(biāo)簽內(nèi)添加所需依賴的代碼,然后刷新項(xiàng)目即可自動(dòng)下載安裝。

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

        (2) Python。

        pip(package installer for Python)是用于管理Python中包的默認(rèn)工具。通過(guò)命令行執(zhí)行pip install相關(guān)依賴來(lái)完成對(duì)依賴的引入。部分Python開(kāi)源軟件會(huì)提供一個(gè)requirements. txt文檔來(lái)指導(dǎo)用戶安裝所需的依賴,使用pip install-r requirements.txt即可完成依賴的下載與安裝。

        Conda是一個(gè)通用的虛擬環(huán)境工具,在進(jìn)行多個(gè)Python開(kāi)源軟件開(kāi)發(fā)時(shí),可以使用Conda生成多個(gè)虛擬環(huán)境來(lái)安裝不同的依賴,以提高各個(gè)項(xiàng)目的獨(dú)立性。

        1.3代碼結(jié)構(gòu)的分析

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

        JMeter對(duì)每個(gè)子模塊進(jìn)行單獨(dú)管理,實(shí)現(xiàn)其極高的開(kāi)放性和可再開(kāi)發(fā)性。并非所有開(kāi)源軟件的代碼結(jié)構(gòu)都如JMeter復(fù)雜,小型的開(kāi)源軟件項(xiàng)目結(jié)構(gòu)單一,代碼文件較少,也存在代碼復(fù)用性、可讀性差的開(kāi)源軟件。

        2基于JMeter的二次開(kāi)發(fā)實(shí)例

        本次JMeter二次開(kāi)發(fā)實(shí)例采用的是JMeter5.5版本,涉及引入依賴、函數(shù)插件的開(kāi)發(fā)、取樣器插件的開(kāi)發(fā)3個(gè)環(huán)節(jié),均在國(guó)產(chǎn)桌面整機(jī)寶德PT620K上完成,該整機(jī)搭載了ARM架構(gòu)的國(guó)產(chǎn)處理器鯤鵬920,操作系統(tǒng)則為統(tǒng)信UOSV20(1050)。

        2.1引入所需外部依賴

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

        2.2函數(shù)插件的設(shè)計(jì)與開(kāi)發(fā)

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

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

        2.3取樣器插件的設(shè)計(jì)與開(kāi)發(fā)

        取樣器(Sampler)為JMeter性能測(cè)試中的一個(gè)重要組件,平時(shí)針對(duì)Web應(yīng)用系統(tǒng)的性能測(cè)試需要先創(chuàng)建取樣器中的HTTP請(qǐng)求。相較于函數(shù)插件,取樣器插件的二次開(kāi)發(fā)賦予開(kāi)發(fā)者的自由度更高,能實(shí)現(xiàn)的功能也更多,不受性能測(cè)試的限制。取樣器模塊位于JMeter源碼src文件夾下的protocol,protocol文件夾下還有許多以協(xié)議命名的子模塊。

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

        如圖5所示,核心邏輯方法需要重寫runTest()來(lái)實(shí)現(xiàn),使用SampleResult設(shè)置取樣器在前臺(tái)的回顯,并可以通過(guò)setSuccessful規(guī)定本方法的調(diào)用成功與否,logger.info記錄的日志會(huì)同步在JMeter前臺(tái)顯示。當(dāng)人參數(shù)字不是反數(shù)時(shí),該Java請(qǐng)求取樣器會(huì)響應(yīng)失敗,反之則會(huì)響應(yīng)成功。

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

        2.4開(kāi)發(fā)功能展示

        (1)新增的函數(shù)插件功能如圖7所示,提供了明文和公鑰2個(gè)入?yún)?,點(diǎn)擊生成后即可輸出經(jīng)過(guò)RSA加密過(guò)后的密文,同時(shí)會(huì)生成函數(shù)字符串,可以直接在性能測(cè)試腳本中調(diào)用。

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

        3結(jié)束語(yǔ)

        本文針對(duì)不同開(kāi)發(fā)語(yǔ)言的開(kāi)源軟件在國(guó)產(chǎn)操作系統(tǒng)上如何進(jìn)行集成開(kāi)發(fā)進(jìn)行了歸納分析,以JMeter為例分析了其代碼結(jié)構(gòu),完成了引入外部依賴和函數(shù)、取樣器插件的開(kāi)發(fā)。集成開(kāi)發(fā)所增添的功能很好地豐富了JMeter的使用場(chǎng)景,與國(guó)產(chǎn)操作系統(tǒng)互補(bǔ),給用戶提供更多的便利。

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

        作者簡(jiǎn)介:

        陳吉寧(1980—),碩士,研究方向:計(jì)算機(jī)應(yīng)用與網(wǎng)絡(luò)安全。

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

        一区二区午夜视频在线观看| 亚洲欧美日韩国产一区| 加勒比日本东京热1区| 日韩黄色大片免费网站| 国产在线无码一区二区三区视频| 亚洲精品少妇30p| 欧美xxxx黑人又粗又长精品| 小13箩利洗澡无码免费视频| 亚洲精品一区二区三区在线观| 97人伦影院a级毛片| 亚洲av一宅男色影视| 色婷婷精品综合久久狠狠| 国产在线观看女主播户外| 中文字幕人妻在线中字| 亚洲精品国产第一区二区尤物| 国产亚洲欧美在线播放网站| 青青草视频在线观看精品在线 | 人人妻人人澡人人爽人人精品电影| 亚洲日产AV中文字幕无码偷拍| 日本亚洲中文字幕一区| 亚洲精品无码av人在线播放| 国产在线丝袜精品一区免费| 在线免费观看亚洲毛片| 亚洲精品粉嫩美女一区| 国产va在线观看免费| 日本女优中文字幕看片| 国产愉拍91九色国产愉拍| 男人扒开添女人下部免费视频| 国产亚洲日韩欧美一区二区三区| 国产一级黄色av影片| 日韩精品人妻中文字幕有码在线| 黑人巨大无码中文字幕无码| 久久精品性无码一区二区爱爱| 亚洲精品国产av成拍色拍| 亚洲日韩激情无码一区| 国产精品久久国产精麻豆99网站| 亚洲视频在线观看青青草| 91中文人妻熟女乱又乱| 精品无码中文视频在线观看| 99久久国语露脸国产精品| 久久99精品国产麻豆|