黑马头条.

news2025/1/12 1:04:07

文章目录

    • 前言
    • 一、项目概述
      • 1.1 能收获什么
      • 1.2 项目概述
      • 1.3 项目术语
      • 1.4 业务说明
    • 二、技术栈
      • 2.1技术栈整体框架图
      • 2.2技术栈简介
    • 三、nacos环境搭建
      • 3.1 虚拟机镜像准备
      • 3.2 nacos的安装
    • 四、初始工程搭建
      • 4.1 开发环境准备
    • 五、实现登录功能
      • 5.1 需求分析
      • 5.2 表结构分析
      • 5.3 思路分析

🌕博客x主页:己不由心王道长🌕!
🌎文章说明:黑马头条开发🌎
✅系列专栏:微服务项目
🌴本篇内容:对黑马的黑马头条微服务进行开发讲解🌴
☕️每日一语:这个世界本来就不完美,如果我们再不接受不完美的自己,那我们要怎么活。☕️
🚩 交流社区:己不由心王道长(优质编程社区)

前言

文章内容为微服务内容,项目是跟着黑马头条进行的。本次内容为黑马头条的第一天,主要是项目的介绍、环境的搭建、登录功能的编写、接口测试工具的使用、网关和前端项目的集成。

一、项目概述

1.1 能收获什么

综合知识的运用: 项目把Java后端程序员微服务使用的技术栈进行了综合的运用,如springboot、springcloud、nacos、redis、docker、elasticSearch、Kafka、seate(分布式事务)都进行了综合性的运用。

业务或技术解决方案:例如:分布式事务、分布式任务调度、延迟队列、异步线程、热数据的处理、评论系统、关注点赞等等一系列微服务常常遇到的需要解决的技术方案

软硬编程思想提升: 业务分析、设计、编码、测试、部署等等从0到1逐步搭建完善.

在这里插入图片描述


1.2 项目概述

随着智能手机的普及,人们更加习惯于通过手机来看新闻。由于生活节奏的加快,很多人只能利用碎片时间来获取信息,因此,对于移动资讯客户端的需求也越来越高。黑马头条项目正是在这样背景下开发出来。黑马头条项目采用当下火热的微服务+大数据技术架构实现。本项目主要着手于获取最新最热新闻资讯,通过大数据分析用户喜好精确推送咨询新闻。

在这里插入图片描述


1.3 项目术语

一、用户
二、自媒体人
三、管理员
四、APP
五、We Media
六、Admin

在这里插入图片描述

1.4 业务说明

一、用户移动App
二、用户自媒体平台
三、支撑系统
四、管理平台


在这里插入图片描述
五、 项目演示地址:

  • 平台管理:http://heima-admin-java.research.itcast.cn
  • 自媒体:http://heime-media-java.research.itcast.cn
  • app端:http://heima-app-java.research.itcast.cn

二、技术栈

2.1技术栈整体框架图

在这里插入图片描述

2.2技术栈简介

  • Spring-Cloud-Gateway : 微服务之前架设的网关服务,实现服务注册中的API请求路由,以及控制流速控制和熔断处理都是常用的架构手段,而这些功能Gateway天然支持
  • 运用Spring Boot快速开发框架: 构建项目工程;并结合Spring Cloud全家桶技术,实现后端个人中心、自媒体、管理中心等微服务。
  • 运用Spring Cloud Alibaba Nacos: 作为项目中的注册中心和配置中心
  • 运用mybatis-plus: 作为持久层提升开发效率
  • 运用Kafka: 完成内部系统消息通知;与客户端系统消息通知;以及实时数据计算
  • 运用Redis: 缓存技术,实现热数据的计算,提升系统性能指标
  • 使用Mysql: 存储用户数据,以保证上层数据查询的高性能
  • 使用Mongo: 储用户热数据,以保证用户热数据高扩展和高性能指标
  • 使用静态资源存储器: 在其上实现热静态资源缓存、淘汰等功能
  • 运用Hbase技术: 存储系统中的冷数据,保证系统数据的可靠性
  • 运用ES搜索技术: 对冷数据、文章数据建立索引,以保证冷数据、文章查询性能
  • 运用AI技术: 来完成系统自动化功能,以提升效率及节省成本。比如实名认证自动化
  • PMD&P3C : 静态代码扫描工具: 在项目中扫描项目代码,检查异常点、优化点、代码规范等,为开发团队提供规范统一,提升项目代码质量

三、nacos环境搭建

3.1 虚拟机镜像准备

  • 1、下载黑马提供的资料、找到一个空间足够的存储空间,如:D盘,解压缩,可能需要很久(45G)
  • 2、解压后打开虚拟机(VMware),选择打开虚拟机并找到解压文件
    在这里插入图片描述在这里插入图片描述
  • 3、修改网络地址
    在这里插入图片描述
    在这里插入图片描述

