国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺談?chuàng)屍避浖奈:澳M分析

2021-11-28 00:27周彥汐李成奧徐艷
電腦知識與技術(shù) 2021年30期
關(guān)鍵詞:買票購票線程

周彥汐 李成奧 徐艷

摘要:搶票軟件的出現(xiàn),在一定程度上緩解了鐵路12306官方購票系統(tǒng)的售票壓力,并被人們加上“買票快”,“買票方便”的標(biāo)簽,但其實搶票軟件類似于生活中的一種插隊現(xiàn)象,不僅沒有搶票率的保證,而且從用戶隱私安全和系統(tǒng)操作性能而言,搶票軟件存在泄漏用戶隱私、隱形收費(fèi)、對服務(wù)器資源造成破壞等問題。

關(guān)鍵詞:多線程并發(fā);模擬分析危害

中圖分類號:TP393? ? ? 文獻(xiàn)標(biāo)識碼:A

文章編號:1009-3044(2021)30-0055-02

開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):

1引言

春節(jié),對于中國人來說,象征著團(tuán)圓和對來年的美好期盼,而一張火車票承載的是萬千游子對故鄉(xiāng)深深的思戀。在二十年前,我們?yōu)榱艘粡埓汗?jié)返家的車票在車站徹夜排隊購買車票,但隨著科技的發(fā)展,這一現(xiàn)象已逐漸成為歷史,12306網(wǎng)絡(luò)購票系統(tǒng)正式上線,隨之而來的也有各樣的搶票軟件[1]。搶票軟件的出現(xiàn)不僅破壞市場的公平性和穩(wěn)定性,也對鐵路12306購票系統(tǒng)造成人力、物力的浪費(fèi)。本文將從搶票軟件的實現(xiàn)過程、對系統(tǒng)資源的危害做出闡述并模擬分析多線程并發(fā)的危害。

2搶票軟件的實現(xiàn)流程

市場上大多數(shù)的搶票軟件運(yùn)轉(zhuǎn)原理是由軟件提前自動存儲旅客的個人信息,放票系統(tǒng)一開放就用機(jī)器操作代替用戶自己手動登錄網(wǎng)站搶票,除此之外通過提高對12306網(wǎng)站的票源信息訪問頻率,一旦有人退票,能在較快的時間為用戶鎖定座位席[2]。但這種方式并不能改變一趟列車固定的座位數(shù),而是打破了買票平衡,類似于生活中的插隊行為。

2.1身份證——“偽實名”

鐵路12306購票的“實名”其實是“偽實名”,因為購票系統(tǒng)后臺并不會從人口信息庫里一一匹配購票人的信息是否真實存在,所以只要旅客提供的身份證符合常規(guī)的輸入格式,那么一樣可以成功購票。而黃牛們就是利用這種算法自動生成身份證號搶票,再在某個指定時間將票取消放出,最后用客戶的真實信息購票,因為速度原因,放出去的票還是會被黃牛重新購入。所以票會在黃牛提供的虛假身份賬號的未支付的訂單中不停的循環(huán)。

2.2多線程并發(fā)—— 刷新網(wǎng)站

第三方搶票軟件具體的實現(xiàn)過程與計算機(jī)操作系統(tǒng)以及網(wǎng)絡(luò)爬蟲有一定的關(guān)聯(lián)。實現(xiàn)原理是:多個線程并發(fā)執(zhí)行,利用多個終端的多個線程同時搶票。在一定的時間間隔內(nèi)向鐵路12306網(wǎng)站發(fā)出訪問請求,目的是獲取當(dāng)前網(wǎng)站的票務(wù)信息。當(dāng)某個線程發(fā)現(xiàn)所需的座位席有余票時,為了避免臨界資源——票被其他的線程訪問,導(dǎo)致一張票被賣給多人,則會對臨界資源進(jìn)行上鎖,實現(xiàn)資源的互斥。購票成功后才會釋放鎖,重復(fù)上述操作。

3搶票軟件的危害性

搶票軟件通過高頻率向網(wǎng)站發(fā)送訪問請求從而提高對網(wǎng)站車次信息的刷新頻率,使得軟件能在第一時間掌握座位席情況,但這并不能保證一定能為旅客買到票。因為座位席數(shù)是一定的,而能否購買到車票與12306放票系統(tǒng)有關(guān)[2]。并且從用戶安全和系統(tǒng)安全方面考慮,第三方搶票軟件存在泄漏用戶隱私、隱形收費(fèi)等問題,而這種高頻率的信息刷新和訪問網(wǎng)站可能會造成12306系統(tǒng)崩潰,影響其他旅客正常購票。

