CGB2011JTday01

1.京淘项目架构设计

1.1电商网站行业特点

1.1.1 高并发

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

1.1.2 分布式思想

1).分布式计算 将任务进行拆分 拆分为若干个计算单元 之后由不同的线程执行再有特定的组件进行汇总. (大数据)
例子: 一个人完成一项任务(线程)需要10个小时,问10个人同时干活要多久1个小时完成.
在这里插入图片描述
2).分布式系统
说明:由于业务需要 将复杂程序按照特定的规则进行拆分.
规则1: 按照业务模块拆分 前端/秒杀/商品/后端…
规则2: 按照层级拆分 pojo/Mapper(Dao)/Service/Controller/VO/页面
作用: 在架构设计环节实现了代码的松耦合.(解耦) 提高网站扩展性.

1.1.3 集群/高可用性(HA)

集群概念: 由多台服务器公共完成同一项任务
HA概念: 如果在服务器运行过程中发生了宕机的现象,则无需人为的干预,程序可以实现自动的故障迁移.

1.1.4 安全性

国内安全做的最好的: 阿里巴巴(支付宝) 技术研发部: 达摩院 安全部: 神盾局(安全专家/黑客) 360安全卫士(最大xx软件)
阿里风控系统: 动态监控交易是否安全.(指纹/刷脸支付)
假设:某个人盗取了你的手机信息.
1.判断是否为好友
2.判断你们之前是否有交易记录
3.登录地点是否为常用地点.
4.转账账户是否异常…
5.是否重置过交易密码…
交易存在风险. 第二天才可能受理.

1.2京淘架构设计

在这里插入图片描述

2.关于京淘表设计

2.1 常见表关系

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

2.1.1 一对一

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

  
  
  • 1
  • 2
  • 3

2.1.2 一对多

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

  
  
  • 1
  • 2
  • 3

2.1.3 多对多

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

2.1.4 京淘物理模型图设计

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

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

规则2: 多对多: 多对多一般都会有中间表 3张表组成.
在这里插入图片描述

2.2 导入数据库

1).新建数据库链接地址
在这里插入图片描述
2).动态导入数据库
在这里插入图片描述

3.IDEA环境搭建

3.1 新建工作空间

在本地工作目录中新建文件目录
在这里插入图片描述

3.2 利用IDEA打开新空间

File -----Open ----- 选择上述文件目录 即可
在这里插入图片描述

3.3 修改IDEA 配置

3.3.1 安装lombok插件

在这里插入图片描述

3.3.2 修改键位

在这里插入图片描述

3.3.3 自动匹配大小写

在这里插入图片描述

3.3.4 设定自动编译

在这里插入图片描述

3.3.5 设定自动保存

在这里插入图片描述

3.4 maven

3.4.0 Maven说明

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

3.4.1 maven文件说明

注意事项: 我们是专业的开发人员 所有要求软件 路径不要有中文/空格/特殊字符/尽量不要放C盘.
在这里插入图片描述

3.4.2 Maven工作原理复习

部件: 本地仓库 私服镜像 中央仓库
关于mavenjar包下载异常:
在这里插入图片描述

3.4.2 关于settings文件说明

1).本地仓库地址
在这里插入图片描述
2).仓库位置
在这里插入图片描述
3).私服镜像设定
在这里插入图片描述
4). jdk环境配置

 <profile>
   <id>jdk-1.8</id>
   <activation>
	<activeByDefault>true</activeByDefault>
      <jdk>1.8</jdk>
   </activation>
   <properties>
	   <maven.compiler.source>1.8</maven.compiler.source>
	   <maven.compiler.target>1.8</maven.compiler.target>
	   <maven.compiler.compilerVersion>
        1.8
       </maven.compiler.compilerVersion>
	 </properties>
   </profile>

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

5).maven配置

在这里插入图片描述

3.4.3 创建maven项目

1).创建项目
在这里插入图片描述
2).选择依赖项
在这里插入图片描述

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>

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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文件,如果该文件中有自己的依赖项,则重复执行上述操作,直到所有的依赖项全部加载完成为止.
在这里插入图片描述
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>
<span class="token operator">&lt;</span><span class="token operator">!</span><span class="token operator">--</span>
	parent定义父级jar包文件  一般的父级的打包类型	jar包 java程序 <span class="token operator">/</span>war包   web程序<span class="token operator">/</span>POM 聚合工程
	SpringBoot需要依赖spring<span class="token operator">/</span>springMVC等的相关jar包文件
	统一定义了当前SpringBoot版本的相关依赖jar包信息<span class="token punctuation">.</span>该依赖信息可以被子项目继承
	注意事项<span class="token operator">:</span> SpringBoot整合当前主流的框架jar包  某些特殊的项目需要自己单独整合
