- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我经常听到有人使用这个词,但我从来没有真正理解过。
这是什么意思,任何人都可以举一些例子/指向一些链接吗?
编辑:感谢大家的回复。你能告诉我规范表示如何在 equals() 性能中发挥作用,如 Effective Java 中所述吗?
最佳答案
我相信规范有两种相关用途:形式和实例。
规范形式意味着可以以多种方式描述或表示特定类型资源的值,并且选择其中一种方式作为首选规范形式。 (这种形式是规范化的,就像将其纳入圣经的书籍一样,而其他形式则不是。)规范形式的一个典型例子是分层文件系统中的路径,其中单个文件可以以多种方式引用:
myFile.txt # in current working dir
../conf/myFile.txt # relative to the CWD
/apps/tomcat/conf/myFile.txt # absolute path using symbolic links
/u1/local/apps/tomcat-5.5.1/conf/myFile.txt # absolute path with no symlinks
该文件的规范表示的经典定义将是最后一个路径。使用本地或相对路径,您无法在没有上下文信息的情况下全局识别资源。使用绝对路径,您可以识别资源,但无法判断两条路径是否指向同一个实体。将两个或多个路径转换为其规范形式后,您可以执行上述所有操作,并确定两个资源是否相同,如果这对您的应用程序很重要(解决别名问题)。
请注意,资源的规范形式并不是该特定形式本身的质量;给定类型(例如文件路径)可能有多种可能的规范形式(例如,按字典顺序首先是所有可能的绝对路径)。一种形式只是出于特定的应用原因而被选为规范形式,或者可能是任意选择的,以便每个人都说同一种语言。
强制对象进入它们的规范实例是相同的基本思想,但它不是确定资源的一个“最佳”表示,而是任意选择具有相同“内容”的一类实例的一个实例"作为规范引用,然后将所有引用转换为等效对象以使用一个规范实例。
这可以用作优化时间和空间的技术。如果应用程序中有多个等效对象实例,则通过强制将它们全部解析为特定值的单个规范实例,您可以消除每个值中的所有值,从而节省空间和时间,因为您现在可以进行比较那些具有引用标识 (==) 而不是对象等价的值(equals()
方法)。
使用规范实例优化性能的一个经典示例是折叠具有相同内容的字符串。对具有相同字符序列的两个字符串调用 String.intern()
可以保证为该文本返回相同的规范 String 对象。如果您通过该规范化器传递所有字符串,您就会知道等效字符串实际上是相同的对象引用,即别名
Java 5.0+ 中的枚举类型强制特定枚举值的所有实例在 VM 中使用相同的规范实例,即使该值已序列化和反序列化。这就是为什么如果 Days
是枚举类型,您可以在 java 中不受惩罚地使用 if (day == Days.SUNDAY)
。为您自己的类(class)这样做当然是可能的,但要小心。阅读 Josh Bloch 的 Effective Java 了解详细信息和建议。
关于java - Java 中的术语 "canonical form"或 "canonical representation"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/280107/
我有一个 Python 字典 dict。想象一下这个简单的例子。字典: bin1:{apple,apple,cherry,cherry,cherry,banana,banana,avocado} bi
我在Google上搜索了规范表示的含义,然后发现文件太含糊了。谁能提供规范表示的快速解释,以及网站中典型表示攻击的一些典型漏洞是什么? 最佳答案 规范化是您接受输入(例如文件名或字符串)并将其转换为标
本文整理了Java中org.restlet.representation.WriterRepresentation类的一些代码示例,展示了WriterRepresentation类的具体用法。这些代码
这个问题已经有答案了: How to convert number to words in java (32 个回答) 已关闭10 年前。 我有一个列表 Integer从 1 到 100。如果我循环遍
我正在使用 Coin-or Linear Programming图书馆。我想构建一个 ClpPlusMinusOneMatrix .它的构造函数是: ClpPlusMinusOneMatrix (in
免责声明:我完全知道表示日期/时间的最佳方式是 Unix 时间戳或 PHP 的 DateTime 类和 Oracle 的DATE 数据类型。 顺便说一句,我想知道最适合存储时间 数据的数据类型是什么(
我已经编写了我的代码,但就我个人所知,我想知道如何对其进行建模。 我们开始吧:一个用户可以拥有多个配置文件,每个配置文件都与一个且唯一的应用程序相关联。配置文件定义了用户在应用程序中的权限:同一用户可
我想了解 Representable 的含义在 Haskell 中代表。定义 Representable endofunctors over the category of Haskell types
如何构建一个 API,其中相同的数据可以以不同的格式(RESTful 格式)请求。例如。 GET /person/ //get the details of resource 现在,根据客户端(浏
这是这个问题的更具体的变体:Mutate only focus of Store Comonad? ,这样做的好处是不要一次提出多个问题。 是否有兼容 Control.Lens 的镜头它允许我与 co
我一直在为 iOS 开发一个日历应用程序,这让我遇到了很多问题。 我正在使用本地通知进行提醒。存储事件日期、警报日期或其他内容的最佳方式是什么?我的意思是,问题是由时区差异等引起的。我将事件存储在核心
我正在构建一个网络 CMS,用户可以在其中为某些网站元素选择颜色。我想将所有颜色值转换为十六进制以避免任何进一步的格式化麻烦(“rgb(x,y,z)”或命名颜色)。我为此找到了一个很好的 JS 库。
我有像这个例子这样的简单代码: int main() { double i_3 = 4.1; // 8 bytes return 0; } 让我们用 -S 选项编译这个示例: g++ -S -
我正在尝试执行 POST 操作: 我的 Controller 是: @RestController @RequestMapping({"/contacts"}) public class Contac
我需要一个数据表,以便在由一些生成的数据增强的 WPF 数据网格中显示数据。但我还需要将数据从数据库加载到本地 C# 对象,因为表示数据的类会进行很多计算。 那什么更好呢?仅依赖于数据表?或者对象和数
我正在开发一个 Java Spring Boot 应用程序,我使用的是版本 2.1.5 RELEASE。就我而言,我还使用 DozerBeanMapper (5.4.0) 和 Lombok 以防万一这
我正在使用 Postgresql 和 PHP 5.3.x with PDO 来访问数据库。 我有这个 SQL 查询(精简版),需要填写一个 PDO 占位符: INSERT INTO t_article
根据 C11 WG14 draft version N1570 : The header declares several functions useful for classifying and
我正在构建一个网络 CMS,用户可以在其中为某些网站元素选择颜色。我想将所有颜色值转换为十六进制以避免任何进一步的格式化麻烦(“rgb(x,y,z)”或命名颜色)。我为此找到了一个很好的 JS 库。
在golang中,如何将字符串转换为二进制字符串?示例:'CC' 变为 10000111000011 最佳答案 这是一个简单的方法: func stringToBin(s string) (binSt
我是一名优秀的程序员,十分优秀!