ssm影城项目_影场与属性访问器界面

ssm影城项目

卡尔·迪亚(Carl Dea)最近跟踪了我的一篇名为“ 保存内存”的博客文章! 为属性使用阴影字段 。 在他的博客中,他建议使用称为“属性访问器”的接口来消除大量使用样板代码所需的样板代码。 卡尔还提到他尚未用大量数据测试他的方法,他或某些读者可能会跟进性能比较。 所以它来了。

我编写了一个小型测试应用程序,该应用程序实现了卡尔在他的帖子中提到的三种策略:

  1. 在实例化类的同时实例化的标准属性
  2. 卡尔建议的属性访问器接口
  3. 我最近的博客文章中提出的阴影区域

该代码可以在GitHub上找到 。 (运行它时,请确保将初始堆大小和最大堆大小设置为2048 MB -ms2048m -mx2048m,否则内存分配会弄乱结果)。

该应用程序允许用户在询问或不询问属性的情况下执行这些策略。 它测量花费的时间和使用的内存。 应该注意的是,由于我使用System.currentTimeInMillis()Runtime.gc() ,因此测量结果不科学。 当运行几次时,我仍然会认为这些测试的质量值是可以接受的。

下面的第一个屏幕截图显示了当您创建1,000至2,000,000个Carl用于其博客的Employee类实例时获得的数量。 测试不会要求提供Employee可用的属性(姓名,权力,主管,奴才):

a1

如您所见,“影子字段”策略是最快的,并且使用的内存量最少。 这是有道理的,因为“标准属性”策略总是创建那些胖属性对象,而“属性访问器接口”在内部管理每个模型对象的哈希映射。 只有“影子域”策略才能使用最少的数据结构。 对于选定的测试,它总共可以节省230 MB。 现在,如果您想象典型的应用程序具有许多模型类,并且其中许多类都比Employee测试类复杂得多,那么您可以想象可以节省多少内存。

下一个屏幕截图显示了当还访问Employee类中的所有四个属性和可观察对象时所进行的测量。

a2

现在,“标准属性”策略是最快的,也是使用最少内存的策略。 再次讲得通,因为该策略现在针对给定的用例实现了完美的方法。 但是,“影子域”策略排在第二位。

结论

“属性访问器接口”策略成功地减少了阴影场所需的所有样板代码所产生的噪声,但我认为这样做的代价太高了,无法为创建多个模型对象的任何应用程序付钱。

PS:应该注意的是,当JVM的初始堆大小保留为其默认设置时,该比较甚至更支持“影子字段”策略。 在这种情况下,测试应用程序必须不断要求更多的堆空间,这是一项相当昂贵的操作。

翻译自: https://www.javacodegeeks.com/2016/04/shadow-fields-vs-property-accessor-interface.html

ssm影城项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java流写入数据库_Java 8:在2分钟内将智能流与数据库一起使用

java流写入数据库快速流媒体 当Java 8最终问世时,我和一些大学开始了一个开源项目,以利用Java 8的流库使整个Java / DB问题更进一步,以便将数据库表视为纯Java 8流。 速度诞生了! 哇,现在我们可以做类型安全的数据库应…

小米摄像头有onvif协议_监控摄像头完好但图像不行,肯定逃不过这10个问题

摄像头仅仅是视频监控系统的一部分,即使摄像头完好无损,监控画面也可能会出现不显示、卡顿、丢失等情况。想要彻底解决网络监控的问题,往往需要排查各个连接设备才可以判断。下面我们就总结了10个问题,彻底解决网络监控的问题。一…

java对话_您应该保持联系的十大高级Java对话

java对话在线讲座和视频是学习软件开发新事物的主要资源之一。 您可以找到Java专家与您分享他们的经验,而不必坐下来。 在下面的文章中,我们收集了10位我们最喜欢的演讲者和主题,我们相信每个Java开发人员都应该注意。 获取爆米花&#xff0…

【WebRTC---源码篇】(三)Windows/Linux音视频采集封装模块

视频采集相关类图 DeviceInfo接口提供了设备枚举相关功能。 NumberOfDevices枚举设备个数。 GetDeviceName获取某个设备名称。 GetCapability枚举某个设备所支持的所有能力(VideoCaptureCapability: 分辨率,最大帧率,颜色类型) VideoCaptureModule视频采集模块的基类: …

java设计单词英译汉小助手_拣单词|第八期第3天:第521528个单词宝藏

宝藏坚持每天拣单词积累你的词汇宝藏打好英语学习基本功怎么学?每天预留15分钟,积累你的词汇宝藏!每周一、二、三,发布新单词每周四、五、六,乱序复习单词周日测试(仅限入群的学员)遇到新单词,你可以&#…

spring多个视图解析器_在Spring中配置多个View解析器

spring多个视图解析器1.简介 在Spring中,提供了View Resolver来使用模型中可用的数据来解析视图,而无需与JSP,Velocity或Thymeleaf等View技术紧密绑定。 Spring可以根据需要轻松灵活地配置一个或多个View Resolver 。 2. Spring MVC应用程序…

