电商

  • 市场
  • 2013:79万笔/分钟
  • 2014:13.4万亿,双11支付宝交易峰值285万笔/分钟
  • 2015:50万亿
  • 技术特点
  • 一个Tomcat:500并发
  • 分布式:上万并发
  • 高并发、集群、负载均衡、高可用(冗余)
  • 海量数据
  • 业务复杂
  • 系统安全:记录日志
  • 架构
  • Lamp:linux apache mysql php
  • 小型机(ibm)+oracle+emc
  • 廉价设备+分布式+java+mysql+缓存

项目概述

  • 技术选型
  • 数据库:mysql
  • Dao层:mybatis、数据库连接池(德鲁伊druid)
  • 缓存:redis
  • 搜索:solr
  • Service层:spring
  • 表现层:springmvc、jstl、EasyUI、jsp、freemaker
  • 图片服务器:FastDFS(分布式文件系统)
  • 反向代理服务器:nginx
  • 定时器:Quartz
  • Web服务器:Tomcat
  • 工程管理:maven
  • 分布式架构
  • 优点
  • 把模块拆分,使用接口通信,降低模块之间耦合度
  • 把项目拆分成若干子项目,不同团队负责不同子项目
  • 增加功能时只需增加一个子项目,调用其他系统的接口即可
  • 可灵活地进行分布式部署
  • 缺点
  • 系统间需要远程通信,接口开发增加工作量
  • 人员配置
  • 产品经理:3人,做什么(需求)
  • 项目经理:1人,怎么做
  • 前端:5人,静态页面
  • 后端:20人,实现功能
  • 测试:5人
  • 运维:3人,发布及维护

[项目] 淘淘商城 Part.1_配置文件

后台搭建

  • 使用maven管理工程
  • 创建聚合工程,每个模块都是一个jar包,可被其他系统依赖
  • Taotao-parent
  • 打包方式为pom
  • pom文件中添加项目用到的所有jar包版本
  • Taotao-common
  • 打包方式为jar包
  • Taotao-manager
  • 打包方式为pom
  • taotao-manager-pojo
  • 打包方式为jar
  • taotao-manager-dao
  • 打包方式为jar
  • 依赖mybatis
  • taotao-manager-service
  • 打包方式为jar
  • 依赖Taotao-manager-dao
  • 依赖spring
  • taotao-manager-web
  • 打包方式为war
  • 依赖Taotao-manager-service
  • Tomcat插件
  • 在聚合工程中添加
  • 将Taotao-parent、Taotao-common安装到本地仓库

[项目] 淘淘商城 Part.1_jar包_02

svn使用

  • VisualSVN Server
  • 上传到svn,忽略setting文件夹,和.classpath,.project文件
  • 下载后需转换成maven项目,使用导入“存在的maven工程”导入Eclipse

ssm框架整合

  • Dao层
  • 整合mybatis和spring
  • jar包
  • mybatis的jar包
  • Mysql数据库驱动
  • 数据库连接池
  • Mybatis和spring的整合包
  • Spring的jar包

  • 配置文件
  1. mybatis的配置文件
  2. Spirng的配置文件
  • 数据库连接池
  • SqlSessionFactory
  • mapper文件扫描器
  • Service层
  • spring的jar包
  • 配置文件:applicationContext-service.xml
  • 配置包扫描器,扫描所有带@Service注解的类
  • 事务配置
  • 配置文件:applicationContext-trans.xml 
  1. 事务管理器
  2. 配置tx
  3. 配置切面 
  • 表现层
  • springmvc
  • 配置文件:springmvc.xml
  • 配置注解驱动
  • 配置视图解析器
  • 包扫描器,@Controller注解
  • Web.xml
  • Springmvc的前端控制器
  • Spring容器初始化的listener

测试框架

  • 需求
  • 根据id查询商品信息,返回json数据
  • 实现  
  • DAO层:查询tb_item,根据商品id查询,可用逆向工程生成的代码
  • Service层:接收商品id,调用mapper查询商品信息,返回商品的pojo
  • Controller层:接收商品id,调用Service返回一个商品的pojo,直接响应pojo,需返回json,使用@ResponseBody