内容简介:本文主要研究一下dubbo的DataStoredubbo-2.7.2/dubbo-common/src/main/java/org/apache/dubbo/common/store/DataStore.javadubbo-2.7.2/dubbo-common/src/main/java/org/apache/dubbo/common/store/support/SimpleDataStore.java
序
本文主要研究一下dubbo的DataStore
DataStore
dubbo-2.7.2/dubbo-common/src/main/java/org/apache/dubbo/common/store/DataStore.java
@SPI("simple") public interface DataStore { /** * return a snapshot value of componentName */ Map<String, Object> get(String componentName); Object get(String componentName, String key); void put(String componentName, String key, Object value); void remove(String componentName, String key); }
- DataStore定义了get、put、remove方法,它有一个实现类为SimpleDataStore
SimpleDataStore
dubbo-2.7.2/dubbo-common/src/main/java/org/apache/dubbo/common/store/support/SimpleDataStore.java
public class SimpleDataStore implements DataStore { // <component name or id, <data-name, data-value>> private ConcurrentMap<String, ConcurrentMap<String, Object>> data = new ConcurrentHashMap<String, ConcurrentMap<String, Object>>(); @Override public Map<String, Object> get(String componentName) { ConcurrentMap<String, Object> value = data.get(componentName); if (value == null) { return new HashMap<String, Object>(); } return new HashMap<String, Object>(value); } @Override public Object get(String componentName, String key) { if (!data.containsKey(componentName)) { return null; } return data.get(componentName).get(key); } @Override public void put(String componentName, String key, Object value) { Map<String, Object> componentData = data.get(componentName); if (null == componentData) { data.putIfAbsent(componentName, new ConcurrentHashMap<String, Object>()); componentData = data.get(componentName); } componentData.put(key, value); } @Override public void remove(String componentName, String key) { if (!data.containsKey(componentName)) { return; } data.get(componentName).remove(key); } }
- SimpleDataStore使用ConcurrentHashMap来存储数据,每个key存储的是ConcurrentMap
实例
dubbo-2.7.2/dubbo-common/src/test/java/org/apache/dubbo/common/store/support/SimpleDataStoreTest.java
public class SimpleDataStoreTest { private SimpleDataStore dataStore = new SimpleDataStore(); @Test public void testPutGet() throws Exception { assertNull(dataStore.get("xxx", "yyy")); dataStore.put("name", "key", "1"); assertEquals("1", dataStore.get("name", "key")); assertNull(dataStore.get("xxx", "yyy")); } @Test public void testRemove() throws Exception { dataStore.remove("xxx", "yyy"); dataStore.put("name", "key", "1"); dataStore.remove("name", "key"); assertNull(dataStore.get("name", "key")); } @Test public void testGetComponent() throws Exception { Map<String, Object> map = dataStore.get("component"); assertTrue(map != null && map.isEmpty()); dataStore.put("component", "key", "value"); map = dataStore.get("component"); assertTrue(map != null && map.size() == 1); dataStore.remove("component", "key"); assertNotEquals(map, dataStore.get("component")); } }
- 这里使用testPutGet、testRemove、testGetComponent进行了验证
小结
DataStore定义了get、put、remove方法,它有一个实现类为SimpleDataStore;SimpleDataStore使用ConcurrentHashMap来存储数据,每个key存储的是ConcurrentMap
doc
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
百度SEO一本通
潘坚、李迅 / 电子工业出版社 / 2015-6 / 59.00元
《百度SEO一本通》通过浅显易懂的叙述方式,以及大量的图示,详细介绍了SEO的关键技术要点,对于搜索引擎优化中重要的关键词优化、链接优化,以及百度推广中的推广技巧都进行了详细的介绍。 《百度SEO一本通》共分为11章,首先让大家了解SEO存在的原因,然后对网页、网站、空间和程序与SEO的关系展开了细节上的讨论,最后几章深入介绍了百度推广的相关概念、设置、技巧和实操,让读者可以轻松上手操作,易......一起来看看 《百度SEO一本通》 这本书的介绍吧!