单选按钮:after_选择的按钮:将ToggleButtons用作单选按钮

单选按钮:after对于MQTT.fx,我想使用ToggleButtons例如选择MQTT消息或QoS级别的解码: 我发现在ToggleGroup的上下文中,ToggleButton在选择/取消选择方面的行为与RadioButtons不同:与RadioButtons不同,ToggleButtons仍…

【技术解决方案】开发工具源码安装包大全

汇总下载链接 下载地址 QT下载以及安装 各版本QT下载地址 1.安装中根据不同的开发环境勾选相应的,如果使用VS编译请先安装VS和SDK然后再安装QT。 使用VS时CDB调试支持需要勾选 QTCreator断点调试需要下载SDK,Windows的SDK下载地址,只需要安装勾选如…

垃圾收集算法,垃圾收集器_确定活动的热点垃圾收集器

垃圾收集算法,垃圾收集器StackOverflow问题查找正在运行哪种类型的垃圾收集 器,jvm的默认垃圾收集器 , 如何通过查看gc日志来查看正在运行的垃圾收集器? ,以及如何知道HotSpot jvm的当前GC策略? 以及博客文章如何以编程…

树与堆的基本概念

当看到这里的时候,相信你的链表,队列,栈学的也差不多可以了,那么接下来让我们一起进入树的学习吧! 一.树的概念以及一些知识记忆 树的定义: 树是一种 非线性 的数据结构,它是由 n &#xff08…

jboss war包放哪_如何将JBoss HR Employee Rewards项目放入云端

jboss war包放哪我们一直在讨论为什么应用程序开发人员在App Dev Cloud Stack系列中不能再忽略其堆栈了。 我们从头到尾讨论了各个层次,但尚未为您提供除Red Hat Container Development Kit(CDK)之外的任何应用程序开发工具。 到目前为止&am…

hotspot 垃圾收集器_HotSpot增量Java垃圾收集器

hotspot 垃圾收集器在我最近的博客文章“ 确定活动的HotSpot垃圾收集器”中 ,我描述了可用于确定HotSpot JVM (Java进程)正在使用的垃圾收集器(当从命令行参数(标志)中变得不明显时)的不同方法。…

【安卓开发 】Android初级开发(一)控件通用属性

控件通用属性 match_parent 是指和父容器宽高相等的值,其他的同理可证。 android:layout_marginTop"XXXXXXdp" 距离顶部的距离 Android TextView属性详解 该控件相关属性 Android EditText属性大全 相关属性查看地址 事件监听处理 package com.examp…

认证令牌_Java应用程序的令牌认证

认证令牌建筑物身份管理,包括身份验证和授权? 尝试Stormpath! 我们的REST API和强大的Java SDK支持可以消除您的安全风险,并且可以在几分钟内实现。 注册 ,再也不会建立auth了! 2016年5月12日更新&#xf…

java package报错_Java基础知识总结 - 超详细篇(上)

1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库JVM(java虚拟机)。3&#xff0c…

weblogic 建立websocket连接报404_基于 Serverless 与 Websocket 的聊天工具实现

传统业务实现 Websocket 并不难,然而函数计算基本上都是事件驱动,不支持长链接操作。如果将函数计算与 API 网关结合,是否可以有 Websocket 的实现方案呢?API 网关触发器实现 WebsocketWebSocket 协议是基于 TCP 的一种新的网络协…

monolith_将Java EE Monolith雕刻成微服务

monolith在介绍了为什么微服务应该由事件驱动的简介博客之后,我想采取一些其他步骤,并在有关博客的同时准备我即将进行的一系列演讲(在jBCNconf和Red Hat Summit上与您见面) 。旧金山 )。 在Twitter christianposta上关…

spring内容协商管理_Spring框架中的内容协商

spring内容协商管理1.简介 使用BeanNameViewResolver完成的工作就是,我们刚刚在Spring上下文中创建了多个bean视图以生成预期的输出。 Spring很快引入了内容协商策略 ,该策略可以使用传统的RESTful ResponseBody方法和HTTP消息转换器,以JSON或…

二叉树专题

二叉树 (一)二叉树的三种遍历方式: 前序遍历 : 1 2 4 5 3 6 7 ; 中序遍历 : 4 2 5 1 6 3 7 ; 后序遍历 : 4 5 2 6 7 3 1 ; 本质是在递归序的基础上…

echart中拆线点的偏移_Real BIM | Rhino+Grasshopper在双曲异形玻璃幕墙中的应用

转载请联系并注明来源你好,我以自己所做的项目为例,介绍一下我的认知里,BIM技术对于真实项目的作用。案例是一个异形、双曲面的玻璃屋盖幕墙系统。如效果图所示,玻璃屋盖呈波浪状,塔楼装饰条与屋盖装饰条需要无缝连接。…