news 2026/4/18 5:14:59

【图库分析|第十天】扩展空间图库分析功能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【图库分析|第十天】扩展空间图库分析功能

本部分内容主要来源于鱼皮智能协图云图库部分,并在笔者个人项目学习的基础上进行扩展衍生。由于项目开发文档已经足够详细,因此这里只记录要点。

这部分内容后端较为简单,主要是熟悉业务流程,开发思路,以及mybatisplus,stream流的使用(以后一定需要找个时间专门补补)。

方案设计

1、分析类需求的实现流程

对于分析类需求,实现流程几乎都是一致的,包括:

1)数据采集:从数据源(比如 MySQL 数据库或者大数据仓库)获取原始数据。要提前明确涉及的表和字段,必要时采用分页查询处理大数据量。

2)数据预处理:对数据进行清洗、加工和格式化,包括过滤无效数据(比如逻辑删除或审核未通过)、解析复杂字段(比如 JSON 格式的 tags),以及通过字段关联补充上下文信息。

3)数据计算:根据需求进行分组、聚合、排序等,从而计算关键指标,比如计算空间各分类图片的占用比例、用户上传图片的时间趋势。可以根据场景调整计算方案,比如对于大数据量的计算,可以采用 Spark 之类的大数据计算组件做离线计算;对于数据实时性要求较高的实时分析场景,可以用 Flink 做流式处理。

4)数据存储(可选):针对频繁查询的分析结果,可将结果数据存储为单独的表或缓存,减少重复计算,提高查询效率。

5)数据接口设计:为前端提供统一接口,从而支持查询和展示。需要考虑到数据量较大导致前端渲染卡顿的情况,可以按需精简返回的字符串、分页查询等。

6)数据可视化:通过图表直观展示分析结果,前端可以使用 Apache ECharts 等可视化库渲染。当然也可以让后端生成图表图片并返回,但这种实现方法的灵活度有限。

后续还可以根据用户的反馈持续优化分析逻辑、增加指标或改进性能。

具体业务流程为:设计reuqest——>设计vo——>serviceimpl实现——>接口编写

对于serviceimpl实现:校验合法性(包括是否为空,权限校验等)——>编写wrapper——>

进行查询——>stream流处理查询结果

在这个模块开发中,通过分析需求写注释再借助ai就显得至关重要了。

典型样例:空间图片分类分析

开发请求封装类。分类分析只需要传递空间范围相关参数,因此可以直接继承公共的SpaceAnalyzeRequest

@EqualsAndHashCode(callSuper = true) @Data public class SpaceCategoryAnalyzeRequest extends SpaceAnalyzeRequest { }

2)开发响应视图类。分类分析的结果需要返回图片分类、分类图片数量和分类图片总大小:

@Data @AllArgsConstructor @NoArgsConstructor public class SpaceCategoryAnalyzeResponse implements Serializable { private String category; private Long count; private Long totalSize; private static final long serialVersionUID = 1L; }

3)开发 Service 服务。按照分类分组查询图片表的数据,注意查询数据库时只获取需要的字段即可:

@Override public List<SpaceCategoryAnalyzeResponse> getSpaceCategoryAnalyze(SpaceCategoryAnalyzeRequest spaceCategoryAnalyzeRequest, User loginUser) { ThrowUtils.throwIf(spaceCategoryAnalyzeRequest == null, ErrorCode.PARAMS_ERROR); checkSpaceAnalyzeAuth(spaceCategoryAnalyzeRequest, loginUser); QueryWrapper<Picture> queryWrapper = new QueryWrapper<>(); fillAnalyzeQueryWrapper(spaceCategoryAnalyzeRequest, queryWrapper); queryWrapper.select("category AS category", "COUNT(*) AS count", "SUM(picSize) AS totalSize") .groupBy("category"); return pictureService.getBaseMapper().selectMaps(queryWrapper) .stream() .map(result -> { String category = result.get("category") != null ? result.get("category").toString() : "未分类"; Long count = ((Number) result.get("count")).longValue(); Long totalSize = ((Number) result.get("totalSize")).longValue(); return new SpaceCategoryAnalyzeResponse(category, count, totalSize); }) .collect(Collectors.toList()); }

💡 建议在编写具体的代码前,先编写示例 SQL 语句,并通过数据库查询客户端来验证。

4)开发接口:

@PostMapping("/category") public BaseResponse<List<SpaceCategoryAnalyzeResponse>> getSpaceCategoryAnalyze(@RequestBody SpaceCategoryAnalyzeRequest spaceCategoryAnalyzeRequest, HttpServletRequest request) { ThrowUtils.throwIf(spaceCategoryAnalyzeRequest == null, ErrorCode.PARAMS_ERROR); User loginUser = userService.getLoginUser(request); List<SpaceCategoryAnalyzeResponse> resultList = spaceAnalyzeService.getSpaceCategoryAnalyze(spaceCategoryAnalyzeRequest, loginUser); return ResultUtils.success(resultList); }

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 19:07:32

收藏!AI 大模型时代,Java 程序员的高薪转型之路(小白必看)

试想这样的全新编程场景&#xff1a;打开多个 Claude Code 对话窗口&#xff0c;为每个窗口赋予专属 “岗位职能”—— 一个专攻前端页面的快速编写&#xff0c;一个聚焦后端业务逻辑的开发实现&#xff0c;一个专注测试用例的设计与校验&#xff0c;还有一个专门解决编码过程中…

作者头像 李华
网站建设 2026/4/18 5:41:49

深度测评10个降AIGC平台 千笔AI帮你轻松降AI率

深度测评10个降AIGC平台 千笔AI帮你轻松降AI率 AI降重工具&#xff1a;让论文更自然&#xff0c;更安全 在当今学术写作中&#xff0c;越来越多的学生开始借助AI工具进行论文撰写。然而&#xff0c;随着各大高校对AIGC&#xff08;人工智能生成内容&#xff09;检测的重视&am…

作者头像 李华
网站建设 2026/4/18 0:59:41

基于MATLAB的二维医学图像分割方法的研究

基于MATLAB的二维医学图像分割方法的研究 第一章 绪论 二维医学图像分割是医学影像分析的核心环节&#xff0c;其目的是从CT、MRI、超声等影像中精准提取病灶、器官等目标区域&#xff0c;为疾病诊断、手术规划、疗效评估提供数据支撑。传统手工分割方式依赖医师经验&#xf…

作者头像 李华
网站建设 2026/4/18 5:40:31

【Linux命令大全】008.磁盘维护之mkisofs命令(实操篇)

【Linux命令大全】008.磁盘维护之mkisofs命令&#xff08;实操篇&#xff09; ✨ 本文为Linux系统磁盘维护命令的全面汇总与深度优化&#xff0c;结合图标、结构化排版与实用技巧&#xff0c;专为高级用户和系统管理员打造。 (关注不迷路哈&#xff01;&#xff01;&#xff01…

作者头像 李华
网站建设 2026/4/17 18:21:46

双非背景如何逆袭腾讯T8 AI产品经理offer?大模型求职实战经验全分享,建议收藏!

文章讲述了双非背景的数据产品经理如何通过针对性辅导获得腾讯T8 AI产品经理offer的案例。学员面临学历硬伤、认知断层和表达误区三大问题&#xff0c;通过项目镀金、方法论迁移和话术洗牌等策略提升竞争力。面试过程中需深入理解大模型技术、AI产品全生命周期管理及腾讯云智能…

作者头像 李华