在网站、管理软件的开发中,经常会碰到多选框。例如:用户可以设置自己愿意接收的邮件类型 1:从不接收 2:接收自己follow的博客的更新信息 3:接收新闻 4:接收私人信息。
这时我们可以选择传统的方式。定义一些字符串常量,例如:
public static final String EMAIL_OPTION_NEVER = "NEVER";
public static final String EMAIL_OPTION_FOLLOWED = "FOLLOWED";
public static final String EMAIL_OPTION_NEWS = "NEWS";
public static final String EMAIL_OPTION_PERSONAL = "PERSONAL";
对应的JSF页面如下:
<h:selectManyCheckbox id="optionsCheckbox" value="#{consumerAccountAction.emailOptionList}" layout="pageDirection" onclick="clickOptionCheckbox();">
<f:selectItem itemLabel="#{messages['label_emailoption_never']}" itemValue="NEVER"/>
<f:selectItem itemLabel="#{messages['label_emailoption_news']}" itemValue="NEWS" />
<f:selectItem itemLabel="#{messages['label_emailoption_followed']}" itemValue="FOLLOWED" />
<f:selectItem itemLabel="#{messages['label_emailoption_personal']}" itemValue="PERSONAL" />
</h:selectManyCheckbox>
假设数据库中有一个表的字段名为email_options。这样当用户选择2,3的时候, email_options中存储的数据就可能是 “FOLLOWED,NEWS”。
而在实际要给用户发邮件的时候,就要判断这个字段中存在的值,例如:if(emailOption.indexOf(EMAIL_OPTION_NEVER)!=-1)
上述传统的解决方案没有问题,但是数据库中存储的数据还是占用空间过多。有一种办法可以极大的降低占用空间,业务逻辑上也不会复杂。
重新定义常量(常量按照2的次方递增):
public static final String EMAIL_OPTION_NEVER = "1";
public static final String EMAIL_OPTION_FOLLOWED = "2";
public static final String EMAIL_OPTION_NEWS = "4";
public static final String EMAIL_OPTION_PERSONAL = "8";
并让字段email_options中存储的值为FOLLOWED|NEWS, 而判断的时候可以用if((emailOption&EMAIL_OPTION_NEVER)!=0).
'|' 和'&' 是位运算符。具体大家可以去google. 这样数据库中存储的仅仅是一个数字,比一长串的字符串占得空间要少得多。
分享到:
相关推荐
- **实际案例**:比如之前一个网站的100M空间已经被使用了91.19M,经过优化后仅使用了35.42M,节省了61.2%的空间。 #### 技巧二:合理清理数据库 - **背景介绍**:随着时间的推移,数据库中会积累大量不再使用的...
总之,深入理解并掌握SQL Server数据库的应用技巧,对于技术人员来说是一个系统性的学习过程。这不仅包括对数据库性能的持续优化和查询效率的提升,也包括对数据库安全性的不断强化和维护。通过上述对SQL Server...
数据库设计是一个复杂而精细的过程,需要综合考虑业务需求、数据特性、性能要求和安全性等多个方面。通过遵循上述设计技巧,可以构建出高效、稳定且易于维护的数据库系统,为企业的信息化建设奠定坚实的基础。在实际...
同时,持续关注易语言的更新和社区资源,学习最新的EDB数据库优化技巧,以适应不断变化的开发需求。 通过本文的讲解,我们了解了如何在易语言环境下针对EDB数据库进行优化,以实现体积的减小。这些技术对于提升程序...
总结,Oracle数据库的空间管理需要DBA根据实际情况灵活运用各种工具和技巧,保持数据库的高效运行,同时兼顾存储资源的节约与合理分配。通过持续监控、分析和调整,可以确保数据库系统的稳定性和性能。
综上所述,Oracle数据库性能优化是一个综合性的过程,需要结合硬件配置、数据库架构、SQL语句优化、内存管理和参数调整等多个因素,通过持续监控和分析,逐步消除系统瓶颈,确保数据库系统的高效稳定运行。...
在探讨SQL Server数据库压缩技巧之前,我们首先需理解为何数据库压缩成为了一个值得关注的话题。随着业务的扩展和数据量的剧增,数据库的存储需求也相应增加,这不仅增加了存储成本,还可能影响数据库的性能。因此,...
此外,如果SC表的Cno字段和Student表的Sno字段上有索引,那么可以进一步提高查询效率,这是**物理优化**的一个实例。 #### 五、代数优化策略 - **选择运算优先**: 选择运算应尽可能先执行,以减少后续操作的数据量...
文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。...
链接表法则为每个非零项创建一个节点,节点中包含系数和指数,这种方法更灵活,但占用的空间相对较多。 在"一元稀疏多项式报告.doc"文档中,可能包含了实验的详细过程、算法描述、实现细节以及性能分析。通常,报告...
每个进程至少有一个线程,线程之间共享内存空间,包括代码段、全局变量等。多线程技术可以让程序更加高效地执行,因为线程之间的切换开销比进程小,且线程间通信也更方便。 线程池技术是多线程编程中的一种重要技术...
栈空间通常较小,过多的线程或者过深的方法调用会导致栈溢出。 #### 2. 减少内存占用量的策略 为了解决多线程运行时的内存压力,可以采用以下策略: - **使用静态方法减少对象创建**:在`OpenidServices`类中使用...
每个章节都会围绕一个特定主题展开,提供详尽的理论知识和实践指导,帮助读者全面掌握 INFORMIX-ESQL/C 的使用技巧。 - **数据类型**:包括 DECIMAL、DATETIME、INTERVAL、VARCHAR 等数据类型的使用方法和注意事项...
XenDesktop 虚拟桌面规划是 Citrix 虚拟桌面的一种部署方案,旨在提供一个完整的虚拟桌面解决方案。本文档将从虚拟桌面基础架构的角度,详细介绍虚拟桌面规划的各个组件、服务器角色、配置方法和技巧。 管理角色...
5、上传文件清理大大节约空间资源:系统后台可以根据管理员操作的项目来清理无效、过期的文件,从而大大节约了空间,节约了成本。 6、支持无限级栏目,可绑定二级域名,而且各栏目下的数据可以移动、合并 7、系统...
第一阶段是模型制图综合,通常在主数据库的基础上生成特定比例尺的子数据库。这个阶段主要关注减少要素密度和简化细节,而不涉及具体的符号化和主题对比。第二阶段是真正的制图综合阶段,发生于地图制作的后期,此时...
文档提到liveCache Administration,这是SAP R/3系统中的一个关键技术组件,用于提高数据访问速度和系统性能。以下是对liveCache管理的一些关键知识点的解读: 1. **liveCache简介**: - liveCache是一种高性能的...
布隆过滤器是一种高效的空间节约型数据结构,它在计算机科学中主要用于判断一个元素是否可能存在于给定的集合中。由于其概率性的特性,布隆过滤器可能会产生误判,即有时会将不存在的元素判断为存在,但不会漏判已...
对于非专业技术人员来说,想要自行搭建一个美观且功能丰富的网站,可能会遇到诸多难题。《自助建站宝典》这套视频教程正是为此而生,它旨在帮助零基础用户轻松掌握WordPress建站技巧,从而实现自己的网站建设梦想。 ...