当工程基础打好之后,我就在想,在服务启动的时候,我们往往会需要进行一些处理,包括静态资源的读取等等,而这些处理有一部分又可以抽离出来。因此我在pub.utils中添加了一个TInit类,用于初始化公共部分。
而在初始化的时候,我需要将一部分信息存储在缓存中,因此我又定义了一个TCach类。这个TCach其实就是一个Map。
但是我不想去直接使用Map,这是为什么了?例如写一个Map的时候,总得这么定义:
Map<String, Object> map = new HashMap<String, Object>();
好吧,我承认我实在是懒得可以。所以我打算构建自己的Map。
考虑到通常来说,HashMap<String, Object>形式的map较为常用,因此我定义了一个TMap,继承HashMap<String, Object>。如此一来,我在进行map定义的时候只要这么写:
TMap map = TMap();
我也觉得自己实在够懒,勿喷哈。
但如果这个map只是这个目的,那实在就太多余了。我先大致贴出这个TMap中目前写好的方法:
大致上,分以下拓展:
1、put方法返回自身,这样可以类似jQuery一样链式调用;
2、提供了几种常用类型的get方法;
3、为get方法添加default值的支持;
4、get方法支持泛型。
加了这几个拓展之后,个人觉得使用起来方便多了,尤其是default和泛型,有兴趣的可以尝试下。
详细代码如下:
package com.tt.pub.map; import java.math.BigDecimal; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; import org.nutz.lang.Strings; /** * Desc:自定义的一个map类,继承HashMap,以<String, Object>的形式。 * 目的是为了简化代码编写。以<String, Object>的形式是因为这种形式较为常见。 * 并且提供了一些常用类型的get方法,不用再手动的去转型。 * @author Small * @Email 536762164@qq.com * @since 2013-5-14 * */ public class TMap extends HashMap<String, Object>{ /** * */ private static final long serialVersionUID = 1L; public TMap(){} public TMap put(String key, Object value){ super.put(key, value); return this; } public String getStr(String key){ return getStr(key, null); } public String getStr(String key, String def){ Object value = this.get(key); if(value == null) return def; String str = String.valueOf(value); if(str == null) return def; return str; } public int getInt(String key){ return getInt(key, 0); } public int getInt(String key, int def){ Object value = this.get(key); if(value == null) return def; String str = String.valueOf(value); if(Strings.isBlank(str)) return def; return Integer.parseInt(str); } public long getLong(String key){ return getLong(key, 0); } public long getLong(String key, long def){ Object value = this.get(key); if(value == null) return def; String str = String.valueOf(value); if(Strings.isBlank(str)) return def; return Long.parseLong(str); } public double getDouble(String key){ return getDouble(key, 0); } public double getDouble(String key, double def){ Object value = this.get(key); if(value == null) return def; String str = String.valueOf(value); if(Strings.isBlank(str)) return def; return Double.parseDouble(str); } public BigDecimal getBigDecimal(String key){ return getBigDecimal(key, new BigDecimal(0)); } public BigDecimal getBigDecimal(String key, BigDecimal def){ Object value = this.get(key); if(value == null) return def; String str = String.valueOf(value); if(Strings.isBlank(str)) return def; return new BigDecimal(str); } public boolean getBool(String key){ return getBool(key, false); } public boolean getBool(String key, boolean def){ Object value = this.get(key); if(value == null) return def; String str = String.valueOf(value); if(Strings.isBlank(str)) return def; return Boolean.parseBoolean(str); } public List<String> getList4Str(String key){ Object value = super.get(key); if(value instanceof String){ String[] strs = ((String) value).split(","); return Arrays.asList(strs); }else if(value instanceof String[]){ return Arrays.asList((String[])value); } return this.get(key); } public <T> T get(String key){ return get(key, null); } @SuppressWarnings("unchecked") public <T> T get(String key, Object defValue){ Object value = super.get(key); return value == null ? (T) defValue : (T) value; } public Iterator<String> getKItor(){ return this.keySet().iterator(); } }
TCache继承TMap,代码挺简单的就不说明了,以后会再进行拓展:
package com.tt.pub.map; import org.nutz.ioc.Ioc; import org.nutz.ioc.impl.NutIoc; import org.nutz.ioc.loader.json.JsonLoader; import org.nutz.mvc.NutConfig; /** * Desc:系统缓存。 * @author Small * @Email 536762164@qq.com * @since 2013-5-14 * */ public class TCache extends TMap{ /** * */ private static final long serialVersionUID = 1L; public static final String DEF_NUT_IOC_PATH = "cfg/ioc/ioc.js"; public static final String BASE_REAL_PATH = "baseRealPath"; private NutConfig nuztConfig; private Ioc ioc; private static TCache cache = new TCache(); private TCache(){}; public static TCache me(){ if(cache == null){ cache = new TCache(); } return cache; } public NutConfig getNuztConfig() { return nuztConfig; } public void setNuztConfig(NutConfig nuztConfig) { this.nuztConfig = nuztConfig; } public Ioc getIoc() { ioc = ioc == null ? new NutIoc(new JsonLoader(DEF_NUT_IOC_PATH)) : ioc; return ioc; } public void setIoc(Ioc ioc) { this.ioc = ioc; } public void setBasePath(String path){ this.put(BASE_REAL_PATH, path); } public String getBasePath(){ return this.getStr(BASE_REAL_PATH); } }
这里有个要说下,之前通过类的静态方法获得实例的,都是写getInstance,后来我懒了,改写为getInst,直到看了nutz,好吧,me!!!
TInit的主要代码如下,以后会再进行拓展:
package com.tt.pub.utils; import javax.servlet.ServletContext; import org.nutz.ioc.Ioc; import org.nutz.mvc.NutConfig; import com.tt.pub.map.TCache; /** * Desc:初始化时进行公共操作。 * @author Small * @Email 536762164@qq.com * @since 2013-5-14 * */ public final class TInit { /** * Desc:进行系统初始化工作。 * @author Small * @Email 536762164@qq.com * @since 2013-5-14 * * @param cfg */ public static void init(NutConfig cfg){ TCache cache = TCache.me(); cache.setNuztConfig(cfg);//保存当前的NutConfig ServletContext cxt = cfg.getServletContext(); if(cxt != null) cache.setBasePath(cxt.getRealPath(""));//保存web服务的路径 Ioc ioc = cfg.getIoc(); cache.setIoc(ioc);//保存当前的ioc } }
相关推荐
delphi+Tmap开发的一个简单的gis demo,适合初学者.
蓝牙TMAP规范
数据库总复习.tmap
tmap-notebook-extra 使用tmap的其他实现或示例
tmap_exam_python 从 .xml 文件为 TMap 测试工程师生成考试
tmap:专题图的R包
从Tmap R脚本开始。 检出html文件:Urbanicity_project_results_ only_Ama_Owusu_Darko。 html以获取中期结果。 Map1-城市化的探索性地理空间分析该地图显示的是2014年加纳建筑环境的分布 Map2 Choropleth map =...
为什么你应当用TMap来补充Rational统一过程,或RUP中所描述的测试过程呢?毕竟,RUP承认有效测试的重要性,并将测试划分成贯穿整个生命周期的质量验证的一个重要的最佳实践。而且,RUP强调在一个单独的工作流中测试,...
MW、sp3 C 的分数、氢键供体 (HBD) 和受体 (HBA) 计数、使用 Crippen 方法计算的 logP (AlogP) 以及使用计算的拓扑极性表面积 (TPSA)。 使用来鉴定糖基化和/或肽结构。 违反一项以上利平斯基规则的分子被标记为非...
商业环境中,加快开发周期以及提高软件质量变得越来越重要,而且低质量软件带来的风险也越大。测试是软件开发组织中最重要的用于控制这些风险的手段。然而,尽管很多事业部都已经组建了测试团队,依然经常会由于缺陷...
TMapData公开部分文件列表说明 \OCX数字签名.zip 给OCX控件添加数字签名的技术和程序 \PrjMap2SQL.exe Mapinfo格式地图到数据库的转换程序(需安装mapx5) \PrjTestMap.exe 测试地图控件的程序 ...
React Native TMap桥该存储库是TMap的实现安装在根目录上运行npm install或yarn install 在ios目录中运行pod install用法WiP贡献拉请求是受欢迎的。 对于重大更改,请先打开一个问题以讨论您要更改的内容。 请确保...
韩国FLASH导航系列一,共有75个,先发一个,后面的打包发
tmap tmap是用于大型,高维数据集的非常快速的可视化库。 目前,tmap可用于Python。 tmaps图形布局基于OGDF库。 教程和文档,请参阅http://tmap.gdb.tools示例名称描述NIPS会议论文tmap可视化显示了NIPS会议论文之间...
Professional Node.js Building Javascript Based Scalable Software 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
echarts中使用天地图的插件示例,...1.echarts-extension-tmap.js 在高度地图echarts插件的基础上修改 2.tmap.js 在百度地图echarts插件的基础上的修改 引入后使用方式和echats中使用百度地图及高德地图的方式一直。
Sauerbraten 的可编程地图生成器,使用 Lua 进行脚本编写。