网站首页 > 技术文章 正文
帮粉丝找了一个基于SpringBoot的天猫商城项目,快速部署运行,所用技术:MySQL,Druid,Log4j2,Maven,Echarts,Bootstrap ...
免费给大家分享出来
前台演示
后台演示
天猫商城是一个基于SpringBoot的综合性B2C电商平台,基于Spring Boot的天猫商城,快速部署运行,所用技术:MySQL/Druid/Log4j2/Maven/Echarts/Bootstrap
需求设计天猫商城:
****用户从注册开始,到完成登录,浏览商品,加入购物车,进行下单,确认收货,评价等一系列操作。作为天猫商城的核心组成部分之一的天猫数据管理后台:包含商品管理,订单管理,类别管理,用户管理和交易额统计等模块,实现了对整个商城的一站式管理和维护。
注意事项
源码资料获取方式:关注小编+转发文章+私信【 078】免费获取!!!!
后台管理界面的订单图表没有数据为正常现象,该图表显示的为近7天的交易额。该项目同时兼容eclipse,但如有自行扩展代码的意愿,建议使用IDEA。
部署方式
1、打开 IntelliJ IDEA 导入项目
2、项目数据库为MySQL 5.7版本,在sqls文件夹中找到SQL文件并导入到数据库中
3、使用IDEA打开项目后,在maven面板刷新项目,下载依赖包
4、配置数据库连接并启动SpringBootApplication即可
后端界面
前端界面
作者的话
前后台业务代码,都是自主完成,后台都是专门设计的样式,前台是参考天猫自行开发界面**天猫商城源码
源码资料获取方式:关注小编+转发文章+私信【 078】免费获取!!!!
MySQL篇
1、数据库的三范式是什么
第一范式:列不可再分 第二范式:行为可以唯一区分,主键约束 第三范式:表的非主属性不能依赖与
其他表的非主属性 外键约束 且三大范式是一级一级依赖的,第二范式建立在第一范式上,第三范式
建立在第一第二范式上。
2、MySQL数据库引擎有哪些
如何查看mysql提供的所有存储引擎
mysql> show engines;
mysql常用引擎包括:MYISAM、Innodb、Memory、MERGE
MYISAM:全表锁,拥有较高的执行速度,不支持事务,不支持外键,并发性能差,占用空间
相对较小,对事务完整性没有要求,以select、insert为主的应用基本上可以使用这引擎
Innodb:行级锁,提供了具有提交、回滚和崩溃回复能力的事务安全,支持自动增长列,支持
外键约束,并发能力强,占用空间是MYISAM的2.5倍,处理效率相对会差一些
Memory:全表锁,存储在内容中,速度快,但会占用和数据量成正比的内存空间且数据在
mysql重启时会丢失,默认使用HASH索引,检索效率非常高,但不适用于精确查找,主要用于
那些内容变化不频繁的代码表
MERGE:是一组MYISAM表的组合
3、说说InnoDB与MyISAM的区别
- InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提
交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务; - InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;
- InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。
但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该
过大,因为主键太大,其他索引也都会很大。而MyISAM是非聚集索引,数据文件是分离的,
索引保存的是数据文件的指针。主键索引和辅助索引是独立的。 - InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用
一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快; - Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高;
4、数据库的事务
什么是事务?: 多条sql语句,要么全部成功,要么全部失败。
事物的特性:
数据库事务特性:原子性(Atomic)、一致性(Consistency)、隔离性(Isolation)、持久性
(Durabiliy)。简称ACID。
原子性:组成一个事务的多个数据库操作是一个不可分割的原子单元,只有所有操作都成功,
整个事务才会提交。任何一个操作失败,已经执行的任何操作都必须撤销,让数据库返回初始
状态。
一致性:事务操作成功后,数据库所处的状态和它的业务规则是一致的。即使数据不会被破坏。
如A转账100元给B,不管操作是否成功,A和B的账户总额是不变的。
隔离性:在并发数据操作时,不同的事务拥有各自的数据空间,它们的操作不会对彼此产生干扰
持久性:一旦事务提交成功,事务中的所有操作都必须持久化到数据库中。
5、索引是什么
官方介绍索引是帮助MySQL高效获取数据的数据结构。更通俗地说,数据库索引好比是一本书
前面的目录,能加快数据库的查询速度。
一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往是存储在磁盘上的文件中
的(可能存储在单独地索引文件中,也可能和数据一起存储在数据文件中)。
我们通常所说的索引,包括聚集索引、覆盖索引、组合索引、前缀索引、唯一索引等,没有特别
别说明,默认都是使用B+树结构组织(多路搜索树,并不一定是二叉的)的索引。
6、SQL优化手段有哪些
1、查询语句中不要使用select *
2、尽量减少子查询,使用关联查询(left join,right join,inner join)替代
3、减少使用IN或者NOT IN ,使用exists,not exists或者关联查询语句替代
4、or 的查询尽量用 union或者union all 代替(在确认没有重复数据或者不用剔除重复数据时,
union all会更好)
5、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
6、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表
扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有
null值,然后这样查询: select id from t where num=0
7、简单说一说drop、delete与truncate的区别
SQL中的drop、delete、truncate都表示删除,但是三者有一些差别delete和truncate只删除表的数据不删除表的结构 速度,一般来说: drop> truncate >delete delete
语句是dml,这个操作会放到rollback segement中,事务提交之后才生效; 如果有相应的trigger,执行
的时候将被触发. truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚.操作不触发trigger.
8、什么是视图
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是
有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。
9、 什么是内联接、左外联接、右外联接?
内联接(Inner Join):匹配2张表中相关联的记录。
左外联接(Left Outer Join):除了匹配2张表中相关联的记录外,还会匹配左表中剩余的记
录,右表中未匹配到的字段用NULL表示。
右外联接(Right Outer Join):除了匹配2张表中相关联的记录外,还会匹配右表中剩余的记
录,左表中未匹配到的字段用NULL表示。在判定左表和右表时,要根据表名出现在Outer Join的左右位置关系。
10、并发事务带来哪些问题?
在典型的应用程序中,多个事务并发运行,经常会操作相同的数据来完成各自的任务(多个用户对同一数据进行操作)。并发虽然是必须的,但可能会导致以下的问题。
脏读(Dirty read): 当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提
交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依据“脏数据”所做的操作可能是不正确的。丢失修改(Lost to modify): 指在一个事务读取一个数据时,另外一个事务也访问了该数
据,那么在第一个事务中修改了这个数据后,第二个事务也修改了这个数据。这样第一个事务
内容地修改结果就被丢失,因此称为丢失修改。 例如:事务1读取某表中的数据A=20,事务2也
读取A=20,事务1修改A=A-1,事务2也修改A=A-1,最终结果A=19,事务1的修改被丢失。
不可重复读(Unrepeatableread): 指在一个事务内多次读同一数据。在这个事务还没有结
同时,另一个事务也访问该数据。那么,在第一个事务中的两次读数据之间,由于第二个事务
因为修改导致第一个事务两次读取的数据可能不太一样。这就发生了在一个事务内两次读到的数据是不一样的情况,因此称为不可重复读。
幻读(Phantom read): 幻读与不可重复读的类似。它发生在一个事务(T1)读取了几行数
据,接着另一个并发事务(T2)插入了一些数据时。在随后的查询中,第一个事务(T1)就会发现多了一些原本不存在的记录,就好像发生了幻觉一样,所以称为幻读。
不可重复读和幻读区别:
不可重复读的重点是修改比如多次读取一条记录发现其中某些列的值被修改,幻读的重点在于新增或者删除比如多次读取一条记录发现记录增多或减少了。
源码资料获取方式:关注小编+转发文章+私信【 078】免费获取!!!!
猜你喜欢
- 2024-12-26 小程序echarts和分包使用 小程序echarts动态获取数据
- 2024-12-26 【开源资讯】ECharts 发布第 100 个版本 4.7.0
- 2024-12-26 Vue+Echarts可视化大屏系统前端雷达图设计(附代码)
- 2024-12-26 给大家开源分享上一回基于JS、ECharts的可视化大屏
- 2024-12-26 图形可视化系列之一ECharts瀑布图
- 2024-12-26 8、echarts 和 chart 对比(必会) echarts和highcharts
- 2024-12-26 echarts架构是如何设计的? echarts技术
- 2024-12-26 快收藏前端干货!antv初识:antv和echarts的对比
- 2024-12-26 数据可视化—Echarts图表应用 数据可视化图表制作工具
- 2024-12-26 基于 Vue3 + ECharts 的拖拽式低代码数据可视化开发平台
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)