前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我当年学编程时,要是有这个项目就好了

我当年学编程时,要是有这个项目就好了

作者头像
程序员鱼皮
发布2022-11-07 16:03:54
9410
发布2022-11-07 16:03:54
举报
文章被收录于专栏:鱼皮客栈鱼皮客栈

大家好,我是鱼皮。

之前已经给大家分享了三个全栈项目,比如瑞吉外卖什么的,这几个项目都是侧重于带大家学习框架的运用、以及一些简单的业务逻辑,但单独看代码就会发现没有太多的编程技巧可以学习。

这次给大家分享的项目则是一个专门用来学习 Redis 技术的 免费项目 —— 某马点评。事先说明,我可没有被绑架,而是前段时间我在复习 Redis 的时候把这个项目完整刷了一遍,觉得确实不错,才分享给大家。

这是我自己记录的笔记:

我当时学 Redis 的时候是先学会用法,再自己通过做项目来摸索其应用场景,根本没有这种系统的、项目实践式的教程。不得不感叹,现在学编程的资源真的是太丰富了、成本也越来越低了。

下面我带大家一起来学习下这个项目。

提示:本文超长,适合收藏

项目介绍

在线店铺点评 APP(H5 网页),有点类似美团点评。

特色:

  1. 项目整体比较精简,适合初学练手
  2. 项目中大量运用到了 Redis,极其适合学习 Redis 的同学来实战(事实上这个项目都是为了 Redis 课而生的)
  3. 项目的代码细节很多,能学到不少优化技巧

项目功能

包括:查看点评(热评)、发布点评、点赞

关注、查询关注的人发的帖子、查看好友共同关注

分类浏览店铺、查看附近的店铺

个人信息查看和管理

话说项目太仿真了,在用户编辑资料页竟然还能开 VIP?!🐶

项目资料

快速导学视频:https://www.bilibili.com/video/BV1PG4y1s7io

原课程视频地址:https://www.bilibili.com/video/BV1cr4y1671t

这个项目没有专门的课程,而是融合在了 Redis 的教程中,可以从 P24 开始看。

星球 的同学也可以直接获取我整理好的代码 + 学习资料 + 原创笔记 + 简历亮点:https://t.zsxq.com/07JMnQvne

技术栈

后端

Spring 相关:

  • Spring Boot 2.x
  • Spring MVC

数据存储层:

  • MySQL:存储数据
  • MyBatis Plus:数据访问框架

Redis 相关:

  • spring-data-redis:操作 Redis
  • Lettuce:操作 Redis 的高级客户端
  • Apache Commons Pool:用于实现 Redis 连接池
  • Redisson:基于 Redis 的分布式数据网格

工具库:

  • HuTool:工具库合集
  • Lombok:注解式代码生成工具

前端

前端不是本项目的重点,了解即可:

  • 原生 HTML、CSS、JS 三件套
  • Vue 2(渐进式使用)
  • Element UI 组件库
  • axios 请求库

技术架构图

这个项目是单体项目,架构比较简单,下图依然是理想架构,实际上只用单台 Tomcat、MySQL、Redis 即可:

学习重点

这个项目几乎用到了 Redis 的所有主流特性,都值得重点学习,如官方提供的项目介绍图:

快速启动项目

请看这个视频:https://www.bilibili.com/video/BV1PG4y1s7io

项目学习

课程学习

这里给大家划分一下视频章节对应的知识点:

  • p1 - p23 Redis 基础学习
  • p24 - p25 本项目介绍
  • p26 - p34 Redis 短信登录和 Session 共享
  • p35 - p47 Redis 缓存应用
  • p48 - p49 Redis 实现全局唯一 id 生成
  • p50 - p55 传统秒杀实现方案
  • p56 - p68 Redis 实现分布式锁
  • p69 - p71 Redis 实现秒杀
  • p72 - p77 Redis 实现消息队列
  • p80 - p81 Redis 点赞及点赞排行榜
  • p82 - p83 Redis 实现共同关注
  • p84 - p87 Redis 实现 Feed 流
  • p88 - p90 Redis 实现附近店铺功能(GEO)
  • p91 - p93 Redis 实现签到
  • p94 - p95 Redis 实现 UV 统计

