1 line
72 KiB
Plaintext
1 line
72 KiB
Plaintext
![]() |
{"code":"(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{363:function(t,s,a){\"use strict\";a.r(s);var n=a(42),e=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a(\"ContentSlotsDistributor\",{attrs:{\"slot-key\":t.$parent.slotKey}},[a(\"h1\",{attrs:{id:\"echo-开源社区系统\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#echo-开源社区系统\"}},[t._v(\"#\")]),t._v(\" Echo — 开源社区系统\")]),t._v(\" \"),a(\"hr\"),t._v(\" \"),a(\"h2\",{attrs:{id:\"📚-从本项目你能学到什么\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#📚-从本项目你能学到什么\"}},[t._v(\"#\")]),t._v(\" 📚 从本项目你能学到什么\")]),t._v(\" \"),a(\"ul\",[a(\"li\",[t._v(\"学会主流的 Java Web 开发技术和框架\")]),t._v(\" \"),a(\"li\",[t._v(\"积累一个真实的 Web 项目开发经验\")]),t._v(\" \"),a(\"li\",[t._v(\"掌握本项目中涉及的常见面试题的答题策略\")])]),t._v(\" \"),a(\"h2\",{attrs:{id:\"💻-核心技术栈\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#💻-核心技术栈\"}},[t._v(\"#\")]),t._v(\" 💻 核心技术栈\")]),t._v(\" \"),a(\"p\",[t._v(\"后端:\")]),t._v(\" \"),a(\"ul\",[a(\"li\",[t._v(\"Spring\")]),t._v(\" \"),a(\"li\",[t._v(\"Spring Boot 2.1.5 RELEASE\")]),t._v(\" \"),a(\"li\",[t._v(\"Spring MVC\")]),t._v(\" \"),a(\"li\",[t._v(\"ORM:MyBatis\")]),t._v(\" \"),a(\"li\",[t._v(\"数据库:MySQL 5.7\")]),t._v(\" \"),a(\"li\",[t._v(\"日志:SLF4J(日志接口) + Logback(日志实现)\")]),t._v(\" \"),a(\"li\",[t._v(\"分布式缓存:Redis\")]),t._v(\" \"),a(\"li\",[t._v(\"本地缓存:Caffeine\")]),t._v(\" \"),a(\"li\",[t._v(\"消息队列:Kafka 2.13-2.7.0\")]),t._v(\" \"),a(\"li\",[t._v(\"搜索引擎:Elasticsearch 6.4.3\")]),t._v(\" \"),a(\"li\",[t._v(\"安全:Spring Security\")]),t._v(\" \"),a(\"li\",[t._v(\"邮件:Spring Mail\")]),t._v(\" \"),a(\"li\",[t._v(\"分布式定时任务:Spring Quartz\")])]),t._v(\" \"),a(\"p\",[t._v(\"前端:\")]),t._v(\" \"),a(\"ul\",[a(\"li\",[t._v(\"Thymeleaf\")]),t._v(\" \"),a(\"li\",[t._v(\"Bootstrap 4.x\")]),t._v(\" \"),a(\"li\",[t._v(\"Jquery\")]),t._v(\" \"),a(\"li\",[t._v(\"Ajax\")])]),t._v(\" \"),a(\"h2\",{attrs:{id:\"🔨-开发环境\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#🔨-开发环境\"}},[t._v(\"#\")]),t._v(\" 🔨 开发环境\")]),t._v(\" \"),a(\"ul\",[a(\"li\",[t._v(\"操作系统:Windows 10\")]),t._v(\" \"),a(\"li\",[t._v(\"构建工具:Apache Maven\")]),t._v(\" \"),a(\"li\",[t._v(\"集成开发工具:Intellij IDEA\")]),t._v(\" \"),a(\"li\",[t._v(\"数据库:MySQL 5.7\")]),t._v(\" \"),a(\"li\",[t._v(\"应用服务器:Apache Tomcat\")]),t._v(\" \"),a(\"li\",[t._v(\"接口测试工具:Postman\")]),t._v(\" \"),a(\"li\",[t._v(\"压力测试工具:Apache JMeter\")]),t._v(\" \"),a(\"li\",[t._v(\"版本控制工具:Git\")])]),t._v(\" \"),a(\"h2\",{attrs:{id:\"🎨-功能列表\"}},[a(\"a\",{staticClass:\"header-anchor\",attrs:{href:\"#🎨-功能列表\"}},[t._v(\"#\")]),t._v(\" 🎨 功能列表\")]),t._v(\" \"),a(\"p\",[a(\"img\",{attrs:{src:\"https://gitee.com/veal98/images/raw/master/img/20210208222403.png\",alt:\"\"}})]),t._v(\" \"),a(\"ul\",[a(\"li\",[a(\"p\",[t._v(\"[x] \"),a(\"strong\",[t._v(\"注册\")])]),t._v(\" \"),a(\"ul\",[a(\"li\",[t._v(\"用户注册成功,将用户信息存入 MySQL,但此时该用户状态为未激活\")]),t._v(\" \"),a(\"li\",[t._v(\"向用户发送激活邮件,用户点击链接则激活账号(Spring Mail)\")])])]),t._v(\" \"),a(\"li\",[a(\"p\",[t._v(\"[x] \"),a(\"strong\",[t._v(\"登录 | 登出\")])]),t._v(\" \"),a(\"ul\",[a(\"li\",[a(\"p\",[t._v(\"进入登录界面,动态生成验证码,并将验证码短暂存入 Redis(60 秒)\")])]),t._v(\" \"),a(\"li\",[a(\"p\",[t._v(\"用户登录成功(验证用户名、密码、验证码),生成登录凭证且设置状态为有效,并将登录凭证存入 Redis\")]),t._v(\" \"),a(\"p\",[t._v(\"注意:登录凭证存在有效期,在所有的请求执行之前,
|