当前位置: 首页 > news >正文

(自用)Java学习-5.13(Redis,OSS)

核心功能实现

1. 类别导航动态加载

  • 前端实现

    // 加载一级分类
    $.ajax({url: '/category/showFirstMenu?pid=0',success: function(resp) {resp.forEach(item => {$(".index-menu").append(`<li onmouseover="showSecondMenu(${item.id})">${item.name}</li>`);});}
    });// 加载二级分类
    function showSecondMenu(pid) {$.ajax({url: `/category/showFirstMenu?pid=${pid}`,success: function(resp) {$(".second-menu").empty();resp.forEach(item => {$(".second-menu").append(`<li>${item.name}</li>`);});}});
    }

  • 后端实现

    @RestController
    @RequestMapping("/category")
    public class CategoryController {@GetMapping("/showFirstMenu")public List<Category> showFirstMenu(Integer pid) {return categoryService.getByParentId(pid);}
    }

2. Banner图轮播与缓存优化

  • Redis集成

    @RequestMapping("/showBanner")
    public List<String> showBanner() {// 检查缓存if (redisTemplate.hasKey("banner")) {return redisTemplate.opsForList().range("banner", 0, -1);} else {// 数据库查询并缓存List<Banner> banners = bannerService.getAll();List<String> urls = banners.stream().map(Banner::getImgUrl).collect(Collectors.toList());redisTemplate.opsForList().rightPushAll("banner", urls);return urls;}
    }

3. 商品展示模块

  • 热门与新品查询

    <!-- 热门商品 -->
    <select id="getHotProduct" resultType="Product">SELECT * FROM t_product ORDER BY sales DESC LIMIT 4
    </select><!-- 最新商品 -->
    <select id="getNewProduct" resultType="Product">SELECT * FROM t_product ORDER BY create_time DESC LIMIT 4
    </select>

二、云存储解决方案(阿里云OSS)

1. 配置与上传流程

  1. 依赖引入

    <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version>
    </dependency>

  2. 文件上传接口

    @PostMapping("/upload")
    public String upload(@RequestParam("file") MultipartFile file) {String endpoint = "oss-cn-hangzhou.aliyuncs.com";OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);ossClient.putObject("your-bucket", "folder/" + file.getOriginalFilename(), file.getInputStream());return "https://your-bucket.oss-cn-hangzhou.aliyuncs.com/folder/" + file.getOriginalFilename();
    }

2. 前端集成

<!-- 文件上传表单 -->
<form action="/upload" method="post" enctype="multipart/form-data"><input type="file" name="file"><button type="submit">上传</button>
</form><!-- 图片展示 -->
<img src="https://your-bucket.oss-cn-hangzhou.aliyuncs.com/folder/image.jpg">

三、性能优化策略

1. 缓存机制对比

场景技术选型优势
高频静态数据Redis毫秒级响应,支持数据持久化
动态查询结果MyBatis二级缓存减少数据库压力,自动失效机制

2. SQL优化技巧

  • 索引优化:为parent_idsalescreate_time字段添加索引

  • 分页查询:使用LIMIT offset, size避免全表扫描

  • 避免SELECT *:明确指定查询字段

四、常见问题解决方案

1. 跨域问题

@Configuration
public class CorsConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "POST");}
}

2. 图片上传失败排查

  1. OSS配置检查

    • Endpoint是否正确

    • Bucket权限是否为公共读

    • AccessKey是否有效

  2. 代码调试

    try {ossClient.putObject(...);
    } catch (OSSException e) {log.error("OSS错误: {}", e.getErrorMessage());
    } finally {ossClient.shutdown(); // 确保关闭连接
    }

五、项目部署建议

1. 环境分离

环境数据库RedisOSS Bucket
开发本地MySQL本地Docker实例测试Bucket
生产阿里云RDS云数据库Redis生产Bucket

2. 监控与日志

  • Spring Boot Actuator:集成健康检查与性能监控

  • Logback+ELK:实现分布式日志收集与分析


文章转载自:

http://smCcieXT.gqbtw.cn
http://5d8MxOBt.gqbtw.cn
http://Xv5SNgde.gqbtw.cn
http://cw1AFuya.gqbtw.cn
http://NERV75YI.gqbtw.cn
http://AjzO5lSg.gqbtw.cn
http://WCN1oF7r.gqbtw.cn
http://Q5mx1aK5.gqbtw.cn
http://PxrMvfLe.gqbtw.cn
http://rnIv7BVq.gqbtw.cn
http://kr0zQSbO.gqbtw.cn
http://tVXgzxRf.gqbtw.cn
http://vanrczux.gqbtw.cn
http://Xunp8jyF.gqbtw.cn
http://uLN3D54L.gqbtw.cn
http://BRH7c8qs.gqbtw.cn
http://qyyGvqRe.gqbtw.cn
http://3wl5bT5b.gqbtw.cn
http://buyj7kcD.gqbtw.cn
http://BNiBO8B3.gqbtw.cn
http://tsY3Oil2.gqbtw.cn
http://jBkpM14l.gqbtw.cn
http://fz0M0aIX.gqbtw.cn
http://cgfOc7Vr.gqbtw.cn
http://lTDhXRvd.gqbtw.cn
http://zyPk6Ql5.gqbtw.cn
http://X02mZnFB.gqbtw.cn
http://GW0pmE3F.gqbtw.cn
http://0ZarhuPK.gqbtw.cn
http://Qc9o1gLk.gqbtw.cn
http://www.dtcms.com/a/214855.html

相关文章:

  • 【笔记】解决启动Anaconda Toolbox报错ModuleNotFoundError: No module named ‘pysqlite2‘
  • 2025 年开源 LLM 发展趋势细致解读
  • 《算法笔记》13.2小节——专题扩展->树状数组(BIT) 问题 C: Count Inversions
  • uv ——新的python包管理工具
  • uv使用教程
  • 组态王KingSCADA3.53连接S7-1200PLC实战教程
  • NSSCTF-[安洵杯 2018]boooooom
  • 水墨色调中国风PPT模版分享
  • 大数据学习(122)-分区与分桶表
  • Python - 文件部分
  • FFmpeg 时间戳回绕处理:保障流媒体时间连续性的核心机制
  • rStar-Math:蒙特卡洛搜索增强 LLM 逻辑推理能力
  • 第5章 软件工程基础知识
  • 测评机构如何通过漏扫保障软件安全?扫描范围与局限解析
  • Spring AI 之多模态
  • spring实战第四版01
  • YOLOv11助力地铁机场安检!!!一键识别刀具
  • 机器学习与深度学习5:pytorch前馈神经网络FNN实现手写数字识别
  • Python Day34
  • 时代变了,我选择ApiFox替代Postman
  • Nacos集群
  • Wave Terminal + Cpolar:SSH远程访问的跨平台实战+内网穿透配置全解析
  • 熔盐核裂变反应堆:第四代核能技术的重要突破
  • AI时代新词-AI芯片(AI - Specific Chip)
  • 测绘技术重塑低空经济格局
  • 菜鸟之路Day34一一Mybatis-基础操作
  • 泪滴攻击详解
  • 解决 docker pull镜像失败
  • java虚拟机
  • 网络原理与 TCP/IP 协议详解