该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

介绍

  1. 项目介绍:课设项目,一个学校学习交流社区网站。该项目能够通过学校教务系统账号 申请账号,发布文章,上传学习资料。有个人主页,查看自己发布的文章等功能。
  2. 技术栈:html、css、jq、ajax、ssm、mysql、restful 等。
  3. 职责:负责项目的整个代码编写。前端主页页面、文章查看页面、文件上传页面、个人 主页等。后端认证授权实现,登录注册邮件发送,通用文件上传接口等。
  4. 技术实现
    1. 接口访问的控制,有认证授权子业务。采用适配器、策略、责任链模式。依赖 token,用户、资源等的权限表。
    2. 注册的邮件发送,邮件分发子业务。Futrue 模式实现异步处理邮件发送请求。生产 者-消费着模式处理邮件发送请求,消息队列为环形队列。实现对 java mail 包的 transport 连接对象管理的简易连接池。
    3. 频繁获取的热点文章,缓存子业务。采用 lru 缓存淘汰算法,高点击的文章保存到 java 内存中。
    4. 文件上传,通用文件上传子业务。根据数据库 file_info 表中文件上传限制等信 息,对文件是否可以上传进行判断。文件保存直接采用 nio 直接缓存区,文件的读 取采用 nio 的分散读取接口。
    5. 防表单不断提交。采用 token 时效性,用 spring aop 技术,对有提交功能的接口进 行短时间重复提交判断。

业务模块

认证授权子业务

设计模式
  • 适配器模式
  • 策略模式
  • 责任链模式
依赖
  • token等加密算法
  • 用户、资源等的权限表设计
类图

security

邮件子业务

模式
  • Futrue模式 (以实现异步)
  • 生产者 - 消费者模式
数据结构
  • 环形队列 (作为消息队列)
  • 简易连接池
依赖
  • java mail包
  • 线程池、锁
时序图

image-20201024123918641

缓存池子业务

实现原理
  • lru缓存淘汰算法思路
依赖
  • 优先队列、线程安全Map
  • 线程池、锁

文件功能子业务

  • 通用文件上传
  • 保存文件过程中使用nio直接缓存区
  • 文件读取采用nio的分散读取接口

其他业务

文章
  • 上传
  • 浏览
  • 其他
防恶意请求
  • 防止发布的不段提交,采用token标识符思路,使用了aop技术实现。

空文件

简介

社区网站-ssm项目,前后端分离项目,后端认证授权实现、异步邮件发送、自实现缓存池、通用文件上传接口等。 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化