一、概述

项目的后端技术栈为Java、SpringBoot、MybatisPlus、爬虫Jsoup、HttpClient、Maven项目构建。

各软件版本分别如下:

软件及环境 版本号
操作系统 Windows10&macOS
开发工具 IDEA2019.3
数据库工具 Navicat Premium12.0
MySQL 5.7
JDK 1.8
SpringBoot 2.1.8.RELEASE
Maven 3.6.0
部署服务器 CentOS7.2
httpclient 4.5.8
Jsoup 1.12.1
fastjson 1.2.54
lombok 1.18.10
mybatis-plus 3.2.0
druid 1.1.12
mysql-connector-java 5.1.48
maven插件 3.1.0&3.8.1

二、SpringBoot项目的配置文件

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.anymk</groupId><artifactId>parent-boot-vue</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>csdn-reader</artifactId><properties><java.version>1.8</java.version><spring.boot.version>2.1.8.RELEASE</spring.boot.version><maven.resource.version>3.1.0</maven.resource.version><maven.clean.version>3.1.0</maven.clean.version><maven.compiler.version>3.8.1</maven.compiler.version><java.source.version>1.8</java.source.version><java.target.version>1.8</java.target.version><file.encoding>UTF-8</file.encoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.8</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.54</version></dependency><!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --><dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.12.1</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.10</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.48</version></dependency><!-- database --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.2.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.12</version></dependency></dependencies><build><finalName>csdn</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring.boot.version}</version><!--解决打包后,执行java -jar 命令,找不到主清单属性--><executions><execution><phase>package</phase><goals><goal>repackage</goal></goals></execution></executions></plugin><!--clean插件--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-clean-plugin</artifactId><version>${maven.clean.version}</version><configuration><filesets><fileset><directory>src/main/resources/static</directory></fileset><fileset><directory>src/main/resources/templates</directory></fileset></filesets></configuration></plugin><!--资源插件,主要为了从前端项目里复制打包好的文件到springboot项目--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>${maven.resource.version}</version><executions><execution><id>copy static</id><phase>generate-resources</phase><goals><goal>copy-resources</goal></goals><configuration><outputDirectory>src/main/resources/static</outputDirectory><overwrite>true</overwrite><resources><resource><!--因为vue-cli打包的目录在项目的根目录,所以从这里复制--><directory>${project.parent.basedir}/construction-data/dist</directory><includes><include>css/</include><include>img/</include><include>js/</include><include>favicon.ico</include><include>index.html</include></includes></resource></resources></configuration></execution><execution><id>copy template</id><phase>generate-resources</phase><goals><goal>copy-resources</goal></goals><configuration><outputDirectory>src/main/resources/templates</outputDirectory><overwrite>true</overwrite><resources><resource><!--因为vue-cli打包的目录在项目的根目录,所以从这里复制--><directory>${project.parent.basedir}/construction-data/dist</directory><includes><include>index.html</include></includes></resource></resources></configuration></execution></executions></plugin></plugins></build></project>

注意,这里我们给这个工程提供了一个父工程,父工程主要的目的是为了让这个前后端分离的项目最终能打包成一个Jar包去部署,提高运维效率,具体操作见:如何将SpringBoot+Vue前后端分离项目一次打包为一个Jar包运行?

application.yml

该文件位于resource目录下,需要大家修改的地方有:项目运行的端口号port,数据库的连接信息,其他都不用改

