个人项目

作者: 没睡醒的鱼 | 来源:发表于2018-04-13 23:23 被阅读25次

数据库设计

分为如下几个模块:

  • tb_area:存储地址,主键为area_id
  • tb_head_line:存储首页轮播图,主键为line_id
  • tb_person_info:存储用户信息,主键为user_id
  • tb_product:存储商品信息,主键为product_id,表结构如下所示: tb_productbiaojieg

    这张表中外键的信息是这样的:

CONSTRAINT fk_product_procate FOREIGN KEY (product_category_id) REFERENCES tb_product_category (product_category_id),
CONSTRAINT fk_product_shop FOREIGN KEY (shop_id) REFERENCES tb_shop (shop_id)

分别表明这个商品属于哪个商品类别以及属于哪个店铺下面。

  • tb_product_category:商品种类信息,主键为product_category_id,表结构如下: tb_product_category表结构
  • tb_product_img:商品图片

  • tb_shop:店铺信息,表结构如下所示: tb_shop的表结构

    在创建这个表的时候有如下创建语句:

CONSTRAINT fk_shop_area FOREIGN KEY (area_id) REFERENCES tb_area (area_id),
CONSTRAINT fk_shop_profile FOREIGN KEY (owner_id) REFERENCES tb_person_info (user_id),
CONSTRAINT fk_shop_shopcate FOREIGN KEY (shop_category_id) REFERENCES tb_shop_category (shop_category_id)

分别有三个外键与tb_area,tb_person_info,tb_shop_category中的主键相关联,那第一个问题是什么是外键呢?可以查看这篇文章:mysql中的外键 那这三个外键的作用是什么呢?在创建店铺的时候可以相应地确定店铺的地址,店铺的店铺种类(该店铺应该划分到哪一类下面),店铺的创建者(只能让创建者看到自己创建的店铺,别人创建的店铺看不到)。

  • tb_shop_category:店铺种类信息,主键为shop_category_id,表结构如下所示: tb_shop_category的表结构

    当parent_id为null时,表示店铺为一级店铺类别;当parent_id等于shop_category_id时,表明它是一级店铺类别下的二级店铺类别

项目使用到的模块

  • 大的方面:店铺注册功能模块,店铺编辑模块,商品类别模块,商品模块,前端展示模块
  • 小的细分模块:logback日志系统,redis缓存,kapatcha验证码,Thumbnailator图片处理,DES加密模块,数据库主从分离,数据库和图片定期备份
    现在就来非常细致的剖析各个模块的作用以及各个模块使用到的知识点

logback日志模块

logback是一个开源的日志组件,logback由三个部分构成,logback-core,logback-classic,logback-access。其中logback-core是其他两个模块的基础。

logback中的三个重要概念:
  • Logger:日志记录器,把它关联到对应的context上后,主要用于存放日志对象,定义日志类型,级别。
  • Appender:指定日志输出的目的地,目的地可以是控制台,文件或者数据库
  • Layout:负责把事件转换成字符串,格式化日志信息的输出。
logback配置优先级顺序
  1. logback首先在classPath中寻找logback.groovy文件
  2. 如果没有找到,继续寻找logback-test.xml文件
  3. 如果没有找到,继续寻找logback.xml文件
  4. 如果仍然没有找到,则使用默认配置(打印到控制台)

    在本项目中首先添加maven依赖: logback的maven依赖
    再配置logback.xml

redis缓存:

关于redis的一些基础知识可以看这个:redis常见面试题 关于redis的过期时间的设置看这篇文章:redis键过期策略

kapatcha验证码

首先在maven中添加kapatcha的依赖,然后在web.xml中定义kapatcha的样式。在前端添加验证码控件并引入kapatcha;在codeUtil类中对输入的验证码与实际生成的验证码进行比较。

Thumbnailator图片处理

Thumbnailator是一个生成图像缩略图的java类库。首先在pom.xml中引入依赖,在imgUtil类中使用Thumbnailator给图片加水印,生成随机的文件名并返回到指定的路径中。

DES加密模块

关于一些DES加密的知识参考这篇文章DES加密算法原理
在项目中,使用DES加密来对数据库连接时的用户名和密码进行加密。首先在DESUtil类中编写加密和解密方法,对jdbc.properties中的明文进行加密,在spring-daox.xml中需要使用到用户名,密码进行数据库连接时再进行解密。

数据库主从分离

关于数据库的主从分离看这篇文章:mysql数据库主从配置详解

数据库和图片的定期备份

数据库备份

首先创建一个文件夹保存备份文件,在linux下实现数据库的备份的指令如下:


备份指令

大意就是把o2o.sql在/root/backup/sql/目录下备份,文件名为o2o+时间戳的格式

图片文件备份

在linux下面实现文件备份的指令:


图片备份

大意是把/user/baidu/work/image/upload/下面的图片文件打成压缩包放到/root/backup/image/image目录下
接着创建一个backup.sh,把上面两条命令放入backup.sh中,执行backup.sh就可以实现数据库和图片的备份。那怎么实现定期的数据备份呢?我们使用crontab来实现数据的定期备份,cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。首先输入:

crontab -e

这样就能设置crontab了。然后再输入如下指令实现定期备份: 定期备份

命令中的5个*表示备份时间精确到分钟。

相关文章

  • 个人项目

    数据库设计 分为如下几个模块: tb_area:存储地址,主键为area_id tb_head_line:存储首页...

  • [项目蓝图] 个人博客项目

    此项目属于萌新学习(>▽<),还请大佬们多多指教 _(:」∠)_该日记主要记录写Bug和改Bug的过程 项目介绍 ...

  • 个人博客项目

    源码地址:github示例:Yui_tycc的博客 (好久没更博客,等服务器换好之后也会在个人博客网站上更新,同时...

  • 个人项目推广

    一时兴起,搞了自己的开源项目或者是个人博客出来,虽然出发点常常并不是要利用这些得到多大的好处,而仅仅是出于一种保存...

  • 个人开发项目

    maitodo 一个简单的TODO应用,基于nodejs、express、ejs、mongodb开发。 地址是:h...

  • 个人项目沉淀

  • 个人项目思路

    1. RPA 保险报帐 报销 2. 工程 申报 3. 爬虫 抓取舞蹈老师招聘信息 自动发送申请信息 自我展示 4....

  • vue个人项目

    上来展示一个源码地址吧 https://github.com/sky-leaf/book访问地址:http://n...

  • 个人项目经历

    1、python Django框架,编写web后端,使用postgre数据库存储前段提交的数据 2、L4全局规划,...

  • 个人项目记录

    因公司业务需要,去往远方开发项目,大半年来除了加班还是加班,开发了三个后台系统,使用的vue-element-ad...

网友评论

    本文标题:个人项目

    本文链接:https://www.haomeiwen.com/subject/ehbhkftx.html