首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ViewModel:持久、onSaveInstanceState()、UI 状态恢复和 Loader

那些被多个应用共用数据应该像正常那样通过 本地数据库,Shared Preferences,和/或者云存储持久。...你也不想在你不需要时候重新数据库加载数据。让我们看一个 activity 例子,在这个 activity 你可以搜索你音乐库: ? Activity 未搜索及搜索后状态示例。...这两种情形假设用户永久退出了这个 activity,如果重新进入那个 activity,他们所期望是一个干净页面。...每一种都会存储 activity 中使用不同数据本地持久是用于存储当打开或关闭 activity 所有你不想丢失数据。 举例: 包含了音频文件和元数据所有音乐对象集合。...例如,有些 activity 在被用户关闭后不会以一个全新状态打开。一般地,当我在 Android 手机上关闭然后重新打开 Chrome ,返回到了关闭 Chrome 之前正在浏览页面

3.7K30

ViewModel:持久、onSaveInstanceState()、UI 状态恢复和 Loader

那些被多个应用共用数据应该像正常那样通过 本地数据库,Shared Preferences,和/或者云存储持久。...你也不想在你不需要时候重新数据库加载数据。让我们看一个 activity 例子,在这个 activity 你可以搜索你音乐库: Activity 未搜索及搜索后状态示例。...这两种情形假设用户永久退出了这个 activity,如果重新进入那个 activity,他们所期望是一个干净页面。...每一种都会存储 activity 中使用不同数据本地持久是用于存储当打开或关闭 activity 所有你不想丢失数据。 举例: 包含了音频文件和元数据所有音乐对象集合。...例如,有些 activity 在被用户关闭后不会以一个全新状态打开。一般地,当我在 Android 手机上关闭然后重新打开 Chrome ,返回到了关闭 Chrome 之前正在浏览页面

92520
您找到你想要的搜索结果了吗?
是的
没有找到

JavaScript是如何工作:存储引擎+如何选择合适存储API

持久 web 应用程序存储方法可以根据数据持久时间段进行划分: 会话持久: 该类别数据仅在单个 Web 会话或浏览器选项卡保持激活状态持久,具有会话持久存储机制一个示例是 Session...设备持久: 此类别数据在特定设备上跨会话和浏览器选项卡/窗口持久,具有设备持久存储机制一个示例是 Cache API。 此类数据跨会话和设备持久。...在发布环境因慎重使用,因为并是所有的浏览器支持,实现方式可能存在很大兼容性,并且在将来可能也会发生变化。...页面会话在浏览器打开期间一直保持,并且重新加载或恢复页面仍会保持原来页面会话。...当机器处于不安全环境,切记不能通过HTTP Cookie存储、传输敏感信息,且所有浏览器广泛支持cookie。 Cache ?

1.6K10

微搭低代码从入门到精通05-变量定义

其实这就需要对小程序运行原理有一个比较深认识,你作为用户,当你打开小程序那一刻起,小程序运行所有资源就下载到你本地了,你操作相当于你本地资源。...如果你改变了变量内容,这里涉及到一个持久概念,就是你关闭小程序时候是不是你操作过内容消失了。...我们这些附件在服务器上需要存储到磁盘里,存储路径呢我们会记录到数据库里,这样就便于根据路径来找到具体资源。...用户录入这些信息会存储数据库里,这些信息最终会分配一个唯一标识,在微搭数据标识。你下次加载数据时候就可以通过这个数据标识找到数据。...全局变量在每个页面都可以使用,而页面级别的变量只能在页面中使用 图片 03 变量初始 在变量创建时候需要对变量初始,如果是文本,不知道值默认初始化为是指没有实际内容 图片 如果是数字初始的话默认值是

57950

【微信小程序15】CSS模块、使用缓存在本地模拟服务器数据库

