我有一个restfull webservice,需要加载训练有素的模型文件并创建一些其他对象,这需要很多时间。因此,我只需要执行一次(启动Web服务时)。目前,系统在每次Web服务调用时加载经过训练的文件和一些其他对象,并且成本很高。你能告诉我如何处理这个问题吗?
答案 0 :(得分:1)
您可以使用Singleton模式。它用于确保仅创建一次某些资源。所以基本上,你可以有一个类,其目的是实例化这些文件并让webservices调用这个类,就像这样(取自Wikipedia):
public class Singleton {
private static volatile Singleton instance = null;
private static File file1;
...
private Singleton()
{
//Load whatever you need here.
}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class)
if (instance == null) {
instance = new Singleton();
}
}
return instance;
}
...
//Other getter and setters for your files and other objects
}
然后,在您的网络服务中,您可以这样做:
...
Singleton.getInstance().getSomeFile();
...