1.简介

博主想分享自己大学Java四年学习所得,毕业设计包含我对Java的所学所得。关于我的毕业设计的前端设计都是模仿某云,某贴吧,CSND,某站,某Q,看两张我的博客发表文章的图片,没错,我整个博客中心所有页面都是按照CSDN的结构写的

2.博客的功能

关于博客的功能都有这些:

  • 1.用户的个人中心:用户的登录与注册的Token拦截,前后端都要拦截器拦截Token,当然也可以基于后端路由Zuul拦截Token,不过当初写的急又笨,最后才摸索会的我也懒得改了,免费的拼图,阿里云智能验证(Vue需要动态加载JS),Token在此感谢CSDN一位老哥给了我思路,虽然他的代码已被我改的面目全非,哈哈。
  • 2.用户安全中心:QQ邮箱注册邮箱(穷),阿里云短信API注册手机以及其他个人安全信息和调用安全认证服务的接口,文档就可以上手,我还写了学生9折优惠
  • 3.用户文件头像上传中心:博客所用到的所有的图片(相册空间还没写完)和用户头像的图片均用阿里云OSS文件服务器,当然本地存在本地也可以的,我只是写着玩。
  • 4.用户签到中心:持续签到和累计签到奖励机制,以及会员导致经验值增益不同的机制,我模仿贴吧的经验机制写的,有排名有特权,还有每日博客任务。
  • 5.用户会员中心:SVIP与VIP两种,定时任务/RabbitMQ延迟队列/登录验证三种判定会员截止时间到期用邮箱去提醒用户,RabbitMQ延迟队列永远滴神。
  • 6.用户支付中心:我的钱包和支付宝支付,内网穿透获得异步通知作为结果判定标志,原始支付的普通会员与二维码支付的超级会员,因为论文需要及时上交所以微信支付没写,账单分页,Csv定制,消费图V-charts图表,优惠券(本想把秒杀抢优惠券也写进去,但是论文时间不允许,后续一定补上去),基于RabbitMQ延迟队列实现延迟业务,神又出现了,这个中心的页面与阿里云管理页面相似,就差发票没写了。
  • 7.用户博客中心:发布,更新,删除,评论,点赞,收藏,转发,文章排行榜。博客中心是我的博客的核心,分页和轮滑加载均实现,用Redisson来实现分布式锁控制文章,模仿CSDN,过。
  • 8.搜索引擎中心:文章信息的增删改查,分页,高亮模糊排序查询,我多余引进一个Elasticsearch只是存放一些不重要的文章信息和Zipkin跟踪API运行信息,本想练手,最后还是硬啃,其实有手就会,就是操作几个辅助类,我问下有没有ES分页插件?,我用的原始客户端然后自己写遍历结果集,好累我都有阴影了。
  • 9.用户消息中心:我除了WebSocket我想不到还有啥亮点了,消息页面我是照着B站动态的页面来写的。
  • 10.用户个人空间:博客云其实就是上传文件,加好友可以@,发说说,与它们产生聊天,,时间不够,还在完善中。

3.Vue

Vue需要理解DOM布局绘制与Vue生命周期就可以,当然ES语法要也会一些,Java与JavaScript没关系,但是会Java的话再看JS还是比较容易的,这是我自己画的Vue生命周期的图,看官方文档最好,我不讲具体,我只给新学者提供一个学习路线,index.html,main.js,App.vue三者结合DOM布局再看生命周期图最后可以理解Vue怎么运行。

4.微服务与分布式

