您好,登錄后才能下訂單哦!
這篇文章主要講解了“講解Python垃圾回收機(jī)制和常量池的使用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“講解Python垃圾回收機(jī)制和常量池的使用”吧!
人類認(rèn)識(shí)世界是從認(rèn)識(shí)世界中的一個(gè)又一個(gè)實(shí)物開(kāi)始,然后再對(duì)其用語(yǔ)言加以描述。例如當(dāng)中國(guó)人看到蘋(píng)果時(shí),便會(huì)用中文“蘋(píng)果”加以描述,而用英語(yǔ)的一些國(guó)家則會(huì)用“apple”加以描述。
以上說(shuō)到的中文和英文都是人類認(rèn)識(shí)并描述世界的一個(gè)工具,而在計(jì)算機(jī)的世界中,為了讓計(jì)算機(jī)去認(rèn)知世界,從而幫助人類完成更多的任務(wù)。在計(jì)算機(jī)領(lǐng)域中也發(fā)展了語(yǔ)言這個(gè)工具,從早期的機(jī)器語(yǔ)言到匯編語(yǔ)言再到現(xiàn)在使用范圍較廣的高級(jí)語(yǔ)言。而我們接下來(lái)要介紹的Python則屬于高級(jí)語(yǔ)言這一分支。
上面說(shuō)到Python是計(jì)算機(jī)世界中用來(lái)描述外部世界的,并且也提及了世界就是一個(gè)又一個(gè)實(shí)物的堆疊,描述世界其實(shí)就是去描述那一個(gè)又一個(gè)實(shí)物,人類如此,計(jì)算機(jī)也是如此。因此計(jì)算機(jī)語(yǔ)言開(kāi)發(fā)者們?yōu)榱耸褂糜?jì)算機(jī)語(yǔ)言的人更好的在計(jì)算機(jī)中去描述這些實(shí)物,便在計(jì)算機(jī)語(yǔ)言中引入了變量這個(gè)概念,Python也不例外。簡(jiǎn)單點(diǎn)說(shuō),變量就是用來(lái)描述世間萬(wàn)物的。
為了在計(jì)算機(jī)書(shū)寫(xiě)方便,定義一變量也有一定的規(guī)則,在這里我們僅說(shuō)說(shuō)Python中變量的定義規(guī)則,首先我們先定義兩個(gè)變量:
name = 'chenyoude' year = 2021
上述代碼中我們便定義了兩個(gè)變量,從上面定義的兩個(gè)變量中,我們可以看到,變量的組成分為三個(gè)部分:
變量名:反應(yīng)變量值所描述的意義,并且可以用來(lái)引用變量值。
賦值符號(hào):賦值。
變量值:存放數(shù)據(jù),用來(lái)記錄現(xiàn)實(shí)世界中的某種狀態(tài)。
上面簡(jiǎn)單講解了Python中的變量,通過(guò)字面意思,可以看到變量其實(shí)是一個(gè)變化的量,例如,下面這個(gè)實(shí)例:
year = 2021 year = year + 1 print(year) # 輸出結(jié)果:2022
剛開(kāi)始我們賦予了year一個(gè)變量值為2021,當(dāng)我們對(duì)year進(jìn)行加1操作時(shí),可以發(fā)現(xiàn)year值變成了2022。對(duì)于上述現(xiàn)象我們不難理解,因?yàn)橹罢f(shuō)過(guò)Python中變量是用來(lái)描述世間萬(wàn)物的,世間萬(wàn)物在現(xiàn)實(shí)中是可以變化的,變量當(dāng)然也可以隨之變化。
但是在某個(gè)局部范圍內(nèi),變量可能是不會(huì)變化的,例如在2021年這一年,都只會(huì)是2021年,沒(méi)有人會(huì)說(shuō)2021年是2022年。如果你有豐富的開(kāi)發(fā)經(jīng)驗(yàn),會(huì)明白變量定義出來(lái)不是存放在那里給你看的,更多的是要拿來(lái)用的。也就是說(shuō)如果在2021年中的某個(gè)程序需要使用year這個(gè)變量,但這個(gè)變量是不需要進(jìn)行修改的。為了防止誤操作對(duì)year這個(gè)變量進(jìn)行了修改,計(jì)算機(jī)語(yǔ)言便設(shè)計(jì)了常量這個(gè)概念,也就是說(shuō)常量相對(duì)于變量是一個(gè)不會(huì)變化的量。
在Python中,有沒(méi)有常量呢?不嚴(yán)格的講,其實(shí)是有的,只是在定義常量的時(shí)候常量名必須的全大寫(xiě),例如,下面這個(gè)實(shí)例:
YEAR = 2021 YEAR = YEAR + 1 print(YEAR) # 輸出結(jié)果:2022
上面這個(gè)常量的實(shí)例令人大吃一驚,因?yàn)槭褂贸A縔EAR后和使用變量year的結(jié)果一致,也就是說(shuō)常量YEAR遭到了更改。但是,稍微解釋你就明白了。
在Python中,雖然也和其他很多計(jì)算機(jī)語(yǔ)言一樣擁有常量這個(gè)概念,但更多的是約定俗成的,Python并沒(méi)有嚴(yán)格的對(duì)常量進(jìn)行控制,只是規(guī)定常量名必須全部大寫(xiě)。原因很簡(jiǎn)單:都是常量了,你為什么還要修改?
上面講到常量就是一個(gè)不會(huì)變化的變量,嚴(yán)格的講,在Python中是沒(méi)有常量這個(gè)概念的。但是,在Python中又有另外一種例外,那就是常量池,為了搞清楚常量池,首先我們得弄明白Python的幾個(gè)小知識(shí),接下來(lái)一一敘說(shuō)。
上面提及到Python是計(jì)算機(jī)用來(lái)描述世間萬(wàn)物的一種語(yǔ)言,由于計(jì)算機(jī)沒(méi)有人腦那么強(qiáng)大,計(jì)算機(jī)更多的只是認(rèn)識(shí)高低壓電頻,再通過(guò)對(duì)高低壓電頻的轉(zhuǎn)化進(jìn)而編碼成我們看到的一個(gè)又一個(gè)字符,也就是說(shuō)計(jì)算機(jī)是無(wú)法直接認(rèn)識(shí)利用Python寫(xiě)下的字符的。(此處設(shè)計(jì)計(jì)算機(jī)組成原理,不多做介紹)
也就是說(shuō),當(dāng)我們利用Python寫(xiě)下一個(gè)又一個(gè)字符并且交給電腦時(shí),需要通過(guò)編碼這個(gè)過(guò)程,而這個(gè)編碼的過(guò)程有時(shí)候也被稱為解釋。解釋的原理就相當(dāng)于從中文轉(zhuǎn)成英文,只不過(guò)此時(shí)不是需要讓英文使用者看懂中文,而是讓計(jì)算機(jī)能夠看懂Python。
中文轉(zhuǎn)成英文的時(shí)候,可能需要一個(gè)翻譯員或一個(gè)翻譯軟件,利用Python寫(xiě)下的字符轉(zhuǎn)化為計(jì)算機(jī)能看懂的語(yǔ)言同樣如此,這個(gè)轉(zhuǎn)化過(guò)程也需要一個(gè)外物的幫助——Python解釋器。
假設(shè)我們使用Python解釋器定義了以下一個(gè)變量:
year = 2021
當(dāng)我們通過(guò)字符定義變量時(shí),一定會(huì)好奇這些變量被Python解釋器解釋后到底去了哪?如果對(duì)計(jì)算機(jī)的組成熟悉的同學(xué),一定會(huì)清楚計(jì)算機(jī)的核心組件為:CPU、內(nèi)存、外存、輸入設(shè)備、輸出設(shè)備。也就是說(shuō),這些字符應(yīng)該存儲(chǔ)在這些核心組件中。在這里就不賣(mài)關(guān)子了,當(dāng)我們通過(guò)字符定義變量并對(duì)其用Python解釋器進(jìn)行解釋時(shí),他們會(huì)以計(jì)算機(jī)能看懂的形式進(jìn)入內(nèi)存當(dāng)中。
上面講的對(duì)于很多非科班出身的朋友可能很難理解,在這里將它生動(dòng)化?,F(xiàn)在假設(shè)江西師范大學(xué)相當(dāng)于電腦內(nèi)存,每當(dāng)有一批新學(xué)生進(jìn)入師大時(shí),師大都會(huì)開(kāi)辟出一個(gè)新教室給這批新同學(xué)使用,并且會(huì)給每一個(gè)教室一個(gè)獨(dú)一無(wú)二的教室牌號(hào)。由于把師大看作是內(nèi)存,這批新同學(xué)就可以看成是變量值,而教室牌號(hào)就是變量名。也就是說(shuō),對(duì)于師大這個(gè)大內(nèi)存,每定義一個(gè)變量year=2021
,就會(huì)在這個(gè)大內(nèi)存中開(kāi)辟一個(gè)小空間,小空間中放變量值2021,然后大內(nèi)存會(huì)給這個(gè)小空間定義一個(gè)變量名year,此時(shí)變量名year指向變量值2021。
上面說(shuō)到每當(dāng)Python解釋器解釋一個(gè)變量時(shí),會(huì)將這個(gè)變量存放到內(nèi)存中的一個(gè)小空間中,但如何知道這個(gè)小空間的具體位置呢?此處介紹Python的一個(gè)內(nèi)置函數(shù)id()
,通過(guò)這個(gè)函數(shù)可以獲取某一個(gè)變量所在的內(nèi)存地址,例如下面這個(gè)實(shí)例:
year = 2021 print(id(year)) # 輸出4499932432
對(duì)于上述師大的例子,此處再做延伸。由于那一批學(xué)生所在班級(jí)新轉(zhuǎn)來(lái)了幾位同學(xué),需要那一批學(xué)生更換更大一點(diǎn)教室,也就是給他們一個(gè)新的教室。那么學(xué)校應(yīng)該會(huì)這樣處理,首先開(kāi)辟一個(gè)新的教室,然后拿下那一批學(xué)生原有教室的教室牌號(hào)更換到這個(gè)新教室,最后會(huì)清空原有教室。
在Python中,也是如此,如果到了新的一年,我們會(huì)重新定義一個(gè)year變量,也就是year=2022。如果這是在同一個(gè)程序中如此做,Python會(huì)沿用上述更換教室的方法,它首先會(huì)解除year和2021的連接,開(kāi)辟一個(gè)新內(nèi)存存放變量值2022,讓year與2022連接。此時(shí),會(huì)發(fā)現(xiàn)2021這個(gè)變量值只有變量值而沒(méi)有變量名,因此這個(gè)沒(méi)有變量名的變量值會(huì)變成Python眼中的一個(gè)垃圾變量,從而觸發(fā)Python垃圾回收機(jī)制,對(duì)這個(gè)2021所在的內(nèi)存空間進(jìn)行回收。
為了更好地理解Python垃圾回收機(jī)制,可以看下面這個(gè)例子:
year = 2021 print(id(year)) # 輸出4499932720 print(year) # 輸出2021 year = 2022 print(id(year)) # 輸出4499932560 print(year) # 輸出2022
通過(guò)上述例子,可以看到當(dāng)新定義了一個(gè)year變量時(shí),year會(huì)與新的變量進(jìn)行一個(gè)連接。當(dāng)然,此處所說(shuō)的垃圾回收機(jī)制只是為了引入引用計(jì)數(shù)這個(gè)概念,并不是完全正確的解釋,并且上述實(shí)例還無(wú)法證明變量值2021所在內(nèi)存是否被回收,下面將通過(guò)引用計(jì)數(shù)的實(shí)例會(huì)進(jìn)一步說(shuō)明并重新解釋垃圾回收機(jī)制。
上面講到如果某個(gè)變量值綁定著變量名,就是一個(gè)正常的變量,如果該變量值沒(méi)有綁定著門(mén)牌號(hào),這個(gè)變量就是一個(gè)垃圾變量,對(duì)于垃圾變量,Python會(huì)觸發(fā)垃圾回收機(jī)制回收這個(gè)變量所占有的內(nèi)存。進(jìn)而可以想到,Python中一個(gè)變量名一定只能對(duì)應(yīng)一個(gè)變量值。
在這里我們就不能沿用師大這個(gè)例子了,而得引出一個(gè)新的名詞——引用計(jì)數(shù)。
為了解釋引用計(jì)數(shù),我們首先得明白在Python中,當(dāng)定義了一個(gè)變量值為2021的變量時(shí),它可以表示年份、也可以表示山的高度…也就是說(shuō)一個(gè)變量名只能對(duì)應(yīng)一個(gè)變量值,但是一個(gè)變量值可以對(duì)應(yīng)不同的變量名,這種設(shè)計(jì)也是比較合理的。
現(xiàn)在我們引出引用計(jì)數(shù)這個(gè)概念,當(dāng)相同的變量值被賦予不同的變量名時(shí),變量值每增加一個(gè)變量名的賦予,則該變量值的引用計(jì)數(shù)加1。由于我們可以通過(guò)Python內(nèi)置sys模塊中的getrefcount()
函數(shù)獲取某一個(gè)變量的引用計(jì)數(shù)(getrefcount輸出值默認(rèn)從3開(kāi)始),可以通過(guò)下面這個(gè)例子感受下:
import sys # 引用計(jì)數(shù)初始值為3 print(sys.getrefcount(2021)) # 輸出為3 year = 2021 print(sys.getrefcount(2021)) # 輸出為4 height = 2021 print(sys.getrefcount(2021)) # 輸出為5 del year print(sys.getrefcount(2021)) # 輸出為4
從上述代碼可以看出變量值2021的引用計(jì)數(shù)由于每一次賦予新的變量名,引用計(jì)數(shù)都會(huì)增加,而當(dāng)我們利用del關(guān)鍵字刪除變量值2021的一個(gè)變量名year時(shí),引用計(jì)數(shù)則會(huì)減少。
為了更加嚴(yán)謹(jǐn)?shù)谋磉_(dá)引用計(jì)數(shù),此處不得不再次深入,引用計(jì)數(shù)字面意思可以理解為引用的次數(shù),也就是說(shuō)上面的例子其實(shí)并不嚴(yán)謹(jǐn),更嚴(yán)謹(jǐn)?shù)闹v,只有當(dāng)一個(gè)變量值每一次被直接或間接引用時(shí),引用計(jì)數(shù)才會(huì)增加,在Python中讓引用計(jì)數(shù)增加共有三種方法:
變量被創(chuàng)建,變量值引用計(jì)數(shù)加1
變量被引用,變量值引用計(jì)數(shù)加1
變量作為參數(shù)傳入到一個(gè)函數(shù),變量值引用計(jì)數(shù)加2
具體看下述實(shí)例:
import sys # 引用計(jì)數(shù)初始值為3 print(sys.getrefcount(2021)) # 輸出為3 # 變量被創(chuàng)建,變量值引用計(jì)數(shù)加1 year = 2021 print(sys.getrefcount(2021)) # 輸出為4 # 變量被引用,變量值引用計(jì)數(shù)加1 height = year print(sys.getrefcount(2021)) # 輸出為5 # 變量作為參數(shù)傳入到一個(gè)函數(shù),變量值引用計(jì)數(shù)加2 def func(year): print(sys.getrefcount(year)) func(year) # 輸出為7
Python中既然有增加引用計(jì)數(shù)的方法, 也當(dāng)然會(huì)減少引用計(jì)數(shù)的方法,共有以下4種:
變量值對(duì)應(yīng)的變量名被銷(xiāo)毀
變量值對(duì)應(yīng)的變量名被賦予新的值
變量值對(duì)應(yīng)的變量名離開(kāi)它的作用域
變量值對(duì)應(yīng)的變量名的容器被銷(xiāo)毀
有了getrefcount()
方法并通過(guò)引用計(jì)數(shù),我們就可以解開(kāi)垃圾回收機(jī)制遺留的一個(gè)問(wèn)題——如何判斷是否觸發(fā)了垃圾回收機(jī)制。每當(dāng)一個(gè)變量定義,他的getrefcount輸出值為3,而如果該變量值被垃圾回收機(jī)制回收,則它的getrefcount輸出值回到3,可以通過(guò)下面實(shí)例驗(yàn)證上述猜想:
import sys print(sys.getrefcount(2021)) # 輸出為3 year = 2021 print(sys.getrefcount(2021)) # 輸出為4 print(id(year)) # 輸出4499932720 print(year) # 輸出2021 year = 2022 print(sys.getrefcount(2021)) # 輸出為3 print(id(year)) # 輸出4499932560 print(year) # 輸出2022
通過(guò)上述實(shí)例,可以發(fā)現(xiàn)由于變量值2021對(duì)應(yīng)的變量名被新的變量值2022引用,它的getrefcount輸出值為3,引用計(jì)數(shù)變成了0,因此可以證明Python觸發(fā)了垃圾回收機(jī)制。
如果對(duì)上述驗(yàn)證Python觸發(fā)垃圾回收機(jī)制的實(shí)例深入挖掘,會(huì)發(fā)現(xiàn)當(dāng)把year賦給變量值2022時(shí),變量值的2021的引用計(jì)數(shù)為0,此時(shí)觸發(fā)了Python的垃圾回收機(jī)制,那么是否可以表明只有當(dāng)變量值2021的引用計(jì)數(shù)為0時(shí)才能觸發(fā)垃圾回收機(jī)制呢?而不是上一次說(shuō)的當(dāng)變量值的變量名被新的變量值被引用了才會(huì)銷(xiāo)毀呢?因?yàn)樽兞恐悼梢詫?duì)應(yīng)多個(gè)變量名,下面通過(guò)下述實(shí)例驗(yàn)證:
import sys print(sys.getrefcount(2021)) # 輸出為3 year = 2021 print(sys.getrefcount(2021)) # 輸出為4 height = 2021 print(sys.getrefcount(2021)) # 輸出為5 year = 2022 print(sys.getrefcount(2021)) # 輸出為4 del height print(sys.getrefcount(2021)) # 輸出為3
通過(guò)上述實(shí)例,可以發(fā)現(xiàn)由于定義一個(gè)變量后,該變量對(duì)應(yīng)的變量值引用計(jì)數(shù)可以不斷增加,而只要引用計(jì)數(shù)不為0,那么Python就一直還在內(nèi)存中保留著這個(gè)變量值并且對(duì)其引用,只有當(dāng)該變量的引用計(jì)數(shù)為0時(shí),Python才會(huì)觸發(fā)垃圾回收機(jī)制對(duì)該變量值進(jìn)行回收,這才是比較正確的垃圾回收機(jī)制。當(dāng)然,如果深入,Python的回收機(jī)制還有分代回收,此處不做延展,了解上述這些就足矣了解接下來(lái)講的小整數(shù)池。
在上述各個(gè)知識(shí)的打通之后,現(xiàn)在可以正式引入常量池這個(gè)概念。上面講到在Python中嚴(yán)格的講是沒(méi)有常量這個(gè)概念的,即使你通過(guò)約定俗成的方法定義了一個(gè)常量,但這個(gè)常量也只是一個(gè)變量,也就是說(shuō)只要你對(duì)這個(gè)常量做出修改,這個(gè)常量原有對(duì)應(yīng)的常量值引用計(jì)數(shù)就會(huì)變成0,由于常量等同于變量,它一樣會(huì)被Python垃圾回收機(jī)制回收。
但是在Python中,存在著一些例外,這些例外就是一個(gè)小整數(shù)池,顧名思義,小整數(shù)池表示的是從-5到256范圍內(nèi)的整數(shù),這些整數(shù)定義出來(lái)后就是一個(gè)常量,也就是說(shuō)他們的引用計(jì)數(shù)即使為0,也不會(huì)被Python的垃圾回收機(jī)制回收,可以通過(guò)下述實(shí)例驗(yàn)證:
import sys first_l = [] # 定義列表l存儲(chǔ)[-5,256]中的所有整數(shù)的引用計(jì)數(shù) add_l = [] # 定義列表add_l存儲(chǔ)[-5,256]中的所有整數(shù)的引用計(jì)數(shù)加1后的引用計(jì)數(shù) del_l = [] # 定義列表del_l存儲(chǔ)[-5,256]中的所有整數(shù)的引用計(jì)數(shù)減1后的引用計(jì)數(shù) for i in range(-5, 256): first_l.append(sys.getrefcount(i)) add = i add_l.append(sys.getrefcount(i)) del add del_l.append(sys.getrefcount(i)) first_l.sort() add_l.sort() del_l.sort() print(f'min(first_l): {min(first_l)}') # 獲取[-5,256]中所有整數(shù)的最小引用計(jì)數(shù),輸出為4 print(f'min(add_l): {min(add_l)}') # 獲取[-5,256]中所有整數(shù)的最小引用計(jì)數(shù),輸出為5 print(f'min(del_l): {min(del_l)}') # 獲取[-5,256]中所有整數(shù)的最小引用計(jì)數(shù),輸出為4
從上述實(shí)例可以看出,[-5,256]中的整數(shù)的getrefcount默認(rèn)初始值為4,也就是說(shuō)即使沒(méi)有對(duì)這些整數(shù)進(jìn)行初始化的創(chuàng)建,Python早已對(duì)他們進(jìn)行了引用,即使他們的引用計(jì)數(shù)為0,他們也不會(huì)也不可能被刪除,因?yàn)樗麄儚腜ython解釋器啟動(dòng)開(kāi)始就已經(jīng)被生成。
當(dāng)然,也可以通過(guò)垃圾回收機(jī)制判斷小整數(shù)池中的整數(shù)是否會(huì)被垃圾回收機(jī)制回收,可用如下實(shí)例證明(由于Pycharm等解釋器會(huì)一次性編譯整個(gè)文件,固使用終端編輯代碼):
>>> a = 5 >>> id(a) 4529334480 >>> del a >>> b = 5 >>> id(b) 4529334480 >>> >>> a = 257 >>> id(a) 4533920752 >>> del a >>> b = 257 # 消除分代回收對(duì)結(jié)果的影響 >>> del b >>> b = 257 >>> id(b) 4531031792 >>>
從上述實(shí)例中可以看出,變量值5即使被垃圾回收機(jī)制回收后,再次創(chuàng)建變量值為5的變量,該變量的內(nèi)存地址始終無(wú)變化,即該變量未被垃圾回收機(jī)制回收,小整數(shù)池中的其他整數(shù)同理;而變量值257卻已經(jīng)被垃圾回收機(jī)制回收,非小整數(shù)池中的其他變量同理。
當(dāng)然,還可以通過(guò)下述方法查看這些小整數(shù)池的整數(shù)的內(nèi)存地址的變化,如下:
a = 256 b = int("256") print(id(a), id(b)) # 4544968752 4544968752 a = 257 b = int("257") print(id(a), id(b)) # 4548719792 4546289360 a = -5 b = int("-5") print(id(a), id(b)) # 4544960400 4544960400 a = -6 b = int("-6") print(id(a), id(b)) # 4690036912 4546289360
對(duì)于上述實(shí)例,在Python中,由于每生成一個(gè)變量便會(huì)開(kāi)辟一個(gè)新的內(nèi)存空間給該變量,但是上述實(shí)例表明當(dāng)變量值為-5和256時(shí),每次開(kāi)辟的內(nèi)存空間地址都是一樣的;而當(dāng)變量值不屬于[-5,256]時(shí),每次定義變量值時(shí),內(nèi)存空間的地址都是不一樣的。
在Python中,變量是用來(lái)描述世間萬(wàn)物的,變量顧名思義是變化的一個(gè)量,而在某一個(gè)局部范圍內(nèi),有些量可能是不會(huì)變化的,因此語(yǔ)言設(shè)計(jì)者在計(jì)算機(jī)中定義了常量這個(gè)概念,但是在Python中并沒(méi)有規(guī)定的常量,只有約定俗稱的常量,也就是變量名全大寫(xiě)的則是常量。但是Python中有一個(gè)另外,也就是小整數(shù)池[-5,256],在這個(gè)小整數(shù)池中的整數(shù)對(duì)于Python來(lái)說(shuō)就是一個(gè)常量,因?yàn)閺囊糜?jì)數(shù)的打印中可以看出它在Python解釋器啟動(dòng)的時(shí)候就已經(jīng)生成并占用了一個(gè)固定的內(nèi)存空間,并且不會(huì)因?yàn)橐糜?jì)數(shù)變?yōu)?之后就會(huì)被Python的垃圾回收機(jī)制回收,而這些小整數(shù)池也可以稱作Python的常量池。
感謝各位的閱讀,以上就是“講解Python垃圾回收機(jī)制和常量池的使用”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)講解Python垃圾回收機(jī)制和常量池的使用這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。