redis.properties
配置文件内容

redis.pool.maxActive=100
redis.pool.maxIdle=20
redis.pool.maxWait=3000
redis.pool.testOnBorrow=false
redis.pool.testOnReturn=false


redis.ip=127.0.0.1
redis.port=6379
redis.port1=6380
redis.password=****


package com.szreach.rcrp.redis;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set; import org.apache.log4j.Logger; import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool; public class RedisUtil { private static final Logger log = Logger.getLogger(RedisUtil.class);
private static JedisPool jedisPool = null;
private static ShardedJedisPool shardedJedisPool = null;
/**
* 初始化Redis连接池
*/
static {
try {
// 加载redis配置文件
ResourceBundle bundle = ResourceBundle.getBundle("redis");
if (bundle == null) {
throw new IllegalArgumentException(
"[redis.properties] is not found!");
}
int maxActivity = Integer.valueOf(bundle
.getString("redis.pool.maxActive"));
int maxIdle = Integer.valueOf(bundle
.getString("redis.pool.maxIdle"));
long maxWait = Long.valueOf(bundle.getString("redis.pool.maxWait"));
boolean testOnBorrow = Boolean.valueOf(bundle
.getString("redis.pool.testOnBorrow"));
boolean onreturn = Boolean.valueOf(bundle
.getString("redis.pool.testOnReturn"));
// 创建jedis池配置实例
JedisPoolConfig config = new JedisPoolConfig();
// 设置池配置项值
config.setMaxActive(maxActivity);
config.setMaxIdle(maxIdle); //最大空闲连接数
config.setMaxWait(maxWait);
config.setTestOnBorrow(testOnBorrow);
config.setTestOnReturn(onreturn);
jedisPool = new JedisPool(config, bundle.getString("redis.ip"),
Integer.valueOf(bundle.getString("redis.port")), 10000,
bundle.getString("redis.password"));
// slave链接
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
shards.add(new JedisShardInfo(bundle.getString("redis.ip"), Integer
.valueOf(bundle.getString("redis.port1"))));
shardedJedisPool = new ShardedJedisPool(config, shards);
log.info("初始化Redis连接池success");
} catch (Exception e) {
log.error("初始化Redis连接池 出错!", e);
}
} /**
* 获取Jedis实例
*
* @return
*/
public synchronized static Jedis getJedis() {
try {
if (jedisPool != null) {
Jedis resource = jedisPool.getResource();
return resource;
} else {
return null;
}
} catch (Exception e) {
log.error("Redis缓存获取Jedis实例 出错!", e);
return null;
}
} /**
* 获取shardedJedis实例
*
* @return
*/
public static ShardedJedis getShardedJedis() {
try {
if (shardedJedisPool != null) {
ShardedJedis resource = shardedJedisPool.getResource();
return resource;
} else {
return null;
}
} catch (Exception e) {
log.error("Redis缓存获取shardedJedis实例 出错!", e);
return null;
}
} /**
* 释放jedis资源
*
* @param jedis
*/
public static void returnResource(final Jedis jedis) {
if (jedis != null) {
jedisPool.returnResource(jedis);
}
} /**
* 释放shardedJedis资源
*
* @param jedis
*/
public static void returnResource(final ShardedJedis shardedJedis) {
if (shardedJedis != null) {
shardedJedisPool.returnResource(shardedJedis);
}
} /**
* 向缓存中设置字符串内容
*
* @param key
* key
* @param value
* value
* @return
* @throws Exception
*/
public static boolean set(String key, String value) {
Jedis jedis = null;
try {
jedis = getJedis();
if(jedis != null){
jedis.set(key, value);
}
return true;
} catch (Exception e) {
log.error("Redis缓存设置key值 出错!", e);
return false;
} finally {
returnResource(jedis);
}
} /**
* 判断key是否存在
*/
public static boolean exists(String key){
ShardedJedis jedis = null;
try {
jedis = getShardedJedis();
if (jedis == null) {
return false;
} else {
return jedis.exists(key);
}
} catch (Exception e) {
log.error("Redis缓存判断key是否存在 出错!", e);
return false;
} finally {
returnResource(jedis);
}
} /**
* 删除缓存中的对象,根据key
* @param key
* @return
*/
public static boolean del(String key) {
Jedis jedis = null;
try {
jedis = getJedis();
jedis.del(key);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} //*******************key-value****************start /**
* 向缓存中设置对象
*
* @param key
* @param value
* @return
*/
public static boolean set(String key, Object value) {
Jedis jedis = null;
try {
String objectJson = JSONObject.fromObject(value).toString();
jedis = getJedis();
if (jedis != null) {
jedis.set(key, objectJson);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} /**
* 根据key 获取内容
*
* @param key
* @return
*/
public static Object get(String key) {
ShardedJedis jedis = null;
try {
jedis = shardedJedisPool.getResource();
Object value = jedis.get(key);
return value;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
shardedJedisPool.returnResource(jedis);
}
} /**
* 根据key 获取对象
*
* @param key
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T get(String key, Class<T> clazz) {
ShardedJedis jedis = null;
try {
jedis = getShardedJedis();
if (jedis != null) {
return (T) JSONObject.toBean(JSONObject.fromObject(jedis.get(key)), clazz);
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
returnResource(jedis);
}
}
//*******************key-value****************end //*************** 操作list****************start
/**
* 向缓存中设置对象
* @param key
* @param list
* T string calss
* @return
*/
public static <T> boolean setList(String key,List<T> list){
Jedis jedis = null;
try {
jedis = getJedis();
if (jedis != null) {
for (T vz : list) {
if (vz instanceof String) {
jedis.lpush(key, (String) vz);
} else {
String objectJson = JSONObject.fromObject(vz).toString();
jedis.lpush(key, objectJson);
}
}
return true;
} else {
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} @SuppressWarnings("unchecked")
public static <T> List<T> getListEntity(String key,Class<T> entityClass){
ShardedJedis jedis = null;
try {
jedis = getShardedJedis();
if (jedis != null) {
List<String> valueJson = jedis.lrange(key, 0, -1);
JSONArray json = new JSONArray();
json.addAll(valueJson);
JSONArray jsonArray = JSONArray.fromObject(json.toString());
return (List<T>) JSONArray.toCollection(jsonArray, entityClass);
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
returnResource(jedis);
}
} public static List<String> getListString(String key){
ShardedJedis jedis = null;
try {
jedis = getShardedJedis();
if (jedis != null) {
return jedis.lrange(key, 0, -1);
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
returnResource(jedis);
}
}
//*************** 操作list****************end //*************** 操作map****************start
public static <K,V> boolean setMap(String key,Map<String,V> map){
Jedis jedis = null;
try {
jedis = getJedis();
if (jedis != null) {
Set<Map.Entry<String, V>> entry = map.entrySet();
for (Iterator<Map.Entry<String, V>> ite = entry.iterator(); ite.hasNext();) {
Map.Entry<String, V> kv = ite.next();
if (kv.getValue() instanceof String) {
jedis.hset(key, kv.getKey(), (String) kv.getValue());
}else if (kv.getValue() instanceof List) {
jedis.hset(key, kv.getKey(), JSONArray.fromObject(kv.getValue()).toString());
} else {
jedis.hset(key, kv.getKey(), JSONObject.fromObject(kv.getValue()).toString());
}
}
return true;
} else {
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} public static boolean setMapKey(String key,String mapKey,Object value){
Jedis jedis = null;
try {
jedis = getJedis();
if (jedis != null) {
if (value instanceof String) {
jedis.hset(key, mapKey, String.valueOf(value));
} else if (value instanceof List) {
jedis.hset(key, mapKey, JSONArray.fromObject(value).toString());
} else {
jedis.hset(key, mapKey, JSONObject.fromObject(value).toString());
}
return true;
} else {
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} /**
* seconds key和value 保存的有效时间(单位:秒)
* @return
*/
public static boolean setMapKeyExpire(String key,String mapKey,Object value, int seconds){
Jedis jedis = null;
try {
jedis = getJedis();
if (jedis != null) {
if (value instanceof String) {
jedis.hset(key, mapKey, String.valueOf(value));
} else if (value instanceof List) {
jedis.hset(key, mapKey, JSONArray.fromObject(value).toString());
} else {
jedis.hset(key, mapKey, JSONObject.fromObject(value).toString());
}
jedis.expire(key, seconds);
return true;
} else {
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} @SuppressWarnings("unchecked")
public static <K,V> Map<String,V> getMap(String key){
ShardedJedis jedis = null;
try {
jedis = getShardedJedis();
if (jedis != null) {
Map<String, V> map = (Map<String, V>) jedis.hgetAll(key);
return map;
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
returnResource(jedis);
}
} @SuppressWarnings("unchecked")
public static <K,V> Map<String,V> getMapEntityClass(String key,Class<V> clazz){
ShardedJedis jedis = null;
try {
jedis = getShardedJedis();
if (jedis != null) {
Map<String, V> map = (Map<String, V>) jedis.hgetAll(key);
Set<Map.Entry<String, V>> entry = map.entrySet();
for (Iterator<Map.Entry<String, V>> ite = entry.iterator(); ite.hasNext();) {
Map.Entry<String, V> kv = ite.next();
map.put(kv.getKey(), (V) JSONObject.toBean(JSONObject.fromObject(kv.getValue()), clazz));
}
return map;
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
returnResource(jedis);
}
} @SuppressWarnings("unchecked")
public static <K,V> Map<String,List<V>> getMapList(String key,Class<V> clazz){
ShardedJedis jedis = null;
try {
jedis = getShardedJedis();
if (jedis != null) {
Map<String, V> map = (Map<String, V>) jedis.hgetAll(key);
Set<Map.Entry<String, V>> entry = map.entrySet();
for (Iterator<Map.Entry<String, V>> ite = entry.iterator(); ite.hasNext();) {
Map.Entry<String, V> kv = ite.next();
JSONArray jsonArray = JSONArray.fromObject(kv.getValue());
map.put(kv.getKey(), (V) JSONArray.toCollection(jsonArray, clazz));
}
return (Map<String, List<V>>) map;
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
returnResource(jedis);
}
} @SuppressWarnings("unchecked")
public static <T> List<T> getMapKeyListEntity(String key,String mapKey,
Class<T> entityClass){
ShardedJedis jedis = null;
try {
jedis = getShardedJedis();
if (jedis != null) {
String valueJson = jedis.hget(key, mapKey);
JSONArray jsonArray = JSONArray.fromObject(valueJson);
return (List<T>) JSONArray.toCollection(jsonArray, entityClass);
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
returnResource(jedis);
}
} @SuppressWarnings("unchecked")
public static <T> T getMapKeyEntity(String key,String mapKey,
Class<T> entityClass){
ShardedJedis jedis = null;
try {
jedis = getShardedJedis();
if(jedis != null){
String valueJson=jedis.hget(key, mapKey);
return (T) JSONObject.toBean(JSONObject.fromObject(valueJson), entityClass);
}else{return null;}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
returnResource(jedis);
}
} public static Object getMapKey(String key,String mapKey){
ShardedJedis jedis = null;
try {
jedis = getShardedJedis();
if(jedis != null){
return jedis.hget(key, mapKey);
}else{return null;}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
returnResource(jedis);
}
} public static boolean delMapKey(String key,String mapKey){
Jedis jedis = null;
try {
jedis = getJedis();
jedis.hdel(key, mapKey);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} public static boolean hexists(String key,String mapKey){
ShardedJedis jedis = null;
try {
jedis = shardedJedisPool.getResource();
return jedis.hexists(key,mapKey);
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
shardedJedisPool.returnResource(jedis);
}
}
//*************** 操作map****************end //***************计数器应用INCR,DECR****************begin
//Redis的命令都是原子性的,你可以轻松地利用INCR,DECR命令来构建计数器系统 /**
* incr(key):名称为key的string增1操作
*/
public static boolean incr(String key){
Jedis jedis = null;
try {
jedis = getJedis();
jedis.incr(key);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} /**
* incrby(key, integer):名称为key的string增加integer
*/
public static boolean incrBy(String key, int value){
Jedis jedis = null;
try {
jedis = getJedis();
jedis.incrBy(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} /**
* decr(key):名称为key的string减1操作
*/
public static boolean decr(String key){
Jedis jedis = null;
try {
jedis = getJedis();
jedis.decr(key);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} /**
* decrby(key, integer):名称为key的string减少integer
*/
public static boolean decrBy(String key, int value){
Jedis jedis = null;
try {
jedis = getJedis();
jedis.decrBy(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
}
//***************计数器应用INCR,DECR****************end //***************使用sorted set(zset)甚至可以构建有优先级的队列系统***************begin
/**
* 向名称为key的zset中添加元素member,score用于排序。
* 如果该元素已经存在,则根据score更新该元素的顺序
*/
public static boolean zadd(String key, double score, String member){
Jedis jedis = null;
try {
jedis = getJedis();
jedis.zadd(key, score, member);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} /**
* 删除名称为key的zset中的元素member
*/
public static boolean zrem(String key, String... members){
Jedis jedis = null;
try {
jedis = getJedis();
jedis.zrem(key, members);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} /**
* 返回集合中score在给定区间的元素
*/
public static Set<String> zrangeByScore(String key, double min, double max){
ShardedJedis jedis = null;
try {
jedis = shardedJedisPool.getResource();
return jedis.zrangeByScore(key, min, max);
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
returnResource(jedis);
}
}
//***************使用sorted set(zset)甚至可以构建有优先级的队列系统***************end //***************sorted set 处理***************************************begin
//zset 处理
public static boolean zaddObject(String key, double score, Object value){
Jedis jedis = null;
try {
jedis = getJedis();
String objectJson = JSONObject.fromObject(value).toString();
jedis.zadd(key, score, objectJson);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} /**
* score值递减(从大到小)次序排列。
* @param key
* @param max score
* @param min score
* @param entityClass
* @return
*/
@SuppressWarnings("unchecked")
public static <T> List<T> zrevrangeByScore(String key,double max,double min,
Class<T> entityClass){
ShardedJedis jedis = null;
try {
jedis =shardedJedisPool.getResource();
Set<String> set=jedis.zrevrangeByScore(key, max, min);
List<T> list=new ArrayList<T>();
for (String str : set) {
list.add((T) JSONObject.toBean(JSONObject.fromObject(str), entityClass));
}
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
returnResource(jedis);
}
} /**
* score值递减(从大到小)次序排列。
* @param key
* @param max score
* @param min score
* @param offset count (类似mysql的 LIMIT)
* @param entityClass
* @return
*/
@SuppressWarnings("unchecked")
public static <T> List<T> zrevrangeByScore(String key,double max,double min,
int offset, int count,Class<T> entityClass){
ShardedJedis jedis = null;
try {
jedis =shardedJedisPool.getResource();
Set<String> set=jedis.zrevrangeByScore(key, max, min,offset,count);
List<T> list=new ArrayList<T>();
for (String str : set) {
list.add((T) JSONObject.toBean(JSONObject.fromObject(str), entityClass));
}
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
returnResource(jedis);
}
} //得到总记录数
public static long zcard(String key){
ShardedJedis jedis = null;
try {
jedis =shardedJedisPool.getResource();
return jedis.zcard(key);
} catch (Exception e) {
e.printStackTrace();
return 0;
} finally {
returnResource(jedis);
}
} //删除 元素
public static boolean zremObject(String key, Object value){
Jedis jedis = null;
try {
jedis = getJedis();
String objectJson = JSONObject.fromObject(value).toString();
jedis.zrem(key, objectJson);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} //统计zset集合中score某个范围内(1-5),元素的个数
public static long zcount(String key,double min, double max){
ShardedJedis jedis = null;
try {
jedis =shardedJedisPool.getResource();
return jedis.zcount(key,min,max);
} catch (Exception e) {
e.printStackTrace();
return 0;
} finally {
returnResource(jedis);
}
} //查看zset集合中元素的score
public static double zscore(String key,Object value){
ShardedJedis jedis = null;
try {
jedis =shardedJedisPool.getResource();
String objectJson = JSONObject.fromObject(value).toString();
return jedis.zscore(key,objectJson);
} catch (Exception e) {
e.printStackTrace();
return 0;
} finally {
returnResource(jedis);
}
}
//**************sorted set******************************************end //***********************Redis Set集合操作**************************begin
/**
* sadd:向名称为Key的set中添加元素,同一集合中不能出现相同的元素值。(用法:sadd set集合名称 元素值)
* @param key
* @param value
* @return
*/
public static boolean sadd(String key, String value) {
Jedis jedis = null;
try {
jedis = getJedis();
jedis.sadd(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} /**
* srem:删除名称为key的set中的元素。(用法:srem set集合名称 要删除的元素值)
*
* @param key
* @param value
* @return
*/
public static boolean srem(String key, String value) {
Jedis jedis = null;
try {
jedis = getJedis();
jedis.srem(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} /**
* sdiff:返回所有给定key与第一个key的差集。(用法:sdiff set集合1 set集合2)
*
* @param key1
* @param key2
* @return
*/
public static Set<String> sdiff(String key1, String key2) {
Jedis jedis = null;
Set<String> diffList = null;
try {
jedis = getJedis();
diffList = jedis.sdiff(key1, key2);
} catch (Exception e) {
e.printStackTrace();
} finally {
returnResource(jedis);
}
return diffList;
} /**
* sismember:判断某个值是否是集合的元素。(用法:sismember 集合1 指定的元素值)
*
* @param key
* @param value
* @return
*/
public static boolean sismember(String key, String value) {
ShardedJedis jedis = null;
try {
jedis = shardedJedisPool.getResource();
return jedis.sismember(key, value);
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
returnResource(jedis);
}
} /**
* smembers(key) :返回名称为key的set的所有元素
*
* @param key
* @return
*/
public static Set<String> smembers(String key) {
Jedis jedis = null;
Set<String> list = null;
try {
jedis = getJedis();
list = jedis.smembers(key);
} catch (Exception e) {
e.printStackTrace();
} finally {
returnResource(jedis);
}
return list;
} //***********************Redis Set集合操作****************************end
}

RedisPool操作Redis,工具类实例的更多相关文章

  1. Java操作Redis工具类

    依赖 jar 包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis< ...

  2. Jedis 操作 Redis 工具类

    配置类 pom.xml pom.xml 里配置依赖 <dependency> <groupId>redis.clients</groupId> <artifa ...

  3. Redis操作Set工具类封装,Java Redis Set命令封装

    Redis操作Set工具类封装,Java Redis Set命令封装 >>>>>>>>>>>>>>>>& ...

  4. Redis操作List工具类封装,Java Redis List命令封装

    Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...

  5. Redis操作Hash工具类封装,Redis工具类封装

    Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...

  6. Redis操作字符串工具类封装,Redis工具类封装

    Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...

  7. redistemplate优雅地操作redis redis 工具类

    参考:https://www.cnblogs.com/superfj/p/9232482.html redis 工具类 package com.service; import org.springfr ...

  8. redis 工具类 单个redis、JedisPool 及多个redis、shardedJedisPool与spring的集成配置

    http://www.cnblogs.com/edisonfeng/p/3571870.html http://javacrazyer.iteye.com/blog/1840161 http://ww ...

  9. Redis 工具类 java 实现的redis 工具类

    最近了解了一下非关系型数据库 redis 会使用简单的命令 在自己本地电脑 使用时必须先启动服务器端 在启动客户端 redis 简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内 ...

  10. springboot2.2.2企业级项目整合redis与redis 工具类大全

    1.springboot2.2.2整合redis教程很多,为此编写了比较完整的redis工具类,符合企业级开发使用的工具类 2.springboot与redis maven相关的依赖 <depe ...

随机推荐

  1. XSD详解二 - 简易元素、属性、内容限定

    一.XSD 简易元素 XML Schema 可定义 XML 文件的元素. 简易元素指那些只包含文本的元素.它不会包含任何其他的元素或属性. 1.什么是简易元素? 简易元素指那些仅包含文本的元素.它不会 ...

  2. 三十天学不会TCP,UDP/IP编程--MAC地址和数据链路层

    这篇文章主要是来做(da)推(guang)介(gao)的!由于这两年接触到了比较多的这方面的知识,不想忘了,我决定把他们记录下来,所以决定在GitBook用半年时间上面写下来,这是目前写的一节,后面会 ...

  3. Codeforces 869E The Untended Antiquity

    题意:给定一个网格图,三种操作:1.在(r1,c1,r2,c2)处建围墙.2.删除(r1,c1,r2,c2)处的围墙.3.询问两点是否可达 思路比较巧妙,将围墙内的点赋加一个权值,询问的时候判断两个点 ...

  4. 程序员的自我救赎---1.4.3: 核心框架讲解(MVC)

    <前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...

  5. 參与 Spring 4 中文文档翻译

    參与 Spring 4 中文文档翻译 我们从2014年12月開始翻译Spring 4的框架文档.尽管至今已有一年,可是进度非常慢. 当中一部分原因是由于Spring 文档有1000多页,并且翻译的时候 ...

  6. Python - 首字母大写(capwords) 和 创建转换表(maketrans) 具体解释

    首字母大写(capwords) 和 创建转换表(maketrans) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27 ...

  7. Nginx事件处理中的connection和read、write事件的关联

    /*********************************************************************  * Author  : Samson  * Date   ...

  8. Oracle学习笔记(7)——高级查询(1)

    在学习高级查询之前,我们先了解一下怎样查看Oracle数据库中的全部表.由于我们要使用到Oracle数据库中SCOTT用户下的几张表(这些表是Oracle数据库自带的表). 分组查询 分组函数的概念: ...

  9. logstash 向elasticsearch写入数据,怎样指定多个数据template

    之前在配置从logstash写数据到elasticsearch时,指定单个数据模板没有问题.可是在配置多个数据模板时候,总是不成功,后来找了非常多资料,最终找到解决的方法,就是要多加一个配置项: te ...

  10. POJ 2127 最长公共上升子序列

    动态规划法: #include <iostream> #include <cstdio> #include <fstream> #include <algor ...