现在网上有很多播放量巨高的免费编程项目教程,很多学编程的同学可能都看过,就导致大家可能写在简历上的内容都差不多。
于是就有了下面这张图:
那么这些 “明星” 项目到底怎么样?是否还值得去做?我们又该怎么学习呢?
为了快速解决这些问题,鱼皮决定带大家一起学习和鉴定一些网络热门编程项目,希望能帮大家更快地选择适合自己的项目,少走弯路~
介绍
这是一个在线预约挂号项目,包含 3 个系统:
- 预约挂号系统前台:用户可以选择医院、科室、时间来预约挂号、支付订单并获得就医提醒。
- 预约挂号系统管理员后台:管理员可以设置医院、设置数据字典、管理订单等。
- 外部医院管理后台:相当于医院自己维护的系统,通过签名校验的方式调研我们提供的接口来管理医院数据。
系统间关系如下图:
快速导学视频:https://www.bilibili.com/video/BV1eV4y1T7uS(建议先看这个)
项目视频:https://www.bilibili.com/video/BV1V5411K7rT
项目代码:可以在课程官方的视频评论区下获取
星球 的同学也可以直接获取我整理好的代码 学习资料 原创笔记 简历亮点:https://t.zsxq.com/06EEiyfq7
预约挂号系统前台:
预约挂号系统管理员后台:
医院接口模拟平台:
技术
大概用了以下这些,核心是 Spring Cloud 微服务:
前端
- Vue
- vue-admin-template 管理员模板
- VueQriously 二维码生成库
- babel
- webpack
- nuxt 服务端渲染
- element ui
后端
微服务:
- Spring Cloud Alibaba 框架
- Nacos 注册中心
- Spring Cloud Feign 远程调用
- Spring Cloud Gateway 微服务网关
- Maven 子父多模块
- Docker(部署项目、安装服务)
数据存储:
- MongoDB:负责存医院基本信息(性能更高)
- MySQL:存储用户、订单、预约等关系信息
中间件:
- Redis:缓存、存储验证码
- RabbitMQ:应用解耦、消息通知
- Nginx:部署项目
工具库:
- easy excel:读写 Excel 文件
- Json Web Token:生成 jwt token
- Joda Time:日期时间操作
技术架构图
看起来很复杂,但其实本项目主要编码的就只有图中间的网关和服务集群部分:
尚医通架构图.png
项目启动
请看这个视频:https://www.bilibili.com/video/BV1eV4y1T7uS
项目学习
本项目的学习重点
- 微服务的思想、划分以及实现方式,以及相关技术的用法:
-
- 注册中心
- 客户端调用
- 微服务网关
- 熟悉一个完整的业务流程(信息发布 => 信息展示 => 购买 => 下单支付 => 统计管理)
- 登录认证机制,包括手机号登录、微信扫码登录、OAuth、JWT 等知识
- 如何运用合适的数据库来解决问题?比如 MySQL 存储关系型数据、Redis 用于缓存、MongoDB 存储一些非关系型的数据(提高访问速度)、RabbitMQ 来实现异步通知和应用解耦。
- 调用第三方 API 来解决实际问题,比如微信接口、OSS、SMS
- 学习项目的目录结构及编码规范,比如通用返回对象、全局异常处理器、ContextHolder 等
- 提升前端开发的经验,比如 Nuxt 框架的使用,了解服务端渲染
如何学习微服务项目
对于微服务项目的学习,大家可以遵循以下步骤,也就是从整体到局部的思想:
- 了解项目业务
- 把项目运行起来
- 走完一套完整的业务流程,了解整个系统做了什么事
- 了解有哪些服务、以及每个服务的作用(做了什么事情)
- 了解服务之间是如何互相通讯的
- 根据需求阅读对应服务的源码细节
本项目的微服务划分
- common 项目公共代码
- model 项目数据模型层(只提供接口,便于公用)
- service 具体的业务逻辑(微服务)
- service_client 服务调用客户端(只提供接口,便于公用)
- service_gateway(微服务网关)负责统一校验 / 拦截、跨域、请求转发
- 公共服务:数据字典管理,导入导出(公共用的枚举值)
- 医院服务:管理医院,医院信息、排版信息、医院设置信息的增删改查
- 短信服务(SMS):负责发送短信验证码
- 用户服务:管理用户、就诊人、用户登录
- 订单服务:支付订单,订单(预约)管理
- 存储服务:上传文件(上传用户的图片)
- 统计服务:分析下单情况
- 定时任务服务:每天 8 点就医提醒
对应的功能模块图如下:
建议大家在设计系统、学微服务项目时也可以通过画图帮助自己理解
学习建议
- 这个项目 更适合后端同学 。如果你已经学完 SpringBoot、微服务的大致的知识,可以把这个项目作为第一个微服务的练手项目,学习技术的整合运用、接触更多的业务场景。
- 项目非常真实完整、贴合实际,学完这个项目后,也能搞懂电商平台的业务流程了,可以不用再做类似业务的项目。
- 整个课程还不错,但没有那么精华,建议大家根据自己的需要去学习课程。比如你要学微信登录或者微信支付,直接去看对应的章节。此外,后端同学看视频时可以跳过前端。
- 阅读项目代码时,先大致了解业务、把项目跑起来、了解微服务的每个模块做了什么、再去看代码细节
- 项目的坑略多,可以通过这个项目来自己锻炼自己的 debug 能力(狗头)。可以看我的文档来跑项目、少踩一些坑;还建议多看视频的评论区,可能有同学给出了学习建议和问题的解决方案。
- 项目用到了微信登录和支付,这块的知识讲得不错,适合入门学习。但由于只有企业账号才能使用这些微信接口,所以学习时主要是了解流程,实际开发中再看文档就好了,不用花时间折腾。
- 教学类项目,比较追求快速入门,有些功能的实现并不完美(比如下单功能没有考虑并发安全问题,可能导致超卖)。此外,项目几乎没有用到并发编程、设计模式和自定义的 SQL 查询,可以自己思考一下如何运用这些知识技能来优化项目。