标签: lazy-initialization

增加数组中未设置变量/新键的好方法

由于某种原因,我经常发现自己做这样的事情:

foreach($source as $key => $value) {
    if (!isset($arr[$key])) {
        $arr[$key] = 0; // or any other value
    }
    $arr[$key] += something($value);
}
Run Code Online (Sandbox Code Playgroud)

当我拥有众所周知的数据源时,有时我会做:

foreach($source as $key => $value) {
    @$arr[$key] += something($value);
}
Run Code Online (Sandbox Code Playgroud)

为了避免日志垃圾邮件(我不想从日志中删除警告或通知)

还有其他更紧凑,更智能或更美的方法吗?

php lazy-initialization

0
推荐指数
1
解决办法
577
查看次数

Spring 的 @Lazy 初始化线程安全吗?

希望一个简单的问题来回答。我找不到任何绝对明确的答案。任何人都可以帮助提供可靠的消息来源。

我的普遍看法是,如果不使用适当的同步块,延迟加载在多线程应用程序中是危险的。我想知道这是否适用于 Spring。

谢谢。

java spring thread-safety lazy-initialization

0
推荐指数
1
解决办法
978
查看次数

延迟评估属性语法差异

对于延迟评估的属性,以下两种方法(具有支持字段的属性和具有默认值的属性)之间是否有任何差异,或者它们是否等效?

// (1)
public static class Foo
{
    private static readonly Lazy<Foo> instance = new Lazy<Foo>();
    public static Foo Instance { get; } = instance.Value;
}

// (2)
public static class Foo
{
    public static Foo Instance { get; } = new Lazy<Foo>().Value;
}
Run Code Online (Sandbox Code Playgroud)

我想要实现的是,Foo仅在访问 时创建 的实例Foo.Instance,而不是之前创建 - 更重要的是,当Foo.Instance从未访问过时,不应创建任何实例。

c# lazy-evaluation lazy-initialization

0
推荐指数
1
解决办法
210
查看次数

我可以在集合上使用 volatile 吗?

我有一个枚举,我想我可以缓存values().

enum MyEnum {

    SOME;

    private static volatile Set<MyEnum> values_;

    public static Set<MyEnum> values_() {
        Set<MyEnum> result = values_;
        if (result == null) {
            values_ = result = Collections.unmodifiableSet(EnumSet.allOf(MyEnum.class));
        }
        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了允许重复初始化的延迟初始化。

奏鸣曲也有volatile Set<MyEnum>部分抱怨。

SonaLint:使用线程安全类型;添加“易失性”不足以使该字段成为线程安全的。

https://rules.sonarsource.com/java/RSPEC-3077

我的代码有问题吗?

java enums volatile lazy-initialization

0
推荐指数
1
解决办法
166
查看次数