开发中常使用的方法

1. org.apache.commons.lang 的StringUtils类

  • 判断字符串部不为null也不为空:

    System.out.println(StringUtils.isEmpty("")); //true
    注意:

  • System.out.println(StringUtils.isEmpty(" ")); //false

    注意在空格作非空处理
    判断字符串为空白或者为null

  • System.out.println(StringUtils.isBlank("")); //true

注意:一般使用此方法判断字符串是否为空或者null
2. org.springframework.util的StringUtils类
判断对象是否为空:isEmpty()
这个可以判断对象,也可以判断string字符串。
3. java启动线程

new Thread(new Runnable() {
			@Override
			public void run() {
				for (Bill bill : billList) {
					if(bill.getType() != null && Keys.HTLX_TYPE_DF == bill.getType().getDicId()){
						logger.info(sendEleMeterMsg(bill.getWsbzbdbh(), null, null));
					}
				}
			}
		}).start();

4、redis的工具类

package com.newtouch.platform.cache;

import com.newtouch.platform.base.json.JsonSerializer;
import com.newtouch.platform.base.json.jackson.JacksonImp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Response;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPipeline;

import java.io.UnsupportedEncodingException;
import java.util.*;

/**
 * Created by hxh on 2016/10/28.
 */
public class RedisMemoTool {

    private static JsonSerializer jsonSerializer = new JacksonImp();

    private static final Logger logger = LoggerFactory.getLogger(RedisMemoTool.class);

    static final boolean isOld = false;

    private static final  String PRE = "FAS_CACHE_";

    private static final String LOCK = "_LOCK";

