微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 我可以使用’byte’作为布尔数组吗?

在我们制作的应用程序(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/).它还可能会干扰查询优化.
>可读性.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