在我们制作的应用程序(iOS / Swift,Android)中,我们有一个用户希望接收推送通知的设置页面.其中一个设置是供用户选择一周中的哪几天.
我的问题是关于如何将此选项存储为一个变量,而不是七个布尔值.该设置将被发送到服务器/数据库进行存储,我想我们可以简单地在数据库中使用单个字节字段.
而不是monday = true,tuesday = false,…,我想使用例如’10001010′,其中1为真且0为假,这将转换为monday = true(1),tuesday = false(0),等等(星期一是一周的第一天,它是……).
这是存储此类数据的有效方法吗?我可以创建这样的字节吗?或者使用字符串/ char []“10001010”是一种更常用的做法?或者数据库(例如MySQL)可以将bool [](10001010)存储为一个字段吗?还是有另一种更好的做法吗?
用于权限的方法也浮现在脑海中(你知道,777,只是简化)
当然,某些变体需要服务器对变量使用相同的逻辑,但在这种情况下这没有问题.
简短的解释,我需要7个布尔值,一周中的每一天,并且我想比每天一个变量更有效地存储它.有“最佳实践”吗?
解决方法:
这个问题“破坏”过早的优化:
> 7个布尔变量占用的空间可以忽略不计(可能是7 x 4个字节)…除非您需要同时在内存中保存数十万个用户设置对象.
>网络带宽的差异可以忽略不计……除非您发送数百万条消息.
>数据库表空间的差异可以忽略不计……除非您在数据库中存储了数百万个用户记录.
Is this a valid way to store such data?
定义“有效”.但是,它(大多数情况下)有效.
I want to store it more efficiently than one variable per day
是的……但是有必要这样做吗?你有没有量化这个(假定的)效率可能获得多少.
对于它的价值,将多个布尔值打包成一个字节/字/任何东西都有一些惩罚.这些包括:
>访问和更新打包到单个变量中的标志涉及额外的按位操作,这往往会使事情变慢.
>将标志表示为数据库中的位将使SQL查询更加困难,具体取决于数据库. (见http://blog.jooq.org/2011/10/30/the-comprehensive-sql-bitwise-operations-compatibility-list/).它还可能会干扰查询优化.
>可读性.
原文地址:https://codeday.me/bug/20190528/1167337.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。