`
Small嗳TT
  • 浏览: 11708 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

TT随笔二 TInit以及TMap

阅读更多

当工程基础打好之后,我就在想,在服务启动的时候,我们往往会需要进行一些处理,包括静态资源的读取等等,而这些处理有一部分又可以抽离出来。因此我在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
	}
}
 

 

  • 大小: 49.3 KB
  • TT.zip (2.9 MB)
  • 下载次数: 1
分享到:
评论

相关推荐

    delphi+Tmap开发gis例子

    在GIS(地理信息系统)开发领域,Delphi是一种广泛使用的编程语言,它结合了Tmap组件,可以构建功能强大的GIS应用程序。Tmap是专门为Delphi设计的一款GIS控件,它允许开发者轻松地集成地图显示、地图操作和地理数据...

    蓝牙TMAP规范,通话和媒体

    《蓝牙TMAP规范:通话与媒体的无线连接》 蓝牙技术联盟(Bluetooth SIG)推出的蓝牙TMAP(Telephony and Media Audio Profile)规范是为了解决蓝牙设备之间进行通话和媒体播放时的互操作性问题。该规范定义了一套...

    tmap-notebook-extra:使用tmap的其他实现或示例

    【tmap-notebook-extra:使用tmap的其他实现或示例】 在数据分析和地理信息系统(GIS)领域,tmap库是R语言中的一个强大工具,它允许用户创建高质量的地图。"tmap-notebook-extra"是一个扩展项目,为tmap提供额外的...

    数据库总复习.tmap

    数据库总复习.tmap

    tmap:专题图的R包

    要更好地掌握`tmap`,你可以参考其官方文档、教程以及R社区中的各种示例。例如,`tmap`包内的`vignettes`提供了详细的使用指南,`tmap_gallery()`函数可以展示各种地图样式,帮助你激发创作灵感。 通过以上的介绍...

    tmap_exam_python:从 .xml 文件为 TMap 测试工程师生成考试

    《使用Python从XML文件为TMap测试工程师生成考试》 在信息技术领域,测试工程师的角色至关重要,他们负责确保软件产品的质量。TMap(Test Management Approach)是一种广泛认可的测试方法论,它提供了一套完整的...

    tmap:一张显示2014年加纳建筑环境分布的地图

    从Tmap R脚本开始。 检出html文件:Urbanicity_project_results_ only_Ama_Owusu_Darko。 html以获取中期结果。 Map1-城市化的探索性地理空间分析该地图显示的是2014年加纳建筑环境的分布 Map2 Choropleth map =...

    TMap和Rational统一过程

    为什么你应当用TMap来补充Rational统一过程,或RUP中所描述的测试过程呢?毕竟,RUP承认有效测试的重要性,并将测试划分成贯穿整个生命周期的质量验证的一个重要的最佳实践。而且,RUP强调在一个单独的工作流中测试,...

    Coconut-TMAP-SVM

    MW、sp3 C 的分数、氢键供体 (HBD) 和受体 (HBA) 计数、使用 Crippen 方法计算的 logP (AlogP) 以及使用计算的拓扑极性表面积 (TPSA)。 使用来鉴定糖基化和/或肽结构。 违反一项以上利平斯基规则的分子被标记为非...

    结构化测试体系——TMap测试生命周期

    商业环境中,加快开发周期以及提高软件质量变得越来越重要,而且低质量软件带来的风险也越大。测试是软件开发组织中最重要的用于控制这些风险的手段。然而,尽管很多事业部都已经组建了测试团队,依然经常会由于缺陷...

    TMapdata公开部分

    TMapData公开部分文件列表说明 \OCX数字签名.zip 给OCX控件添加数字签名的技术和程序 \PrjMap2SQL.exe Mapinfo格式地图到数据库的转换程序(需安装mapx5) \PrjTestMap.exe 测试地图控件的程序 ...

    rn-tmap-bridge:针对iOS和Android的React Native TMap Bridge

    React Native TMap桥该存储库是TMap的实现安装在根目录上运行npm install或yarn install 在ios目录中运行pod install用法WiP贡献拉请求是受欢迎的。 对于重大更改,请先打开一个问题以讨论您要更改的内容。 请确保...

    韩国FLASH导航系列一

    1. **Flash技术**:Flash是由Adobe公司开发的一种多媒体创作平台,用于创建动画、交互式内容以及网页元素。它支持矢量图形、音频、视频和编程,使得网页设计师可以构建丰富的动态效果。 2. **导航栏**:在网页设计...

    echarts中使用天地图的插件示例

    echarts中使用天地图的插件示例,...1.echarts-extension-tmap.js 在高度地图echarts插件的基础上修改 2.tmap.js 在百度地图echarts插件的基础上的修改 引入后使用方式和echats中使用百度地图及高德地图的方式一直。

    一个非常快速的可视化库,用于大型,高维数据集。-JavaScript开发

    tmap tmap是用于大型,高维数据集的非常快速的可视化库。 目前,tmap可用于Python。 tmaps图形布局基于OGDF库。 教程和文档,请参阅http://tmap.gdb.tools示例名称描述NIPS会议论文tmap可视化显示了NIPS会议论文之间...

    c语言《程序设计》课程设计.docx

    测试数据二输入:输出:4 52 2 3 1 23 1 1 1 12 3 2 1 32 2 3 3 32 2 3 0 23 0 0 0 02 3 2 0 32 2 0 0 0输出说明:棋盘中所有的 1 以及最后一行的 3 可以被同时消除,其他的方格中的棋子均保留。 功能实现 实现...

    Professional Node.js Building Javascript Based Scalable Software epub

    Professional Node.js Building Javascript Based Scalable Software 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

Global site tag (gtag.js) - Google Analytics