问题标签 [singleton-methods]

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 投票
1 回答
114 浏览

c# - 单例线程安全

我的问题是关于类函数的线程安全。这是我拼凑起来的一些测试代码,试图更好地理解。

}

Singleton 类的创建是安全的,但我的问题是关于函数 ExecuteAlgorithm 的使用。多线程使用 ExecuteAlgorithm() 是否安全?

我的理解是它应该不会导致任何竞争条件,因为创建的每个线程都有自己的堆栈,其中局部函数变量将被推送到其中,然后算法实例的创建将在应用程序范围的堆中创建。

我的理解正确吗?

0 投票
1 回答
93 浏览

objective-c - “[[self sharedManager] retain]”为什么要retain

在苹果文档单例中:

我有个问题:

保留应该省略,但为什么要保留保留?

因为 return [self sharedManager][[self sharedManager] retain]等于。

0 投票
8 回答
2577 浏览

java - 如何扩展单例类以处理特定数量的对象

在 Java 中,我创建了一个单例类,如下所示:

在这里,仅返回对 Singleton 类的已创建对象的引用。如何创建一个类,以便只允许创建该类的四个对象?我可以为此使用这个 Singleton 类,还是必须从头开始?

哦, print() 是我在这里的自定义方法。与 相同System.out.println(),只是击键次数更少 :)

0 投票
1 回答
556 浏览

objective-c - 如何使用单例类方法更改全局变量的值?

我希望能够从任何更改全局变量值的类中调用方法。

我将首先为不想查看代码的任何人概述问题。

提前为长篇道歉!我只想提供所有详细信息。

在我当前的设置(受 SREE 博客启发的一些测试代码)中,我有一个单例类 (GlobalData),它定义了一个全局变量 (globalMessage) 和一个更改全局变量的方法 (globalFunction)。

到目前为止,我的代码...

1) 在单例类 (GlobalData) 中将 globalMessage 设置为“默认全局消息”。

2) 使用 NSLog 在另一个类 (MyDocuments) 中打印“Outside class: 'Default Global Message'”。

3) 使用另一个类 (MyDocuments) 来调用 globalFunction。

4) globalFunction 将 globalMessage 设置为“New Global Message”

5) globalFunction 使用NSLog(@"Set %@", globalMessage)输出“设置新的全局消息”

6) 重复步骤 2。NSLog(@"Outside class: %@", [GlobalData sharedGlobalData].globalMessage)

问题是,在第 6 步,控制台仍然打印“默认全局消息”

不知何故,当我调用 globalFunction 时,我只是在更改实例变量 globalMessage 而不是全局变量。

非常感谢您的帮助!

这是代码...

全球数据.h

全球数据.m

我的文档.h

我的文档.m

输出图像。

0 投票
1 回答
932 浏览

c# - 如何在工作进程asp.net的所有实例之间共享变量

我不得不将预先构建的 asp 网站从单个工作进程环境移动到云服务器上的多个工作进程环境。我有一个带有静态 arraylist 变量的类,它用于包含所有会话信息的最后 2 分钟以用于跟踪目的。管理员用于访问此数组列表以查看实时报告。但在将其转移到云基础设施时,这种分解结果不再正确。这取决于负载均衡器后面的哪个服务器正在为页面提供服务,因此每个应用程序池都有多个静态变量实例。我尝试迁移到 mysql,但我们需要定期清除数据,而且它也存在性能问题。在这里,arraylist 被大量处理以产生有用的数据,因此我需要一些内存中的东西。

请注意,之前使用不带锁的静态变量也是不利的,但这只会导致 1 或 2 条记录之间的差异,但速度非常快。

0 投票
2 回答
1135 浏览

java - Spring MVC Singleton Controller - 多个下载请求

我知道 Spring MVC 控制器是单例。

因此,使用控制器的字段来存储数据可能会导致安全问题。

问题是,假设它有一个允许用户下载文件的映射 -

那么如果多个用户同时请求下载不同ID的文件,是否会导致一个用户获取另一个用户请求的文件?

0 投票
1 回答
342 浏览

objective-c - 在 AppDelegate 中设置的单例在另一个类中分配时会丢失它的值

我有一个 iPad 应用程序,我正在尝试使用单例。这是 .h 文件中的代码:

这是 .m 文件中的代码:

我在 AppDelegate - didFinishLaunchingWithOptions中加载值(12或24),然后当我想获取timeFormat的值时,我使用它:

返回0(它在AppDelegate中设置正确,但显然当我在另一个类中进行分配时,它失去了它的价值。所以显然它不起作用!(我有几个其他具有相同模式的单例,但到目前为止它们出现了工作。

这里有什么问题,我该如何解决?

0 投票
2 回答
1039 浏览

ios - 单例实现。阻止外部使用的 alloc 和 init 方法

我有一个我希望作为单例实现的类。

我希望创建/访问此类实例的唯一方法是通过:

方法。alloc 和 init 在方法实现中被调用(当然)。

如果尝试不通过 sharedInstance 方法(而是直接通过 alloc + init)创建该类的实例,有没有办法阻止 alloc 和 init 的使用,或者使它们“空”?

0 投票
2 回答
404 浏览

ruby - Ruby:如何从两个模块类方法重构代码?

这是代码:

我正在使用遗留代码,试图避免改变太多。我不确定我是否会使用相同的方法创建两个单独的类,因为每个类只包含一个方法,并且具有通用代码。我想将公共代码提取到只有 A 中的方法可以看到的方法中,但仍然必须使用其完全限定名称(“A::helper”)调用它。

有没有更好的方法来做到这一点?理想情况下,我想将公共代码包装在一个方法中(我们仍然称其为“帮助程序”),该方法可以在没有任何限定的情况下从类 grovel 方法中调用,但不容易用于模块 A 之外的代码。

谢谢。

0 投票
2 回答
332 浏览

ruby - Ruby 类 << abcd 语法

我知道还有其他关于语法的问题class << self。尽管如此,我还没有发现这些答案足够清楚。我有 Java/C#、C 的背景,所以 Ruby 对我来说有点奇怪。我读到的是class << self指单例类。我觉得这有点复杂,所以我想了解操作员<<在这种情况下做了什么,以及两端都有什么可能。我尝试编写一个简单的代码来帮助我理解这种语法(我的问题在代码中):

谢谢

更新: 非常感谢大家。我已经阅读和测试了很多,所以会留下一些注意事项。我将其留作将来参考,因此,如果我错了,我希望 Ruby 专家能纠正我。我意识到 class << Self 指的是 Self 单例类。因此,惯用类 << abcd 启动 abcd 单例类上下文。我还意识到类单例类的层次结构与对象单例类不同。类单例类的层次结构遵循层次结构中的所有单例类。在这种情况下:

单例自身->单例对象->单例基本对象->类->模块->对象->内核->基本对象

对象单例类位于不同的层次结构中:

对象单例->自我->对象->内核->基本对象

这解释了这个输出。