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

京淘项目实战开发-01相关推荐

  1. 零基础学习嵌入式入门以及项目实战开发【手把手教+国内独家+原创】

    零基础学习嵌入式入门以及项目实战开发[手把手教+国内独家+原创] 独家拥有,绝对经典                            创 科 之 龙 嵌入式开发经典系列教程 [第一期] 主讲人: ...

  2. boot sprint 项目结构_京淘项目03 08.28

    JSP动态web资源,打war包 ##spring boot整合JSP 创建项目 spring SpringBoot整合web资源,, 在main文件下,新建webapp文件夹,,把WEBINF目录粘 ...

  3. 嵌入式入门和项目实战开发【菜鸟内心深处最真实感想篇】

    菜鸟 参加嵌入式入门和项目实战开发后[终于拿到年到10万了]--千真万确!!绝无虚言!!!        这里述说我菜鸟学习嵌入式的内心深处最真实感受!!![希望大家不要拍砖]我只是我的学习嵌入式过程 ...

  4. jsp项目开发案例_Laravel 中使用 swoole 项目实战开发案例一 (建立 swoole 和前端通信)life...

    1 开发需要环境 工欲善其事,必先利其器.在正式开发之前我们检查好需要安装的拓展,不要开发中发现这些问题,打断思路影响我们的开发效率. 安装 swoole 拓展包 安装 redis 拓展包 安装 la ...

  5. jsp项目开发案例_Laravel中使用swoole项目实战开发案例一 (建立swoole和前端通信)

    Laravel中使用swoole项目实战开发案例二(后端主动分场景给界面推送消息) 工欲善其事,必先利其器.在正式开发之前我们检查好需要安装的拓展,不要开发中发现这些问题,打断思路影响我们的开发效率. ...

  6. Node项目实战开发-博客系统

    Nodejs项目实战开发-博客系统(已完结) 个人博客系统 欢迎访问我的博客~ MaXiaoYu's Bolg 前言: 开发技术 技术 版本 Node ^14.3.0 ejs ^3.1.3 expre ...

  7. 【创科之龙】零基础学习嵌入式开发以及项目实战开发【第二期视频】

    [创科之龙]零基础学习嵌入式开发以及项目实战开发[学习交流零基础火热进行ing] 大家好,我是aiku,上期的项目学习资料在电子发烧友论坛上分享,大家觉得都很好. 在这里我首先要感谢电子发烧友给我们的 ...

  8. aiku大神归来!送给初学者嵌入式项目实战开发

    aiku大神归来!送给初学者嵌入式项目实战开发 aiku嵌入式视频教程 地址:[创科之龙]基于安卓(android)Linux3.x平台下设备树专题 https://pan.baidu.com/s/1 ...

  9. [嵌入式Linux项目实战开发]基于QT4.7.4的音乐播放器实现与设计【2018年给力项目】

    [嵌入式Linux项目实战开发]基于QT4.7.4的音乐播放器实现与设计[2018年给力项目]是[创科之龙]团队aiku嵌入式视频教程系列制作的现有的音乐播放器. 主要功能实现: 1.新建工程,基类选 ...

最新文章

  1. java怎么加定时器,Spring中定时器实现
  2. 用二分类神经网络估算多分类神经网络迭代次数的经验公式
  3. python皮卡丘编程代码_再接再厉,用python编程13行代码解方程组(纯字符)
  4. android 使用Binder通信
  5. Nodejs线上日志部署
  6. java保留小数点后几位,不足的用0补
  7. jq多选按钮值_关于jquery的多选框获取值和状态回显
  8. BOM组件物料重复检查
  9. 【ORACLE】字符串操作 B字符串时A的一部分
  10. windows tcp ping 端口工具及使用方法
  11. 如何把wav转换为mp3?
  12. 金三银四,教你编写一份脱颖而出的简历,从而 offer 手到擒来,要参加校招的同学要提前准备了
  13. 浅聊矢量场 —— 3. 什么是旋度(Rotational Vector)
  14. 非线性规划模型、0-1整数规划模型
  15. Android AOSP 下载和编译
  16. 二分图的最大匹配算法
  17. 安全环保专题培训考试题
  18. NLP 1st (导入)
  19. [洛谷]P2108 学英语 (#模拟 -2.3)(#枚举 1.3)
  20. 实战-完整代码答题系统

热门文章

  1. 02 | 该如何选择消息队列?
  2. 吉他铺怎么看(很全)
  3. SAP MM库存盘点流程
  4. Hapi入门--独立路由
  5. 腾讯信鸽集成华为厂商通道
  6. Python-OpenCV-PS油画滤镜效果
  7. 学习笔记:新技术与新趋势(演讲者:王煜全-海银资本合伙人)
  8. 家用游戏机主机的发展历史
  9. ps抠图基础篇:最常用的四种抠图方法
  10. WebView加载String字符串