【springboot+python】 尝试springboot调用python的demo

只是一个尝试demo

python代码

import sys


def detect(path):
    print("python running:")
    return "python result:"+path


if __name__ == '__main__':
# 参数从argv的第二个元素开始,第一个元素是运行的程序名
    path = sys.argv[1]
    print(detect(path))

springboot的controller

@RestController
public class DetectController {

    @GetMapping
    public void  detect(HttpServletRequest request){
        String path = request.getAttribute("path").toString();

        try {
            // 一维数组,第二个参数是文件的路径,后面的是python代码的参数
            // 我猜是通过命令行指令?
            String[] args = new String[]{"python","D:\\pycharm_project\\test\\lungDetect\\detect.py",path};
            // 执行py文件
            Process process = Runtime.getRuntime().exec(args);
            // 获取输出的结果(打印在控制台的字符?)
            BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line = in.readLine();
            while(line!=null){
                // 显示结果
                System.out.println("springboot执行python结果:"+line);
                line = in.readLine();
            }
            in.close();
            process.waitFor();
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }


        System.out.println("controller任务已完成");
    }

}

springboot的测试用例

@SpringBootTest
class DetectControllerTest {
    DetectController detectController;


    @Autowired
    public void setDetectController(DetectController detectController) {
        this.detectController = detectController;
    }

    @Test
    void detect() {
        HttpServletRequest request = new MockHttpServletRequest();
        request.setAttribute("path","www.heguchangan.xyz");
        detectController.detect(request);
    }
}

结果

在这里插入图片描述

原理

猜想是java通过使用命令行执行执行python xxx.py,来执行python文件,然后将打印出来的结果读取到io中在打印出来。具体原理待学习。

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
很抱歉,我作为语言模型并不能提供完整的代码实现。但是,我可以给您一些思路和参考资料。 协同过滤推荐算法是推荐系统中比较常见的一种算法。该算法主要是通过分析用户历史行为以及其他用户的行为,来预测用户可能会喜欢的物品并进行推荐。在实现过程中,可以使用Spring Boot框架和MyBatis框架来搭建后端服务,并结合推荐算法实现面膜的协同推荐。 具体实现步骤如下: 1. 数据库设计 首先需要设计数据库,包括用户表、面膜表、评分表等。评分表是协同过滤推荐算法的关键,需要记录用户对面膜的评分信息。评分信息可以是1~5的整数,也可以是0~1的浮点数,具体取决于实际需求。 2. 数据收集 为了实现协同过滤推荐算法,需要收集用户对面膜的评分信息。可以在用户购买面膜时,要求用户对面膜进行评分。评分信息存储在评分表中。 3. 算法实现 协同过滤推荐算法主要分为基于用户的协同过滤和基于物品的协同过滤。在这里,我们选择基于物品的协同过滤算法实现面膜的协同推荐。 具体实现步骤如下: (1)计算物品相似度 通过计算物品之间的相似度,来找出与用户已评分的物品相似的物品。可以使用余弦相似度或皮尔逊相关系数等方法来计算物品之间的相似度。 (2)预测用户对未评分物品的评分 根据用户评分过的物品和物品之间的相似度,预测用户对未评分的物品的评分。可以使用加权平均值等方法来预测用户对未评分物品的评分。 (3)推荐物品 根据预测的评分,推荐给用户评分较高的物品。 4. 接口实现 将协同过滤推荐算法封装成接口,供前端调用。可以使用Spring Boot框架和MyBatis框架来实现接口。 参考资料: 1.《推荐系统实践》 2.《Python机器学习基础教程》 3.https://github.com/llhthinker/springboot-mybatis-demo
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值