今日学习目标:第十五期——CSS模块、使用缓存在本地模拟服务器数据库 创作者:颜颜yan_ ✨个人主页:颜颜yan_个人主页 ⏰预计时间:25分钟 专栏系列:第一个微信小程序...使用Storage缓存初始本地数据库 初始数据库最好时机是在应用程序启动。接下来我们使用Storage缓存初始本地数据库。 缓存特点 缓存让小程序具备了本地存储数据能力。...❗ Storage面板是查看缓存重要功能,当我们遇到缓存相关问题,一定要查看缓存面板。 以上我们就搭建了一个简易本地数据库”,它具有增、删、改和简单查询功能。...如果每次启动重新初始存储,那么对数据库修改就会被初始数据覆盖。接着我们来进行优化。 思路 1、使用wx.getStorageSync(key)方法获取指定key缓存内容。...2、添加判断,如果指定key缓存不存在,说明数据库还没有初始。先使用wx.clearStorageSync();清除所有的缓存数据,接着再重新读取并设置初始数据

2.1K20

前端-推荐几个Vue开发必备插件,要收藏

它采用集中式存储管理应用所有组件状态,并以相应规则保证状态以一种可预测方式发生变化 vuex解决了组件之间共享同一状态麻烦问题。当我应用遇到多个组件共享状态,会需要: 1....在一下插件,将向你展示5个特性,你可以通过 Vuex 插件轻松地添加到下一个项目中。 1、状态持久 2、同步标签页、窗口 3、语言本地 4、管理多个加载状态 5、缓存操作 ---- 1....状态持久 vuex-persistedstate 使用浏览器本地存储( local storage )对状态( state )进行持久。这意味着刷新页面或关闭标签页都不会删除你数据。...它通过 mutation 将状态储存到本地存储(local storage)来实现。选项卡、窗口中内容更新触发储存事件,重新调用 mutation ,从而保持状态同步。 3....语言本地 vuex-i18n 允许你轻松地用多种语言存储内容。让你应用切换语言更容易。

1.6K30

干货分享 | 腾讯自研数据库CynosDB计算存储分离架构实现和优化

,再通过binlog复制传给备机,备机仍然需要同样多IO,存储相同文件,所以主机和备机磁盘会有很多相同IO和冗余文件,而备份仍然需要把这么多文件备份出来,即便数据库被我们搬上云,在云上本地存储有可能变成云存储...其实,将日志写盘由本地ssd转变为网络IO,响应时间后者肯定是不如前者,虽然进行了很多相关优化,但仍然略慢于本地存储,既然在关键路径上不如本地存储,但性能却能领先本地,那么CynosDB是如何达到这个目标的呢...传统数据库在恢复前会找到检查点,从检查点开始读取日志,一直读到日志VDL(最终持久位置),然后开始恢复,因而恢复时间和这段日志长度成正比。...当我们能很快淘汰一个页面,对于固定大小buffer pool,相对于以前,在遇到缺页无形扩展出来了一部分额外空闲页面,相当于一个buffer pool超卖,类似于用100G内存实现了110G...CynosDB卸载了所有本地文件,server层数据也包含在其中,现在元数据基于日志传输,与MySQL8.0重新实现一整套数据字典复杂玩法不同,我们为server层数据在InnoDB扩展出一部分系统表

1.3K30

尚博:CynosDB 计算存储分离架构实现和优化

文件等等保存在本地,再通过binlog复制传给备机,备机仍然需要同样多IO,存储相同文件,所以主机和备机磁盘会有很多相同IO和冗余文件,而备份仍然需要把这么多文件备份出来,即便数据库被我们搬上云...,在云上本地存储有可能变成云存储,但使用空间依然没有减少,虽然我们在云上会有自动运维等诸多便利,但是为了在云上做弹性扩容,我们依然面临传统数据库所面临问题,如计算节点扩容,需要从备份恢复出完整一致文件状态...传统数据库在恢复前会找到检查点,从检查点开始读取日志,一直读到日志VDL(最终持久位置),然后开始恢复,因而恢复时间和这段日志长度成正比。...当我们能很快淘汰一个页面,对于固定大小buffer pool,相对于以前,在遇到缺页无形扩展出来了一部分额外空闲页面,相当于一个buffer pool超卖,类似于用100G内存实现了110G...image.png CynosDB卸载了所有本地文件,server层数据也包含在其中,现在元数据基于日志传输,与MySQL8.0重新实现一整套数据字典复杂玩法不同,我们为server层数据

