开发中常使用的方法
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啟動線程
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);
總結
- 上一篇: select下拉框赋值和取值
- 下一篇: java面试常见问题