3.1多線程并發(fā)執(zhí)行的危害

多線程可以提高程序并發(fā)執(zhí)行的速度,但系統(tǒng)對于線程數(shù)量也有一定的要求,并非數(shù)量越多運(yùn)行速度越快。原因之一是因為,每個線程的建立都會消耗系統(tǒng)內(nèi)存空間,所以線程數(shù)量過多就意味著占用了電腦中更多的內(nèi)存資源,造成資源浪費(fèi)。另一個原因是cpu不允許同時執(zhí)行兩個線程,在執(zhí)行多線程任務(wù)中需要輪流切換,若線程太多,cpu必須不斷加快切換速度,而線程間的切換無意間消耗了許多時間,所以cpu有效利用率反而是下降的。其三是拖慢主線程。如果子線程的優(yōu)先級都和主線程一樣高,主線程就得不到更多資源優(yōu)先執(zhí)行,主線程的性能降低。

3.2對鐵路12306服務(wù)器的破壞

搶票軟件利用多IP多線程并發(fā)執(zhí)行,快速且連續(xù)的向鐵路12306網(wǎng)絡(luò)購票系統(tǒng)發(fā)出訪問請求。這種刷屏式的搶票方式,無異于加大12306的服務(wù)壓力,擠占服務(wù)器的服務(wù)寬帶,過大的訪問需求量可能會引起服務(wù)器癱瘓,這也就擾亂了公平、正常的購票秩序,影響了其他沒有使用搶票軟件的旅客的購票。雖然鐵路12306網(wǎng)絡(luò)購票系統(tǒng)通過增加驗證碼的識別難度,打擊機(jī)器自動購票的行為,但由于驗證碼難度的上升,提交錯誤驗證碼的次數(shù)也隨著上升,對服務(wù)器又是一種額外的負(fù)擔(dān)。

3.3 泄露用戶信息

所謂的“搶票軟件”更多時候是利用販賣人的買票焦慮情緒,打著技術(shù)的幌子,二次消費(fèi)客戶的隱私信息用于商用。一趟車次的座位席是固定的,搶票軟件搶的其實是這趟車次的余票、退票,如果沒有余票也沒有人退票,那么搶票軟件也是根本搶不到票的。而大量的客戶信息被提前存儲在搶票軟件上,所以對于大部分旅客而言,不僅買不到票,浪費(fèi)了時間,也將自己的私人信息泄露出去,讓不法分子們嗅到了商機(jī)。

4針對多線程并發(fā)危害的模擬和對比分析

4.1基于Linux系統(tǒng)的多線程并發(fā)程序?qū)崿F(xiàn)

操作系統(tǒng)中為了使多個程序并發(fā)執(zhí)行, 改善內(nèi)存使用情況和提高內(nèi)存利用率引入了進(jìn)程。但當(dāng)進(jìn)程并發(fā)執(zhí)行時, 所占用的系統(tǒng)內(nèi)存也較高, 在此基礎(chǔ)上, 操作系統(tǒng)中再次引入線程[3]。例如data++運(yùn)算符一共會執(zhí)行3條指令,首先是把內(nèi)存中的data值放到寄存器中,然后再對data值進(jìn)行+1操作,最后再把寄存器中的data值寫回到內(nèi)存中。在這三條指令執(zhí)行的過程中,我們不知道何時會對線程進(jìn)行切換,所以可能會在執(zhí)行第一條指令執(zhí)行的時候,另一個線程開始執(zhí)行,最終導(dǎo)致data的值不是預(yù)期的值。我們在購買火車票,飛機(jī)票時就可能會遇到此問題。不同用戶會購買同一趟列車的票,此時的票數(shù)就相當(dāng)于全局變量,不同用戶相當(dāng)于不同線程,如果不做線程同步的相關(guān)處理,那么就會造成最后的出票數(shù)和用戶購票數(shù)的不一致。下面用Linux pthread API來模擬多線程并發(fā)執(zhí)行可能會造成的后果。

int data = 0;

int i = 0;