<span class="token operator">--</span><span class="token operator">&gt;</span>
<span class="token generics function"><span class="token punctuation">&lt;</span>parent<span class="token punctuation">&gt;</span></span>
	<span class="token generics function"><span class="token punctuation">&lt;</span>groupId<span class="token punctuation">&gt;</span></span>org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>boot<span class="token operator">&lt;</span><span class="token operator">/</span>groupId<span class="token operator">&gt;</span>
	<span class="token generics function"><span class="token punctuation">&lt;</span>artifactId<span class="token punctuation">&gt;</span></span>spring<span class="token operator">-</span>boot<span class="token operator">-</span>starter<span class="token operator">-</span>parent<span class="token operator">&lt;</span><span class="token operator">/</span>artifactId<span class="token operator">&gt;</span>
	<span class="token generics function"><span class="token punctuation">&lt;</span>version<span class="token punctuation">&gt;</span></span><span class="token number">2.4</span><span class="token number">.3</span><span class="token operator">&lt;</span><span class="token operator">/</span>version<span class="token operator">&gt;</span>
	<span class="token operator">&lt;</span>relativePath<span class="token operator">/</span><span class="token operator">&gt;</span> <span class="token operator">&lt;</span><span class="token operator">!</span><span class="token operator">--</span> lookup parent from repository <span class="token operator">--</span><span class="token operator">&gt;</span>
<span class="token operator">&lt;</span><span class="token operator">/</span>parent<span class="token operator">&gt;</span>
<span class="token generics function"><span class="token punctuation">&lt;</span>groupId<span class="token punctuation">&gt;</span></span>com<span class="token punctuation">.</span>jt<span class="token operator">&lt;</span><span class="token operator">/</span>groupId<span class="token operator">&gt;</span>
<span class="token generics function"><span class="token punctuation">&lt;</span>artifactId<span class="token punctuation">&gt;</span></span>springboot_demo1<span class="token operator">&lt;</span><span class="token operator">/</span>artifactId<span class="token operator">&gt;</span>
<span class="token generics function"><span class="token punctuation">&lt;</span>version<span class="token punctuation">&gt;</span></span><span class="token number">0.0</span><span class="token number">.1</span><span class="token operator">-</span>SNAPSHOT<span class="token operator">&lt;</span><span class="token operator">/</span>version<span class="token operator">&gt;</span>
<span class="token generics function"><span class="token punctuation">&lt;</span>name<span class="token punctuation">&gt;</span></span>springboot_demo1<span class="token operator">&lt;</span><span class="token operator">/</span>name<span class="token operator">&gt;</span>
<span class="token generics function"><span class="token punctuation">&lt;</span>description<span class="token punctuation">&gt;</span></span>Demo project <span class="token keyword">for</span> Spring Boot<span class="token operator">&lt;</span><span class="token operator">/</span>description<span class="token operator">&gt;</span>
<span class="token generics function"><span class="token punctuation">&lt;</span>properties<span class="token punctuation">&gt;</span></span>
	<span class="token generics function"><span class="token punctuation">&lt;</span>java<span class="token punctuation">.</span>version<span class="token punctuation">&gt;</span></span><span class="token number">1.8</span><span class="token operator">&lt;</span><span class="token operator">/</span>java<span class="token punctuation">.</span>version<span class="token operator">&gt;</span>
