精华内容
参与话题
问答
  • 常用工具

    千次阅读 2014-11-23 22:19:42
    1. 文件编码格式查询

    1.  文件编码格式查询: enca

    2.  文件转换编码格式:   encode(注意:在编码格式不正确时,grep查询可能得不到想要的结果)

    3.  包管理工具:gem、brew、apt-get

    4.  json格式化工具:http://www.freeformatter.com/sql-formatter.html

    5.  sql格式化工具:http://www.freeformatter.com/sql-formatter.html

    6. regex正则语法检查工具:(perl, grep, grep -E, js, php等语法的正则格式相同吗?)

    7. 会话管理工具:screen

    8. 思维导图工具:freemind

    9. 日程计划、任务管理工具:trello

    10. 代码管理工具: git

    11. 编程工具:vim

    12. 调试工具:ctags、xdebug、die

    13.  http测试工具:curl -e “” url  测试post/get方式请求

    14. 传输文件工具:scp、wget+python server、sftp、共享文件

    展开全文
  • 项目环境: jdk1.8+spring4.3.12 一、问题描述及试用场景: 在项目规范中,要求类名以DO为尾的类作为数据库层实体bean,类名以MO为尾的类作为系统传输层实体bean,类名以VO为尾的类作为服务端与前端交互的实体...

     

    项目环境:

    jdk1.8+spring4.3.12

    一、问题描述及试用场景:

    在项目规范中,要求类名以DO为尾的类作为数据库层实体bean,类名以MO为尾的类作为系统传输层实体bean,类名以VO为尾的类作为服务端与前端交互的实体bean。由于以上要求,需要在各个bean直接进行copy数据,除了傻瓜式的set/get or constructor来copy数据外,spring提供了直接copybean的工具类,原理其实就是通过java反射来根据目标bean的字段名调用其set方法来设值注入。除此之外,项目中还常见map与bean之间的转换。特封装此类,以供大家使用。

    二、样例代码:

     

     

    package org.egg.utils;
    
    import org.egg.enums.CommonErrorEnum;
    import org.egg.exception.CommonException;
    import org.springframework.beans.BeanUtils;
    import org.springframework.util.CollectionUtils;
    
    import java.beans.BeanInfo;
    import java.beans.IntrospectionException;
    import java.beans.Introspector;
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    /**
     * @author dataochen
     * @Description bean工具类
     * @date: 2017/11/7 17:30
     */
    public class BeanUtil {
    
        /**
         * 拷贝实体,source,target不允许为空
         *
         * @param source
         * @param target
         */
        public static void copyProperties(Object source, Object target) {
            BeanUtils.copyProperties(source, target);
        }
    
        /**
         * 拷贝实体集合,sourceList
         *只支持自定义实体集合拷贝 
         *应用场景:DTO <=> DO 等
         */
    
    public static void copyPropertiesList(List sourceList, List targetList,Class clazz) throws InstantiationException,IllegalAccessException {
        if (CollectionUtils.isEmpty(sourceList)) {
            throw new CommonException(CommonErrorEnum.PARAM_ERROR);
        }
        for (Object items : sourceList) {
            Object target = clazz.newInstance();
            BeanUtils.copyProperties(items, target);
            targetList.add(target);
        }
    
    }
    
     
    /**
     * Map --> Bean 2: 利用org.apache.commons.beanutils 工具类实现 Map --> Bean
     *
     * @param map
     * @param obj
     */
    public static void transMap2Bean2(Map<String, Object> map, Object obj) throws InvocationTargetException, IllegalAccessException {
        if (map == null || obj == null) {
            return;
        }
        org.apache.commons.beanutils.BeanUtils.populate(obj, map);
    }
    
    /**
     * Map --> Bean 1: 利用Introspector,PropertyDescriptor实现 Map --> Bean
     *
     * @param map
     * @param obj
     */
    public static void transMap2Bean(Map<String, Object> map, Object obj) throws IntrospectionException, InvocationTargetException, IllegalAccessException {
        BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
    
        for (PropertyDescriptor property : propertyDescriptors) {
            String key = property.getName();
            if (map.containsKey(key)) {
                Object value = map.get(key);
                // 得到property对应的setter方法
                Method setter = property.getWriteMethod();
                setter.invoke(obj, value);
            }
        }
    }
    
    /**
     * Bean --> Map 1: 利用Introspector和PropertyDescriptor 将Bean --> Map
     *
     * @param obj
     */
    public static Map<String, Object> transBean2Map(Object obj) throws IntrospectionException, InvocationTargetException, IllegalAccessException {
    
        if (obj == null) {
            return null;
        }
        Map<String, Object> map = new HashMap<String, Object>();
        BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
        for (PropertyDescriptor property : propertyDescriptors) {
            String key = property.getName();
    
            // 过滤class属性
            if (!key.equals("class")) {
                // 得到property对应的getter方法
                Method getter = property.getReadMethod();
                Object value = getter.invoke(obj);
    
                map.put(key, value);
            }
    
        }
        return map;
    }

     

    
     

     

     

     

     

     

    代码所用jar包maven坐标:

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.3.12.RELEASE</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>4.3.12.RELEASE</version>
    </dependency>

     

     

    项目地址:https://github.com/SuperEggMan/renting_frame_finish_bek; ps:感兴趣的可以start哦!

    声明:此项目仅是抛砖引玉,内容不是特别完善。如有转载,请注明此处。

     

     

     

    展开全文
  • Android快速开发系列 10个常用工具

    万次阅读 多人点赞 2014-09-05 09:27:33
    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自【张鸿洋的博客】打开大家手上的项目,基本都会有一大批的辅助类,今天特此整理出10个基本每个项目中都会使用的工具类,用于...

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自【张鸿洋的博客】

    打开大家手上的项目,基本都会有一大批的辅助类,今天特此整理出10个基本每个项目中都会使用的工具类,用于快速开发~~

    在此感谢群里给我发项目中工具类的兄弟/姐妹~

    1、日志工具类L.java

    package com.zhy.utils;
    
    import android.util.Log;
    
    /**
     * Log统一管理类
     * 
     * 
     * 
     */
    public class L
    {
    
    	private L()
    	{
    		/* cannot be instantiated */
    		throw new UnsupportedOperationException("cannot be instantiated");
    	}
    
    	public static boolean isDebug = true;// 是否需要打印bug,可以在application的onCreate函数里面初始化
    	private static final String TAG = "way";
    
    	// 下面四个是默认tag的函数
    	public static void i(String msg)
    	{
    		if (isDebug)
    			Log.i(TAG, msg);
    	}
    
    	public static void d(String msg)
    	{
    		if (isDebug)
    			Log.d(TAG, msg);
    	}
    
    	public static void e(String msg)
    	{
    		if (isDebug)
    			Log.e(TAG, msg);
    	}
    
    	public static void v(String msg)
    	{
    		if (isDebug)
    			Log.v(TAG, msg);
    	}
    
    	// 下面是传入自定义tag的函数
    	public static void i(String tag, String msg)
    	{
    		if (isDebug)
    			Log.i(tag, msg);
    	}
    
    	public static void d(String tag, String msg)
    	{
    		if (isDebug)
    			Log.i(tag, msg);
    	}
    
    	public static void e(String tag, String msg)
    	{
    		if (isDebug)
    			Log.i(tag, msg);
    	}
    
    	public static void v(String tag, String msg)
    	{
    		if (isDebug)
    			Log.i(tag, msg);
    	}
    }


    网上看到的类,注释上应该原创作者的名字,很简单的一个类;网上也有很多提供把日志记录到SDCard上的,不过我是从来没记录过,所以引入个最简单的,大家可以进行评价是否需要扩充~~

    2、Toast统一管理类 

    package com.zhy.utils;
    
    import android.content.Context;
    import android.widget.Toast;
    
    /**
     * Toast统一管理类
     * 
     */
    public class T
    {
    
    	private T()
    	{
    		/* cannot be instantiated */
    		throw new UnsupportedOperationException("cannot be instantiated");
    	}
    
    	public static boolean isShow = true;
    
    	/**
    	 * 短时间显示Toast
    	 * 
    	 * @param context
    	 * @param message
    	 */
    	public static void showShort(Context context, CharSequence message)
    	{
    		if (isShow)
    			Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
    	}
    
    	/**
    	 * 短时间显示Toast
    	 * 
    	 * @param context
    	 * @param message
    	 */
    	public static void showShort(Context context, int message)
    	{
    		if (isShow)
    			Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
    	}
    
    	/**
    	 * 长时间显示Toast
    	 * 
    	 * @param context
    	 * @param message
    	 */
    	public static void showLong(Context context, CharSequence message)
    	{
    		if (isShow)
    			Toast.makeText(context, message, Toast.LENGTH_LONG).show();
    	}
    
    	/**
    	 * 长时间显示Toast
    	 * 
    	 * @param context
    	 * @param message
    	 */
    	public static void showLong(Context context, int message)
    	{
    		if (isShow)
    			Toast.makeText(context, message, Toast.LENGTH_LONG).show();
    	}
    
    	/**
    	 * 自定义显示Toast时间
    	 * 
    	 * @param context
    	 * @param message
    	 * @param duration
    	 */
    	public static void show(Context context, CharSequence message, int duration)
    	{
    		if (isShow)
    			Toast.makeText(context, message, duration).show();
    	}
    
    	/**
    	 * 自定义显示Toast时间
    	 * 
    	 * @param context
    	 * @param message
    	 * @param duration
    	 */
    	public static void show(Context context, int message, int duration)
    	{
    		if (isShow)
    			Toast.makeText(context, message, duration).show();
    	}
    
    }


    也是非常简单的一个封装,能省则省了~~

    3、SharedPreferences封装类SPUtils

    package com.zhy.utils;
    
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.util.Map;
    
    import android.content.Context;
    import android.content.SharedPreferences;
    
    public class SPUtils
    {
    	/**
    	 * 保存在手机里面的文件名
    	 */
    	public static final String FILE_NAME = "share_data";
    
    	/**
    	 * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法
    	 * 
    	 * @param context
    	 * @param key
    	 * @param object
    	 */
    	public static void put(Context context, String key, Object object)
    	{
    
    		SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
    				Context.MODE_PRIVATE);
    		SharedPreferences.Editor editor = sp.edit();
    
    		if (object instanceof String)
    		{
    			editor.putString(key, (String) object);
    		} else if (object instanceof Integer)
    		{
    			editor.putInt(key, (Integer) object);
    		} else if (object instanceof Boolean)
    		{
    			editor.putBoolean(key, (Boolean) object);
    		} else if (object instanceof Float)
    		{
    			editor.putFloat(key, (Float) object);
    		} else if (object instanceof Long)
    		{
    			editor.putLong(key, (Long) object);
    		} else
    		{
    			editor.putString(key, object.toString());
    		}
    
    		SharedPreferencesCompat.apply(editor);
    	}
    
    	/**
    	 * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值
    	 * 
    	 * @param context
    	 * @param key
    	 * @param defaultObject
    	 * @return
    	 */
    	public static Object get(Context context, String key, Object defaultObject)
    	{
    		SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
    				Context.MODE_PRIVATE);
    
    		if (defaultObject instanceof String)
    		{
    			return sp.getString(key, (String) defaultObject);
    		} else if (defaultObject instanceof Integer)
    		{
    			return sp.getInt(key, (Integer) defaultObject);
    		} else if (defaultObject instanceof Boolean)
    		{
    			return sp.getBoolean(key, (Boolean) defaultObject);
    		} else if (defaultObject instanceof Float)
    		{
    			return sp.getFloat(key, (Float) defaultObject);
    		} else if (defaultObject instanceof Long)
    		{
    			return sp.getLong(key, (Long) defaultObject);
    		}
    
    		return null;
    	}
    
    	/**
    	 * 移除某个key值已经对应的值
    	 * @param context
    	 * @param key
    	 */
    	public static void remove(Context context, String key)
    	{
    		SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
    				Context.MODE_PRIVATE);
    		SharedPreferences.Editor editor = sp.edit();
    		editor.remove(key);
    		SharedPreferencesCompat.apply(editor);
    	}
    
    	/**
    	 * 清除所有数据
    	 * @param context
    	 */
    	public static void clear(Context context)
    	{
    		SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
    				Context.MODE_PRIVATE);
    		SharedPreferences.Editor editor = sp.edit();
    		editor.clear();
    		SharedPreferencesCompat.apply(editor);
    	}
    
    	/**
    	 * 查询某个key是否已经存在
    	 * @param context
    	 * @param key
    	 * @return
    	 */
    	public static boolean contains(Context context, String key)
    	{
    		SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
    				Context.MODE_PRIVATE);
    		return sp.contains(key);
    	}
    
    	/**
    	 * 返回所有的键值对
    	 * 
    	 * @param context
    	 * @return
    	 */
    	public static Map<String, ?> getAll(Context context)
    	{
    		SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
    				Context.MODE_PRIVATE);
    		return sp.getAll();
    	}
    
    	/**
    	 * 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类
    	 * 
    	 * @author zhy
    	 * 
    	 */
    	private static class SharedPreferencesCompat
    	{
    		private static final Method sApplyMethod = findApplyMethod();
    
    		/**
    		 * 反射查找apply的方法
    		 * 
    		 * @return
    		 */
    		@SuppressWarnings({ "unchecked", "rawtypes" })
    		private static Method findApplyMethod()
    		{
    			try
    			{
    				Class clz = SharedPreferences.Editor.class;
    				return clz.getMethod("apply");
    			} catch (NoSuchMethodException e)
    			{
    			}
    
    			return null;
    		}
    
    		/**
    		 * 如果找到则使用apply执行,否则使用commit
    		 * 
    		 * @param editor
    		 */
    		public static void apply(SharedPreferences.Editor editor)
    		{
    			try
    			{
    				if (sApplyMethod != null)
    				{
    					sApplyMethod.invoke(editor);
    					return;
    				}
    			} catch (IllegalArgumentException e)
    			{
    			} catch (IllegalAccessException e)
    			{
    			} catch (InvocationTargetException e)
    			{
    			}
    			editor.commit();
    		}
    	}
    
    }
    

    对SharedPreference的使用做了建议的封装,对外公布出put,get,remove,clear等等方法;

    注意一点,里面所有的commit操作使用了SharedPreferencesCompat.apply进行了替代,目的是尽可能的使用apply代替commit

    首先说下为什么,因为commit方法是同步的,并且我们很多时候的commit操作都是UI线程中,毕竟是IO操作,尽可能异步;

    所以我们使用apply进行替代,apply异步的进行写入;

    但是apply相当于commit来说是new API呢,为了更好的兼容,我们做了适配;

    SharedPreferencesCompat也可以给大家创建兼容类提供了一定的参考~~


    4、单位转换类 DensityUtils

    package com.zhy.utils;
    
    import android.content.Context;
    import android.util.TypedValue;
    
    /**
     * 常用单位转换的辅助类
     * 
     * 
     * 
     */
    public class DensityUtils
    {
    	private DensityUtils()
    	{
    		/* cannot be instantiated */
    		throw new UnsupportedOperationException("cannot be instantiated");
    	}
    
    	/**
    	 * dp转px
    	 * 
    	 * @param context
    	 * @param val
    	 * @return
    	 */
    	public static int dp2px(Context context, float dpVal)
    	{
    		return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
    				dpVal, context.getResources().getDisplayMetrics());
    	}
    
    	/**
    	 * sp转px
    	 * 
    	 * @param context
    	 * @param val
    	 * @return
    	 */
    	public static int sp2px(Context context, float spVal)
    	{
    		return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,
    				spVal, context.getResources().getDisplayMetrics());
    	}
    
    	/**
    	 * px转dp
    	 * 
    	 * @param context
    	 * @param pxVal
    	 * @return
    	 */
    	public static float px2dp(Context context, float pxVal)
    	{
    		final float scale = context.getResources().getDisplayMetrics().density;
    		return (pxVal / scale);
    	}
    
    	/**
    	 * px转sp
    	 * 
    	 * @param fontScale
    	 * @param pxVal
    	 * @return
    	 */
    	public static float px2sp(Context context, float pxVal)
    	{
    		return (pxVal / context.getResources().getDisplayMetrics().scaledDensity);
    	}
    
    }
    

    5、SD卡相关辅助类 SDCardUtils

    package com.zhy.utils;
    
    import java.io.File;
    
    import android.os.Environment;
    import android.os.StatFs;
    
    /**
     * SD卡相关的辅助类
     * 
     * 
     * 
     */
    public class SDCardUtils
    {
    	private SDCardUtils()
    	{
    		/* cannot be instantiated */
    		throw new UnsupportedOperationException("cannot be instantiated");
    	}
    
    	/**
    	 * 判断SDCard是否可用
    	 * 
    	 * @return
    	 */
    	public static boolean isSDCardEnable()
    	{
    		return Environment.getExternalStorageState().equals(
    				Environment.MEDIA_MOUNTED);
    
    	}
    
    	/**
    	 * 获取SD卡路径
    	 * 
    	 * @return
    	 */
    	public static String getSDCardPath()
    	{
    		return Environment.getExternalStorageDirectory().getAbsolutePath()
    				+ File.separator;
    	}
    
    	/**
    	 * 获取SD卡的剩余容量 单位byte
    	 * 
    	 * @return
    	 */
    	public static long getSDCardAllSize()
    	{
    		if (isSDCardEnable())
    		{
    			StatFs stat = new StatFs(getSDCardPath());
    			// 获取空闲的数据块的数量
    			long availableBlocks = (long) stat.getAvailableBlocks() - 4;
    			// 获取单个数据块的大小(byte)
    			long freeBlocks = stat.getAvailableBlocks();
    			return freeBlocks * availableBlocks;
    		}
    		return 0;
    	}
    
    	/**
    	 * 获取指定路径所在空间的剩余可用容量字节数,单位byte
    	 * 
    	 * @param filePath
    	 * @return 容量字节 SDCard可用空间,内部存储可用空间
    	 */
    	public static long getFreeBytes(String filePath)
    	{
    		// 如果是sd卡的下的路径,则获取sd卡可用容量
    		if (filePath.startsWith(getSDCardPath()))
    		{
    			filePath = getSDCardPath();
    		} else
    		{// 如果是内部存储的路径,则获取内存存储的可用容量
    			filePath = Environment.getDataDirectory().getAbsolutePath();
    		}
    		StatFs stat = new StatFs(filePath);
    		long availableBlocks = (long) stat.getAvailableBlocks() - 4;
    		return stat.getBlockSize() * availableBlocks;
    	}
    
    	/**
    	 * 获取系统存储路径
    	 * 
    	 * @return
    	 */
    	public static String getRootDirectoryPath()
    	{
    		return Environment.getRootDirectory().getAbsolutePath();
    	}
    
    
    }
    

    6、屏幕相关辅助类 ScreenUtils

    package com.zhy.utils;
    
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.Rect;
    import android.util.DisplayMetrics;
    import android.view.View;
    import android.view.WindowManager;
    
    /**
     * 获得屏幕相关的辅助类
     * 
     * 
     * 
     */
    public class ScreenUtils
    {
    	private ScreenUtils()
    	{
    		/* cannot be instantiated */
    		throw new UnsupportedOperationException("cannot be instantiated");
    	}
    
    	/**
    	 * 获得屏幕高度
    	 * 
    	 * @param context
    	 * @return
    	 */
    	public static int getScreenWidth(Context context)
    	{
    		WindowManager wm = (WindowManager) context
    				.getSystemService(Context.WINDOW_SERVICE);
    		DisplayMetrics outMetrics = new DisplayMetrics();
    		wm.getDefaultDisplay().getMetrics(outMetrics);
    		return outMetrics.widthPixels;
    	}
    
    	/**
    	 * 获得屏幕宽度
    	 * 
    	 * @param context
    	 * @return
    	 */
    	public static int getScreenHeight(Context context)
    	{
    		WindowManager wm = (WindowManager) context
    				.getSystemService(Context.WINDOW_SERVICE);
    		DisplayMetrics outMetrics = new DisplayMetrics();
    		wm.getDefaultDisplay().getMetrics(outMetrics);
    		return outMetrics.heightPixels;
    	}
    
    	/**
    	 * 获得状态栏的高度
    	 * 
    	 * @param context
    	 * @return
    	 */
    	public static int getStatusHeight(Context context)
    	{
    
    		int statusHeight = -1;
    		try
    		{
    			Class<?> clazz = Class.forName("com.android.internal.R$dimen");
    			Object object = clazz.newInstance();
    			int height = Integer.parseInt(clazz.getField("status_bar_height")
    					.get(object).toString());
    			statusHeight = context.getResources().getDimensionPixelSize(height);
    		} catch (Exception e)
    		{
    			e.printStackTrace();
    		}
    		return statusHeight;
    	}
    
    	/**
    	 * 获取当前屏幕截图,包含状态栏
    	 * 
    	 * @param activity
    	 * @return
    	 */
    	public static Bitmap snapShotWithStatusBar(Activity activity)
    	{
    		View view = activity.getWindow().getDecorView();
    		view.setDrawingCacheEnabled(true);
    		view.buildDrawingCache();
    		Bitmap bmp = view.getDrawingCache();
    		int width = getScreenWidth(activity);
    		int height = getScreenHeight(activity);
    		Bitmap bp = null;
    		bp = Bitmap.createBitmap(bmp, 0, 0, width, height);
    		view.destroyDrawingCache();
    		return bp;
    
    	}
    
    	/**
    	 * 获取当前屏幕截图,不包含状态栏
    	 * 
    	 * @param activity
    	 * @return
    	 */
    	public static Bitmap snapShotWithoutStatusBar(Activity activity)
    	{
    		View view = activity.getWindow().getDecorView();
    		view.setDrawingCacheEnabled(true);
    		view.buildDrawingCache();
    		Bitmap bmp = view.getDrawingCache();
    		Rect frame = new Rect();
    		activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
    		int statusBarHeight = frame.top;
    
    		int width = getScreenWidth(activity);
    		int height = getScreenHeight(activity);
    		Bitmap bp = null;
    		bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height
    				- statusBarHeight);
    		view.destroyDrawingCache();
    		return bp;
    
    	}
    
    }
    

    7、App相关辅助类

    package com.zhy.utils;
    
    import android.content.Context;
    import android.content.pm.PackageInfo;
    import android.content.pm.PackageManager;
    import android.content.pm.PackageManager.NameNotFoundException;
    
    /**
     * 跟App相关的辅助类
     * 
     * 
     * 
     */
    public class AppUtils
    {
    
    	private AppUtils()
    	{
    		/* cannot be instantiated */
    		throw new UnsupportedOperationException("cannot be instantiated");
    
    	}
    
    	/**
    	 * 获取应用程序名称
    	 */
    	public static String getAppName(Context context)
    	{
    		try
    		{
    			PackageManager packageManager = context.getPackageManager();
    			PackageInfo packageInfo = packageManager.getPackageInfo(
    					context.getPackageName(), 0);
    			int labelRes = packageInfo.applicationInfo.labelRes;
    			return context.getResources().getString(labelRes);
    		} catch (NameNotFoundException e)
    		{
    			e.printStackTrace();
    		}
    		return null;
    	}
    
    	/**
    	 * [获取应用程序版本名称信息]
    	 * 
    	 * @param context
    	 * @return 当前应用的版本名称
    	 */
    	public static String getVersionName(Context context)
    	{
    		try
    		{
    			PackageManager packageManager = context.getPackageManager();
    			PackageInfo packageInfo = packageManager.getPackageInfo(
    					context.getPackageName(), 0);
    			return packageInfo.versionName;
    
    		} catch (NameNotFoundException e)
    		{
    			e.printStackTrace();
    		}
    		return null;
    	}
    
    }
    

    8、软键盘相关辅助类KeyBoardUtils

    package com.zhy.utils;
    
    import android.content.Context;
    import android.view.inputmethod.InputMethodManager;
    import android.widget.EditText;
    
    /**
     * 打开或关闭软键盘
     * 
     * @author zhy
     * 
     */
    public class KeyBoardUtils
    {
    	/**
    	 * 打卡软键盘
    	 * 
    	 * @param mEditText
    	 *            输入框
    	 * @param mContext
    	 *            上下文
    	 */
    	public static void openKeybord(EditText mEditText, Context mContext)
    	{
    		InputMethodManager imm = (InputMethodManager) mContext
    				.getSystemService(Context.INPUT_METHOD_SERVICE);
    		imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN);
    		imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
    				InputMethodManager.HIDE_IMPLICIT_ONLY);
    	}
    
    	/**
    	 * 关闭软键盘
    	 * 
    	 * @param mEditText
    	 *            输入框
    	 * @param mContext
    	 *            上下文
    	 */
    	public static void closeKeybord(EditText mEditText, Context mContext)
    	{
    		InputMethodManager imm = (InputMethodManager) mContext
    				.getSystemService(Context.INPUT_METHOD_SERVICE);
    
    		imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
    	}
    }
    

    9、网络相关辅助类 NetUtils

    package com.zhy.utils;
    
    import android.app.Activity;
    import android.content.ComponentName;
    import android.content.Context;
    import android.content.Intent;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    
    /**
     * 跟网络相关的工具类
     * 
     * 
     * 
     */
    public class NetUtils
    {
    	private NetUtils()
    	{
    		/* cannot be instantiated */
    		throw new UnsupportedOperationException("cannot be instantiated");
    	}
    
    	/**
    	 * 判断网络是否连接
    	 * 
    	 * @param context
    	 * @return
    	 */
    	public static boolean isConnected(Context context)
    	{
    
    		ConnectivityManager connectivity = (ConnectivityManager) context
    				.getSystemService(Context.CONNECTIVITY_SERVICE);
    
    		if (null != connectivity)
    		{
    
    			NetworkInfo info = connectivity.getActiveNetworkInfo();
    			if (null != info && info.isConnected())
    			{
    				if (info.getState() == NetworkInfo.State.CONNECTED)
    				{
    					return true;
    				}
    			}
    		}
    		return false;
    	}
    
    	/**
    	 * 判断是否是wifi连接
    	 */
    	public static boolean isWifi(Context context)
    	{
    		ConnectivityManager cm = (ConnectivityManager) context
    				.getSystemService(Context.CONNECTIVITY_SERVICE);
    
    		if (cm == null)
    			return false;
    		return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;
    
    	}
    
    	/**
    	 * 打开网络设置界面
    	 */
    	public static void openSetting(Activity activity)
    	{
    		Intent intent = new Intent("/");
    		ComponentName cm = new ComponentName("com.android.settings",
    				"com.android.settings.WirelessSettings");
    		intent.setComponent(cm);
    		intent.setAction("android.intent.action.VIEW");
    		activity.startActivityForResult(intent, 0);
    	}
    
    }
    


    10、Http相关辅助类 HttpUtils

    package com.zhy.utils;
    
    import java.io.BufferedReader;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    /**
     * Http请求的工具类
     * 
     * @author zhy
     * 
     */
    public class HttpUtils
    {
    
    	private static final int TIMEOUT_IN_MILLIONS = 5000;
    
    	public interface CallBack
    	{
    		void onRequestComplete(String result);
    	}
    
    
    	/**
    	 * 异步的Get请求
    	 * 
    	 * @param urlStr
    	 * @param callBack
    	 */
    	public static void doGetAsyn(final String urlStr, final CallBack callBack)
    	{
    		new Thread()
    		{
    			public void run()
    			{
    				try
    				{
    					String result = doGet(urlStr);
    					if (callBack != null)
    					{
    						callBack.onRequestComplete(result);
    					}
    				} catch (Exception e)
    				{
    					e.printStackTrace();
    				}
    
    			};
    		}.start();
    	}
    
    	/**
    	 * 异步的Post请求
    	 * @param urlStr
    	 * @param params
    	 * @param callBack
    	 * @throws Exception
    	 */
    	public static void doPostAsyn(final String urlStr, final String params,
    			final CallBack callBack) throws Exception
    	{
    		new Thread()
    		{
    			public void run()
    			{
    				try
    				{
    					String result = doPost(urlStr, params);
    					if (callBack != null)
    					{
    						callBack.onRequestComplete(result);
    					}
    				} catch (Exception e)
    				{
    					e.printStackTrace();
    				}
    
    			};
    		}.start();
    
    	}
    
    	/**
    	 * Get请求,获得返回数据
    	 * 
    	 * @param urlStr
    	 * @return
    	 * @throws Exception
    	 */
    	public static String doGet(String urlStr) 
    	{
    		URL url = null;
    		HttpURLConnection conn = null;
    		InputStream is = null;
    		ByteArrayOutputStream baos = null;
    		try
    		{
    			url = new URL(urlStr);
    			conn = (HttpURLConnection) url.openConnection();
    			conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
    			conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
    			conn.setRequestMethod("GET");
    			conn.setRequestProperty("accept", "*/*");
    			conn.setRequestProperty("connection", "Keep-Alive");
    			if (conn.getResponseCode() == 200)
    			{
    				is = conn.getInputStream();
    				baos = new ByteArrayOutputStream();
    				int len = -1;
    				byte[] buf = new byte[128];
    
    				while ((len = is.read(buf)) != -1)
    				{
    					baos.write(buf, 0, len);
    				}
    				baos.flush();
    				return baos.toString();
    			} else
    			{
    				throw new RuntimeException(" responseCode is not 200 ... ");
    			}
    
    		} catch (Exception e)
    		{
    			e.printStackTrace();
    		} finally
    		{
    			try
    			{
    				if (is != null)
    					is.close();
    			} catch (IOException e)
    			{
    			}
    			try
    			{
    				if (baos != null)
    					baos.close();
    			} catch (IOException e)
    			{
    			}
    			conn.disconnect();
    		}
    		
    		return null ;
    
    	}
    
    	/**
    	 * 向指定 URL 发送POST方法的请求
    	 * 
    	 * @param url
    	 *            发送请求的 URL
    	 * @param param
    	 *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
    	 * @return 所代表远程资源的响应结果
    	 * @throws Exception
    	 */
    	public static String doPost(String url, String param) 
    	{
    		PrintWriter out = null;
    		BufferedReader in = null;
    		String result = "";
    		try
    		{
    			URL realUrl = new URL(url);
    			// 打开和URL之间的连接
    			HttpURLConnection conn = (HttpURLConnection) realUrl
    					.openConnection();
    			// 设置通用的请求属性
    			conn.setRequestProperty("accept", "*/*");
    			conn.setRequestProperty("connection", "Keep-Alive");
    			conn.setRequestMethod("POST");
    			conn.setRequestProperty("Content-Type",
    					"application/x-www-form-urlencoded");
    			conn.setRequestProperty("charset", "utf-8");
    			conn.setUseCaches(false);
    			// 发送POST请求必须设置如下两行
    			conn.setDoOutput(true);
    			conn.setDoInput(true);
    			conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
    			conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
    
    			if (param != null && !param.trim().equals(""))
    			{
    				// 获取URLConnection对象对应的输出流
    				out = new PrintWriter(conn.getOutputStream());
    				// 发送请求参数
    				out.print(param);
    				// flush输出流的缓冲
    				out.flush();
    			}
    			// 定义BufferedReader输入流来读取URL的响应
    			in = new BufferedReader(
    					new InputStreamReader(conn.getInputStream()));
    			String line;
    			while ((line = in.readLine()) != null)
    			{
    				result += line;
    			}
    		} catch (Exception e)
    		{
    			e.printStackTrace();
    		}
    		// 使用finally块来关闭输出流、输入流
    		finally
    		{
    			try
    			{
    				if (out != null)
    				{
    					out.close();
    				}
    				if (in != null)
    				{
    					in.close();
    				}
    			} catch (IOException ex)
    			{
    				ex.printStackTrace();
    			}
    		}
    		return result;
    	}
    }
    

    如果大家在使用过程中出现什么错误,或者有更好的建议,欢迎大家留言提出~~可以不断的改进这些类~


    源码点击下载





    展开全文
  • 数据产品经理常用工具

    千次阅读 2018-04-03 22:41:18
    数据产品经理常用工具  数据产品经理在工作过程中,要完成一个产品,在这过程中常用的工具可以分为4中类型:需求分析工具,数据探索工具,产品原型工具,图表设计工具。需求分析工具主要是在前期需求调研中辅助...

    数据产品经理常用工具

      数据产品经理在工作过程中,要完成一个产品,在这过程中常用的工具可以分为4中类型:需求分析工具,数据探索工具,产品原型工具,图表设计工具。需求分析工具主要是在前期需求调研中辅助数据产品经理的;数据探索类工具是数据产品经理在了解用户数据,设计相关指标的过程中使用的;图表设计类工具是数据产品经理在设计数据指标展现时使用的工具;产品原型 工具是数据产品经理在设计产品原型图,业务流程图等内容是时使用的。在下面将为各种列举出各位数据产品经理常用的工具,各位工具没有显明的好与坏,看个人使用的习惯,其中比较常用的将在图中标出。
      (1)思维导图工具,也称脑图,思维地图,是一种图像式思维工具,利用图像辅助思考。
    这里写图片描述
      (2)问卷调查工具,产品经理可以使用这类问卷调查工具设计问卷进行前期的市场调研,快速收集用户需求和产品使用反馈。
    这里写图片描述
      (3)数据库管理工具,市面上针对不同的数据库有很多种类数据库管理工具,具体的按照需求进行下载使用。
    这里写图片描述
      (4)数据可视化工具
      商业智能工具:
    这里写图片描述
      前端图表插件:
    这里写图片描述
      (5)原型设计工具
    这里写图片描述

    展开全文
  • 在项目开发中,经常用调用http接口,下面是封装apache的httpclient工具类。 二、样例代码: package org.egg.utils; import org.apache.http.client.config.RequestConfig; import org.apach...
  • 常用工具默认端口

    千次阅读 2018-08-02 12:29:04
    常用工具默认端口 访问本机IP http://127.0.0. MySQL默认端口:3306 HBuilder:HTML默认端口:8020 Hbuilder:PHP外置web服务器端口:80 Webstorm默认端口:3000
  • 【工具】(七):win10常用工具整理!!!

    万次阅读 多人点赞 2019-10-04 18:12:47
    如题,本文主要为博主对电脑上安装的一些软件,所做的整理,当做备份用吧。 一、分类 系统工具 办公软件 编程开发 数据库相关 ...EasyBCD:一款常用的系统引导和修复工具。 1.3. 虚拟机管理工具 win10...
  • 自定义View系列教程01--常用工具介绍

    万次阅读 多人点赞 2016-05-05 16:50:38
    在自定义View的时候,常常会用到一些Android系统提供的工具。这些工具封装了我们经常会用到的方法,比如拖拽View,...所以,作为自定义View系列教程的开端,先介绍一下这些常用工具,以便在后续的学习和工作中使用。
  • linux常用工具集合

    2013-05-26 17:49:23
    1、抓图工具:shutter 安装方法:sudo apt-get install shutter;我的安装方法好像不像下面文章中介绍的那么复杂 使用方法:参见这篇文章抓图工具shutter
  • PostgreSQL 常用工具

    千次阅读 2019-09-03 23:12:40
    PostgreSQL 常用管理、开发、集群、复制、备份工具
  • mysql手册14_常用工具

    万次阅读 2020-09-01 14:02:57
    工具1:mysql 连接本地mysql: mysql -u root -p 连接远程mysql: mysql -h 118.31.106.51 -P 3306 -u root -p 连接远程mysql: mysql -h118.31.106.51 -P3306 -uroot -p123456 不需要进入MySQL的命令行就SQL语句...
  • Mac下常用工具软件

    千次阅读 2016-01-12 15:00:36
    传说中,Mac电脑是程序员专用的“飞机中的战斗机”,百度一下“mac软件推荐”,你会得到很多优秀的工具。越来越多的程序员开始使用mac电脑作为开发机器,不仅仅由于其完全的支持Unix,续航能力等,更重要的是其各种...
  • CentOS 7常用工具安装

    千次阅读 2017-07-21 13:35:36
    git在Linux下开发项目,少不了要使用git工具,安装方法十分简单,通过一条 yum 指令既可完成安装:yum install git安装完成后检测版本:# git --version git version 1.8.3.1autoconf这是一个在 Bourne shell 下制作...
  • Linux常用工具的安装

    千次阅读 2018-04-09 04:38:25
    @安装PyCharm 官网下载压缩包 解压缩 进入压缩目录,运行pycharm.sh @安装MySQL ...sudo apt-get install mysql-server 无法通过apt安装,应该是兼容性问题 ...sudo apt install libmysqlclient-...
  • 空间分析之常用工具

    万次阅读 2012-08-19 21:19:23
    空间分析扩展模块中提供了很多方便栅格处理的工具,其中提取(Extraction)、综合(Generalization)等工具集中提供的功能是在分析处理数据中经常会用到的。 一、提取(Extraction) 顾名思义,这组工具就是方便...
  • C++程序员常用工具

    千次阅读 2006-10-05 17:08:00
    开发环境 –Turbo c DOS时代c语言开发的经典工具,目前适合两类人使用:c语言beginner(尤其是学生一族),具有怀旧情节的专业人士:) –Visual C++ 6.0/7.0 稳定而强大的IDE开发环境,具有丰富的调试功能,...
  • Github开源项目常用工具

    千次阅读 2016-07-14 15:16:07
    不断整理中 travis.ci持续集成工具,github上一有提交就会触发,你可以将构建状态放在你的README.md中,方便查看codecov.io代码覆盖率收集工具
  • linux常用工具

    千次阅读 2019-01-31 09:40:50
    最近使用了阿里云服务器来替代以前的虚拟机,没用使用docker镜像。所有的东西都需要自己来安装,记录一下 1.rz sz,安装 yum install lrzsz 2.jdk安装 下载安装包后解压 $ tar zxvf jdk-8u121-linux-x64.tar.gz...
  • 绿化软件之常用工具

    千次阅读 2013-05-24 13:14:28
    安装程序安装一个软件,其实就是改变文件系统和注册表,所以绿化软件也主要需要这两方面的软件  1检测文件系统改变的  2检测注册表改变的  3研究安装程序安装脚本的 ... 此类工具有Filewatch、Unins
  • Oracle常用工具

    千次阅读 2011-11-16 21:56:06
    Oracle工具主要分oracle管理工具、oracle开发工具、oracle压力测试工具、oracle 卸载工具、oracle 连接工具、oracle 客户端工具、oracle 导出工具和oracle备份工具
  • 运维常用工具

    千次阅读 2018-10-10 17:49:30
    操作系统:Centos,Ubuntu,Redhat,suse,Freebsd 网站服务:nginx,apache,...数据 库:MySQL,MariaDB,PostgreSQL DB中间件:maxscale,MyCat,atlas,cobar,amoeba,MySQL-proxy 代理相关:lvs,keepalived,haproxy,nginx...
  • 开发常用工具

    千次阅读 2016-02-27 10:59:23
    写这篇博客主要是为了总结一下自己经常用到的一些工具,推荐一些好用的编辑器,编译器,虚拟机,以及一些常用的好用工具等,将会持续更新。。。
  • JAVA常用工具类汇总

    万次阅读 2019-08-06 16:05:46
    一、字符串工具类 org.apache.commons.lang.StringUtils pom文件: <!-- https://mvnrepository.com/artifact/org.apache.commons/org.apache.commons.lang --> <dependency> <groupId>org.apache...
  • macOS常用工具

    千次阅读 2018-01-02 19:27:07
    截图: 腾讯出的截图工具, Ctrl+Shift+A区域截图(自动识别窗口), Ctrl+Shift+R录制屏幕, 默认存到剪贴板, 按空格可编辑, 框框加字马赛克箭头应有尽有, 非常符合国人习惯, 比圈点人性化多了. APP Store直接搜Jietu即可...
  • Windows连接Linux的常用工具

    万次阅读 2011-03-23 09:28:00
    1.PuttyPutty是一个免费的、Windows 32平台下的telnet、rlogin和ssh客户端,但是功能丝毫不逊色于商业的telnet类工具。用它来远程管理Linux十分好用,其主要优点如下:◆ 全面支持ssh1和ssh2;◆ 绿色软件,无需安装...
  • windows 常用工具

    千次阅读 2014-12-30 18:14:13
    http://technet.microsoft.com/zh-cn/sysinternals
  • ArcMap常用工具

    千次阅读 2015-08-13 15:23:11
    Hillshade:山体阴影图,ArcToolbox—》3D Analyst Tools—》Raster Surface;
  • NLP常用工具

    千次阅读 2013-05-17 14:45:50
    各种工具包的有效利用可以使研究者事半功倍。 以下是NLP版版友们提供整理的NLP研究工具包。 同时欢迎大家提供更多更好用的工具包,造福国内的NLP研究。 *NLP Toolbox  CLT ...
  • 【Redis入门】常用工具

    千次阅读 2012-02-11 23:50:45
    1、redis-benchmark redis基准信息,redis服务器性能检测redis-benchmark -h localhost -p 6379 -c 100 -n 100000该命名表示100个并发连接,100000个请求,检测host为localhost 端口为6379的redis服务器的性能 ...

空空如也

1 2 3 4 5 ... 20
收藏数 101,776
精华内容 40,710
关键字:

常用工具