void * thread_task(void * arg) {

while(1) {

int val = data;

i++;

printf("線程:%d 正在執(zhí)行---data的值變?yōu)椋?d\n",pthread_self(),data);

data = val + 1;

if(i == 10000)break;

}

return NULL;

}

int main(){

int ret,i;

pthread_t tid[2];

for(i = 0; i < 2;i++) {

ret = pthread_create(&tid[i],NULL,thread_task,NULL);

assert(ret == 0);

}

}

以上代碼使用pthread_create函數(shù)來創(chuàng)建一個新線程,總共創(chuàng)建了兩個子線程,兩個子線程都對全局變量data和i進(jìn)行賦值更新操作。當(dāng)i到1000時,結(jié)束線程任務(wù),并最后打印全局變量data的值。結(jié)果如下圖所示:

如圖所示,按照預(yù)想的來看,最后data的值應(yīng)該為10000,但是實際最后data的值卻為123。主要原因就是在運(yùn)算指令還未完成時,兩個進(jìn)程進(jìn)行切換,最后導(dǎo)致結(jié)果不符合預(yù)期。

4.2對系統(tǒng)資源占有的對比分析

我們又創(chuàng)建了一個單線程程序,對比單線程和多線程在資源占比上的區(qū)別。用top命令動態(tài)實時觀察單線程和多線程資源利用方面的區(qū)別。結(jié)果如下:

從比較表來看,首先第一個不同點就是使用的虛擬內(nèi)存總量,單線程進(jìn)程為4560,而多線程進(jìn)程則為22896。多線程進(jìn)程的虛擬內(nèi)存分配量要遠(yuǎn)遠(yuǎn)超于單線程進(jìn)程的虛擬內(nèi)存分配量,這是由于Linux要對于多線程的虛擬內(nèi)存分配策略所導(dǎo)致。第二個不同點就是cpu的占有率,多線程程序的cpu占有率要高于單線程的cpu占有率,表明多線程程序能夠更充分的利用cpu,提高cpu利用率。最后一個就是實際內(nèi)存的占用,多線程程序會比單線程程序占用更多的實際內(nèi)存。

5總結(jié)

搶票軟件搶的是未買完的座位席和退票,如果沒有退票也沒有空位,那么搶票軟件根本搶不到票,所以搶票軟件和搶票率沒有必然聯(lián)系,使用搶票軟件對鐵路12306官網(wǎng)和電腦系統(tǒng)也有一定的危害。而近幾年鐵路官網(wǎng)開通了候補(bǔ)購票通道緩解旅客們買票難得壓力,并在一定程度上打擊了搶票軟件。所以在這里呼吁各位,采取科學(xué)有效的措施購票買票。

參考文獻(xiàn):

[1]? 劉麗娜.搶票軟件需規(guī)制[N].檢察日報,2020-01-08(7).

[2] 萬婉娉,顏瑞,梁紅玉,馬千惠,金明.第三方搶票軟件的相關(guān)研究[J].現(xiàn)代商貿(mào)工業(yè),2020,41(15):35-36.

[3] 張步忠.Java語言中的線程同步互斥研究[J].安慶師范學(xué)院學(xué)報(自然科學(xué)版),2011,17(4):106-110.

【通聯(lián)編輯:光文玲】

猜你喜歡
買票購票線程
不同的購票方法
直擊痛點的“候補(bǔ)購票”可多來一些
鐵路候補(bǔ)購票服務(wù)擴(kuò)大到全部列車
智擒偷兒
淺談linux多線程協(xié)作
瞬間
基于上下文定界的Fork/Join并行性的并發(fā)程序可達(dá)性分析*
Linux線程實現(xiàn)技術(shù)研究
么移動中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
買票
大姚县| 建平县| 青神县| 疏勒县| 林芝县| 普陀区| 上林县| 松阳县| 沙洋县| 同心县| 许昌市| 罗平县| 都昌县| 合山市| 东乡族自治县| 施秉县| 城市| 长阳| 吴桥县| 建湖县| 漳平市| 南阳市| 龙泉市| 高尔夫| 称多县| 扶风县| 临高县| 法库县| 关岭| 新密市| 偃师市| 托克逊县| 攀枝花市| 岑巩县| 读书| 德州市| 怀安县| 响水县| 扎赉特旗| 衡阳市| 韶山市|