A SimpleDataStore
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
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);
}
public class SimpleDataStore implements DataStore {
// <组件类名或标识, <数据名, 数据值>>
private ConcurrentMap<String, ConcurrentMap<String, Object>> data =
new ConcurrentHashMap<String, ConcurrentMap<String,Object>>();
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);
}
public Object get(String componentName, String key) {
if (!data.containsKey(componentName)) {
return null;
}
return data.get(componentName).get(key);
}
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);
}
public void remove(String componentName, String key) {
if (!data.containsKey(componentName)) {
return;
}
data.get(componentName).remove(key);
}
}
A SimpleDataStore的更多相关文章
- 7.4 服务远程暴露 - 创建Exporter与启动netty服务端
为了安全:服务启动的ip全部使用10.10.10.10 远程服务的暴露总体步骤: 将ref封装为invoker 将invoker转换为exporter 启动netty 注册服务到zookeeper 订 ...
- consumer的DubboClientHandler线程池
1. 创建线程池 创建线程池的调用栈如下: SimpleDataStore把线程池存放在map中. public class NettyClient extends AbstractClient { ...
随机推荐
- HDFS上创建文件、写入内容
1.创建文件 hdfs dfs -touchz /aaa/aa.txt 2.写入内容 echo "<Text to append>" | hdfs dfs -appen ...
- mongodb 备份
本篇文章来自于阿里云技术专家郑涔(明俨)在2018年<Redis.MongoDB.HBase大咖直播大讲堂>技术直播峰会中的分享,该分享整体由四个部分构成: 1.MongoDB备份恢复 2 ...
- java:从指定问价中读取80个字节写入指定文件中
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class F ...
- NodeMCU入门(3):断线自动重连,指示灯显示连接状态
准备工作 1.NodeMCU模块 2.ESPlorer v0.2.0-rc6 事件监听器 NodeMCU采用了事件响应的方式.也就是说,只需为事件设置一个回调函数,当事件发生时,回调函数就会被调用. ...
- 【BZOJ】3123: [Sdoi2013]森林
题解 ------------------ 我莫不是一个智障吧 我把testdata的编号 当成数据组数读进来 我简直有毒 以为哪里写错了自闭了好久 实际上这题很简单,只要愉悦地开个启发式合并,然后每 ...
- 【noip模拟赛5】水流
描述 全球气候变暖,小镇A面临水灾.于是你必须买一些泵把水抽走.泵的抽水能力可以认为是无穷大,但你必须把泵放在合适的位置,从而能使所有的水能流到泵里.小镇可以认为是N * M的矩阵.矩阵里的每个单元格 ...
- eric6中ui文件编译失败,提示找不到puicc5
1解决办法 在setting中——preference 找到qt设置——pyQT工具文件选择更改为: 我的pyuicc5.exe文件在这个目录下 然后右击编译窗口,就成功了. 如果找不到ui文件,在窗 ...
- (转)CASE WHEN 用法
Case具有两种格式.简单Case函数和Case搜索函数. 简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- HihoCoder - 1078 【区间修改】
题目链接:https://vjudge.net/contest/241135#problem/A 题目大意:(与区间修改模板题相同) 输入 每个测试点(输入文件)有且仅有一组测试数据. 每组测试数据的 ...
- HDU 1159 Common Subsequence 【最长公共子序列】模板题
题目链接:https://vjudge.net/contest/124428#problem/A 题目大意:给出两个字符串,求其最长公共子序列的长度. 最长公共子序列算法详解:https://blog ...