本發(fā)明涉及二維碼生成技術(shù)領(lǐng)域,特別涉及一種基于多線程的二維碼生成方法及系統(tǒng)。
背景技術(shù):
近年來(lái),隨著智能手機(jī)技術(shù)的發(fā)展與普及,通過(guò)手機(jī)等移動(dòng)智能終端設(shè)備,獲得二維碼承載相關(guān)信息與服務(wù)的應(yīng)用已經(jīng)深入普及用戶,二維碼已經(jīng)逐漸從封閉系統(tǒng)應(yīng)用向開放系統(tǒng)應(yīng)用轉(zhuǎn)變,二維碼的生成效率日益成為人們關(guān)注的焦點(diǎn)。
傳統(tǒng)生成二維碼的方法是以串行的方式執(zhí)行的,需要執(zhí)行完畢一個(gè)函數(shù)后,才會(huì)執(zhí)行另一個(gè)函數(shù);系統(tǒng)不穩(wěn)定,如果有一部分代碼運(yùn)行特別耗時(shí),那么后面的語(yǔ)句必須等到耗時(shí)操作結(jié)束后才能繼續(xù)運(yùn)行,這時(shí)系統(tǒng)就有可能會(huì)失去響應(yīng),二維碼的生成效率較低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種基于多線程的二維碼生成方法和系統(tǒng),目的在于解決傳統(tǒng)的二維碼生成方法的二維碼生成效率低,系統(tǒng)響應(yīng)時(shí)間長(zhǎng),系統(tǒng)穩(wěn)定性不高的問題。
為解決上述問題,本發(fā)明實(shí)施例提供一種基于多線程的二維碼生成方法,包括以下步驟:
設(shè)定二維碼參數(shù);
主線程功能模塊實(shí)例化生成子線程功能模塊;
主線程功能模塊獲取二維碼參數(shù)并發(fā)送至子線程功能模塊;
子線程功能模塊根據(jù)二維碼參數(shù)計(jì)算二維碼矩陣;
主線程功能模塊接收子線程功能模塊的二維碼矩陣,根據(jù)所述二維碼矩陣渲染生成二維碼。
作為一種實(shí)施方式,所述二維碼參數(shù)包括二維碼內(nèi)容、二維碼糾錯(cuò)級(jí)別以及二維碼的大小。
作為一種實(shí)施方式,所述二維碼為矩陣式二維碼的一種或多種。
作為一種實(shí)施方式,所述主線程功能模塊獲取二維碼參數(shù)并發(fā)送至子線程功能模塊,包括以下步驟:
主線程功能模塊將二維碼參數(shù)封裝成參數(shù)對(duì)象,并將所述參數(shù)對(duì)象發(fā)送至子線程功能模塊。
作為一種實(shí)施方式,所述子線程功能模塊根據(jù)二維碼參數(shù)計(jì)算二維碼矩陣,包括以下步驟:
子線程功能模塊獲取主線程功能模塊的參數(shù)對(duì)象,根據(jù)所述參數(shù)對(duì)象計(jì)算二維碼矩陣。
作為一種實(shí)施方式,還包括以下步驟:
當(dāng)子線程功能模塊將二維碼矩陣發(fā)送至主線程功能模塊后,關(guān)閉子線程功能模塊。
本發(fā)明實(shí)施例還提供一種基于多線程的二維碼生成系統(tǒng),包括二維碼參數(shù)設(shè)定單元和算法單元,所述算法單元包括主線程功能模塊、實(shí)例化模塊以及子線程功能模塊;
所述二維碼參數(shù)設(shè)定單元,用于設(shè)定二維碼參數(shù);
所述主線程功能模塊,耦接所述二維碼參數(shù)設(shè)定單元和所述子線程功能模塊,用于獲取所述二維碼參數(shù)設(shè)定單元的二維碼參數(shù),將獲取的二維碼參數(shù)發(fā)送至所述子線程功能模塊,并接收所述子線程功能模塊的二維碼矩陣,根據(jù)所述二維碼矩陣渲染生成二維碼;
所述實(shí)例化模塊,耦接所述主線程功能模塊,用于根據(jù)所述主線程功能模塊實(shí)例化生成子線程功能模塊;
所述子線程功能模塊,耦接所述主線程功能模塊,用于獲取所述主線程功能模塊的獲取的二維碼參數(shù),根據(jù)二維碼參數(shù)計(jì)算二維碼矩陣,將所述二維碼矩陣發(fā)送至所述主線程功能模塊。
作為一種實(shí)施方式,所述主線程功能模塊包括獲取子模塊、發(fā)送子模塊以及渲染子模塊;
所述獲取子模塊,耦接所述二維碼參數(shù)設(shè)定單元和子線程功能模塊,用于獲取所述二維碼參數(shù)設(shè)定單元的二維碼參數(shù)和接收所述子線程功能模塊的二維碼矩陣;
所述發(fā)送子模塊,耦接所述封裝子模塊和所述子線程功能模塊,用于將所述封裝子模塊的獲取的二維碼參數(shù)發(fā)送至所述子線程功能模塊;
所述渲染子模塊,耦接所述獲取子模塊,用于根據(jù)所述獲取子模塊接收到的二維碼矩陣渲染二維碼。
作為一種實(shí)施方式,所述述主線程功能模塊還包括封裝子模塊;
所述封裝子模塊,耦接所述獲取子模塊,用于將所述二維碼參數(shù)設(shè)定單元的二維碼參數(shù)封裝成參數(shù)對(duì)象。
作為一種實(shí)施方式,所述子線程功能模塊包括接收解析子模塊、計(jì)算子模塊以及發(fā)送數(shù)據(jù)子模塊;
所述接收解析子模塊,耦接所述主線程功能模塊,用于獲取所述主線程功能模塊的獲取的二維碼參數(shù);
所述計(jì)算子模塊,耦接所述接收解析子模塊,用于根據(jù)所述二維碼參數(shù)計(jì)算二維碼矩陣;
所述發(fā)送數(shù)據(jù)子模塊,耦接所述計(jì)算子模塊和主線程功能模塊,用于將所述計(jì)算子模塊的二維碼矩陣發(fā)送至所述主線程功能模塊。
本發(fā)明相比于現(xiàn)有技術(shù)的有益效果在于:本發(fā)明使用了多線程機(jī)制,使二維碼生成效率更高,在處理速度和響應(yīng)速度上做到了大幅度的提升,系統(tǒng)更穩(wěn)定,真正實(shí)現(xiàn)了多線程編程,提高了系統(tǒng)的資源利用率。
附圖說(shuō)明
圖1為本發(fā)明的基于多線程的二維碼生成方法的工作流程圖;
圖2為本發(fā)明的基于多線程的二維碼生成系統(tǒng)的結(jié)構(gòu)示意圖。
附圖標(biāo)注:1、二維碼參數(shù)設(shè)定單元;2、算法單元;21、主線程功能模塊;211、獲取子模塊;212、封裝子模塊;213、發(fā)送子模塊;214、渲染子模塊;22、實(shí)例化模塊;23、子線程功能模塊;231、接收解析子模塊;232、計(jì)算子模塊;233、發(fā)送數(shù)據(jù)子模塊;234、判斷子模塊。
具體實(shí)施方式
以下結(jié)合附圖,對(duì)本發(fā)明上述的和另外的技術(shù)特征和優(yōu)點(diǎn)進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明的部分實(shí)施例,而不是全部實(shí)施例。
如圖1所示,本發(fā)明實(shí)施例提供一種基于多線程的二維碼生成方法,包括以下步驟:
s100:設(shè)定二維碼參數(shù),二維碼參數(shù)包括二維碼內(nèi)容、二維碼糾錯(cuò)級(jí)別以及二維碼的大?。?/p>
s200:主線程功能模塊21獲取二維碼參數(shù),并將二維碼參數(shù)封裝成參數(shù)對(duì)象;
s300:主線程功能模塊21實(shí)例化生成子線程功能模塊23;
s400:子線程功能模塊23獲取主線程功能模塊21的參數(shù)對(duì)象,根據(jù)參數(shù)對(duì)象計(jì)算二維碼矩陣;
s500:主線程功能模塊21接收子線程功能模塊23的二維碼矩陣,根據(jù)二維碼矩陣渲染生成二維碼,二維碼為矩陣式二維碼的一種或多種。
還包括以下步驟:
s600:當(dāng)子線程功能模塊23將二維碼矩陣發(fā)送至主線程功能模塊21后,關(guān)閉子線程功能模塊23。
如圖2所示,一種基于多線程的二維碼生成系統(tǒng),包括二維碼參數(shù)設(shè)定單元1和算法單元2。二維碼參數(shù)設(shè)定單元1用于設(shè)定二維碼參數(shù),二維碼參數(shù)包括二維碼內(nèi)容、二維碼糾錯(cuò)級(jí)別以及二維碼的大小等。算法單元2包括主線程功能模塊21、實(shí)例化模塊22以及子線程功能模塊23,其中,實(shí)例化模塊22耦接主線程功能模塊21,用于根據(jù)主線程功能模塊21實(shí)例化生成子線程功能模塊23。
主線程功能模塊21包括獲取子模塊211、發(fā)送子模塊213以及渲染子模塊214,獲取子模塊211耦接二維碼參數(shù)設(shè)定單元1和子線程功能模塊23,用于獲取二維碼參數(shù)設(shè)定單元1的二維碼參數(shù)和接收子線程功能模塊23的二維碼矩陣;發(fā)送子模塊213耦接封裝子模塊212和子線程功能模塊23,用于將封裝子模塊212的獲取的二維碼參數(shù)發(fā)送至子線程功能模塊23;渲染子模塊214耦接獲取子模塊211,用于根據(jù)二維碼矩陣和二維碼參數(shù)渲染生成二維碼。
子線程功能模塊23包括接收解析子模塊231、計(jì)算子模塊232以及發(fā)送數(shù)據(jù)子模塊233,接收解析子模塊231耦接主線程功能模塊21,用于獲取主線程功能模塊21的獲取的二維碼參數(shù);計(jì)算子模塊232耦接接收解析子模塊231,用于根據(jù)二維碼參數(shù)計(jì)算二維碼矩陣;發(fā)送數(shù)據(jù)子模塊233耦接計(jì)算子模塊232和主線程功能模塊21,用于將計(jì)算子模塊232的二維碼矩陣發(fā)送至主線程功能模塊21。
除上述模塊外,主線程功能模塊21還包括封裝子模塊212,封裝子模塊212耦接獲取子模塊211,用于將二維碼參數(shù)設(shè)定單元1的二維碼參數(shù)封裝成參數(shù)對(duì)象。若將二維碼參數(shù)封裝成參數(shù)對(duì)象后,接收解析子模塊231獲取主線程功能模塊21的參數(shù)對(duì)象,計(jì)算子模塊232根據(jù)參數(shù)對(duì)象計(jì)算二維碼矩陣。參數(shù)對(duì)象可實(shí)現(xiàn)主線程功能模塊21和子線程功能模塊23之間的數(shù)據(jù)通信和傳輸。子線程功能模塊23還包括判斷子模塊234,判斷子模塊234耦接發(fā)送數(shù)據(jù)子模塊233,用于判斷發(fā)送數(shù)據(jù)子模塊233是否成功將二維碼矩陣發(fā)送至主線程功能模塊21,若發(fā)送成功,則關(guān)閉子線程功能模塊23,釋放內(nèi)存,節(jié)省系統(tǒng)資源。
本發(fā)明相比于現(xiàn)有技術(shù)的有益效果在于:本發(fā)明使用了多線程機(jī)制,使二維碼生成效率更高,在處理速度和響應(yīng)速度上做到了大幅度的提升,系統(tǒng)更穩(wěn)定,真正實(shí)現(xiàn)了多線程編程,提高了系統(tǒng)的資源利用率。
以上的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步的詳細(xì)說(shuō)明,應(yīng)當(dāng)理解,以上僅為本發(fā)明的具體實(shí)施例而已,并不用于限定本發(fā)明的保護(hù)范圍。特別指出,對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。