我爱编程

个人项目

2018-04-13  本文已影响25人  没睡醒的鱼

数据库设计

分为如下几个模块:

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)

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

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中的外键 那这三个外键的作用是什么呢?在创建店铺的时候可以相应地确定店铺的地址,店铺的店铺种类(该店铺应该划分到哪一类下面),店铺的创建者(只能让创建者看到自己创建的店铺,别人创建的店铺看不到)。

项目使用到的模块

logback日志模块

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

logback中的三个重要概念:
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个*表示备份时间精确到分钟。

上一篇 下一篇

猜你喜欢

热点阅读