单纯为了完成项目的话,直接看 p24 - p95 即可。

代码学习

config 目录:存放项目依赖相关配置

  • MvcConfig:配置了登录、自动刷新登录 Token 的拦截器
  • MybatisConfig:配置 MyBatis Plus 分页插件
  • RedissonConfig:创建单例 Redisson 客户端
  • WebExceptionAdvice:全局响应拦截器

controller 目录:存放 Restful 风格的 API 接口

dto 目录:存放业务封装类,如 Result 通用响应封装(不推荐学习它的写法)

entity 目录:存放和数据库对应的 Java POJO,一般是用 MyBatisX 等插件自动生成

mapper 目录:存放操作数据库的代码,基本没有自定义 SQL,都是复用了 MyBatis Plus 的方法,不做重点学习。

service 目录:存放业务逻辑处理代码,需要重点学习

  • BlogServiceImpl:基于 Redis 实现点赞、按时间排序的点赞排行榜;基于 Redis 实现拉模式的 Feed 流,推荐学习
  • FollowServiceImpl:基于 Redis 集合实现关注、共同关注,推荐学习
  • ShopServiceImpl:基于 Redis 缓存优化店铺查询性能;基于 Redis GEO 实现附近店铺按距离排序,推荐学习
  • UserServiceImpl:基于 Redis 实现短信登录(分布式 Session),推荐学习(虽然没有真的实现短信登录,而是通过日志打印验证码代替)
  • VoucherOrderServiceImpl:基于 Redis 分布式锁、Redis + Lua 两种方式,结合消息队列,共同实现了秒杀和一人一单功能,非常值得学习
  • VoucherServiceImpl:添加优惠券,并将库存保存在 Redis 中,为秒杀做准备。

utils 目录:存放项目内通用的工具类,需要重点学习

  • CacheClient:封装了通用的缓存工具类,涉及泛型、函数式编程等知识点,值得学习
  • RedisConstants:保存项目中用到的 Redis 键、过期时间等常量,值得学习
  • RedisIdWorker:基于 Redis 的全局唯一自增 id 生成器,值得学习
  • RedisTokenInterceptor:自动刷新 Redis 登录 Token 有效期,值得学习
  • SimpleRedisLock:简单的 Redis 锁实现,了解即可,一般用 Redisson
  • UserHolder:线程内缓存用户信息,可以学习

学习建议

  1. 这个项目几乎用到了 Redis 的所有主流特性,非常适合已经学完 Spring Boot、还未系统学习过 Redis 的后端同学,其中秒杀功能、一人一单的实现需要格外重点学习。
  2. 课程质量极高,一句不少、一句不多、幽默风趣、百万 PPT,还能学到库表设计、代码抽象复用、JMeter 压力测试工具等实用知识。后端的初学者可以只看 p1 - p95、以及 p134 - p139 的最佳实践部分,高级篇和原理篇等把项目做完、且其他主流技术(如消息队列、微服务)学的差不多了,等面试前再看就行。
  3. 虽然项目的实现完整度一般,但是有难度的功能基本都实现了,建议有能力的同学把它完整实现,完全可以写在简历上。
  4. 在学习的过程中,可以多使用 Redis 可视化管理工具来观察数据的变化。比如 Quick Redis(https://quick123.net/)、RESP 等。
  5. 项目缺乏管理端,可以自行实现如店铺管理、点评审核等功能。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员鱼皮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 项目介绍
    • 项目功能
    • 项目资料
    • 技术栈
      • 后端
        • 前端
          • 技术架构图
          • 学习重点
          • 快速启动项目
          • 项目学习
            • 课程学习
              • 代码学习
              • 学习建议
              相关产品与服务
              云数据库 Redis
              腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档