<span class="token operator">&lt;</span><span class="token operator">/</span>properties<span class="token operator">&gt;</span>
<span class="token generics function"><span class="token punctuation">&lt;</span>dependencies<span class="token punctuation">&gt;</span></span>

	<span class="token operator">&lt;</span><span class="token operator">!</span><span class="token operator">--</span>maven的依赖项   添加jar包文件 导入该项目
		需要什么功能  单独依赖某些包即可<span class="token punctuation">.</span>
	<span class="token operator">--</span><span class="token operator">&gt;</span>
	<span class="token generics function"><span class="token punctuation">&lt;</span>dependency<span class="token punctuation">&gt;</span></span>
		<span class="token operator">&lt;</span><span class="token operator">!</span><span class="token operator">--</span>组ID<span class="token operator">:</span>一般都是公司域名倒写   <span class="token operator">--</span><span class="token operator">&gt;</span>
		<span class="token generics function"><span class="token punctuation">&lt;</span>groupId<span class="token punctuation">&gt;</span></span>org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>boot<span class="token operator">&lt;</span><span class="token operator">/</span>groupId<span class="token operator">&gt;</span>
		<span class="token operator">&lt;</span><span class="token operator">!</span><span class="token operator">--</span>项目名称<span class="token operator">--</span><span class="token operator">&gt;</span>
		<span class="token generics function"><span class="token punctuation">&lt;</span>artifactId<span class="token punctuation">&gt;</span></span>spring<span class="token operator">-</span>boot<span class="token operator">-</span>starter<span class="token operator">-</span>web<span class="token operator">&lt;</span><span class="token operator">/</span>artifactId<span class="token operator">&gt;</span>
		<span class="token operator">&lt;</span><span class="token operator">!</span><span class="token operator">--</span>版本号<span class="token operator">--</span><span class="token operator">&gt;</span>
	<span class="token operator">&lt;</span><span class="token operator">/</span>dependency<span class="token operator">&gt;</span>

	<span class="token generics function"><span class="token punctuation">&lt;</span>dependency<span class="token punctuation">&gt;</span></span>
		<span class="token generics function"><span class="token punctuation">&lt;</span>groupId<span class="token punctuation">&gt;</span></span>org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>boot<span class="token operator">&lt;</span><span class="token operator">/</span>groupId<span class="token operator">&gt;</span>
		<span class="token generics function"><span class="token punctuation">&lt;</span>artifactId<span class="token punctuation">&gt;</span></span>spring<span class="token operator">-</span>boot<span class="token operator">-</span>starter<span class="token operator">-</span>test<span class="token operator">&lt;</span><span class="token operator">/</span>artifactId<span class="token operator">&gt;</span>
		<span class="token operator">&lt;</span><span class="token operator">!</span><span class="token operator">--</span>执行测试代码时有效<span class="token operator">--</span><span class="token operator">&gt;</span>
		<span class="token generics function"><span class="token punctuation">&lt;</span>scope<span class="token punctuation">&gt;</span></span>test<span class="token operator">&lt;</span><span class="token operator">/</span>scope<span class="token operator">&gt;</span>
	<span class="token operator">&lt;</span><span class="token operator">/</span>dependency<span class="token operator">&gt;</span>
<span class="token operator">&lt;</span><span class="token operator">/</span>dependencies<span class="token operator">&gt;</span>


<span class="token generics function"><span class="token punctuation">&lt;</span>build<span class="token punctuation">&gt;</span></span>
	<span class="token operator">&lt;</span><span class="token operator">!</span><span class="token operator">--</span>插件信息<span class="token operator">--</span><span class="token operator">&gt;</span>
	<span class="token generics function"><span class="token punctuation">&lt;</span>plugins<span class="token punctuation">&gt;</span></span>
		<span class="token operator">&lt;</span><span class="token operator">!</span><span class="token operator">--</span>负责maven相关操作 项目 编译<span class="token operator">/</span>测试<span class="token operator">/</span>打包等操作  如果没有回报没有主清单 <span class="token operator">--</span><span class="token operator">&gt;</span>
		<span class="token generics function"><span class="token punctuation">&lt;</span>plugin<span class="token punctuation">&gt;</span></span>
			<span class="token generics function"><span class="token punctuation">&lt;</span>groupId<span class="token punctuation">&gt;</span></span>org<span class="token punctuation">.</span>springframework<span class="token punctuation">.</span>boot<span class="token operator">&lt;</span><span class="token operator">/</span>groupId<span class="token operator">&gt;</span>
			<span class="token generics function"><span class="token punctuation">&lt;</span>artifactId<span class="token punctuation">&gt;</span></span>spring<span class="token operator">-</span>boot<span class="token operator">-</span>maven<span class="token operator">-</span>plugin<span class="token operator">&lt;</span><span class="token operator">/</span>artifactId<span class="token operator">&gt;</span>
		<span class="token operator">&lt;</span><span class="token operator">/</span>plugin<span class="token operator">&gt;</span>
	<span class="token operator">&lt;</span><span class="token operator">/</span>plugins<span class="token operator">&gt;</span>
<span class="token operator">&lt;</span><span class="token operator">/</span>build<span class="token operator">&gt;</span>

</project>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

在这里插入图片描述

4.2 关于maven操作说明

1.compile 利用maven工具将程序进行编译 将.java文件 编译为.class文件
2.clean 删除target文件目录
3.install 将项目进行打包处理 target目录中保存 (个别同学没有该文件) / 本地仓库中保存

4.3 关于项目发布测试

1).准备jar包文件
在这里插入图片描述
2).java项目发布
在这里插入图片描述
万能的关闭命令: ctrl + c

4.4 作业

掌握什么是开箱即用 了解springBoot程序执行过程…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值