server:#端口号port: 8888
spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/csdnreader?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=falseusername: rootpassword: rootdruid:initialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1testWhileIdle: truetestOnBorrow: truetestOnReturn: falsepoolPreparedStatements: truemaxPoolPreparedStatementPerConnectionSize: 20filters: stat,wallconnectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000stat-view-servlet:allow: 127.0.0.1aop:proxy-target-class: truemessages:encoding: utf-8jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8#mybatis plus 设置
mybatis:type-aliases-package: com.csdn.reader.entitymapper-locations: classpath*:mapper/*/*.xmlconfiguration:jdbc-type-for-null: nullglobal-config:# 关闭 mybatis-plus的 bannerbanner: false

三、数据库脚本

201个博主的投票信息会每五分钟去投票网站爬取一次,爬取后写到数据库以便于后续的数据分析,特提供数据库脚本如下:

/*Navicat Premium Data TransferSource Server         : localhostSource Server Type    : MySQLSource Server Version : 50553Source Host           : localhost:3306Source Schema         : csdnreaderTarget Server Type    : MySQLTarget Server Version : 50553File Encoding         : 65001Date: 21/01/2020 15:53:35
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for t_csdn_topn
-- ----------------------------
DROP TABLE IF EXISTS `t_csdn_topn`;
CREATE TABLE `t_csdn_topn`  (`id` int(11) NOT NULL AUTO_INCREMENT,`ranking` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '排名',`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名字',`nowVotes` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '票数',`createDate` datetime NULL DEFAULT NULL COMMENT '采集时间',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 315973 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;SET FOREIGN_KEY_CHECKS = 1;

四、目录结构及启动类

采用后端标准的三层模型进行开发

目录结构如下

ReaderApplication启动类

package com.csdn.reader;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@SpringBootApplication
@EnableScheduling//开启定时任务
@MapperScan("com.csdn.reader.dao")
public class ReaderApplication {public static void main(String[] args) {SpringApplication.run(ReaderApplication.class, args);}}

注解详解:

@EnableScheduling//开启定时任务,去定时爬取投票网站数据
@MapperScan("com.csdn.reader.dao")//设置扫描的数据访问层包路径,将数据insert到MySQL数据库中

五、项目启动

在开发环境中运行启动类的main函数即可启动。启动成功后截图:

over!

大屏监控系统实战(2)-后台工程搭建相关推荐

  1. 大屏监控系统实战(1)-项目介绍

    这个项目的起源非常的偶然,源于今年我有幸入选2019年CSDN博客之星年度总评选,并且排名一直还不错,在前20的行列中,而排名第一的天元浪子大大,用python分析了一波投票情况,我本人对自己也非常感 ...

  2. 大屏监控系统实战(13)-10分钟投票增量曲线制作(二)

    因为内容太多,所以我们分成了两部分,接前文 大屏监控系统实战(11)-10分钟投票增量曲线制作(一) 八.投票网站最近72小时10分钟投票走势和增量数据爬取 在SchedulingTest中添加方法如 ...

  3. 大屏监控系统实战(16)-项目拾遗

    一.概述 项目已经算是完结了,但还有一些待优化的地方,我新开一帖,准备慢慢补充一下. 二.问题列表及解决方案 1.页面样式 页面显示的问题,可调整的地方比较多,随着数据的变化,目前页面上已经有几处显示 ...

  4. 大屏监控系统实战(5)-父工程搭建及前端相关配置

    一.概述 本文的目的是为了提升项目最终的部署效率,我们的目标是在前端开发完毕后,可以把这些内容直接打包到SpringBoot项目的Jar包中,这样我们将这个Jar部署到服务器上时,就可以直接访问到对应 ...

  5. 大屏监控系统实战(14)-24小时得票数量统计曲线制作

    一.概述 这一章节我们来制作<24小时得票数量统计曲线>,这个跟10分钟投票的增量类似,不过他显示的是每个博主的总得票数,时间范围我设置为24小时,取每个小时博主的总得票数,通过这个监控, ...

  6. 大屏监控系统实战(15)-打包上线及总结

    专栏写到这,代码部分已经完成了,其实是个小小的项目,代码量也不大,但实现了我们想要的目标,那么我们还需要将这个大屏的项目部署到服务器上,我们要做就把完整的流程都做一遍. 一.打包方式的技术选型 项目是 ...

  7. 大屏监控系统实战(10)-大屏展示前20个博主的排名、票数及名次相对于前一日的升降情况

    一.概述 上一节我们已经把数据爬取到了数据库中并保存了起来,这章就要把数据在大屏上展示出来,先在大屏上展示前20个博主的排名.票数及名次相对于前一日的升降情况.最终实现的效果如下: 这个效果相当完美了 ...

  8. 大屏监控系统实战(9)-爬取所有博主实时投票票数并存数据库

    一.概述 这一节的目标,因为投票网只显示博主的实时投票数,所以我们计划每隔五分钟去爬取投票网站,获取该时段的博主实时票数,并将该时段所有博主的票数持久化到数据库,为后续的大屏展示提供数据支撑. 投票网 ...

  9. 大屏监控系统实战(6)-爬虫初探:爬取CSDN博客之星年度总评选投票统计数据

    一.介绍 我们先来做个简单的,我们的目标是爬取CSDN博客之星年度总评选的首页信息. 首页的地址:http://m234140.nofollow.ax.mvote.cn/wxvote/43ced329 ...

最新文章

  1. 对于session序列化跟session的钝化与活化的粗浅理解
  2. 青龙羊毛——灰兔掌赚吹牛逼
  3. ASP.NET中常用的js代码
  4. 爬取京东商品分类和链接
  5. python图像锐化_Python图像处理介绍--图像模糊与锐化
  6. mysql dns反向解析_Mysql DNS反向解析导致连接超时过程分析(skip-name-resolve)
  7. 如何让你的SQL运行得更快(一)
  8. 我们自己搞了个数据库设计工具(客户端)
  9. 2015 ACM/ICPC Asia Regional Shenyang Online题解
  10. Atitit 建设自己的财政体系 attilax总结 1.1. 收入理论 2 1.2. 收入分类 2 1.3. 2 1.4. 非货币收入 2 1.5. 2 1.6. 降低期望 2 1.7.
  11. <HTML>简单登录页面代码
  12. 测试用例方法-等价类划分
  13. android 电源管理
  14. java中草药美白淡斑紧肤膏_美白淡斑中药面膜配方 中药美白祛斑配方_怎样用中药偏方祛斑_自制中药美白祛斑法_养生频道_快速问医生...
  15. 阿里云API请求签名失败的解决办法
  16. 网页设计配色应用实例之黄色系
  17. 治五气,艺五种,抚万民,度四方
  18. python成语接龙源代码,基于Tkinter,带成语解释
  19. 042期正版四字梅花诗:冰清一洁
  20. ​12864无字库液晶显示(一)

热门文章

  1. Idea Marketplace 加载很慢 加载不出来
  2. linux下c 调用python,在Linux下使用python ctypes调用io\u submit
  3. postman 不安全网站_Postman所有版本下载_Postman for windows x64 mac下载
  4. golang切片转为字符串,字符串转切片
  5. 在Xuper链上部署Java语言智能合约和分析存证合约的实现逻辑
  6. php7垃圾回收机制l_PHP7 垃圾回收机制(GC)解析
  7. 【MyBatis框架】Mybatis开发dao方法第二部分
  8. 几个提升Go业务开发效率的流行框架和开源库
  9. 金九银十专供 | 175 道 Go 工程师必考面试题 + 详细解答
  10. jquery.form.js java_教javascript函数和jquery函数的使用$(form).submit(function()