小程序中,哪些数据该使用缓存,哪些该使用全局变量?
缓存类似于数据库,全局变量意味着所有页面都可以使用。这是两件事。比如新闻类应用,需要把首页的数据放在缓存中,然后下次访问首页的时候直接加载缓存的数据,然后在异步调用接口刷新数据,这样你就不用进入首页不需要加载,可以直接看到数据,感觉秒开,用户体验更好。全局变量类似于用户登录信息。登录后,它们被设置为全局,每个页面都可以使用。否则每次跳转后都需要重新获取用户信息。小程序登录授权原理和流程?(1)首先调用wx.login获取登录凭证(代码),然后通过代码交换用户的登录状态信息,包括用户的唯一标识符(op全局变量和局部变量有什么区别?是怎么实现的?
1.全局变量的函数使用这个程序块,而局部变量作用于当前函数。2.前者分布在内存的全局数据区,后者分布在堆栈区。3.生命周期不同:全局变量随主程序创建和销毁,局部变量存在于局部函数中,甚至存在于局部循环体中,exit不存在。4.使用不同:全局变量程序的所有部分都可以在声明后使用。局部变量只能在本地使用。操作系统和编译器通过内存分配的位置知道的全局变量被分配在全局数据段中,并在程序运行时加载。
编译器通过语法和词法的分析来判断它是全局变量还是局部变量。
如果是全局变量,编译器在把源代码翻译成二进制代码的时候会给全局变量分配一个虚拟地址(windows下0x00400000以上的地址,也就是所谓的全局区),所以程序在对全局变量进行操作的时候是对硬编码的地址进行操作。
对于局部变量,编译时不分配空间,而是用从ebp或esp的偏移量来表示局部变量的地址,所以在调用局部变量所在的函数时,才真正分配了局部变量内存。
从汇编的角度:函数执行时,局部变量在堆栈中分配,函数调用后释放局部变量对应的内存,局部变量可以直接在寄存器中分配。
操作系统可以通过变量的赋值地址来判断它是局部变量还是全局变量。