京淘项目学习 --- Day01

1. 京淘项目架构设计

1.1 电商网站行业特点

1.1.1 高并发

概念: 同一时间内,有大量的用户访问服务器.
常识: tomcat服务器能够支持的并发链接数 220个/秒 (软件依赖硬件设备) 生产环境
升级: tomcat调优设计 增加tomcat运行内存 JVM调优 tomcat可以支持1000个/秒
危害: 如果服务器处于高负载运行环境 极其容易产生宕机现象. 用户响应不及时(主要矛盾) 用户体验差. 赔款 条款规定

1.1.2 分布式思想

1).分布式计算 将任务进行拆分 拆分为若干个计算单元 之后由不同的线程执行再有特定的组件进行汇总. (大数据)
例子: 一个人完成一项任务(线程)需要10个小时,问10个人同时干活要多久1个小时完成.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tPMtzKm7-1614606602431)(D:\文件\达内培训笔记\第三阶段\20210301095241164.png)]2).分布式系统
说明:由于业务需要 将复杂程序按照特定的规则进行拆分.
规则1: 按照业务模块拆分 前端/秒杀/商品/后端…
规则2: 按照层级拆分 pojo/Mapper(Dao)/Service/Controller/VO/页面
作用: 在架构设计环节实现了代码的松耦合.(解耦) 提高网站扩展性.

作用:在架构设计换机实现代码的松耦合(解耦),提高网站的扩展性

1.1.3 集群/高可用性(HA)

集群概念:由多台服务器公共完成

高可用概念:如果在服务器运行过程中发生了宕机的现在,则无需人为的干预,程序可以自动实现故障的迁移。

1.1.4 高可用性

国内安全做的最好的:阿里巴巴(其中有支付宝)

阿里风控系统:动态监控交易是否安全(指纹/刷脸支付)

1.2 京淘项目架构设计

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GBUOiZ6t-1614606602435)(D:\文件\达内培训笔记\第三阶段\下载.png)]

2 关于京淘表设计

2.1 常见表关系

实质:看问题的角度不同,则得到的结果不同,切记站在一头考虑问题

2.1.1 一对一

例子1: 用户表----用户详情表
分析: 1个用户 -----> 1个详情表信息
1个详情 -----> 1个用户

2.1.2 一对多

案例:  用户和订单
分析:   1个用户	----->  多个订单
	   1个订单   ------> 1个用户

2.1.3 多对多

规则: 多对多是双向一对多
案例: 用户 —角色 — 权限
分析: 1个用户-------多个角色 1->多
1个角色-------多个用户 1->多

2.1.4 京淘物理模型图设计

补充内容:
1.表与表关联关系通过主外键进行关联.
2.主键不能重复的.
3.外键如果不做特殊要求(唯一性约束) 可以重复

读表:
规则1: 主键和外键 同一行中 一个主键对应一个外键 一对一的
多行中 一个外键对应 多个主键 一对多

**规则2: 多对多: 多对多一般都会有中间表 3张表组成 **

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9FbY4a2p-1614606602437)(D:\文件\达内培训笔记\第三阶段\20210301115012594.png)]

2.2 导入数据库