微服务是架构设计方式,分布式则涉及到的是机器部署,关于这俩都用共同的缺点:网络,说的有点笼统。
我从我的论文中巴拉出来的改一改,总结微服务的运行机制有以下11条:
1.扩展机制:水平与垂直扩展,氪金或者优化代码呦。
2.隔离机制:避免博客的一个业务占用太多资源导致服务的无法响应,会对其他博客业务造成影响,不要关联性太强,尽可能各干各的,其实微服务代码量也不少。
3.解耦原则:尽可能地使用合成复用原则来代替继承关系,设计模式中看不中用。
4.限流机制(Zuul):限流可以在路由网关上面体现出来,根据不同的算法可以实现不同的负载均衡,这个路由可以做很多文章。
5.降级机制:在核心业务运行时,牺牲一部分非核心的业务保证核心业务功能
稳定运行,当系统不可用时,需要给予用户一些提示。
6.熔断机制(Hystrix):在调用微服务请求时,添加fallback回退防止雪崩即可。
7.跟踪机制(Zipkin):博客API会产生数据指标,产生的数据需要用来观测,然后再做数据分析,对系统做个深度分析以便以后的功能扩充。
8.维护机制:博客的系统维护比较需要方便,压力与微服务的数量成正比。
9.补偿机制:如果发生网络问题导致博客业务数据不一致性的问题,需要补偿机制弥补用户。例如:RabbitMQ异步消息,补偿表和定时任务检测。
10.监控机制(Hystrix+Turbine):更多的是通过Hystrix监控各个微服务的运行指标,通过HTTP转递给开发者观看,也可以跟踪指标监控。
11.钓鱼机制:算是一种未雨绸缪,我在测试博客功能时,会适当关闭个微服务中心,把博客的异常或者补偿都要测试一下,防止在真实情况下出现炸裂情况,尽可能的在某个机器或某个微服务挂掉时,尽量不影响博客系统整体的高可用性,其实我就一个库一个机器,只是模拟了单机节点。

这么说,我设计一个系统,如果我采用了微服务的架构方式,我要怎么划分每一个业务(module),功能划分,控制高并发,扩展以后的功能,尽可能有错立马定位修改,有好的创意立马添加,放上就能用,拿掉尽可能不影响全部,最终这些业务再落到机器的实现上(代码)。
我觉得微服务修改任何东西其实都不费时间,但是加起来的代码也不少,它们之间都是通过HTTP轻量级等通信机制,数据库还可以选择好多种,每一个module都是独立然后一起组成整个系统。

5.高可用

微服务注册组件也涉及到高可用,Eureka不更新了,但是人蠢学习时没发现,听说consul企业版也不能用了,建议后学的还是选择Zookeeper,Java感情配合也好,也能实现分布式锁。
高可用最重要的一点就是自我修复失败的节点,互通数据,防止系统无法响应

6.SpringCloud

SpringCloud呢,就是一个基于SpringBoot快速构建的工具框架集合,SpringBoot挺节省时间的。
注意下,SpringCloud1.X中TurbineStream中启动port端口号有BUG,SpringBoot 2.X修复,升级到2.X后,对应的Hystrix也出现问题,需要修改stream路径,除了这些,尽可能用Google,否则你的监控轮盘都看不见,暂时我上去后就发现这些,有补充也可以提出。我的项目的版本号比较老,也没升级上去,所以建议买新书跟着书走。

7.分布式锁

概念来说:对Java分布式锁来说,对于不同的机器产生的不同JVM虚拟机之间需要资源共享,这个时候就需要用到分布式锁来进行控制。
个人理解:如何在许多机器(JVM)中找到我想找到的“共享资源”。锁可以分为好几个层次,当然对于代码层次来说,Synchronized关键字,Lock并发接口(很重要),并发工具类或并发集合控制“共享资源时”,在一个独立JDK与主机Host来进行控制,但是例如:上面是基于代码层次,还可以基于数据库层次,悲观锁与乐观锁,还可以基于缓存层次(当然还Zookeeper也可以实现分布式锁,不只有缓存层次),Redis缓存可以用lua语言脚本实现,我博客中用到的是Redisson实现的分布式锁。
分布式锁最通俗的理解:某个字段会产生大量的流量,对于基于数据库层次来说,流量直接面对数据库,你死我活。如果流量数据库不承担了,就可以使用数据库的马仔来替数据库“去死”。如果是单体应用,那可以用代码层次了,想办法优化,让流量别冲的太猛。如果是马仔来替数据库冲锋陷阵,这个马仔战个差不多了,最后数据库收尾(写入数据库),其实就是马仔的战斗时间为数据库赢得喘息的机会,这个战斗时间就是多个机器竞争“共享资源”,与并发中的“tryLock”相似,Redisson我也不太熟,只会用几个,但是具体的流程差不多都是基于线程竞争,线程可以从不同JVM获得。

8.项目的代码GitHub地址

https://github.com/Study-Up-Up/Vue-SpringCloud-Blog