3.2 nacos的安装

一、docker拉取nacos镜像: 查询docker是否开启:systemctl status docker
在这里插入图片描述



docker容器处于运行状态,拉取nacos镜像:docker pull nacos/nacos-server:1.2.0
在这里插入图片描述


二、创建容器:docker run --env MODE=standalone --name nacos --restart=always -d -p 8848:8848 nacos/nacos-server:1.2.0
在这里插入图片描述


三、访问nacos客户端:http://192.168.200.130:8848/nacos

在这里插入图片描述

四、初始工程搭建

4.1 开发环境准备

一、项目依赖环境

  • JDK 8
  • Intellij Idea
  • maven-3.6.1
  • Git

二、导入已有的初始工程文件
在这里插入图片描述

三、工具配置
在这里插入图片描述


四、设置项目编码格式:统一使用UTF-8
在这里插入图片描述

五、实现登录功能

5.1 需求分析

在这里插入图片描述


一、用户点击开始使用

1、会把手机号和密码通过接口发生到后端验证
2、用户具有较大权限;可以操作,也可以查看(点赞、评论等等)

一、用户点击不登录、先看看

用户只有查看权限

5.2 表结构分析

表名称说明
ap_userApp用户信息表
ap_user_fanApp用户粉丝信息表
ap_user_followApp用户关注信息表
ap_user_realnameApp实名认证信息表

1、导入资料对应数据库表:

在这里插入图片描述


2、登录用到的表结构如下:

在这里插入图片描述

5.3 思路分析

一、思路图形

在这里插入图片描述
1,用户输入了用户名和密码进行登录,校验成功后返回jwt(基于当前用户的id生成)

2,用户游客登录,生成jwt返回(基于默认值0生成)

二、登录验证

1、这里暂时没有介绍到注册功能,大概是这样的: 用户注册的时候,输入自己对应的手机号码,发生短信获取到验证码再设置自己的密码。后端接收到注册信息,会在后端为用户随机生成一个salt(盐值:其实就是随机字符),然后把用户注册的密码与其拼接在一起经过MD5加密之后保存到数据库,并且把盐也保存到该用户的数据库之中。
2、当用户登录时输入账号和密码,后台会根据账号查询该用户,并且把查询到的盐与用户输入的密码进行拼接再以同样的加密方式加密之后与查询到的密码进行对比。成功则跳转到相应页面,不成功则触发异常,经过统一异常处理提示用户信息错误。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/659777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

22道常见RocketMQ面试题以及答案

面试宝典到手,搞定面试,不再是难题,系列文章传送地址,请点击本链接。 1、RocketMQ是什么? 2、RocketMQ有什么作用? 3、RoctetMQ的架构 4、RoctetMQ的优缺点 8、消息过滤,如何实现? 9、消息去重,如果…

Elasticsearch 基本使用(四)聚合查询

聚合查询 概述单字段聚合查询统计分组后的数量非文档字段分组文档字段分组 其他聚合运算统计平均值统计总金额统计最大值自定义聚合结果排序简单聚合小结 多字段聚合查询 概述 说到聚合查询,马上会想到 SQL 中的 group by,ES中也有类似的功能&#xff0…

编程语言发展历史

文章目录 语言的发展时间轴语言世代时间轴1940年前-机器语言时代1940年后-汇编语言时代1950年-高级语言的初生1960年-高级语言的进一步成熟1980年-各大语言的进一步增强1990年代-飞速发展时代2000年-新时代 高级编程语言的分类解释型与编译型面向过程与面向对象 对语言的评价Ti…

【学习学习】NLP理解层次模型

NLP(Neuro-Linguistic Programming,神经语言程序学),由两位美国人理查得.班德勒(Richard Bandler)与约翰.葛瑞德(John Grinder)于1976年创办,并在企业培训中广泛使用。美…

PyTorch 深度学习 || 4. 自编码网络 | Ch4.3 卷积自编码网络图像去噪

卷积自编码网络图像去噪 1. 数据的准备 先简单介绍一下训练网络使用到的图像数据集——STL10,该数据集可以通过torchvision.datasets模块中的STL10()函数进行下载,该数据集共包含三种类型数据,分别是带有标签的训练集和验证集,分别包含5000…

Cookie增删改查方法封装(低内存开销版)

本文章中的低内存开销是指在获取cookie的时候不进行字符串—>数组的转变,全程使用sliceindexOf切割字符串,不创建和操作数组,节约内存,本文代码已存放到github中,后续会持续完善功能,传送门:…

二进制方式部署kubernetes集群