动态导入数据库:数据库中新建一个查询,然后将是SQL文件CV进去运行后刷新即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xpy5KPxa-1614607078766)(在这里插入图片描述

3 IDEA环境搭建

3.1 新建工作空间

在本地目录中新建文件目录,这里需要注意的是,新建的目录需要在IDEA的存储路径下,之后直接在IDEA 中 File --> Open —> 选择创建的文件导入即可。

3.2 修改IDEA 配置

3.2.1 安装Lombok插件

3.2.2 修改键位

在keymap中修改操作键位为Eclise

3.2.3 自动匹配大小写

3.2.4 设定自动编译

设定自动构建编译后,程序在进行修改过程中,不需要rebuild。

3.2.5 设定自动保存

设置程序在程序在没有操作1秒后自动保存

3.3 maven

3.3.1 Maven说明

  • Maven项目对象模型(pom),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件

3.3.2 Maven工作原理

  • 部件分为:本地仓库(自己项目用到的jar包文件)、私服镜像(连接中央仓库的中转站)、中央仓库(管理各个公司/组织开源jar包文件)

3.3.2 关于setting文件说明

  1. 本地厂库位置

  2. 厂库位置根据本地仓库地址对jar包进行存储

  3. 私服镜像设定 ---- 这里设定私服镜像的地址和描述

  4. jdk环境配置 ---- 这里设定jdk的版本

  5. Maven配置 ---- 这里设置maven的环境配置,在设置Settings后,第三步会自动变更为本地仓库的位置

3.4 创建maven项目

  1. 创建项目 ---- 选择项目 —> File — > New Model —> 选择spring Initializr + Next

  1. 选择依赖项

3.5 关于maven操作说明

3.5.1 关于坐标说明

说明:maven的坐标与本地仓库进行绑定.通过坐标查询本地仓库中的jar包文件 之后进行项目的依赖.
异常信息: 如果maven坐标报错 则可能是导入异常 需要检查版本信息及本地仓库中的jar包是否正确.

	<!--maven的依赖项   添加jar包文件 导入该项目-->
	<dependency>
		<!--组ID:一般都是公司域名倒写   -->
		<groupId>org.springframework.boot</groupId>
		<!--项目名称-->
		<artifactId>spring-boot-starter-web</artifactId>
		<!--版本号-->
		<version>2.4.3</version>
	</dependency>

3.5.2 关于maven jar包传递性说明

说明: 如果A.jar 依赖 B.jar, B.jar 依赖 C.jar 当程序添加A.jar包时.maven会自动的解析动态依赖 A/B/C三个包文件.

jar包查询网址: https://mvnrepository.com/

工作原理:
当maven添加jar包文件时,会通过依赖的坐标去本地仓库中查找对应的jar包文件.之后解析该文件下的POM.xml文件,如果该文件中有自己的依赖项,则重复执行上述操作,直到所有的依赖项全部加载完成为止.

        <dependency>
            <!--组ID:一般都是公司域名倒着写-->
            <groupId>org.springframework.boot</groupId>
            <!--项目名称-->
            <artifactId>spring-boot-starter-web</artifactId>
            <!--版本号-->
            <version>2.4.3</version>
        </dependency>

maven这么做的意义: 主要解决了jar包依赖冲突问题.

3.5.3 Maven如何保证jar包传递的安全性

知识讲解: SHA1算法
SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。

知识补充:

  1. 如果对同一个数据进行hash(sha1)计算 答: 结果是否相同 必然相同…
  2. 如果对不同的数据进行hash计算 问: hash结果是否不同? 不一定 HASH碰撞
  3. 如果对1M, 1K的数据 进行相同的hash计算 问:计算速度谁快 hash不会因为内容大小而影响速度

4 关于SpringBoot相关配置说明

4.1 关于POM.xml文件说明

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--
        parent标签:定义父级jar包文件 一般的父级打包类型 jar包(Java程序)/war包(web程序)/pom(聚合工程)
        SpringBoot需要依赖spring/springMVC等的相关配置信息。
        统一定义了当前SpringBoot版本的相关依赖jar包信息,该依赖信息可以被子项目继承

        注意事项:springboot整合了当前主流的框架jar包   某些特殊的项目需要自己单独整合
    -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.jt</groupId>
    <artifactId>springboot_demo1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot_demo1</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>

        <!--maven的依赖 添加jar包文件 导入该项目
            需要啥功能,单独导入依赖包即可
        -->
        <dependency>
            <!--组ID:一般都是公司域名倒着写-->
            <groupId>org.springframework.boot</groupId>
            <!--项目名称-->
            <artifactId>spring-boot-starter-web</artifactId>
            <!--版本号-->
            <version>2.4.3</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <!--执行测试代码时使用-->
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <!--插件信息-->
        <plugins>
            <!-- 负责maven相关操作 项目 编译/测试/打包等操作 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

猜你喜欢

转载自blog.csdn.net/muyi_upup/article/details/114272727
今日推荐