基于Vue+SpringCloud博客的设计与实现---分享本科毕业设计相关推荐

  1. java毕业论文_【毕业论文】基于java的博客网站设计与开发毕业论文(word文档)

    <[毕业论文]基于java的博客网站设计与开发毕业论文.doc>由会员分享,可免费在线阅读全文,更多与<[毕业论文]基于java的博客网站设计与开发毕业论文(word文档)>相 ...

  2. php博客系统答辩问题,基于PHP个人博客的设计与实现毕业设计答辩 PPT课件

    <基于PHP个人博客的设计与实现毕业设计答辩 PPT课件>由会员分享,可在线阅读,更多相关<基于PHP个人博客的设计与实现毕业设计答辩 PPT课件(31页珍藏版)>请在人人文库 ...

  3. python flask实现博客系统_基于Flask的博客网站设计与实现

    涂远杰 郑剑 摘要:该博客系统是一款分享型博客,注重个人的学习心得.生活等方面的记录.后台基于Python中的Flask框架开发,还涉及爬虫,数据库使用的是轻型的SQLite,同时,前端页面的实现涉及 ...

  4. Java基于JSP个人博客网站设计与实现

    随着人类的发展,人们的生活越来越信息化,如何在浩瀚的互联网展示自己的一些个人信息是很多人所关心的问题,这个时候个人博客的出现完美的解决了这一问题. 本文以实际运用为开发背景,运用软件工程原理和开发方法 ...

  5. 基于java个人博客网站设计(含源文件)

    获取项目源文件,联系Q:1415736481,可指导毕设,课设 摘     要    本系统是对现在网上流行的可以写日志,上传照片等功能的个人博客系统,采用的是Eclipse3.0.MyEclipse ...

  6. 基于php mysql的博客设计_基于PHP的个人博客的设计与实现(MySQL)

    基于的个人博客的设计与实现(MySQL)(任务书,开题报告,中期报告,毕业论文10300字,程序代码,MySQL数据库,答辩PPT) 网站采用了PHP+MySQL+Apache进行开发,本文主要介绍了 ...

  7. 00-基于Vue的博客项目展示

    目录 0 项目开源地址 1 博客页面展示 1.1 首页 1.2 文章页 2 后台管理页面展示 2.1 登录页面 2.2 新建文章-Markdown编辑器 2.3 新建文章-富文本编辑器 2.4 文章列 ...

  8. 基于springboot+vue个人博客搭建

    目录 博客介绍 源码地址:springboot+vue个人博客系统: 基于springboot+vue个人博客系统 在线地址 目录结构 ​编辑 项目特点 技术介绍 开发环境 项目截图 注意事项: 项目 ...

  9. java web论文_(定稿)毕业论文基于JavaWeb技术博客项目的设计论文(完整版)最新版...

    <[毕业论文]基于Java Web技术博客项目的设计论文.doc>由会员分享,可免费在线阅读全文,更多与<(定稿)毕业论文基于Java Web技术博客项目的设计论文(完整版)> ...

最新文章

  1. 一步步教你编写redactor的插件
  2. Gridview实现银行选择列表
  3. MapReduce天气案例
  4. CSS3秘笈第三版涵盖HTML5学习笔记6~8章
  5. 初学__Python——Python的流程控制语句 if、for、while
  6. 用ASP.net判断上传文件类型的三种方法
  7. Description Resource Path Location Type Path must include project and resource name: /
  8. 我犯的错误--关于主键
  9. SAP Fiori的搜索实现
  10. 如何使用struts2对集合参数进行验证
  11. 二十分钟教你如何将区块链应用与函数计算相结合 1
  12. 实操来了!一文告诉你如何用 Streamlit 和 Heroku 开发 Web
  13. 深度优先搜索(解题剑指Offer12、13)
  14. 用管道pipe实现程序与shell/bash脚本之间的通路
  15. Oracle新建数据库和用户及表空间
  16. Netty工作笔记0031---NIO零拷贝应用案例
  17. Xen虚拟化平台安装及实时迁移
  18. Unity UnityWebRequest使用方法
  19. switch语句的ns图怎么画_switch语句流程图 c语言中swtich怎么画流程图
  20. web前端开发做项目,CSS盒子模型居中方法

热门文章

  1. 【Qualcomm】在EFS的NV项中打开voice通话自动接听
  2. Windows10任务计划怎么用
  3. 街机扫描线之校正屏幕色彩与对比度
  4. 禅道企业版 3.7.2 Windows(64位) 安装教程(附安装包)
  5. 经纬度与度分秒之间的转换
  6. linux内核版本查询
  7. 西部数码建站助手无法启动mysql_西部数码使用指南:网站管理助手打开报错检查...
  8. #BDA#笔记#业务知识:常见行业业务模式指标5内容行业
  9. 【NOIP2013初赛】整除
  10. 外汇交易市场策略:简单最常用的四周规则与七种交易策略