redis的基本操作

1.配置文件 (redis.properties)

#redis的基本设置
redis.host=192.168.246.128
redis.post=6379
redis.timeout = 0
redis.maxIdle=300

2.整合redis

package com.zy.redis;


import java.util.ArrayList;
import java.util.List;


import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.annotation.Scope;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;


import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedisPool;


@Configuration
@ComponentScan("com.zy.redis")
@PropertySource("classpath:/redis.properties")
public class ConfigApp {

@Value("${redis.host}")
private   String host;
@Value("${redis.maxIdle}")
private  int maxIdle;
@Value("${redis.post}")
private   int post;
@Value("${redis.timeout}")
private int timeout;

@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigure(){
return new PropertySourcesPlaceholderConfigurer();
}

//JedisPoolConfig的配置
@Bean
public  JedisPoolConfig jedisPoolConfig(){
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setTestOnBorrow(true);
jedisPoolConfig.setTestOnReturn(true);
jedisPoolConfig.setMaxWaitMillis(1000);
return jedisPoolConfig;
}

@Bean 
public List<JedisShardInfo> jedisShardInfo(){
List<JedisShardInfo> jedisShardInfos = new ArrayList<JedisShardInfo>();
JedisShardInfo jedisShardInfo = new JedisShardInfo(
host,post,timeout );
jedisShardInfos.add(jedisShardInfo);
return jedisShardInfos;
}
//redis连接池的设置
@Bean
@Scope("singleton")
public  ShardedJedisPool shardedJedisPool(){
ShardedJedisPool shardedJedisPool = new ShardedJedisPool(jedisPoolConfig(),jedisShardInfo());
return shardedJedisPool;
}

}

3.redis 公共方法的封装

package com.zy.redis;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;


@Service
public class RedisServiceImpl  {
private static final Logger log = LoggerFactory.getLogger(RedisServiceImpl.class);

@Autowired
private ShardedJedisPool shardedJedisPool;
/**
* 获取ShardedJedis实例
* @return
*/
public ShardedJedis  getRedisClient(){
try {
ShardedJedis  shardJedis  = shardedJedisPool.getResource();
return shardJedis;
} catch (Exception e) {
log.error("getRedisClent error", e);
}
return null;
}

public void returnResource(ShardedJedis shardedJedis) {
        shardedJedisPool.returnResource(shardedJedis);
    }


    public void returnResource(ShardedJedis shardedJedis, boolean broken) {
        if (broken) {
            shardedJedisPool.returnBrokenResource(shardedJedis);
        } else {
            shardedJedisPool.returnResource(shardedJedis);
        }
    }


}

4.使用ShardedJedis封装相应的方法

package com.zy.redis;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


import redis.clients.jedis.ShardedJedis;
@Service
public class RedisClient {
private static final Logger log = LoggerFactory.getLogger(RedisClient.class);  
@Autowired  
    private RedisServiceImpl redisService;
public void disconnect() {  
         ShardedJedis shardedJedis = redisService.getRedisClient();  
         shardedJedis.disconnect();  
     } 
 
  /** 
      * 设置值 
      */  
     public String set(String key, String value) {  
         String result = null;  
   
         ShardedJedis shardedJedis = redisService.getRedisClient();  
         if (shardedJedis == null) {  
             return result;  
         }  
         boolean flag = false;  
         try {  
             result = shardedJedis.set(key, value);  
         } catch (Exception e) {  
             log.error(e.getMessage(), e);  
             flag = true;  
         } finally {  
             redisService.returnResource(shardedJedis, flag);  
         }  
         return result;  
     }  
     
     /**
      * 获取值
      */
     public String get(String key){
    String result = "";
    ShardedJedis shardedJedis = redisService.getRedisClient();
    if(shardedJedis==null){
    return null; 
    }
    Boolean flag = Boolean.FALSE;
     
    try {
result =  shardedJedis.get(key);
} catch (Exception e) {
log.error(e.getMessage(), e);  
            flag = true; 
}finally {  
            redisService.returnResource(shardedJedis, flag);  
        }  
return result;
     }
     /**
      * 设置在某段时间内失效  time表示为多少秒
      */
     public void exprire(String key,int time){
    ShardedJedis shardedJedis = redisService.getRedisClient();
    if(shardedJedis!=null){
    Boolean flag = Boolean.FALSE;
    try {
shardedJedis.expire(key, time);
} catch (Exception e) {
e.printStackTrace();
flag=Boolean.TRUE;
}finally{
redisService.returnResource(shardedJedis, flag); 
}
    }
     }
     
}


基于Swin Transformer与ASPP模块的图像分类系统设计与实现 本文介绍了一种结合Swin Transformer与空洞空间金字塔池化(ASPP)模块的高效图像分类系统。该系统通过融合Transformer的全局建模能力和ASPP的多尺度特征提取优势,显著提升了模型在复杂场景下的分类性能。 模型架构创新 系统核心采用Swin Transformer作为骨干网络,其层次化窗口注意力机制能高效捕获长距离依赖关系。在特征提取阶段,创新性地引入ASPP模块,通过并行空洞卷积(膨胀率6/12/18)和全局平均池化分支,实现多尺度上下文信息融合。ASPP输出经1x1卷积降维后与原始特征拼接,有效增强了模型对物体尺寸变化的鲁棒性。 训练优化策略 训练流程采用Adam优化器(学习率0.0001)和交叉熵损失函数,支持多GPU并行训练。系统实现了完整的评估指标体系,包括准确率、精确率、召回率、特异度和F1分数等6项指标,并通过动态曲线可视化模块实时监控训练过程。采用早停机制保存最佳模型,验证集准确率提升可达3.2%。 工程实现亮点 1. 模块化设计:分离数据加载、模型构建和训练流程,支持快速迭代 2. 自动化评估:每轮训练自动生成指标报告和可视化曲线 3. 设备自适应:智能检测CUDA可用性,无缝切换训练设备 4. 中文支持:优化可视化界面的中文显示与负号渲染 实验表明,该系统在224×224分辨率图像分类任务中,仅需2个epoch即可达到92%以上的验证准确率。ASPP模块的引入使小目标识别准确率提升15%,特别适用于医疗影像等需要细粒度分类的场景。未来可通过轻量化改造进一步优化推理速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值