2.1K21

“终于懂了“系列:Jetpack AAC完整解析(四)MVVM - Android架构探索!

不仅通过数据驱动完成彻底解耦,还兼顾了 Android 页面开发其他不可预期错误,例如Lifecycle 能在妥善处理 页面生命周期 避免view指针问题,ViewModel使得UI发生重建 无需重新向后台请求数据...本地数据源可以使用数据库、SharedPreferences等持久技术来实现,而网络数据源则通常使用Retrofit访问服务器提供Webservice接口来实现。...因此,如果用户在离开页面后再返回,则应用必须重新获取数据,即使数据未发生更改也是如此。这就浪费了宝贵网络资源,迫使用户等待新查询完成。...所以,我们向 UserRepository 添加了一个新数据源,本地缓存。缓存实现 可以是 数据库、SharedPreferences等持久技术。...请注意,并非所有用户都能享受到稳定高速连接。 显示页面状态。例如例子加载进度条,就是观察 ViewModelMutableLiveDataloadingLiveData 进行操作

1.9K10

面渣逆袭:Redis连环五十二问,图文详解,这下面试稳了!

AOF AOF(append only file)持久:以独立日志方式记录每次写命令, 重启重新执行AOF文件命令达到恢复数据目的。...这里 AOF 日志不再是全量日志,而是 自持久化开始到持久结束 这段时间发生增量 AOF 日志,通常这部分 AOF 日志很小: 于是在 Redis 重启时候,可以先加载 rdb 内容...缓存穿透可能有两种原因: 自身业务代码问题 恶意攻击,爬虫造成命中 它主要有两种解决办法: 缓存值/默认值 一种方式是在数据库命中之后,把一个对象或者默认值保存到缓存,之后再访问这个数据,就会从缓存获取...所谓缓存预热,就是提前把数据库数据刷到缓存里,通常有这些方法: 1、直接写个缓存刷新页面或者接口,上线手动操作 2、数据量不大,可以在项目启动时候自动进行加载 3、定时任务刷新缓存. 32.热点...艾小仙《要进大厂》 [5].田维常《后端面试小笔记》 [6]. 美团二面:Redis与MySQL双写一致性如何保证? [7]. 妈妈再也担心面试被Redis问得脸绿了 [8].

1K31

浏览器performance API与页面首屏加载分析

其中页面整体性能时间顺序都在timing属性,主要结构: ? 想必大家一定想知道这里面各个字段代表啥,可以先看看这张图: ?...如果一个持久连接被使用,或者该信息已经被本地资源或者缓存存储,则该值等同于 fetchStart。...如果一个持久连接被使用,或者该信息已经被本地资源或者缓存存储,则该值等同于 fetchStart。 DNS已缓存,则为0,可忽略 connectStart 代表TCP开始建立连接时间节点。...如果浏览器没有进行TCP连接(比如使用持久连接webscoket),则两者等于domainLookupEnd; connectEnd 代表TCP连接完成时间节点。...如果浏览器没有进行TCP连接(比如使用持久连接webscoket),则两者等于domainLookupEnd; secureConnectionStart 如果页面使用HTTPS,它值是安全连接握手之前时刻

2.3K20

Redis主从复制原理

收到了多个slave并发连接请求,它只会进行一次持久,而不是每个连接执行一次,然后再把这一份持久数据发送给多个并发连接slave。...256MB,那么停止复制,复制失败 (4)slave服务器收到RDB快照文件后,会将接收到数据写入磁盘,然后清空所有数据,在从本地磁盘载入收到快照到内存,同时基于旧数据版本对外提供服务。...master服务器维护offset是存储在backlog,msater就是根据slave发送offset来从backlog获取数据 (4)在部分同步过程,master会将本地记录同步备份日志记录指令依次发送给...也就是master持久关闭,可能在master宕机重启时候数据(RDB和AOF关闭了),此时就会将数据复制到slave ,导致slave服务器数据也丢了。...为了更好理解这个问题,看下面这个失败例子,其中主服务器和从服务器数据库都被删除了: 设置节点A为主服务器,关闭持久,节点B和C从节点A复制数据

