小程序中,哪些數(shù)據(jù)該使用緩存,哪些該使用全局變量?
緩存類似于數(shù)據(jù)庫,全局變量意味著所有頁面都可以使用。這是兩件事。比如新聞類應(yīng)用,需要把首頁的數(shù)據(jù)放在緩存中,然后下次訪問首頁的時候直接加載緩存的數(shù)據(jù),然后在異步調(diào)用接口刷新數(shù)據(jù),這樣你就不用進(jìn)入首頁不需要加載,可以直接看到數(shù)據(jù),感覺秒開,用戶體驗更好。全局變量類似于用戶登錄信息。登錄后,它們被設(shè)置為全局,每個頁面都可以使用。否則每次跳轉(zhuǎn)后都需要重新獲取用戶信息。小程序登錄授權(quán)原理和流程?(1)首先調(diào)用wx.login獲取登錄憑證(代碼),然后通過代碼交換用戶的登錄狀態(tài)信息,包括用戶的唯一標(biāo)識符(op全局變量和局部變量有什么區(qū)別?是怎么實現(xiàn)的?
1.全局變量的函數(shù)使用這個程序塊,而局部變量作用于當(dāng)前函數(shù)。2.前者分布在內(nèi)存的全局?jǐn)?shù)據(jù)區(qū),后者分布在堆棧區(qū)。3.生命周期不同:全局變量隨主程序創(chuàng)建和銷毀,局部變量存在于局部函數(shù)中,甚至存在于局部循環(huán)體中,exit不存在。4.使用不同:全局變量程序的所有部分都可以在聲明后使用。局部變量只能在本地使用。操作系統(tǒng)和編譯器通過內(nèi)存分配的位置知道的全局變量被分配在全局?jǐn)?shù)據(jù)段中,并在程序運行時加載。
編譯器通過語法和詞法的分析來判斷它是全局變量還是局部變量。
如果是全局變量,編譯器在把源代碼翻譯成二進(jìn)制代碼的時候會給全局變量分配一個虛擬地址(windows下0x00400000以上的地址,也就是所謂的全局區(qū)),所以程序在對全局變量進(jìn)行操作的時候是對硬編碼的地址進(jìn)行操作。
對于局部變量,編譯時不分配空間,而是用從ebp或esp的偏移量來表示局部變量的地址,所以在調(diào)用局部變量所在的函數(shù)時,才真正分配了局部變量內(nèi)存。
從匯編的角度:函數(shù)執(zhí)行時,局部變量在堆棧中分配,函數(shù)調(diào)用后釋放局部變量對應(yīng)的內(nèi)存,局部變量可以直接在寄存器中分配。
操作系統(tǒng)可以通過變量的賦值地址來判斷它是局部變量還是全局變量。