问题标签 [lazy-initialization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
7429 浏览

java - Hibernate 延迟加载、代理和继承

在处理继承时,我遇到了休眠中延迟加载的问题。我有一个实体引用了第二个子类实体。我希望引用延迟加载,但这会导致我的 .equals() 方法出错。

在下面的代码中,如果在 A 的实例上调用 equals(),则在检查 Object o 是否是 C 的实例时,C.equals() 函数中的检查失败。它失败是因为另一个对象实际上是 Hibernate由 javassist 创建的代理,它扩展了 B,而不是 C。

我知道 Hibernate 不能在不访问数据库的情况下创建 C 类型的代理,从而破坏延迟加载。有没有办法让 A 类中的 getB() 函数返回具体的 B 实例而不是代理(懒惰地)?我尝试在 getB() 方法上使用 Hibernate 特定的 @LazyToOne(LazyToOneOption.NO_PROXY) 注释无济于事。

0 投票
3 回答
1115 浏览

objective-c - C结构的延迟初始化

我不确定如何初始化 C 结构或 iOS5 之前的基本类型的类属性。如果我正在处理一个类,这就是我会做的事情,但我不知道我可以检查这是否是第一次访问该结构,因为它们在创建时未定义:

我意识到延迟初始化的主要好处是内存分配,但如果我对所有作为类的属性都这样做,那么使用相同的样式来设置我所有属性的起始值似乎是最清楚的。

我可以使用其他一些实例变量或属性来跟踪 self.origin 是否已被访问,但这似乎......并不顺利。在我设置它之前,我可以注意永远不要访问 self.origin,这似乎是由于结构在创建时未定义的事实而产生的。

有没有“正确”的方式?

0 投票
2 回答
5799 浏览

c# - .Net 延迟初始化单例属性

我有一个类,DataAdapter它被我的站点实例化为一个单例对象。该类有一个 Person 属性,我想成为一个懒惰的单身人士,完成此操作的代码:

(PersonManager 构造函数的这三个参数是当前对象的属性/字段。)这段代码完美运行(这是一个双锁检查模式)。

但是,这是很多代码,我想利用 .Net 4.0 中新的Lazy<> 类型使其更简单。所以我将代码更改为:

但这不起作用,因为这三个参数不是静态的(它们是当前方法上的实例对象)。我发现的所有文章都没有解决 这个问题。我需要一些方法将这些值传递给那个 lambda 表达式吗?Lazy<> 类看起来需要一个空签名。

0 投票
1 回答
594 浏览

java - Play 中的场同步!控制器

考虑一种情况,当我们有一个具有 2 个使用相同控制器字段的操作方法的控制器时。该字段应该被延迟初始化。

使用 Play Framework 同步公共资源的更好方法是什么?考虑到资源应该是惰性初始化的。

谢谢,阿德里安

0 投票
5 回答
1010 浏览

java - 为什么会延迟生成 Java String 哈希码?

在 java.lang.String.java 中显示,Java 只会在调用 hashcode() 之后生成哈希码,然后存储它,但为什么不在构造函数中制作哈希码呢?

相关代码:

大多数情况下可以放在构造函数中。

0 投票
1 回答
589 浏览

java - 播放框架中的 LazyInitializationException

在为我的网络应用程序编写功能测试时playframework,我创建了

listTagged方法检查包含属于给定类别的书籍列表的Cache地图对象( ),如果地图为空或列表为空,则进行数据库查询并将列表呈现为“书籍”。String:List<Book>

书课是

单独运行上述测试没有问题。但是当它与一些为各种书籍调用数据库的单元测试一起运行时会导致延迟初始化异常

我该如何解决这个问题?有人可以建议吗?

0 投票
2 回答
84 浏览

c++ - 有没有一种懒惰初始化类的静态子对象的方法?

有没有办法在 main() 启动后初始化静态类成员?

0 投票
1 回答
424 浏览

google-app-engine - 如何避免 Python 模块全局初始化的延迟?

我正在尝试优化用 python 编写的 Web 应用程序的一般加载时间。我的应用程序使用了很多模块,其中一些模块对于给定的请求可能实际需要也可能不需要。

由于页面加载时间是最终用户感知网站质量的重要因素,因此我试图减少加载可能不必要的模块的影响 - 特别是尝试减少初始化全局变量所需的时间(和内存)可能根本不需要。

简单地说,我的目标是:

  1. 尽可能减少模块初始化时间(不是 CPU 使用率)。
  2. 减少不需要的全局变量占用的内存。

为了说明,这是一个简单的模块示例:

构建集合需要时间COMMON- 如果COMMON不使用,那会浪费加载时间和内存。
显然对于单个模块/全局,成本可以忽略不计,但是如果您有100 个模块和 100 个变量怎么办?

一种加快速度的方法是延迟初始化,如下所示:

它节省了加载时间和内存,牺牲了一些 CPU。

我尝试了其他一些技术(见下文),其中两种比上面的简单缓存要快一些。

我可以使用另一种技术来进一步减少可能不会在给定请求上使用的模块和全局变量的加载时间吗?


到目前为止我尝试过的方法需要 Python 2.6+:

使用 Python 2.7,我得到了这些时间(最好的是没有范围的钩子):

0 投票
0 回答
337 浏览

hibernate - Sitemesh 和 OpenSessionInViewFIlter/Interceptor 有什么关系?

我现在对我的项目和配置感到非常非常沮丧,因为在网上进行了如此多的研究之后,在这里这里的 stackoverflow 中发布 我仍然遇到这个著名的延迟初始化异常的障碍。我确实实现了过滤器或拦截器。我确实将调度程序应用程序配置与其余部分分开。配置应用程序上下文和调度程序之间没有跨组件扫描。

然而仍然有这个例外。我现在真的没有选择,时钟在我头顶滴答作响。

sitemesh 和 OpenSessionInViewFilter 或 OpenSessionInViewInterceptor 有什么问题吗?

这是异常本身

我们使用 Hibernate GenericDAO。这是我们对 GenericDAO 的配置

感谢您阅读本文并提供帮助

0 投票
1 回答
2766 浏览

scala - 在 Scala 中初始化伴随对象值的规则

我的游戏有一个像这样的 Sounds 对象:

为简洁起见,我删除了许多方法等。但基本思想是 Scala 延迟初始化对象,所以我第一次load()在这个对象上调用一些方法 ( ) 时,它会被初始化。例如,这将在纹理加载等之后完成。

但是使用上面的代码,当我第一次在游戏中按下某个菜单按钮时,我会暂停很长时间,因为它只会加载所有这些声音(由SoundFactory.createSound...构造函数中的 引起)。

现在,如果我将load方法更改为以下:

所有声音都正确加载。

那么,为什么会发生这种情况?Scala 如何以及为什么初始化 Sounds 对象,以便我可以调用 load() 但不在构造函数部分加载它自己的值?伴随对象初始化的规则是什么?