京淘项目实战开发-01

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京淘架构设计

  • 一个域名只能对应一个服务器,如果崩溃,整个服务器就无法运行
    在这里插入图片描述

  • 架构的优化,加上NGINX反向代理,分配给多个服务器
    在这里插入图片描述

  • 数据来源 我们数据来源于数据库,如果数据库崩溃,那么整个网站机会崩溃
    在这里插入图片描述

  • 解决这个问题:准备备用的数据库-M(主机)、数据库-S(丛机),并且数据库之间保持数据同步

在这里插入图片描述

  • 数据库连接(最大链接数1000),所以我们能剩则剩,这时候就需要用到缓存,主要解决查和写的问题
  • 信息中间件(空间换时间) 开辟一大块的内存空间,实现数据短暂存储的,异步思想:回调!
  • 生活案例:支付宝提现,会给你提示一个倒计时,其实就是等中间件,把数据发送给数据库
  • 如果没有中间件,缓存就会直接把数据一直写入数据库,容易照成堵塞的情况!
  • 中间件(平滑过渡)可以添加到任意位置,如果发生意外断电的情况,也不用担心,因为中间件有持久化操作
    在这里插入图片描述


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 京淘物理模型图设计

需要使用的软件:PowerDesigner15.1
微信公众号:淡若清风丶
在这里插入图片描述

回复:PowerDesigner15.1破解汉化版
获取软件下载链接


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


读表:

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

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

在这里插入图片描述


2.2 导入数据库

需要使用的软件:SQLYogEnterprise数据库和数据库表
下载软件:微信搜索公众号:淡若清风丶
在这里插入图片描述
回复:SQLyog 获取软件
回复:jt数据库 获取数据库表

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.3 关于settings文件说明

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

在这里插入图片描述4)IDEA配置maven地址
在这里插入图片描述

5). 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>

  </profiles>

3.4.4 创建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>

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>

	<!--
		parent定义父级jar包文件  一般的父级的打包类型	jar包 java程序 /war包 web程序 /POM 聚合工程
		SpringBoot需要依赖spring/springMVC等的相关jar包文件
		统一定义了当前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>
			<!--版本号-->
		</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>

在这里插入图片描述

4.2 关于maven操作说明

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String Hello(){
        return "Hello SpringBoot";
    }
}

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

4.3 关于项目发布测试

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值