maven
SpringBoot简介
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。
SpringBoot的特点(优点)
-
内置Tomcat,可以直接部署,而不依赖外部Tomcat
-
简化MAVEN配置,提供一系列工具包集合
spring-boot-starter-web(包含内置tomcat、mvc、restful) spring-boot-starter-jdbc(包含tomcat-jdbc连接池、spring-jdbc功能、JdbcTemplate) spring-boot-starter-aop(包含Spring AOP) spring-boot-starter-test(包含Spring test测试框架) spring-boot-starter-parent(包含spring boot底层通用设置和功能) spring-boot-starter(包含ioc、自动配置、日志功能)
-
自动配置Spring组件(重要特点)
-
采用Java配置替代了XML配置(完全取消了XML配置形式)
SpringBoot数据库访问
SSO单点登录 基于Token
流程:
使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:
- 客户端使用用户名跟密码请求登录
- 服务端收到请求,去验证用户名与密码
- 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端。(服务器采用Redis存储)
- 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
- 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
- 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据(基于拦截器)
存储方式
客户端采用localStorage存储;服务器采用Redis存储
HTML5新特性 localStrorage可以永久存储在客户端
令牌的校验与拦截
检测用户发送的令牌是否和服务器存储的一致,是否有效,
编写一个拦截器,拦截器调用/user/token进行令牌检测,检测正确后,拦截器放过继续执行请求处理,否则拦截。
分布式服务架构
目前主流实现:Dubbo+zookeeper和SpringBoot+Cloud
利用上述技术都可以将功能服务分散到不同服务器部署,然后实现服务间通信(调用)。
请求–>处理1–>处理2–>响应。意思可以将处理1和处理2做成独立服务分开部署,然后再进行RPC(Dubbo)或HTTP请求和响应模式(Cloud)交互。
Dubbo和Cloud的区别如下:
Dubbo和Cloud服务调用机制不同,一个RPC、一个HTTP请求响应
Dubbo一般和zookeeper结合管理服务,Cloud内置集成Eureka管理服务
Cloud提供一套服务管理的完整方案、Dubbo需要跟其他技术集成使用。
Cloud仅用于Rest服务管理、Dubbo是将组件服务化管理
Spring Cloud
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。
- Spring Cloud Netflix
是对Netflix开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST客户端、请求路由等。 - Spring Cloud Config
将配置信息中央化保存, 配置Spring Cloud Bus可以实现动态修改配置文件 - Spring Cloud Bus
分布式消息队列,是对Kafka, MQ的封装 - Spring Cloud Security
对Spring Security的封装,并能配合Netflix使用 - Spring Cloud Zookeeper
对Zookeeper的封装,使之能配置其它Spring Cloud的子项目使用 - Spring Cloud Eureka
- Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件中的一部分,它基于Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能。
项目名称
易慕教育平台
应用技术
Spring、SpringBoot、Mybatis、Redis、Quartz、Bootstrap、js、JSP、AJAX、Nginx
项目工具
MyEclipse、Mysql57、Tomcat8、Jdk1.8、Linux
项目描述
本系统的主要作用是为广大用户提供一个在线学习的网络平台,系统主要分为主页展示、用户中心、课程中心、视频中心和在线考试模块!为用户提供了、学员注册登录、在线视频、笔记、问答、评论、收藏等众多功能!本系统主要采用分布式系统架构的方式,运用AJAX的局部请求,局部刷新,为在线用户提供更加高效,快速在线访问,以求提高用户体验!
个人职责:负责用户的登录注册、课程中心、视频中心
Java项目面试:
差异化体现个人能力
能力:
- 你了解哪些部分,框架的整体(官方网站)
- 纵向深入了解(了解的部分 底层渲染,连接)
- 横向扩展了解
潜力: - 你是怎么解决问题的
- 你如何举一反三
- 你怎么优化项目
- 你如何快速学习
善于总结:
SpringBoot 项目:
SpringBoot
关于SpringBoot
快速搭建项目,使用注解的方式省去了大量XML配置
内置Tomcat
@RequestMapping
@PathVariable
@ResponseBody
Mybatis
关于Mybatis
是对象关系映射
配置文件
编写xml配置的 update delete等标签
在映射文件中编写 @update()注解的方式编写sql语句
git
关于git
分布式反版本控制器
数据是按照元数据的方式进行存储
git使用的是SHA-1 哈希算法
redis
关于redis
数据存储结构:key-value
数据类型:
应用场景:缓存 事务 日志 订阅 排序
使用:导入jar 开启redis,正常安装的电脑话默认开启,
配置redis连接信息
分布式系统 前后端分离的方式
什么是分布式系统
谈谈你对分布式的理解;
前后端分离的历史发展:
redis+session共享
如何实现的redis和session共享:
导入:两个jar包
实现的目的
SSO单点登录:
单点登录的原理
单点登录的优劣
密码加密:
使用MD5算法,对密码进行加盐
拦截器:
继承HandlerInterceptor接口
实现了三个方法,在boolean preHandle方法下验证用户是否登录!进行拦截未登录则跳转登录界面!
推荐查询优化:
推荐展示如何优化查询的!
用户点击课程进行学习,根据课程id获取到该课程类目的其他课程进行推荐展示