package com.luochen.web.controllers;
import com.luochen.web.Dao.*;
import com.luochen.web.Dao.interf.*;
import com.luochen.web.register.utils.CodeUtils;
import com.luochen.web.register.utils.MailUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.swing.text.html.Option;
import java.math.BigInteger;
import java.util.*;
import static com.luochen.tools.RandomNums.getCurrentTimeStr;
import static com.luochen.tools.RandomNums.randomArray;
import static com.luochen.web.register.tools.registerKits.testUserAccount;
import static org.apache.hadoop.fs.FileSystem.LOG;
@SuppressWarnings("deprecation")
@Controller
@EnableAutoConfiguration
public class PagesController {
@Autowired
private UserAccountRepository userAccountRepository;
@Autowired
private ItemSimRepository itemSimRepository;
@Autowired
private UserCFRepository userCFRepository;
@RequestMapping("/test")
public String test()
{
return "pages/readMore";
}
@RequestMapping("pages/getNewsContent")
@ResponseBody
public ajaxNews getNewsContent(@RequestParam("id")String id, HttpSession session)
{
ItemSim temp=itemSimRepository.findNews(Long.valueOf(id));
ajaxNews news=new ajaxNews();
news.setTitle(temp.getArticleTitle());
news.setContent(temp.getArticleContent());
// System.out.println(session.getAttribute("usrId")+","+id+","+"1"+","+getCurrentTimeStr());
LOG.fatal(session.getAttribute("usrId")+","+id+","+"1"+","+getCurrentTimeStr());
return news;
}
@RequestMapping("/pages")
public String readMore(@RequestParam("id")String id, Model model)
{
model.addAttribute("id",id);
return "pages/readMore";
}
@RequestMapping("/index")
public String hello(HttpSession session)
{
session.setAttribute("channel","recommend");
return "pages/index";
}
@ResponseBody
@RequestMapping("pages/getNews")
public List<ajaxNews> getNews(@RequestParam("id")String id,HttpSession session) {
System.out.println(id);
List<ajaxNews> ajaxNewsList=new ArrayList();
Long newsNum = itemSimRepository.findCount();
if(id.isEmpty()||session.getAttribute("visitedFlag")=="visited")
{
//Long newsNum = itemSimRepository.findCount();
int randomNewsId[] = randomArray(0, newsNum.intValue(), 6);
for (int i = 0; i < 6; ++i) {
System.out.println(randomNewsId[i]);
ItemSim temp = itemSimRepository.findNews((long) randomNewsId[i]);
// ItemSim temp = targetNews.get();
ajaxNews temp1 = new ajaxNews();
temp1.setTitle(temp.getArticleTitle());
// temp1.setContent(temp.getContent().substring(0, 80) + "....");
temp1.setUrl("/pages?id=" + randomNewsId[i]);
ajaxNewsList.add(temp1);
}
return ajaxNewsList;
}
else
{
session.setAttribute("visitedFlag","visited");
List<Long> userId=new ArrayList<>();
Optional<UserCF> userCF=userCFRepository.findById(Long.parseLong(id));
UserCF temp=userCF.get();
String recommendStr=temp.getRecommendStr();
String recommendIds[]= recommendStr.split(",");
for (int i=0;i<recommendIds.length;++i)
{
Optional<ItemSim> targetNews=itemSimRepository.findById(Long.parseLong(recommendIds[i]));
ItemSim tempItemSim=targetNews.get();
ajaxNews temp1=new ajaxNews();
temp1.setTitle(tempItemSim.getArticleTitle());
temp1.setUrl("/pages?id=" + recommendIds[i]);
ajaxNewsList.add(temp1);
}
if(recommendIds.length<6)
{
int randomNewsId[] = randomArray(0, newsNum.intValue(), 6-recommendIds.length);
for (int i = 0; i < randomNewsId.length; ++i) {
System.out.println(randomNewsId[i]);
Optional<ItemSim> targetNews = itemSimRepository.findById((long) randomNewsId[i]);
ItemSim temp2 = targetNews.get();
ajaxNews temp1 = new ajaxNews();
temp1.setTitle(temp2.getArticleTitle());
// temp1.setContent(temp.getContent().substring(0, 80) + "....");
temp1.setUrl("/pages?id=" + randomNewsId[i]);
ajaxNewsList.add(temp1);
}
}
return ajaxNewsList;
}
}
@RequestMapping("Login")
public String Login()
{
return "pages/login";
}
@RequestMapping("register")
public String Register()
{
return "pages/register";
}
@RequestMapping("about")
public String About(){return "pages/about";}
@RequestMapping("dealRegister")
public String dealRegister(@RequestParam("username")String username, @RequestParam("password")String password, @RequestParam("email")String email,HttpSession session)
{
if(testUserAccount(username,password,email))
{
if(userAccountRepository.findByUsername(username,email).isEmpty())
{
int id;
try {
id = Integer.parseInt(userAccountRepository.findLastAccount())+1;
}catch (Exception e)
{
id=1;
}
try {
String code = CodeUtils.generateUniqueCode() + CodeUtils.generateUniqueCode();
new Thread(new MailUtils(email,code)).start();
userAccount userAccount = new userAccount();
userAccount.setId(id);
userAccount.setUsername(username);
userAccount.setPassword(password);
userAccount.setEmail(email);
userAccount.setState(0);
userAccount.setCode(code);
userAccountRepository.save(userAccount);
session.setAttribute("msg","激活邮件成功发送,请前往邮箱激活!");
}catch (Exception e)
{
e.printStackTrace();
session.setAttribute("msg","邮件发送失败,请重新操作!");
}
return "redirect:/success.html";
}
else
{
session.setAttribute("msg","该用户名或邮箱已被注册,请重新输入!");
return "redirect:/register.html";
}
}
else
{
return "pages/error";
}
}
@RequestMapping("activateAccount")
public String activateAccount(@RequestParam("code")String code, HttpServletRequest request)
{
List<userAccount> opt=userAccountRepository.findByCode(code);
if(!opt.isEmpty())
{
userAccount userAccount=opt.get(0);
userAccount.setState(1);
userAccountRepository.save(userAccount);
request.setAttribute("msg","激活成功,请前往登录");
request.setAttribute("url","http://localhost:8080/Login");
}
else
{
request.setAttribute("msg","激活码有误!");
}
return "pages/activateResult";
}
@PostMapping(value = "dealLogin")
public String dealLogin(@RequestParam("name")String name, @RequestParam("password")String password, HttpSession session)
{
try {
List<userAccount> userAccList = userAccountRep
没有合适的资源?快使用搜索试试~ 我知道了~
基于Spark的新闻推荐系统,包含爬虫项目、web网站以及spark推荐系统.zip
共1790个文件
js:595个
pyc:318个
py:315个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 179 浏览量
2023-07-31
15:31:03
上传
评论
收藏 25.44MB ZIP 举报
温馨提示
该资源真实可靠,代码都经测试过,能跑通。 快速:Apache Spark以内存计算为核心。 通用 :一站式解决各个问题,ADHOC SQL查询,流计算,数据挖掘,图计算完整的生态圈。只要掌握Spark,就能够为大多数的企业的大数据应用场景提供明显的加速。存储层:HDFS作为底层存储,Hive作为数据仓库 (Hive Metastore:Hive管理数据的schema) 离线数据处理:SparkSQL (做数据查询引擎<===> 数据ETL) 实时数据处理:Kafka + Spark Streaming 数据应用层:MLlib 产生一个模型 als算法 数据展示和对接:Zeppelin 选用考量: HDFS不管是在存储的性能,稳定性 吞吐量 都是在主流文件系统中很占有优势的 如果感觉HDFS存储还是比较慢,可以采用SSD硬盘等方案。存储模块:搭建和配置HDFS分布式存储系统,并Hbase和MySQL作为备用方案。 ETL模块:加载原始数据,清洗,加工,为模型训练模块 和 推荐模块 准备所需的各种数据。 模型训练模块:负责产生模型,以及寻找最佳的模型。 推荐模块:包含离线推荐和实时推荐,离线推荐负责把推荐结果存储到存储系统中实时推荐负责产生实时的消息队列,并且消费实时消息产生推荐结果,最后存储在存储模块中。 数据展示模块:负责展示项目中所用的数据。 数据流向:数据仓库怎么理解?两种东西,其一是IBM微软数据产品为代表的,其二是Hadoop+Hive+Apache Hive数据仓库软件有助于使用SQL读取,写入和管理驻留在分布式存储中的大型数据集。 可以将结构投影到已经存储的数据上。 提供了命令行工具和JDBC驱动程序以将用户连接到Hive。
资源推荐
资源详情
资源评论
收起资源包目录
基于Spark的新闻推荐系统,包含爬虫项目、web网站以及spark推荐系统.zip (1790个子文件)
caps.asp 1KB
CreateObject.asp 494B
tut1.asp 147B
test1.asp 88B
test.asp 73B
frowny.bmp 3KB
smiley.bmp 3KB
python.bmp 778B
zoo.cfg 1003B
scrapy.cfg 257B
PagesController.class 11KB
ItemSimilarity$.class 11KB
UserCF$.class 8KB
KafkaConsumer$.class 6KB
newsLog.class 6KB
UserRating.class 5KB
ItemSimilarity$$anonfun$main$1.class 5KB
ItemSimilarity$$typecreator1$1.class 3KB
MailUtils.class 3KB
ItemSimilarity$$typecreator2$1.class 3KB
ItemSimilarity$$anonfun$main$1$$anonfun$apply$mcVI$sp$1.class 3KB
UserCF$$anonfun$main$1.class 3KB
newsLog$.class 2KB
UserRating$.class 2KB
KafkaConsumer$$anonfun$main$1$$anonfun$apply$1.class 2KB
RecommendKits$.class 2KB
KafkaConsumer$$anonfun$main$1.class 2KB
KafkaConsumer$$anonfun$3.class 2KB
ItemSim.class 2KB
ItemSimilarity$$anonfun$4.class 2KB
KafkaConsumer$$anonfun$2.class 2KB
RecommendKits$$anonfun$splitWordToSeq$1.class 2KB
ItemSimilarity$$anonfun$1.class 2KB
ItemSimilarity$$anonfun$main$2.class 2KB
MyMvcConf$1.class 2KB
DemoApplication.class 2KB
userAccount.class 2KB
RandomNums.class 2KB
UserCF$$typecreator1$1.class 1KB
DBLocalUtils$.class 1KB
KafkaConsumer$$anonfun$4.class 1KB
registerKits.class 1KB
UserCF$$anonfun$1.class 1KB
user.class 1KB
ItemSimilarity$$anonfun$3.class 1KB
ItemSimilarity$$anonfun$2.class 1KB
KafkaConsumer$$anonfun$1.class 1KB
account.class 1KB
UserAccountRepository.class 1KB
DBLocalUtils.class 1KB
ItemSimRepository.class 995B
ajaxNews.class 964B
UserCF.class 954B
MyMvcConf.class 893B
RecommendKits.class 880B
MailUtils$1.class 880B
UserCF.class 848B
DemoApplicationTests.class 739B
ItemSimilarity.class 706B
KafkaConsumer.class 699B
CodeUtils.class 612B
UserCFRepository.class 337B
log4j-flume-kafka.conf 1KB
stylesheet.css 19KB
stylesheet.css 19KB
font-awesome.min.css 17KB
font-awesome.min.css 17KB
style.css 13KB
style.css 13KB
style.css 11KB
style.css 11KB
style.css 9KB
style.css 9KB
style1.css 9KB
style1.css 9KB
style2.css 8KB
style2.css 8KB
style.css 7KB
style.css 7KB
style.css 7KB
style.css 7KB
screen.css 6KB
screen.css 6KB
milk.css 5KB
milk.css 5KB
style-narrower.css 4KB
style-narrower.css 4KB
skel.css 4KB
skel.css 4KB
ui.css 2KB
ui.css 2KB
style.css 2KB
style.css 2KB
cmxform.css 1014B
cmxform.css 1014B
cmxformTemplate.css 993B
cmxformTemplate.css 993B
reset.css 790B
reset.css 790B
core.css 683B
共 1790 条
- 1
- 2
- 3
- 4
- 5
- 6
- 18
资源评论
- weixin_553734182023-12-01资源内容详细全面,与描述一致,对我很有用,有一定的使用价值。
c++服务器开发
- 粉丝: 3176
- 资源: 4461
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- GVC-全球价值链参与地位指数,基于ICIO表,(Wang等 2017a)计算方法
- 易语言ADS指纹浏览器管理工具
- 易语言奇易模块5.3.6
- cad定制家具平面图工具-(FG)门板覆盖柜体
- asp.net 原生js代码及HTML实现多文件分片上传功能(自定义上传文件大小、文件上传类型)
- whl@pip install pyaudio ERROR: Failed building wheel for pyaudio
- Constantsfd密钥和权限集合.kt
- 基于Java的财务报销管理系统后端开发源码
- 基于Python核心技术的cola项目设计源码介绍
- 基于Python及多语言集成的TSDT软件过程改进设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功