Redis客户端之Spring整合Jedis
1.下载相关jar包,并引入工程:
jedis-2.4.2.jar
commons-pool2-2.0.jar
2.将以下XML配置引入spring
- <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool">
- <constructor-arg index="0" ref="jedisPoolConfig"/>
- <constructor-arg index="1">
- <list>
- <bean name="slaver" class="redis.clients.jedis.JedisShardInfo">
- <constructor-arg index="0" value="${redis.slaver.host}"/>
- <constructor-arg index="1" value="${redis.slaver.port}" type="int"/>
- </bean>
- <bean name="master" class="redis.clients.jedis.JedisShardInfo">
- <constructor-arg index="0" value="${redis.master.host}"/>
- <constructor-arg index="1" value="${redis.master.port}" type="int"/>
- </bean>
- </list>
- </constructor-arg>
- </bean>
- <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
- <property name="maxTotal" value="2048" />
- <property name="maxIdle" value="200" />
- <property name="numTestsPerEvictionRun" value="1024"/>
- <property name="timeBetweenEvictionRunsMillis" value="30000" />
- <property name="minEvictableIdleTimeMillis" value="-1" />
- <property name="softMinEvictableIdleTimeMillis" value="10000" />
- <property name="maxWaitMillis" value="1500"/>
- <property name="testOnBorrow" value="true" />
- <property name="testWhileIdle" value="true"/>
- <property name="testOnReturn" value="false"/>
- <property name="jmxEnabled" value="true"/>
- <property name="jmxNamePrefix" value="youyuan"/>
- <property name="blockWhenExhausted" value="false"/>
- </bean>
3.将shardedJedisPool注入相关的类中即可使用
- @Resource
- private ShardedJedisPool shardedJedisPool;
- /**
- * 设置一个key的过期时间(单位:秒)
- * @param key key值
- * @param seconds 多少秒后过期
- * @return 1:设置了过期时间 0:没有设置过期时间/不能设置过期时间
- */
- public long expire(String key, int seconds) {
- if (key==null || key.equals("")) {
- return 0;
- }
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- return shardedJedis.expire(key, seconds);
- } catch (Exception ex) {
- logger.error("EXPIRE error[key=" + key + " seconds=" + seconds + "]" + ex.getMessage(), ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return 0;
- }
- /**
- * 设置一个key在某个时间点过期
- * @param key key值
- * @param unixTimestamp unix时间戳,从1970-01-01 00:00:00开始到现在的秒数
- * @return 1:设置了过期时间 0:没有设置过期时间/不能设置过期时间
- */
- public long expireAt(String key, int unixTimestamp) {
- if (key==null || key.equals("")) {
- return 0;
- }
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- return shardedJedis.expireAt(key, unixTimestamp);
- } catch (Exception ex) {
- logger.error("EXPIRE error[key=" + key + " unixTimestamp=" + unixTimestamp + "]" + ex.getMessage(), ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return 0;
- }
- /**
- * 截断一个List
- * @param key 列表key
- * @param start 开始位置 从0开始
- * @param end 结束位置
- * @return 状态码
- */
- public String trimList(String key, long start, long end) {
- if (key == null || key.equals("")) {
- return "-";
- }
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- return shardedJedis.ltrim(key, start, end);
- } catch (Exception ex) {
- logger.error("LTRIM 出错[key=" + key + " start=" + start + " end=" + end + "]" + ex.getMessage() , ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return "-";
- }
- /**
- * 检查Set长度
- * @param key
- * @return
- */
- public long countSet(String key){
- if(key == null ){
- return 0;
- }
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- return shardedJedis.scard(key);
- } catch (Exception ex) {
- logger.error("countSet error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return 0;
- }
- /**
- * 添加到Set中(同时设置过期时间)
- * @param key key值
- * @param seconds 过期时间 单位s
- * @param value
- * @return
- */
- public boolean addSet(String key,int seconds, String... value) {
- boolean result = addSet(key, value);
- if(result){
- long i = expire(key, seconds);
- return i==1;
- }
- return false;
- }
- /**
- * 添加到Set中
- * @param key
- * @param value
- * @return
- */
- public boolean addSet(String key, String... value) {
- if(key == null || value == null){
- return false;
- }
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- shardedJedis.sadd(key, value);
- return true;
- } catch (Exception ex) {
- logger.error("setList error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return false;
- }
- /**
- * @param key
- * @param value
- * @return 判断值是否包含在set中
- */
- public boolean containsInSet(String key, String value) {
- if(key == null || value == null){
- return false;
- }
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- return shardedJedis.sismember(key, value);
- } catch (Exception ex) {
- logger.error("setList error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return false;
- }
- /**
- * 获取Set
- * @param key
- * @return
- */
- public Set<String> getSet(String key){
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- return shardedJedis.smembers(key);
- } catch (Exception ex) {
- logger.error("getList error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return null;
- }
- /**
- * 从set中删除value
- * @param key
- * @return
- */
- public boolean removeSetValue(String key,String... value){
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- shardedJedis.srem(key, value);
- return true;
- } catch (Exception ex) {
- logger.error("getList error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return false;
- }
- /**
- * 从list中删除value 默认count 1
- * @param key
- * @param values 值list
- * @return
- */
- public int removeListValue(String key,List<String> values){
- return removeListValue(key, 1, values);
- }
- /**
- * 从list中删除value
- * @param key
- * @param count
- * @param values 值list
- * @return
- */
- public int removeListValue(String key,long count,List<String> values){
- int result = 0;
- if(values != null && values.size()>0){
- for(String value : values){
- if(removeListValue(key, count, value)){
- result++;
- }
- }
- }
- return result;
- }
- /**
- * 从list中删除value
- * @param key
- * @param count 要删除个数
- * @param value
- * @return
- */
- public boolean removeListValue(String key,long count,String value){
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- shardedJedis.lrem(key, count, value);
- return true;
- } catch (Exception ex) {
- logger.error("getList error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return false;
- }
- /**
- * 截取List
- * @param key
- * @param start 起始位置
- * @param end 结束位置
- * @return
- */
- public List<String> rangeList(String key, long start, long end) {
- if (key == null || key.equals("")) {
- return null;
- }
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- return shardedJedis.lrange(key, start, end);
- } catch (Exception ex) {
- logger.error("rangeList 出错[key=" + key + " start=" + start + " end=" + end + "]" + ex.getMessage() , ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return null;
- }
- /**
- * 检查List长度
- * @param key
- * @return
- */
- public long countList(String key){
- if(key == null ){
- return 0;
- }
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- return shardedJedis.llen(key);
- } catch (Exception ex) {
- logger.error("countList error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return 0;
- }
- /**
- * 添加到List中(同时设置过期时间)
- * @param key key值
- * @param seconds 过期时间 单位s
- * @param value
- * @return
- */
- public boolean addList(String key,int seconds, String... value){
- boolean result = addList(key, value);
- if(result){
- long i = expire(key, seconds);
- return i==1;
- }
- return false;
- }
- /**
- * 添加到List
- * @param key
- * @param value
- * @return
- */
- public boolean addList(String key, String... value) {
- if(key == null || value == null){
- return false;
- }
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- shardedJedis.lpush(key, value);
- return true;
- } catch (Exception ex) {
- logger.error("setList error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return false;
- }
- /**
- * 添加到List(只新增)
- * @param key
- * @param value
- * @return
- */
- public boolean addList(String key, List<String> list) {
- if(key == null || list == null || list.size() == 0){
- return false;
- }
- for(String value : list){
- addList(key, value);
- }
- return true;
- }
- /**
- * 获取List
- * @param key
- * @return
- */
- public List<String> getList(String key){
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- return shardedJedis.lrange(key, 0, -1);
- } catch (Exception ex) {
- logger.error("getList error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return null;
- }
- /**
- * 设置HashSet对象
- *
- * @param domain 域名
- * @param key 键值
- * @param value Json String or String value
- * @return
- */
- public boolean setHSet(String domain, String key, String value) {
- if (value == null) return false;
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- shardedJedis.hset(domain, key, value);
- return true;
- } catch (Exception ex) {
- logger.error("setHSet error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return false;
- }
- /**
- * 获得HashSet对象
- *
- * @param domain 域名
- * @param key 键值
- * @return Json String or String value
- */
- public String getHSet(String domain, String key) {
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- return shardedJedis.hget(domain, key);
- } catch (Exception ex) {
- logger.error("getHSet error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return null;
- }
- /**
- * 删除HashSet对象
- *
- * @param domain 域名
- * @param key 键值
- * @return 删除的记录数
- */
- public long delHSet(String domain, String key) {
- ShardedJedis shardedJedis = null;
- long count = 0;
- try {
- shardedJedis = shardedJedisPool.getResource();
- count = shardedJedis.hdel(domain, key);
- } catch (Exception ex) {
- logger.error("delHSet error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return count;
- }
- /**
- * 删除HashSet对象
- *
- * @param domain 域名
- * @param key 键值
- * @return 删除的记录数
- */
- public long delHSet(String domain, String... key) {
- ShardedJedis shardedJedis = null;
- long count = 0;
- try {
- shardedJedis = shardedJedisPool.getResource();
- count = shardedJedis.hdel(domain, key);
- } catch (Exception ex) {
- logger.error("delHSet error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return count;
- }
- /**
- * 判断key是否存在
- *
- * @param domain 域名
- * @param key 键值
- * @return
- */
- public boolean existsHSet(String domain, String key) {
- ShardedJedis shardedJedis = null;
- boolean isExist = false;
- try {
- shardedJedis = shardedJedisPool.getResource();
- isExist = shardedJedis.hexists(domain, key);
- } catch (Exception ex) {
- logger.error("existsHSet error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return isExist;
- }
- /**
- * 全局扫描hset
- *
- * @param match field匹配模式
- * @return
- */
- public List<Map.Entry<String, String>> scanHSet(String domain, String match) {
- ShardedJedis shardedJedis = null;
- try {
- int cursor = 0;
- shardedJedis = shardedJedisPool.getResource();
- ScanParams scanParams = new ScanParams();
- scanParams.match(match);
- Jedis jedis = shardedJedis.getShard(domain);
- ScanResult<Map.Entry<String, String>> scanResult;
- List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>();
- do {
- scanResult = jedis.hscan(domain, String.valueOf(cursor), scanParams);
- list.addAll(scanResult.getResult());
- cursor = Integer.parseInt(scanResult.getStringCursor());
- } while (cursor > 0);
- return list;
- } catch (Exception ex) {
- logger.error("scanHSet error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return null;
- }
- /**
- * 返回 domain 指定的哈希集中所有字段的value值
- *
- * @param domain
- * @return
- */
- public List<String> hvals(String domain) {
- ShardedJedis shardedJedis = null;
- List<String> retList = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- retList = shardedJedis.hvals(domain);
- } catch (Exception ex) {
- logger.error("hvals error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return retList;
- }
- /**
- * 返回 domain 指定的哈希集中所有字段的key值
- *
- * @param domain
- * @return
- */
- public Set<String> hkeys(String domain) {
- ShardedJedis shardedJedis = null;
- Set<String> retList = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- retList = shardedJedis.hkeys(domain);
- } catch (Exception ex) {
- logger.error("hkeys error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return retList;
- }
- /**
- * 返回 domain 指定的哈希key值总数
- *
- * @param domain
- * @return
- */
- public long lenHset(String domain) {
- ShardedJedis shardedJedis = null;
- long retList = 0;
- try {
- shardedJedis = shardedJedisPool.getResource();
- retList = shardedJedis.hlen(domain);
- } catch (Exception ex) {
- logger.error("hkeys error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return retList;
- }
- /**
- * 设置排序集合
- *
- * @param key
- * @param score
- * @param value
- * @return
- */
- public boolean setSortedSet(String key, long score, String value) {
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- shardedJedis.zadd(key, score, value);
- return true;
- } catch (Exception ex) {
- logger.error("setSortedSet error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return false;
- }
- /**
- * 获得排序集合
- *
- * @param key
- * @param startScore
- * @param endScore
- * @param orderByDesc
- * @return
- */
- public Set<String> getSoredSet(String key, long startScore, long endScore, boolean orderByDesc) {
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- if (orderByDesc) {
- return shardedJedis.zrevrangeByScore(key, endScore, startScore);
- } else {
- return shardedJedis.zrangeByScore(key, startScore, endScore);
- }
- } catch (Exception ex) {
- logger.error("getSoredSet error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return null;
- }
- /**
- * 计算排序长度
- *
- * @param key
- * @param startScore
- * @param endScore
- * @return
- */
- public long countSoredSet(String key, long startScore, long endScore) {
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- Long count = shardedJedis.zcount(key, startScore, endScore);
- return count == null ? 0L : count;
- } catch (Exception ex) {
- logger.error("countSoredSet error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return 0L;
- }
- /**
- * 删除排序集合
- *
- * @param key
- * @param value
- * @return
- */
- public boolean delSortedSet(String key, String value) {
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- long count = shardedJedis.zrem(key, value);
- return count > 0;
- } catch (Exception ex) {
- logger.error("delSortedSet error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return false;
- }
- /**
- * 获得排序集合
- *
- * @param key
- * @param startRange
- * @param endRange
- * @param orderByDesc
- * @return
- */
- public Set<String> getSoredSetByRange(String key, int startRange, int endRange, boolean orderByDesc) {
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- if (orderByDesc) {
- return shardedJedis.zrevrange(key, startRange, endRange);
- } else {
- return shardedJedis.zrange(key, startRange, endRange);
- }
- } catch (Exception ex) {
- logger.error("getSoredSetByRange error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return null;
- }
- /**
- * 获得排序打分
- *
- * @param key
- * @return
- */
- public Double getScore(String key, String member) {
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- return shardedJedis.zscore(key, member);
- } catch (Exception ex) {
- logger.error("getSoredSet error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return null;
- }
- public boolean set(String key, String value, int second) {
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- shardedJedis.setex(key, second, value);
- return true;
- } catch (Exception ex) {
- logger.error("set error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return false;
- }
- public boolean set(String key, String value) {
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- shardedJedis.set(key, value);
- return true;
- } catch (Exception ex) {
- logger.error("set error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return false;
- }
- public String get(String key, String defaultValue) {
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- return shardedJedis.get(key) == null?defaultValue:shardedJedis.get(key);
- } catch (Exception ex) {
- logger.error("get error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return defaultValue;
- }
- public boolean del(String key) {
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- shardedJedis.del(key);
- return true;
- } catch (Exception ex) {
- logger.error("del error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return false;
- }
- public long incr(String key) {
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- return shardedJedis.incr(key);
- } catch (Exception ex) {
- logger.error("incr error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return 0;
- }
- public long decr(String key) {
- ShardedJedis shardedJedis = null;
- try {
- shardedJedis = shardedJedisPool.getResource();
- return shardedJedis.decr(key);
- } catch (Exception ex) {
- logger.error("incr error.", ex);
- returnBrokenResource(shardedJedis);
- } finally {
- returnResource(shardedJedis);
- }
- return 0;
- }
- private void returnBrokenResource(ShardedJedis shardedJedis) {
- try {
- shardedJedisPool.returnBrokenResource(shardedJedis);
- } catch (Exception e) {
- logger.error("returnBrokenResource error.", e);
- }
- }
- private void returnResource(ShardedJedis shardedJedis) {
- try {
- shardedJedisPool.returnResource(shardedJedis);
- } catch (Exception e) {
- logger.error("returnResource error.", e);
- }
- }
Redis客户端之Spring整合Jedis的更多相关文章
- Redis客户端之Spring整合Jedis,ShardedJedisPool集群配置
Jedis设计 Jedis作为推荐的java语言redis客户端,其抽象封装为三部分: 对象池设计:Pool,JedisPool,GenericObjectPool,BasePoolableObjec ...
- redis集群配置,spring整合jedis,缓存同步
前台的商品数据(图片等加载缓慢)查询,先从redis缓存查询数据. redis是一个nosql数据库,内存版数据库,读取速度11w/s.本身具有内存淘汰机制,是单线程服务器(分时操作系统),线程安全. ...
- SpringBoot开发二十-Redis入门以及Spring整合Redis
安装 Redis,熟悉 Redis 的命令以及整合Redis,在Spring 中使用Redis. 代码实现 Redis 内置了 16 个库,索引是 0-15 ,默认选择第 0 个 Redis 的常用命 ...
- 用BIO手写实现Redis客户端的探究(拒绝Jedis)
在Redis的使用过程中,大多数人都是使用现成的客户端,如Jedis,Redisson,Lettuce.因此本文研究用BIO的方式手写Redis客户端尝试,对遇到的问题进行探究及总结. Redis通讯 ...
- SpringBoot开发二十四-Redis入门以及Spring整合Redis
需求介绍 安装 Redis,熟悉 Redis 的命令以及整合Redis,在Spring 中使用Redis. 代码实现 Redis 内置了 16 个库,索引是 0-15 ,默认选择第 0 个 Redis ...
- spring整合jedis时所遇问题
@Test public void testSpringJedisPool(){ ApplicationContext ac = new ClassPathXmlApplicationContext( ...
- Redis客户端开发包:Jedis学习-高级应用
事务 Jedis中事务的写法是将redis操作写在事物代码块中,如下所示,multi与exec之间为具体的事务. jedis.watch (key1, key2, ...); Transaction ...
- Redis客户端开发包:Jedis学习-入门
添加Jedis依赖 我们可以使用以下三种方式来添加Jedis依赖. 1.下载jar文件 从http://search.maven.org/下载最近的jedis包和Apache Commons Pool ...
- Spring整合jedis 集群模式
引入jedis依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis< ...
随机推荐
- React生命周期和虚拟DOM
一.虚拟DOM 1.React并不直接操作DOM,React中的render方法,返回一个DOM描述,React能够将这个DOM描述与内存中的表现进行比较,然后以最快的方式更新浏览器 2.React实 ...
- com学习(一)GUID 和 接口
话说在 doc(Word) 复合文件中,已经解决了保存 xls(Excel) 数据的问题了.那么,接下来又要解决另一个问题:当 WORD 程序读取复合文件,遇到了 xls 数据的时候,它该如何启动 E ...
- python基础(set)补充
1.函数参数(引用) 函数的传参,传的是引用 def func(args): args.appand(123) li=[11,22,33] func(li) print(li) [11,22,33, ...
- 能在手机播放的Flash代码
有些使用Flash的广告图片变换代码在手机不支持,在网上搜到了一个解决的方法: Flash嵌入处: <iframe style="width:474px;height:276px; b ...
- Web 站点的水平扩展和垂直扩展 (译文)
当一个开发人员提升计算机系统负荷时,通常会考虑两种方式垂直扩展和水平扩展.选 用哪种策略主要依赖于要解决的问题以及系统资源的限制.在这篇文章中我们将讲述这两种策略并讨论每种策越的优缺点.如果你已经有一 ...
- 学习总结 vs软件简单了解
using System;using System.Collections.Generic;using System.Linq;using System.Text;//调用命名空间 using Sys ...
- Android基础总结(9)——网络技术
这里主要讲的是如何在手机端使用HTTP协议和服务器端进行网络交互,并对服务器返回的数据进行解析,这也是Android最常使用到的网络技术了. 1.WebView的用法 Android提供的WebVie ...
- android 存储概念
首先,我们得知道android中有内部存储(与内存要区分开来)和外部存储. 内部存储容量较小,尽量少使用,sqlite及SharePreference的数据均在内部存储当中. Log.i(" ...
- Windows phone 8 学习笔记(2) 数据文件操作(转)
Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方.本节主要讲解它们的用法以及相关限制性.另外包括本地数据库的使用方式 ...
- javaSE第一天
第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5)语言 2 (6)人机交 ...