38940

Cookie、Session、Token那点事儿

一种简单实现可以将cookie存储在内存;复杂系统可以使用文件系统用于保存已接受cookie数据库。...非持久Cookie存储在内存,也就意味着,其生命周期基本和app保持一致,app关闭后,Cookie丢失。而持久Cookie则是存储本地磁盘,app关闭后丢失。...那么,如果我们要使用Cookie持久策略,思想可以参考上面的非持久策略,只需要将存储方式改一下即可: A:通过响应拦截器从response取出cookie并保存到本地,通过请求拦截器从本地取出cookie...不可能这2个页面都去登陆一遍吧。或者用笨方法这2个页面都去查询数据库,如果有登陆状态,就判断是登陆了。这种查询数据库方案虽然可行,但是每次都要去查询数据库不是个事,会造成数据库压力。...所以就很好解决了在www.a.com/login.php页面登陆了,也可以在www.a.com/index.php获取到这个登陆信息了。 同时又不用反复去查询数据库

1.6K31

Ask Apple 2022 与 Core Data 有关问答

销毁数据库后,还需要重新本地创建新数据库。相较于开发者使用文件管理方式删除 SQLite 数据,这种方法更加地安全。...运行 initializeCloudKitSchema 方法时机Q:在使用 Core Data with CloudKit ,如果在 Core Data Stack 编辑持久存储( 例如,为共享对象添加新持久存储...具体内容请参阅 在 CoreData 中使用持久历史跟踪[13] 一文。如何为 NSDictionary 创建模型Q:有一个 NSDictionary 值,需要存储在 Core Data 。...当从存储获取数据,这两个选项是否都会被加载到内存?或者支持懒加载( fault )?不确定哪个更好用。A:两者会有相同内存状况。理想情况下答案是“两者都不是好选择” 。...A:Core Data 将元数据存储存储文件本身。此元数据归 Core Data 所有建议你更改它。

2.8K20

Redis数据库 专题

如果采用了主从架构,那么建议必须开启master node持久机制,建议使用slave node作为master node数据热备。...如果你关掉master node持久,可能在master宕机重启时候数据,然后一经复制,slave node数据也丢失了。 另外,master各种备份方法,也需要做。...万一本地所有文件丢失了,从备份挑选一份rdb去恢复master,这样才能保证重新启动时候,是有数据。...master持久和多种备份方案都是为了防止重启是数据不为从而导致slave结点数据清空。...选择合适内存淘汰策略。 事本地ehcache缓存+hystrix限流&降级,避免MySQL崩掉。 事后:利用redis持久机制保存数据尽快恢复缓存。

72520

前端HTML5面试官和应试者一问一答

autofocus特性,用于所有类型input元素,当页面加载完成,可自动获取焦点,每个页面只允许出现一个有autofocus特性input元素,如果设置多个,相当于未指定该行为。...,是浏览器内本地RDBMS关系型数据库管理系统,可以使用SQL查询。...和Safari没有硬性限制 sessionStorage用于在本地存储一个会话数据,这些数据只有同一个会话页面才能访问,当会话结束后,数据也随之销毁,因此sessionStorage不是一种持久本地存储...localStorage用于持久本地存储,除非主动删除数据,否则数据一般是永久不会过期。...HTML5新特性 拖放api,语义更好内容标签,音频,视频,画布,地理api等,本地离线存储,会话存储,表单控件。

2K50

H5 缓存机制浅析 移动端 Web 加载性能优化

另外 Dom Storage 存储数据本地,不像 Cookies,每次请求一次页面,Cookies 都会发送给服务器。...只要浏览器开着,页面会话周期就会一直持续。当页面重新载入(reload)或者被恢复(restores)页面会话也是一直存在。每在新标签或者新窗口中打开一个新页面,都会初始一个新会话。...2.3 Web SQL Database存储机制 H5 也提供基于 SQL 数据库存储机制,用于存储适合数据库结构数据。...浏览器给虚拟文件系统提供了两种类型存储空间:临时持久。临时存储空间是由浏览器自动分配,但可能被浏览器回收;持久存储空间需要显示申请,申请浏览器会给用户一提示,需要用户进行确认。...持久存储空间是 WebApp 自己管理,浏览器不会回收,也不会清除内容持久存储空间大小是通过配额来管理,首次申请时会一个初始配额,配额用完需要再次申请。 虚拟文件系统是运行在沙盒中。

2.1K20

Redis 持久之RDB和AOF

yes 解说:配置存储本地数据库是否压缩数据,默认为yes。...缺点: 1 数据完整性和一致性不高,因为RDB可能在最后一次备份宕机了。...当AOF文件大小超过所设定阈值,Redis就会对AOF文件内容压缩。 重写原理:Redis 会fork出一条新进程,读取内存数据,并重新写到一个临时文件。...并没有读取旧文件(你那么大了,还去读你??? o(゚Д゚)っ傻啊!)。最后替换旧aof文件。 触发机制:当AOF文件大小是上次rewrite后大小一倍且文件大于64M触发。...Redis 需要手动开启AOF持久方式,默认是每秒将写操作日志追加到AOF文件。 AOF 数据完整性比RDB高,但记录内容多了,会影响数据恢复效率。

1.2K20

大型高并发与高可用三层缓存架构总结

,之后相同页面请求就可以直接返回,不用去查询数据源或者做数据逻辑处理 对于页面非常之多系统,当模板有改变,上述方法就需要重新渲染所有页面模板,毫无疑问是不可取。...,通过水平扩展能够提升并发、高可用能力 一.持久机制 将redis内存数据持久到磁盘,然后可以定期将磁盘文件上传至S3(AWS)或者ODPS(阿里云)等一些云存储服务上去。...如果同时使用RDB和AOF两种持久机制,那么在redis重启时候,会使用AOF来重新构建数据,因为AOF数据更加完整,建议将两种持久机制开启,用AO F来保证数据丢失,作为数据恢复第一选择...这种架构master节点数据一定要做持久,否则,当master宕机重启之后内存数据清空,那么就会将数据复制到slave,导致所有数据消失 sentinal哨兵 哨兵是redis集群架构很重要一个组件...,因为对于一些复杂有逻辑缓存数据,每次数据变更更新一次缓存会造成额外负担,只是删除缓存,让该数据下一次被使用时候再去执行读操作来重新缓存,这里采用是懒加载策略。

1K50

2024年java面试准备--redis(1)

redis redis数据类型 Redis可用性 1、redis持久 持久就是把内存数据持久本地磁盘,防止服务器宕机了内存数据丢失 Redis 提供两种持久机制 RDB(默认)...AOF:持久 ​ AOF持久(即Append Only File持久),则是将Redis执行每次写命令记录到单独日志文件,当重启Redis会重新持久日志中文件恢复数据。 ​...浏览器本地磁盘缓存: Logo缓存,大图片懒加载 服务端本地内存缓存: 由于没有持久,重启必定会被穿透 服务端网络内存缓存 :Redis等,针对穿透情况下可以继续分层,必须保证数据库不被压垮 为什么不是使用服务器本地磁盘做缓存...2、缓存穿透 ​ 缓存穿透是指缓存和数据库中都没有的数据,导致所有的请求落到数据库上,造成数据库短时间内承受大量请求而崩掉。 ​...这些 key 在再次被查询重新从 DB 加载,从而保证数据一致性 缓存时间适当调短,让缓存数据及早过期后,然后从 DB 重新加载,确保数据最终一致性。

23730
领券