zoukankan      html  css  js  c++  java
  • java工具类方法

    1.生成16位数字(当时日期时间加随机两位数)

      

    public static String getNo16() {
         String getNo = getNo();
         return getNo.substring(0, getNo.length() - 4);
    }
    //生成年月日时分秒+随机6位数
    public static String getNo() {
            Calendar c = Calendar.getInstance();
            String year = String.valueOf(c.get(Calendar.YEAR));
            String month = String.valueOf(c.get(Calendar.MONTH) + 1);
            String day = String.valueOf(c.get(Calendar.DAY_OF_MONTH));
            String hours = String.valueOf(c.get(Calendar.HOUR_OF_DAY));
            String m = String.valueOf(c.get(Calendar.MINUTE));
            String s = String.valueOf(c.get(Calendar.SECOND));
            if (month.length() == 1) {
                month = "0" + month;
            }
    
            if (day.length() == 1) {
                day = "0" + day;
            }
            if (hours.length() == 1) {
                hours = "0" + hours;
            }
            if (m.length() == 1) {
                m = "0" + m;
            }
            if (s.length() == 1) {
                s = "0" + s;
            }
            return year + month + day + hours + m + s + getN(6);
    }
    //获取4-8位随机数
    public static int getN(int num) {
                Random random = new Random();
                int number = 0;
                switch (num) {
                case 4:
                    number = random.nextInt(8999) + 1000;
                    break;
                case 5:
                    number = random.nextInt(89999) + 10000;
                    break;
                case 6:
                    number = random.nextInt(899999) + 100000;
                    break;
                case 7:
                    number = random.nextInt(8999999) + 1000000;
                    break;
                case 8:
                    number = random.nextInt(8999999) + 10000000;
                    break;
                default:
                    number = random.nextInt(8999999) + 1000000;// 默认7位
                    break;
                }
                return number;
      }

    2.判断非空

    public static  boolean isEmpty(Object str) {
            return str == null || "".equals(str) || String.valueOf(str).length() == 0
                    || String.valueOf(str).matches("\s*");
    }
        
    public static boolean isNotEmpty(Object str){
            return !isEmpty(str);
    }

     Java工具类:

      时间:

      

    package com.yingjun.ssm.util;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * TimeUtils
     * 
     */
    public class TimeUtils {
        private final static long minute = 60 * 1000;// 1分钟
        private final static long hour = 60 * minute;// 1小时
        private final static long day = 24 * hour;// 1天
        private final static long month = 31 * day;//
        private final static long year = 12 * month;//
    
    
        public static final SimpleDateFormat DATE_FORMAT_DATE_D = new SimpleDateFormat("yyyy-MM-dd");
        public static final SimpleDateFormat DATE_FORMAT_DATE_M = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        public static final SimpleDateFormat DATE_FORMAT_DATE_S = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
        private TimeUtils() {
            throw new AssertionError();
        }
    
        /**
         * long time to string
         * 
         * @param timeInMillis
         * @param dateFormat
         * @return
         */
        public static String getTime(long timeInMillis, SimpleDateFormat dateFormat) {
            return dateFormat.format(new Date(timeInMillis));
        }
    
        /**
         * long time to string, format is {@link #DEFAULT_DATE_FORMAT}
         * 
         * @param timeInMillis
         * @return
         */
        public static String getTime(long timeInMillis) {
            return getTime(timeInMillis, DATE_FORMAT_DATE_S);
        }
    
        /**
         * get current time in milliseconds
         * 
         * @return
         */
        public static long getCurrentTimeInLong() {
            return System.currentTimeMillis();
        }
    
        /**
         * get current time in milliseconds, format is {@link #DEFAULT_DATE_FORMAT}
         * 
         * @return
         */
        public static String getCurrentTimeInString() {
            return getTime(getCurrentTimeInLong());
        }
    
        /**
         * get current time in milliseconds
         * 
         * @return
         */
        public static String getCurrentTimeInString(SimpleDateFormat dateFormat) {
            return getTime(getCurrentTimeInLong(), dateFormat);
        }
    
        
        public static String getTimeFormatText(Date date) {
            if (date == null) {
                return null;
            }
            long diff = new Date().getTime() - date.getTime();
            long r = 0;
            if (diff > year) {
                r = (diff / year);
                return r + "年前";
            }
            if (diff > month) {
                r = (diff / month);
                return r + "个月前";
            }
            if (diff > day) {
                r = (diff / day);
                return r + "天前";
            }
            if (diff > hour) {
                r = (diff / hour);
                return r + "小时前";
            }
            if (diff > minute) {
                r = (diff / minute);
                return r + "分钟前";
            }
            return "刚刚";
        }
    }

    请求的返回类型封装JSON结果:

    package com.yingjun.ssm.dto;
    
    import com.fasterxml.jackson.annotation.JsonInclude;
    
    import java.io.Serializable;
    
    /**
     * 
     * @author yingjun
     *
     * ajax 请求的返回类型封装JSON结果
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public class BaseResult<T> implements Serializable {
    
    
        private static final long serialVersionUID = -4185151304730685014L;
    
        private boolean success;
    
        private T data;
    
        private String error;
    
        public BaseResult(boolean success, String error) {
            this.success = success;
            this.error = error;
        }
    
        public BaseResult(boolean success, T data) {
            this.success = success;
            this.data = data;
        }
    
        public boolean isSuccess() {
            return success;
        }
    
        public void setSuccess(boolean success) {
            this.success = success;
        }
    
        public T getData() {
            return data;
        }
    
        public void setData(T data) {
            this.data = data;
        }
    
        public String getError() {
            return error;
        }
    
        public void setError(String error) {
            this.error = error;
        }
    
        @Override
        public String toString() {
            return "BaseResult [success=" + success + ", data=" + data + ", error=" + error + "]";
        }
    
    }

    对未处理的错误信息做一个统一处理:

    package com.yingjun.ssm.exception;
    
    import com.alibaba.fastjson.JSON;
    import com.yingjun.ssm.dto.BaseResult;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Component;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.servlet.HandlerExceptionResolver;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.PrintWriter;
    
    /**
     * 错误信息统一处理
     * 对未处理的错误信息做一个统一处理
     * @author yingjun
     *
     */
    @Component
    public class GlobalExceptionResolver implements HandlerExceptionResolver {
    
        private final Logger LOG = LoggerFactory.getLogger(this.getClass());
        
        @ResponseBody
        public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
            LOG.error("访问" + request.getRequestURI() + " 发生错误, 错误信息:" + ex.getMessage());
            //这里有2种选择
            //跳转到定制化的错误页面
            /*ModelAndView error = new ModelAndView("error");
            error.addObject("exMsg", ex.getMessage());
            error.addObject("exType", ex.getClass().getSimpleName().replace(""", "'"));*/
            //返回json格式的错误信息
            try {
                PrintWriter writer = response.getWriter();
                BaseResult<String> result=new BaseResult(false, ex.getMessage());
                writer.write(JSON.toJSONString(result));
                writer.flush();
            } catch (Exception e) {
                LOG.error("Exception:",e);
            }
            return null;
        }
        
    
    }

    spring配置文件需加上如下:

    <!--全局异常捕捉 -->
        <bean class="com.yingjun.ssm.exception.GlobalExceptionResolver" />

    序列化工具类:

    package com.yingjun.ssm.util;
    
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.util.List;
    
    import com.dyuproject.protostuff.LinkedBuffer;
    import com.dyuproject.protostuff.ProtostuffIOUtil;
    import com.dyuproject.protostuff.Schema;
    import com.dyuproject.protostuff.runtime.RuntimeSchema;
    
    /**
     * 序列话工具
     */
    public class ProtoStuffSerializerUtil {
    
        /**
         * 序列化对象
         * @param obj
         * @return
         */
        public static <T> byte[] serialize(T obj) {
            if (obj == null) {
                throw new RuntimeException("序列化对象(" + obj + ")!");
            }
            @SuppressWarnings("unchecked")
            Schema<T> schema = (Schema<T>) RuntimeSchema.getSchema(obj.getClass());
            LinkedBuffer buffer = LinkedBuffer.allocate(1024 * 1024);
            byte[] protostuff = null;
            try {
                protostuff = ProtostuffIOUtil.toByteArray(obj, schema, buffer);
            } catch (Exception e) {
                throw new RuntimeException("序列化(" + obj.getClass() + ")对象(" + obj + ")发生异常!", e);
            } finally {
                buffer.clear();
            }
            return protostuff;
        }
    
        /**
         * 反序列化对象
         * @param paramArrayOfByte
         * @param targetClass
         * @return
         */
        public static <T> T deserialize(byte[] paramArrayOfByte, Class<T> targetClass) {
            if (paramArrayOfByte == null || paramArrayOfByte.length == 0) {
                throw new RuntimeException("反序列化对象发生异常,byte序列为空!");
            }
            T instance = null;
            try {
                instance = targetClass.newInstance();
            } catch (InstantiationException | IllegalAccessException e) {
                throw new RuntimeException("反序列化过程中依据类型创建对象失败!", e);
            }
            Schema<T> schema = RuntimeSchema.getSchema(targetClass);
            ProtostuffIOUtil.mergeFrom(paramArrayOfByte, instance, schema);
            return instance;
        }
    
        /**
         * 序列化列表
         * @param objList
         * @return
         */
        public static <T> byte[] serializeList(List<T> objList) {
            if (objList == null || objList.isEmpty()) {
                throw new RuntimeException("序列化对象列表(" + objList + ")参数异常!");
            }
            @SuppressWarnings("unchecked")
            Schema<T> schema = (Schema<T>) RuntimeSchema.getSchema(objList.get(0).getClass());
            LinkedBuffer buffer = LinkedBuffer.allocate(1024 * 1024);
            byte[] protostuff = null;
            ByteArrayOutputStream bos = null;
            try {
                bos = new ByteArrayOutputStream();
                ProtostuffIOUtil.writeListTo(bos, objList, schema, buffer);
                protostuff = bos.toByteArray();
            } catch (Exception e) {
                throw new RuntimeException("序列化对象列表(" + objList + ")发生异常!", e);
            } finally {
                buffer.clear();
                try {
                    if (bos != null) {
                        bos.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            return protostuff;
        }
    
        /**
         * 反序列化列表
         * @param paramArrayOfByte
         * @param targetClass
         * @return
         */
        public static <T> List<T> deserializeList(byte[] paramArrayOfByte, Class<T> targetClass) {
            if (paramArrayOfByte == null || paramArrayOfByte.length == 0) {
                throw new RuntimeException("反序列化对象发生异常,byte序列为空!");
            }
    
            Schema<T> schema = RuntimeSchema.getSchema(targetClass);
            List<T> result = null;
            try {
                result = ProtostuffIOUtil.parseListFrom(new ByteArrayInputStream(paramArrayOfByte), schema);
            } catch (IOException e) {
                throw new RuntimeException("反序列化对象列表发生异常!", e);
            }
            return result;
        }
    
    }

    redis缓存:

    package com.yingjun.ssm.cache;
    
    import com.yingjun.ssm.util.ProtoStuffSerializerUtil;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.dao.DataAccessException;
    import org.springframework.data.redis.connection.RedisConnection;
    import org.springframework.data.redis.core.RedisCallback;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.stereotype.Component;
    
    import java.util.List;
    import java.util.Set;
    
    /**
     * redis缓存
     * 
     * @author yingjun
     *
     */
    @Component
    public class RedisCache {
        
        
        public final static String CAHCENAME="cache";//缓存名
        public final static int CAHCETIME=60;//默认缓存时间
    
        @Autowired
        private RedisTemplate<String, String> redisTemplate;
    
        public <T> boolean putCache(String key, T obj) {
            final byte[] bkey = key.getBytes();
            final byte[] bvalue = ProtoStuffSerializerUtil.serialize(obj);
            boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
                @Override
                public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
                    return connection.setNX(bkey, bvalue);
                }
            });
            return result;
        }
    
        public <T> void putCacheWithExpireTime(String key, T obj, final long expireTime) {
            final byte[] bkey = key.getBytes();
            final byte[] bvalue = ProtoStuffSerializerUtil.serialize(obj);
            redisTemplate.execute(new RedisCallback<Boolean>() {
                @Override
                public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
                    connection.setEx(bkey, expireTime, bvalue);
                    return true;
                }
            });
        }
    
        public <T> boolean putListCache(String key, List<T> objList) {
            final byte[] bkey = key.getBytes();
            final byte[] bvalue = ProtoStuffSerializerUtil.serializeList(objList);
            boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
                @Override
                public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
                    return connection.setNX(bkey, bvalue);
                }
            });
            return result;
        }
    
        public <T> boolean putListCacheWithExpireTime(String key, List<T> objList, final long expireTime) {
            final byte[] bkey = key.getBytes();
            final byte[] bvalue = ProtoStuffSerializerUtil.serializeList(objList);
            boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
                @Override
                public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
                    connection.setEx(bkey, expireTime, bvalue);
                    return true;
                }
            });
            return result;
        }
    
        public <T> T getCache(final String key, Class<T> targetClass) {
            byte[] result = redisTemplate.execute(new RedisCallback<byte[]>() {
                @Override
                public byte[] doInRedis(RedisConnection connection) throws DataAccessException {
                    return connection.get(key.getBytes());
                }
            });
            if (result == null) {
                return null;
            }
            return ProtoStuffSerializerUtil.deserialize(result, targetClass);
        }
    
        public <T> List<T> getListCache(final String key, Class<T> targetClass) {
            byte[] result = redisTemplate.execute(new RedisCallback<byte[]>() {
                @Override
                public byte[] doInRedis(RedisConnection connection) throws DataAccessException {
                    return connection.get(key.getBytes());
                }
            });
            if (result == null) {
                return null;
            }
            return ProtoStuffSerializerUtil.deserializeList(result, targetClass);
        }
    
        /**
         * 精确删除key
         * 
         * @param key
         */
        public void deleteCache(String key) {
            redisTemplate.delete(key);
        }
    
        /**
         * 模糊删除key
         * 
         * @param pattern
         */
        public void deleteCacheWithPattern(String pattern) {
            Set<String> keys = redisTemplate.keys(pattern);
            redisTemplate.delete(keys);
        }
    
        /**
         * 清空所有缓存
         */
        public void clearCache() {
            deleteCacheWithPattern(RedisCache.CAHCENAME+"|*");
        }
    }

    redis缓存,采用Jedis Cluster

    package com.yingjun.ssm.cache;
    
    import com.yingjun.ssm.util.ProtoStuffSerializerUtil;
    import org.springframework.stereotype.Component;
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisCluster;
    import redis.clients.jedis.JedisPool;
    
    import java.util.HashSet;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    
    /**
     * redis缓存
     *
     * 采用Jedis Cluster
     *
     * @author yingjun
     *
     */
    @Component
    public class RedisClusterCache {
        
        
        public final static String CAHCENAME="cache";//缓存名
        public final static int CAHCETIME=60;//默认缓存时间
    
        //@Autowired
        private JedisCluster jedisCluster;
    
    
        public <T> void putCache(String key, T obj) {
            final byte[] bkey = key.getBytes();
            final byte[] bvalue = ProtoStuffSerializerUtil.serialize(obj);
            jedisCluster.set(bkey,bvalue);
        }
    
        public <T> void putCacheWithExpireTime(String key, T obj,  int expireTime) {
            final byte[] bkey = key.getBytes();
            final byte[] bvalue = ProtoStuffSerializerUtil.serialize(obj);
            jedisCluster.setex(bkey, expireTime, bvalue);
        }
    
        public <T> void putListCache(String key, List<T> objList) {
            final byte[] bkey = key.getBytes();
            final byte[] bvalue = ProtoStuffSerializerUtil.serializeList(objList);
            jedisCluster.set(bkey,bvalue);
        }
    
        public <T> void putListCacheWithExpireTime(String key, List<T> objList, int expireTime) {
            final byte[] bkey = key.getBytes();
            final byte[] bvalue = ProtoStuffSerializerUtil.serializeList(objList);
            jedisCluster.setex(bkey, expireTime, bvalue);
        }
    
        public <T> T getCache(final String key, Class<T> targetClass) {
            byte[] result =jedisCluster.get(key.getBytes());
            if (result == null) {
                return null;
            }
            return ProtoStuffSerializerUtil.deserialize(result, targetClass);
        }
    
        public <T> List<T> getListCache(String key, Class<T> targetClass) {
            byte[] result =jedisCluster.get(key.getBytes());
            if (result == null) {
                return null;
            }
            return ProtoStuffSerializerUtil.deserializeList(result, targetClass);
        }
    
        /**
         * 精确删除key
         * 
         * @param key
         */
        public void deleteCache(String key) {
            jedisCluster.del(key);
        }
    
        /**
         * 模糊删除key
         * 
         * @param pattern
         */
        public void deleteCacheWithPattern(String pattern) {
            Set<String> keys =this.keys(pattern);
            for(String key:keys){
                jedisCluster.del(key);
            }
        }
    
        /**
         * 清空所有缓存
         */
        public void clearCache() {
            deleteCacheWithPattern(RedisClusterCache.CAHCENAME+"|*");
        }
    
        /**
         * 由于JedisCluster没有提供对keys命令的封装,只能自己实现
         * @param pattern
         * @return
         */
        public Set<String> keys(String pattern){
            Set<String> keys = new HashSet<>();
            Map<String, JedisPool> clusterNodes = jedisCluster.getClusterNodes();
            for(String k : clusterNodes.keySet()){
                JedisPool jp = clusterNodes.get(k);
                Jedis connection = jp.getResource();
                try {
                    keys.addAll(connection.keys(pattern));
                } catch(Exception e){
                    e.printStackTrace();
                } finally{
                    //用完一定要close这个链接!!!
                    connection.close();
                }
            }
            return keys;
        }
    }

    JedisCluster 集群高可用配置需加:

    <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
            <constructor-arg index="0">
                <set>
                    <bean class="redis.clients.jedis.HostAndPort">
                        <constructor-arg index="0" value="${redis.ip1}" />
                        <constructor-arg index="1" value="${redis.port1}" type="int" />
                    </bean>
                    <bean class="redis.clients.jedis.HostAndPort">
                        <constructor-arg index="0" value="${redis.ip2}" />
                        <constructor-arg index="1" value="${redis.port2}" type="int" />
                    </bean>
                    <bean class="redis.clients.jedis.HostAndPort">
                        <constructor-arg index="0" value="${redis.ip3}" />
                        <constructor-arg index="1" value="${redis.port3}" type="int" />
                    </bean>
                    <bean class="redis.clients.jedis.HostAndPort">
                        <constructor-arg index="0" value="${redis.ip4}" />
                        <constructor-arg index="1" value="${redis.port4}" type="int" />
                    </bean>
                    <bean class="redis.clients.jedis.HostAndPort">
                        <constructor-arg index="0" value="${redis.ip5}" />
                        <constructor-arg index="1" value="${redis.port5}" type="int" />
                    </bean>
                    <bean class="redis.clients.jedis.HostAndPort">
                        <constructor-arg index="0" value="${redis.ip6}" />
                        <constructor-arg index="1" value="${redis.port6}" type="int" />
                    </bean>
                </set>
            </constructor-arg>
            <constructor-arg index="1" value="2000" type="int"></constructor-arg>
            <constructor-arg index="2" value="100" type="int"></constructor-arg>
            <constructor-arg index="3" ref="jedisPoolConfig"></constructor-arg>
        </bean>

     获取指定字数的字符:

    private String getNumber(int size) {
            String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
            String number = "";
            Random r = new Random();
            for (int i = 0; i < size; i++) {
                number += str.charAt(r.nextInt(str.length()));
            }
            return number;
    }

      

    mysql
  • 相关阅读:
    [收藏] WAP网关应用
    关于Symbian编程的基础知识— 基本数据类型
    PDU短信的编码一般规则
    同级方法异步调用(2016.05.04更新)
    OpenStack Manila发展动态系列Austin峰会
    OpenStack Cinder发展动态系列Austin峰会
    OpenStack Neutron单网卡桥接模式访问外网
    每日一测3(结构和类的异同)
    每日一测2(关于构造函数)
    每日一测1(带命令行参数运行)
  • 原文地址:https://www.cnblogs.com/excellent-vb/p/9353580.html
Copyright © 2011-2022 走看看