二进制方式部署kubernetes集群 1、部署k8s常见的几种方式 1.1 kubeadm Kubeadm 是一个 k8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部署 Kubernetes 集群。 Kubeadm 降低部署门槛,但屏蔽了很多细节,遇到问题很难…

掌握Python的X篇_4_开发工具ipython与vscode的安装使用

本篇将会介绍两个工具的安装及使用来提高Python的编程效率。 ipython:比python更好用的交互式开发环境vscode:本身是文本编辑器,通过安装相关的插件vscode可以作为python集中开发环境使用 掌握Python的X篇_4_开发工具ipython与vscode的安装使…

第四章 linux编辑器——vim的使用

第四章 linux编辑器——vim的使用 一、什么是vim?二、vim的基本操作1、模式之间的相互切换2、vim的常见命令集(1)正常模式的常见命令a. 模式切换b. 光标移动c.删除文字d.复制e.替换f.撤销g.更改 (2)底行模式的常见命令…

复习之linux的网络配置

一、基本定义 1.IP IP指网际互连协议,Internet Protocol的缩写,是TCP/IP体系中的网络层协议。 电脑之间要实现网络通信,就必须要有一个合法的ip地址。 IP地址网络地址主机地址(又称:主机号和网络号组成&#xff09…

【MySQL】MyISAM中的索引方案

介绍 B树索引使用存储引擎如表所示: 索引/存储引擎MyISAMInnoDBMemoryB树索引支持支持支持 多个存储引擎支持同一种类型的索引,但是他们的实现原理是不同的。 InnoDB和MyISAM默认的索引是B树索引,而Memory默认的索引是Hash索引。 MyISAM…

【软件测试】在Windows使用Docker搭建CentOS环境(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 我们做软件测试在…

租服务器跑代码、pycharm连接服务器跑代码、Xshell连接服务器运行代码

一、服务器 1.1 注册 推荐使用矩池云服务器,按时按量计费,服务器自带镜像可选,可将要运行的项目上传到网盘 注册网址:矩池云 1.2 租用 选择合适的租用 1.3 选择镜像 选择合适的系统镜像 1.4 复制命令 进入租用列表&#xff…

【每日挠头算法题(9)】二叉树的直径|二叉树的层序遍历

文章目录 一、二叉树的直径思路:二叉树的深度优先搜索具体代码如下: 二、二叉树的层序遍历思路:借助队列实现具体代码如下: 总结: 一、二叉树的直径 点我直达~ 思路:二叉树的深度优先搜索 根据题目要求&a…

【计网】第三章 数据链路层

文章目录 数据链路层一、使用点对点信道的数据链路层1.1 数据链路和帧1.2 三个基本问题封装成帧透明传输差错控制 二、点对点协议 PPP2.1 PPP 协议的特点2.2 PPP 协议的帧格式2.3 PPP 协议的工作状态 三、使用广播信道的数据链路层3.1 局域网的数据链路层3.2 CSMA/CD 协议3.3 使…

安规测试简介(二)-常见安规认证测试之CE认证

CE认证: CE是法语的缩写,英文意思为 “European Conformity” 即”欧洲共同体”, 事实上,CE还是欧共体许多国家语种中的"欧共体"这一词组的缩写,原来用英语词组EUROPEAN COMMUNITY 缩写为EC,后因欧共体在法文…

python---字典(1)

字典的创建 字典: 是一种存储键值对的 键值对: 键(key) 值(value) 根据key可以快速的找到value (key和value有一定的映射关系) 在python字典中可以包含很多键值对,但是键是唯一的. 创建一个空的字典 创建字典的同时,设置初始值 推荐写法是如下的字典的初始化: 字典查找ke…

unittest教程__assert断言(4)

测试用例是否测试通过是通过将预期结果与实际结果做比较来判定的,那代码中怎么来判定用例是否通过呢?在python中这种判定的方法就叫做断言,断言可以使用python的assert方法,也可以使用unittest框架提供的一系列断言方法。 unitte…

强化历程2-Vue+axios+ajax面试系列(2023.6.17)

因为主要是后端,在此训练都是非常基础的题目,后续会持续更新… 文章目录 强化历程2-Vueaxiosajax面试系列(2023.6.18第一次更新)题目汇总1 Vue常用指令2 v-show和v-if区别3 讲一讲MVVM4 vue特点?5 vue组件之间的传值6 vue整合其他框架7 vue生命周期8 vue中实现路由…

通过共享内存进行通信(嵌入式学习)

通过共享内存进行通信 概念特点函数示例代码 概念 在Linux中,共享内存是一种进程间通信(IPC)机制,允许多个进程共享同一块内存区域。这种通信方式可以提供高效的数据传输,特别适用于需要频繁交换数据的场景。 IO间进…