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 { ...
随机推荐
- DOM树示意图
- struts2使用拦截器完成登陆显示用户信息操作和Struts2的国际化
其实学习框架,就是为了可以很好的很快的完成我们的需求,而学习struts2只是为了替代之前用的servlet这一层,框架使开发更加简单,所以作为一个小菜鸟,特别感谢那些超级无敌变态开发的框架供我们使用 ...
- Codeforces 160D Edges in MST tarjan找桥
Edges in MST 在用克鲁斯卡尔求MST的时候, 每个权值的边分为一类, 然后将每类的图建出来, 那些桥就是必须有的, 不是桥就不是必须有. #include<bits/stdc++.h ...
- HDU4686 Arc of Dream 矩阵
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - HDU4686 题意概括 a0 = A0 ai = ai-1*AX+AY b0 = B0 bi = bi-1* ...
- 桌面版centos安装vncserver并在windows下使用VNC Viewer远程连接
首先关闭防火墙 在Centos中安装vncserver yum install tigervnc-server 拷贝一份 /lib/systemd/system/vncserver@.service ...
- python tkinter-消息框、对话框、文件对话框
python tkinter-消息框.对话框.文件对话框 消息框 导入 import tkinter import tkinter.messagebox #这个是消息框,对话框的关键 提示消息框 ...
- 针对SSL/TLS的拒绝服务攻击以及使用ettercap进行DNS欺骗
一. thc-ssl-dos 1.简介 (1).SSL 协商加密对性能开销增加,大量握手请求会导致 DOS (2).利用 SSL secure Renegotiation 特性,在单一 TCP 连接中 ...
- Wamp修改端口
WAMP装好之后默认的端口是80,但是这个80端口呢,可以热门端口啊,迅雷,IIS都挺喜欢,在WIN7下本来还有1个进程也点80,让人伤脑筋啊,所以把它改掉,方法如下: 一.修改APACHE的监听端口 ...
- Javascript实现对象的继承
在Java和C#中,你可以简单的理解class是一个模子,对象就是被这个模子压出来的一批一批月饼.压个啥样,就得是个啥样,不能随便动,动一动就坏了.而在Javascript中,没有模子,月饼被换成了面 ...
- 什么是mime类型
本文转自:什么是mime类型 - 方法数码 http://www.fangfa.net/webnews/390.html MIME 类型在网站开发中经常碰到,特别是处理非文本数据的请求时(如:文件上传 ...