7、maven(idea自己带或者手动下载安装配置)
8、git,手动下载安装
上边步骤比较简略,有些配置都省略了,比如maven源更改(国外较慢),idea配置自己下载maven,git的https和ssh下载配置等,不过都是常用开发工具,安装一下也不费劲,也当是练手了,不会就四处搜搜。
有个早年的老博客,可以看看,参考一下
程序开发流程
1、初始化mysql数据库
本地安装好mysql后内容推荐算法java实战,创建数据库,前言里边上一篇链接构建数据表,再执行程序。下面按照从上到下,()到()依次执行。
if name == '__main__':
# create_movie()
# create_genre()
# create_movie_genre()
# create_user_movie_score()
# create_user()
2、java web开发准备
下面都是经验之谈,做了一些项目后,一般就是走这么个流程,需要copy的内容可以直接从该项目copy过去。
(1)创建程序,创建过程中选择mysql、,一路next。
(2)copy一个pom.xml内java包内容,主要是mysql和maven。
(3)copy一个.文件内容,这个启动需要加载的参数,这里主要是数据库连接池。
(4)构建项目目录结构
创建出来项目后,pom.xml和.自动生成,java下面的文件夹需要自己创建,这里用的比较常用的目录结构。
:与前端交互层,去调用
:业务代码层,调用dao
dao:数据库调用层,具体sql逻辑在
:实体,与mysql表结构一致
: sql查询
dto:程序中数据转换,适配不同参数结构
vo:返回给前端数据结构
utils:常用工具内容推荐算法java实战 从0推荐系统工程实战6——java online模块程序开发,如json处理、日期转换等
(5)写一个hello world程序,前端请求、结束参数、调用对应、调用dto、执行中sql、返回数据到前端。
3、业务开发
根据产品设计、数据库设计和接口设计,完成业务开发,以影片详情和相似影片列表为例。
(1)先看产品设计,从产品设计截图如下
(2)看接口设计,需要接收和返回的参数(只截图部分)
(3)接口层业务函数设计
注意:
第一步接口开发设计内容推荐算法java实战,根据产品设计和接口设计只写出各个接口定义,写好注释。
第二步是代码逻辑设计,这里以movie接口为例。可以应用流程图画出代码流程。如果觉得麻烦或者逻辑比较简单,可以用注释的方式在movie函数中写出代码业务逻辑,即线面注释部分文字内容1~5。
以上过程只需要写出接口定义代码,其它业务代码一行都没有。
/**
* @param movieId 电影id
* @return 影片详情和相似影片别列表
*/
@RequestMapping(value = "/movie", method = RequestMethod.GET)
public ResponseResult movie(Integer movieId) {
MovieVo result = new MovieVo();
// 1.根据movieId拿到影片详情,mysql
Movie movie = movieService.getMovie(movieId);
BeanUtils.copyProperties(movie, result);
// 2.获取给该影片打分最高的几个用户,mysql
List users = userService.getTopScoreUser(movieId);
result.setUsers(users);
// 3.获取影片所属类型,mysql
List genres = genreService.getGenresByMovie(movieId);
result.setGenres(genres);
// 4.相似影片列表计算,得到列表内各影片id todo 未实现内容
List movieIds = recService.similarMovies(movieId);
// 5.相似影片根据id,到mysql获取详情
List movies = movieService.getList(movieIds);
result.setRelatedMovies(movies);
return ResponseResult.ok(result);
(4)填充代码,实现1~5注释内容,写、、dao、、
注意:这部分在创建完mysql表之后,可以直接利用maven插件生成到各层基础代码,这里为了练习都是手写。
由于放弃了注释4这个步骤,即todo标识部分,其它功能全部是直接读取mysql数据库,所以大部分代码在中写sql语言。
代码业务流程根据mysql表结构,表结构是根据产品设计构建,形成产品设计、mysql表结构设计、代码开发。产品设计和数据结构设计其实是互相作用效果,不能因为产品设计的过于复杂,导致表结构复杂,从而加大代码开发难度。产品和程序平衡部分太难,目前我自己也是瞎蒙。
(5)根据接口设计,利用发送请求,检查返回结果。
(6)开发过程中发现接口设计不完善或错误部分,需要对接口文档进行修改,实际工程需要通知前端同事。
(7)按照以上步骤完成其它接口部分。
总结
由于没有做召回和排序模型,这部分就是一个单纯的java web服务程序,换成或go也是一样一样的。
这部分也算是边学习边开发,又把放弃了3年的java开发回顾了一翻,当然只是做了一个基础版本,异常、日志等等都没有做。
接下来就要进入召回模块开发了,需要一大波调研和学习,需要用到去做成服务,可能是 ,也可能是做个向量求相似服务?谁知道呢。
持续更新中........