    /**
     * 共享锁默认失效时间
     */
    public static final int LOCKTIMEOUT =  1000*180;
    /**
     * 设置缓存,key-value
     * @param key 关键字
     * @param value 值
     * @param millisecond 超时时间,单位毫秒;   0或负数表示永久保存,谨慎使用;
     */
    public static void set(String key , String value , int millisecond){
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        try {
            shardedJedis.set(key, value);
            expire(shardedJedis,key,millisecond);
        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
    }

    public static void setToken(String key , String value , long millisecond){
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        try {
            shardedJedis.set(key, value);
            expire(shardedJedis,key,millisecond);
        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
    }
    /**
     * 取值,key-value
     * @param key 关键字
     * @return
     */
    public static String get(String key){
        String value = null;
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        try {
            value = shardedJedis.get(key);
        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
        return value;
    }


    /**
     * 取值,key-value
     * @param keys 关键字
     * @return
     */
    public static List<Response<String>> getBatch(String[] keys){
        List<Response<String>> result = new ArrayList<>();
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        try {
            ShardedJedisPipeline pipe = shardedJedis.pipelined();

            for(String key:keys){
                result.add(pipe.get(key));
            }

            pipe.sync();
        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
        return result;
    }


    /**
     * 缓存列表增加String对象
     * @param key 关键字
     * @param value 值
     * @param millisecond 超时时间,单位毫秒;   0或负数表示永久保存,谨慎使用;
     */
    public static void lpush(String key , String value , int millisecond){
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        try {
            shardedJedis.lpush(key,value);
            expire(shardedJedis,key,millisecond);
        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
    }

    /**
     * 缓存列表增加Object对象
     * @param key 关键字
     * @param row Map<String,Object>型数据记录
     * @param millisecond 超时时间,单位毫秒;   0或负数表示永久保存,谨慎使用;
     */
    public static void lpushRow(String key , Object row , int millisecond){
        JsonSerializer js = new JacksonImp();
        String str = js.toJson(row);
        RedisMemoTool.lpush(key, str, millisecond);
    }

    /**
     * 缓存列表批量提交
     * @param key 关键字
     * @param rows List<Map<String,Object>>型数据记录
     * @param millisecond 超时时间,单位毫秒;   0或负数表示永久保存,谨慎使用;
     * @param isAsc true表示正序,false表示倒序
     */
    public static void lpushBatch(String key , List<Map<String,Object>> rows , int millisecond,boolean isAsc) throws Exception {
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        logger.debug("lpushBatch rows total size:"+rows.size()+" ");
        try{
            ShardedJedisPipeline pipline = shardedJedis.pipelined();
            //清空原有数据
            pipline.del(key);
             long start = new Date().getTime();

            if(isAsc){
                for(Object row:rows){
                    String str = jsonSerializer.toJson(row);
                    pipline.lpush(key,str);
                }
            }else{
                for(Object row:rows){
                    String str = jsonSerializer.toJson(row);
                    pipline.rpush(key,str);
                }
            }
            logger.debug("lpushBatch.lpush rows,耗时:" + (new Date().getTime() - start) * 1.00/ (1000) + "s.");
            start = new Date().getTime();
            if(millisecond>0) {
                if (isOld) {
                    pipline.expire(key, (int) (millisecond / 1000));
                } else {
                    pipline.pexpire(key, millisecond);
                }
            }
            logger.debug("lpushBatch.pipline.expire,耗时:" + (new Date().getTime() - start) * 1.00/ (1000) + "s.");
             start = new Date().getTime();
            pipline.sync();
            logger.debug("lpushBatch.pipline.sync,耗时:" + (new Date().getTime() - start) * 1.00/ (1000) + "s.");
        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
    }
    /**
     * 根据范围获取一段缓存列表的值,每个都是String对象
     * @param key 关键字
     * @param start 起始
     * @param end 截至
     */
    public static List<String> lrange(String key , int start, int end ){
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        List<String> strList = null;
        try {
            strList = shardedJedis.lrange(key,start,end);
        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
        return strList;
    }

    /**
     * 根据范围获取一段缓存列表的值,每个都是Object对象
     * @param key 关键字
     * @param start 起始
     * @param end 截至
     */
    public static List<Map<String,Object>> lrangeRow(String key , int start, int end ){
        List<String> strList = RedisMemoTool.lrange(key, start, end);

        List<Map<String,Object>> objectResult = new ArrayList<>();
        Map<String,Object> o = new HashMap<>();
         for(String str:strList){
            objectResult.add(jsonSerializer.fromJson(str,o.getClass()));
        }
        return objectResult;
    }

    /**
     * 获取一共list的size
     * @param key 关键字
     */
    public static Long llen(String key ){
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        long length = 0;
        try {
            length = shardedJedis.llen(key);
        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
        return length;
    }


    /**
     * 判断内存中是否存在关键字对应的值
     * @param key 关键字
     * @return
     */
    public static boolean exists(String key){
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        boolean isExists = false;
        try {
            isExists = shardedJedis.exists(key);
        }catch (Exception e){
             e.printStackTrace();
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
        return isExists;
    }

    /**
     * 删除关键字对应的值
     * @param key 关键字
     * @return
     */
    public static Long del(String key){
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        try {
            return shardedJedis.del(key);
        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
    }

    /**
     * 批量删除关键字对应的值
     * @param keys 关键字数组
     * @return
     */
    public static void del(Set<String> keys){
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        try {
            ShardedJedisPipeline pipeline = shardedJedis.pipelined();

            for(String key:keys){
                pipeline.del(key);
            }
            pipeline.sync();
        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
    }

    /**
     * 生成关键字工具
     * @param name 名对象称或者报表名称
     * @param params 查询条件参数组
     * @return
     * @throws java.io.UnsupportedEncodingException
     */
    public static String createKey(String name,String... params) throws UnsupportedEncodingException,Exception {
        String strParam = "";
        for(String p:params){
            strParam += p;
        }

        String key = PRE + name + com.newtouch.cloud.common.encrypt.MD5.ComputeHashString(strParam);

        return key;
    }

    /**
     * 内存锁,加锁
     * @param key key关键字
     * @param millisecond 锁自动失效时间,单位毫秒;   0或负数表示永久保存,谨慎使用;
     * @return
     */
    public static void lock(String key,int millisecond){
        String lock = key + LOCK;

        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        try {
            while(shardedJedis.setnx(lock,"locked") == 0){
                Thread.sleep(50);
            }
            expire(shardedJedis,lock,millisecond);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
    }


    /**
     * 内存锁,解锁
     * @param key key关键字
     * @return
     */
    public static void unlock(String key)  {
        String lock = key + LOCK;
        del(lock);
    }

    /**
     * 根据key获取缓存列表Object对象
     * @param key 关键字
     * @param classType Object型数据记录
     */
    public static <T> T get(String key , Class<T> classType){
         String json = get(key);
        return jsonSerializer.fromJson(json,classType);
    }


    /**
     * 缓存列表增加Object对象
     * @param key 关键字
     * @param obj Object型数据记录
     * @param millisecond 超时时间,单位毫秒;   0或负数表示永久保存,谨慎使用;
     */
    public static void push(String key , Object obj , int millisecond){
         String str = jsonSerializer.toJson(obj);
        RedisMemoTool.set(key, str, millisecond);
    }

    /**
     * 缓存保存,key对应map的结构
     * @param key 关键字
     * @param data 单行数据,Map<String,String>类型
     * @param millisecond 超时时间,单位毫秒;   0或负数表示永久保存,谨慎使用;
     * @return
     */
    public static void hmset(String key,Map<String,String> data,int millisecond){
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        try {
            shardedJedis.hmset(key,data);

            if(millisecond>0){
                if(isOld){
                    shardedJedis.expire(key, (int)(millisecond/1000));
                }else{
                    shardedJedis.pexpire(key,millisecond);
                }
            }
        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
    }

    /**
     * 根据patten获取所有匹配的key
     * @param patten 匹配表达式,例如abc*查询所有abc开头的key
     * @return
     */
    public static Set<String> keys(String patten){
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        try {
            Set<String> keys = new HashSet<>();
            Collection<Jedis> jedises = shardedJedis.getAllShards();

            Iterator<Jedis> it = jedises.iterator();
            while(it.hasNext()){
                Jedis jedis = it.next();
                keys.addAll(jedis.keys(patten));
            }
            return keys;
        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
    }

    /**
     * 根据key获取map对象
     * @param key 关键字
     * @return
     */
    public static Map<String,String> hgetAll(String key){
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        try {
            return shardedJedis.hgetAll(key);

        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
    }

    /**
     * 缓存保存,key对应set的结构,常用在建立索引使用
     * @param key 关键字
     * @param members Set<String>集合对象
     * @param millisecond 超时时间,单位毫秒;   0或负数表示永久保存,谨慎使用;
     * @return
     */
    public static void sadd(String key,String[] members,int millisecond){
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        try {
            shardedJedis.sadd(key,members);
            expire(shardedJedis,key,millisecond);
        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
    }

    /**
     * 缓存保存,key对应set的结构,常用在建立索引使用
     * @param key 关键字
     * @param member 对象
     * @param millisecond 超时时间,单位毫秒;   0或负数表示永久保存,谨慎使用;
     * @return
     */
    public static void sadd(String key,String member,int millisecond){
        sadd(key,new String[]{member},millisecond);
    }

    /**
     * 返回集合中所有成员
     * @param key 关键字
     * @return
     */
    public static Set<String> smembers(String key){
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        try {
            return shardedJedis.smembers(key);
        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
    }


    /**
     * 缓存保存,key对应set的结构,常用在建立索引使用
     * @param key 关键字
     * @param scoreMembers Set<String>集合对象
     * @param millisecond 超时时间,单位毫秒;   0或负数表示永久保存,谨慎使用;
     * @return
     */
    public static void zadd(String key,Map<String,Double> scoreMembers,int millisecond){
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        try {
            shardedJedis.zadd(key , scoreMembers);
            expire(shardedJedis,key,millisecond);
        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
    }

    /**
     * 缓存保存,key对应set的结构,常用在建立索引使用
     * @param key 关键字
     * @param member 对象
     * @param score 分值
     * @param millisecond 超时时间,单位毫秒;   0或负数表示永久保存,谨慎使用;
     * @return
     */
    public static void zadd(String key,String member,Double score,int millisecond){
        Map<String,Double> scoreMembers = new HashMap<>();
        scoreMembers.put(member,score);
        zadd(key,scoreMembers,millisecond);
    }


    /**
     * 缓存保存,key对应set的结构,常用在建立索引使用
     * @param key 关键字
     * @param min Set<String>集合对象
     * @param max 超时时间,单位毫秒;   0或负数表示永久保存,谨慎使用;
     * @return
     */
    public static Set<String> zrangeByScore(String key,Double min,Double max){
        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
        try {
            return shardedJedis.zrangeByScore(key, min, max);
        }catch (Exception e){
            throw e;
        }finally {
            if(shardedJedis!=null){
                shardedJedis.close();
            }
        }
    }

    private static void expire(ShardedJedis shardedJedis,String key,int millisecond){
        if(millisecond>0){
            if(isOld){
                shardedJedis.expire(key, (int)(millisecond/1000));
            }else{
                shardedJedis.pexpire(key,millisecond);
            }
        }
    }

    private static void expire(ShardedJedis shardedJedis,String key,long millisecond){
        if(millisecond>0){
            if(isOld){
                shardedJedis.expire(key, (int)(millisecond/1000));
            }else{
                shardedJedis.pexpire(key,millisecond);
            }
        }
    }

    /**
     * 测试代码
     * @param args
     * @throws java.io.UnsupportedEncodingException
     */
    public static void main(String[] args) throws Exception {

        RedisMemoTool.del("wawa");
        List<Map<String,Object>> list = new ArrayList<>();
        Map<String,Object> a1 = new HashMap<>();
        a1.put("col",1);
        list.add(a1);

        Map<String,Object> a2 = new HashMap<>();
        a2.put("col",2);
        list.add(a2);

        Map<String,Object> a3 = new HashMap<>();
        a3.put("col",3);
        list.add(a3);


        RedisMemoTool.lpushBatch("wawa", list, 1000 * 60 * 30, true);

        list = new ArrayList<>();
        Map<String,Object> a4 = new HashMap<>();
        a4.put("col",4);
        list.add(a4);

        Map<String,Object> a5 = new HashMap<>();
        a5.put("col",5);
        list.add(a5);
        RedisMemoTool.lpushBatch("wawa", list, 1000 * 60 * 30, true);

        List<Map<String,Object>> pageResult = RedisMemoTool.lrangeRow("wawa", 0, -1);

        for(Map<String,Object> row :pageResult){
            System.out.println(row.get("col"));
        }
//        String[] arr = new String[]{"1","2","3","4","5","6"};
//        System.out.println(RedisMemoTool.createKey("ww",arr));

//        HashMap map = new HashMap();
//        map.put("aaa","s");
//        JsonSerializer js = new GsonImpl();
//        String str = js.toJson(map);
//        RedisMemoTool.set("FAS_CACHE_sc_scClassicQueryUtilsManager_balanceFlag6400130000",str,100000);
//        String rel = RedisMemoTool.get("FAS_CACHE_sc_scClassicQueryUtilsManager_balanceFlag6400130000");
//        System.out.println(rel);
//        RedisMemoTool.set("kk","uuu",1000*60);
//        System.out.println(RedisMemoTool.get("kk"));
//
//
//        ShardedJedis shardedJedis = RedisCache.getShardedJedis();
//        shardedJedis.lpush("yyy","过期");
//        shardedJedis.lpush("yyy","meishi");
//        shardedJedis.pexpire("yyy",1000*60);
//        RedisMemoTool.lpush("yyy","过期",1000*60);
//        RedisMemoTool.lpush("yyy","meishi",1000*60);
//
//        List<String> strList = RedisMemoTool.lrange("yyy",0,1);
//        for(String s:strList){
//            System.out.println(s);
//        }
//
//        List<Map<String,Object>> rows = new ArrayList<>();
//        String classicData = "{\"DEBIT_CREDIT\":2131.03,\"BUDAT\":\"20161026\",\"USNAM\":\"51243407@SC\",\"UNIT\":\"A5100:省公司本部\",\"DEBIT__CREDIT\"" +
//                ":2131.03,\"ZZSY_ORI\":\"CW-CFBZ\",\"ECONOMIC\":\"FY010101:经济事项名称(暂无)\",\"SGTXT\":\"付省公司本部电视宽带部报冯艳梅外埠差旅费\",\"BUZEI\"" +
//                ":\"002\",\"PERIOD\":\"201610\",\"DEBIT\":2131.03,\"CREDIT\":0.0,\"KOSTL\":\"A510000036\",\"PRCTR\":\"A510000\",\"HKONT\"" +
//                ":\"6400160901\",\"BELNR\":\"3300081869\",\"BLDAT\":\"20161026\",\"LTEXT\":\"省本部.电视宽带部\",\"BKTXT\":\"省公司本部电视宽带部报外埠差旅费\",\"NUMPG\"" +
//                ":\"004\"}";
//        JsonSerializer js = new GsonImpl();
//        for(int i = 0;i<124764;i++){
//            Map<String,Object> row = js.fromJson(classicData,new HashMap<String,Object>().getClass());
//            rows.add(row);
//        }
//        System.out.println("start...");
//        long start = new Date().getTime();
//        lpushBatch(key , rows , 1000*60*30,false);
//        System.out.println("lpushBatch,耗时:" + (new Date().getTime() - start) * 1.00/ (1000) + "s.");
    }
}




5、使用fastJson转json对象

  • JSONObject与String、实体类互相转换

1、实体类对象转换成String类型的JSON字符串
JSONObject.toJSONString(实体类对象) == String

2、String类型的JSON字符串转换成实体类对象
JSONObject.toJavaObject(JSON字符串,实体类对象) == 实体

3、Json字符串转换成JSONObject对象
JSONObject.parseObject(JSON字符串) == JSONObject

4、JSON字符串转换成实体类对象
JSONObject.parseObject(JSON字符串,实体类对象) == 实体

- 转jsonArray
1、string转jsonArray
JSONArray jsonArray= JSONArray.parseArray(String);

2、List转JSONArray
JSONArray.parseArray(JSON.toJSONString(list));

3、JSONArray转List
JSONObject.parseArray(array.toJSONString(), EventColAttr.class);

4、字符串转List
JSONObject.parseArray(str,T.class);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值