Coder Social home page Coder Social logo

taotaomalls's Introduction

taotaoMalls

大型分布式购物网站-B2C项目(持续更新中) ##电商行业模式

  • B2B:企业到企业、商家到商家。例如阿里巴巴。
  • B2C:商家到客户。例如京东、淘宝商城
  • C2C:客户到客户。闲鱼。
  • O2O:线上到线下。美团、饿了么。

在互联网项目中尽可能的减少表的关联查询。

Sku:最小库存量单位。就是商品id,是商品最细粒度的划分,每一个sku都唯一对应一款商品,商品的颜色、配置。

##SSM框架整合 ###dao层

  • 1、配置数据源
  • 2、让spring容器管理SqlSessionFactory,单例存在
  • 3、把mapper的代理对象放到spring容器中。使用扫描包的方式加载mapper的代理对象。

###Service层

  • 1、事务管理
  • 2、需要把service实现类放到spring容器中管理

###表现层

  • 1、配置注解驱动
  • 2、配置视图解析器
  • 3、需要扫描controller

###web.xml

  • 1、spring容器的配置
  • 2、spring前端控制器的配置
  • 3、post乱码过滤器
  • 4、请求拦截

###数据库连接池:

Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。 Druid已经在阿里巴巴部署了超过600个应用,经过多年多生产环境大规模部署的严苛考验。

###配置静态资源映射:

<mvc:resources location="/WEB-INF/js/" mapping="/js/**"/>
<mvc:resources  location="/WEB-INF/css/" mapping="/css/**"/>

子容器可以访问父容器中的对象。

##分页插件pageHelper的使用 该分页插件对逆向工程生成的代码支持不好,不能对有查询条件的查询分页,会抛异常。

#图片保存位置 1、小型网站,传统项目是把图片放到Tomcat工程的image文件夹。

2、当并发增加后,就添加服务器,做tomcat集群。使用负载均衡服务器来决定存放到哪个服务器的image中。当图片传到tomcat1中到tomcat2中查找图片,我们可以将tomcat1和tomcat映射到另一台服务器上,然后做共享。或者在负载均衡中进行处理。

方案1:在负载均衡服务器上做一个session 映射,如果有记录则分发到原服务器上。

方案2:在负载均衡服务器中运行一个精灵线程,预测服务器压力过大时会自动把session转移压力过小的服务器中。

3、做专门的图片服务器。使用一个http服务器,Apache.或者Nginx。使用ftp服务上传图片,vsftpd

##图片服务器的搭建 使用centos7.0

需要把nginx的根目录指向ftp上传文件的目录。

##service层 接收Controller传递过来的参数,一个文件MultiPartFile对象。把文件上传到ftp服务器。生成一个新的文件。

使用map实现,Map中的数据应该包含error。

##Controller 接收页面传递过来的图片。调用service上传到图片服务器。返回结果。 参数:MultiPartFile uploadFile 返回值:返回json数据,应该返回一个pojo,PictureResult对象。

##富文本编辑器 //同步文本框中的商品描述 itemAddEditor.sync();

Service接收商品的pojo,把商品数据写入到tb_item中,返回resultMap

##商品描述的保存 商品信息和商品描述是分开存储的。把商品信息描述保存到tb_item_desc表中。

###规格参数

不同分类的规格参数不同,同一分类的规格项是相同的,值不同。

规格组: 规格项:规格值

同一类规格项的分组是相同的,规格参数个商品相关联。

##实现方案: ###方案1:使用多表来存储 每一类商品有多个分组,每个分组下有多个项,每个商品对应不同的规格参数。

商品分类表:Tb_item_cat

一对多:

商品规格分组表:Tb_item_param_group,外键,商品分类id

商品规格项:外键,商品规格分组id

商品表:

商品规格参数表:外键:商品id,商品规格项id,商品规格值。

SELECT  pg.group_name,pk.param_name,pv.param_value
FROM
	tb_item_param_value pv ,
	tb_item_param_key pk,
	tb_item_param_group pg
WHERE 
item_id=855739
AND pv.param_id=pk.id
AND pg.id=pk.group_id

该方案需要创建多张表来描述这个规格参数的关系,查询时需要复杂的sql来查询。如果规格参数的数据量是商品信息的几十倍的时候,数据量大的社会,查询效率非常低。可扩展性差。

###方案2 使用模板的思路来解决。 1、每一个商品分类对应一个规格参数模板。 每个商品对应一个唯一的规格参数,在添加商品时,可以根据规格参数的模板,生成一个表单。

实现流程:

不需要做多表关联。缺点:复杂的表单和json之间的转换。

创建规格参数模板

#前台 #系统架构分析 前台系统和服务层可以分开,降低了系统的耦合度。开发团队可以分开,提高了开发效率。系统可以分开灵活的进行分布式部署。 服务之间通信使用的接口通信,开发工作量提高。

使用SSM框架。pom文件添加依赖。

Spring、springmvc、jstl、jQuery、httpClient.

*.html:伪静态化,是给搜索引擎用的。

商品分类展示: 首页左侧的一个商品分类。页面做一个ajax请求,请求json数据含分类信息,得到json数据后初始化分类菜单。

###json跨域请求: 处于安全考虑,js设计时不允许跨域。域名不同;域名相同但是端口不同;只有域名相同,端口相同才可以访问。

可以使用jsonp来解决:jsonp,js跨域请求数据是不可以的,但是js跨域请求js脚本是可以的。所以我们可以把数据封装成一个js语句,跨域请求js脚本,可以得到此脚本。得到js脚本之后会立即执行。可以把数据作为参数传递到方法中。

URL_Serv: "http://localhost:8084/category.json"

//使用jsonp来实现跨域请求
    $.getJSONP(this.URL_Serv, category.getDataService);

MappingJacksonValue

taotaomalls's People

Contributors

sdksdk0 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

taotaomalls's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.