我有maploader,它使用索引进行查询
public class Customer implements Serializable {
private String id;
private String name;
public Customer(String id, String name) {
super();
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
>
maploader
public Map<Integer, Customer> loadAll(Collection<Integer> keys) {
System.out.println("loadAll");
Map<Integer, Customer> map = new HashMap<Integer, Customer>();
for (Integer k : keys) {
map.put(k, new Customer(String.valueOf(k), String.valueOf(k)));
}
return map;
}
public Iterable<Integer> loadAllKeys() {
System.out.println("loadallkeys");
List<Integer> map = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
map.add(i);
}
return map;
}
主
public class Main {
public static void main(String[] args) {
Config config = new Config();
HazelcastInstance instance = Hazelcast.newHazelcastInstance(config);
final MapConfig customerMapConf = config.getMapConfig("customers");
final MapStoreConfig customerMapStoreConf = customerMapConf.getMapStoreConfig();
customerMapStoreConf.setImplementation(new SimpleMapLoader());
customerMapStoreConf.setEnabled(true);
customerMapConf.setMapStoreConfig(customerMapStoreConf);
config.addMapConfig(customerMapConf);
Map<Integer, String> map = instance.getMap("customers");
instance.shutdown();
}
}
这个工作绝对精细的地图不会加载,直到我第一次接触地图。
但是当我为地图添加索引的时候,地图就会被加载,而不管是不是触摸地图。在Hazelcast文档中,MapStoreConfig类中的InitialLoadMode配置参数有两个值:LAZY和eager。如果InitialLoadMode设置为LAZY,则在映射创建期间不加载数据。如果将其设置为EAGER,则在创建映射的同时加载所有数据,并且所有内容都可以使用。此外,如果使用MapIndexConfig类或addIndex方法向映射添加索引,则会重写InitialLoadMode,MapStoreConfig的行为就像EAGER模式处于打开状态一样。
但是有没有方法覆盖这个急切的InitialLoadMode行为。我以以下方式添加索引
public class Main {
public static void main(String[] args) {
Config config = new Config();
HazelcastInstance instance = Hazelcast.newHazelcastInstance(config);
final MapConfig customerMapConf = config.getMapConfig("customers");
final MapStoreConfig customerMapStoreConf = customerMapConf.getMapStoreConfig();
customerMapStoreConf.setImplementation(new SimpleMapLoader());
customerMapStoreConf.setEnabled(true);
customerMapConf.setMapStoreConfig(customerMapStoreConf);
config.addMapConfig(customerMapConf);
MapIndexConfig indexConfig = new MapIndexConfig();
indexConfig.setAttribute("name");
indexConfig.setOrdered(false);
customerMapConf.setMapIndexConfigs(Arrays.asList(indexConfig));
customerMapStoreConf.setInitialLoadMode(InitialLoadMode.LAZY);
Map<Integer, String> map = instance.getMap("customers");
// System.out.println(map.get("1"));
instance.shutdown();
}
}
我正在使用hazelcast 3.7.4。请建议是否有方法
如文档所述,创建索引时,初始加载模式将被覆盖并设置为EAGER。您可以通过分叉自己的Hazelcast代码分支来覆盖产生行为,修改您想要的内容并重建它。但是,这可能会对系统的其他区域产生不利影响(例如,由于分区线程被占用的时间太长,导致加载速度变慢),因此需要您注意处于不受支持的版本上的风险。
7.4.4 延迟初始化的bean 默认情况下,ApplicationContext实现在初始化过程中随即创建和配置所有单例bean。一般来说,这种预实例化是可取的,因为可以立即发现配置或周围环境中的错误,而不是在几个小时甚至几天以后。当这种行为不可取时,可以通过将bean定义标记为延迟初始化来阻止预实例化。延迟初始化的bean告诉IoC容器,当bean首次被请求时而不是在启动时创建一个实例。 在X
问题内容: 我想延迟控制器的初始化,直到从服务器收到必要的数据为止。 我找到了针对Angular1.0.1的解决方案:延迟AngularJS路由更改,直到加载模型以防止闪烁,但无法使其与Angular1.1.0一起使用 模板 JavaScript http://jsfiddle.net/dTJ9N/1/ 问题答案: 由于$ http返回了promise,因此创建自己的deferred仅在htt
问题内容: 我有一些已经在使用的JBoss webapp,还有一个懒惰的初始化问题。因此,建议我在Spring进行调查并使用。 但是,我仍然会收到错误消息,希望您能对我有所帮助?要使用Spring OEM过滤器,我还需要在应用程序中进行哪些更改? 我的设置是这样的: + jsf的东西。 我将其设置如下:web.xml applicationContext.xml: persistence.xml:
问题内容: 在使用惰性初始化程序时,是否有保留周期的机会? 在博客文章和许多其他地方都可以看到 我试过了 这样使用 并发现记录了“人deinit”。 因此,似乎没有保留周期。据我所知,当一个块捕获自身时,以及当该块被自身强烈保留时,会有一个保留周期。这种情况似乎类似于保留周期,但实际上并非如此。 问题答案: 我尝试过这个[…] 似乎没有保留周期 正确。 原因是考虑立即应用封闭。它不会保留捕获的内容
我在我的WordPress网站上使用JetPack,并启用了延迟加载。然而,在我的网站中,我用AJAX更新了一些内容,这导致加载1x1占位符的图像,而不是真正的图像,这是懒惰加载会处理的。 如何使用Jet Pack再次调用延迟加载?我似乎记得有一个JavaScript函数,但找不到它是什么。
我正在开发一个Spring-MVC应用程序,其中我有3个类,组扫描,组节,组注释。组扫描器具有与组节的一对多映射,组节与组注释具有一对多映射。我正在尝试根据 GroupCanvas 的主键检索注释,但我收到Hibernate延迟初始化异常。我在网上尝试了这些建议,主要是SO,但似乎没有帮助。这是代码。 DAO 方法抛出错误: GroupCanvas模型: 组段模型类: 群注释: 错误日志: 我做错