乐友商城学习笔记(一)

news/2024/4/27 11:36:32/文章来源:https://blog.csdn.net/fan2312/article/details/129108012

SpringCloud

  • 什么是SpringCloud
    • 在SpringBoot基础上构建的微服务框架
    • 固定步骤
      • 1.引入组件的启动器
      • 2.覆盖默认配置
      • 3.在引导类上添加相应的注解
  • eureka
    • 注册中心,服务的注册与发现
    • 服务端
      • 1.引入服务器启动器:eureka-server
      • 2.添加了配置
        • spring.application.name 服务名
        • eureka.client.service-url.defaultZone http://localhost:10086/eureka
        • eureka.server.eviction-interval-timer-in-ms 剔除无效连接的间隔时间
        • eureka.server.enable-self-preservation 关闭自我保护
      • 3.@EnableEurekaServer 开启eureka服务端功能
    • 客户端
      • 1.引入启动器:eureka-client
      • 2.添加配置
        • spring.application.name
        • eureka.client.service-url.defaultZone
        • eureka.instance.lease-renewal-interval-in-seconds 心跳时间
        • eureka.instance.lease-expiration-duration-in-seconds 过期时间
        • eureka.client.register-with-eureka
          • 是否注册给eureka容器
          • 默认true
        • eureka.client.fetch-registry
          • 是否拉取服务列表
          • 默认true
        • eureka.client.registry-fetch-interval-seconds 拉取服务的间隔时间
      • 3.@EnableDiscoveryClient 启用eureka客户端
  • ribbon
    • 负载均衡组件
    • eureka、feign以及zuul已集成
    • 配置负载均衡策略
      • <服务名>.ribbon.NFLoadBalancerRuleClassName 负载均衡策略的全路径
    • @LoadBalanced
      • 在RestTenplate的@Bean方法上
  • hystrix
    • 容错组件
    • 降级
      • 1.引入hystrix的启动器
      • 2.添加配置,超时时间的配置
      • 3.@EnableCircuitBreaker 启动熔断组件
        • @SpringCloudApplication
          • @SpringBootApplication
          • @EnableDiscoveryClient
      • 代码
        • 全局
          • 返回值和被熔断的方法返回值一致,不能有参数列表
          • 在类上@DefaultProperties(defaultFallback=“全局熔断方法名”)
          • 在具体的被熔断方法上@HystrixCommand
        • 局部
          • 返回值和参数列表与被熔断的方法一致
          • 在被熔断的方法上@HystrixCommand
          • (fallbackMethod=“熔断方法名”)
    • 熔断
      • close
        • 关闭状态
        • 所有请求都正常访问
      • open
        • 打开状态
        • 所有请求都无法访问
        • 触发:连续失败的比例大于50%或者失败次数不少于20次
        • 维持5s的休眠时间
      • half open
        • 半开状态
        • 释放部分请求通过
          • close 正常
          • open 不正常
        • 触发:休眠时间之后
  • feign
    • 远程调用组件
      • 集成ribbon和hystrix
      • 使代码更加优雅
    • 1.引入feign的启动器
    • 2.feign.hystrix.enable=true 开启熔断
    • 3.@EnableFeignClients 开启feign的功能
    • 代码
      • 定义一个接口
        • @FeignClient(value=“服务名” fallback=实现类.class)
        • 方法上的注解使用的是SpringMVC的注解
  • zuul
    • 网关组件
      • 路由
      • 过滤器
    • 1.引入启动器
    • 2.添加配置
      • 路由的配置
      • zuul.prefix 路由前缀
      • 四种路由配置方式
        • 1
          zuul.routes.<路由名>.path=/service-provider/** 
          zuul.routes.<路由名>.url=http://localhost:8081
          
        • 2
           zuul.routes.<路由名>.path=/service-provider/**  zuul.routes.<路由名>.serviceId=service-provider
          
        • 3
           zuul.routes.<路由名:服务名>=/service-provider/**  
          
        • 4 不配置,默认服务的入口就是以服务名为前缀
    • 3.@EnableZuulProxy 开启zuul网关组件
    • 自定义过滤器
      • IZuulFilter
        • 默认的抽象实现类:ZuulFilter
      • filterType
        • pre
        • post
        • route
        • error
      • filterOrder 执行顺序:返回值越小优先级越高
      • shouldFilter
        • 是否执行run方法
        • 执行 true
      • run 过滤器的具体逻辑
      • 四种执行顺序
        • pre–>route–>post
        • 异常
          • 直接执行error–>post,pre或者route出现异常
          • error–>响应,post出现异常
          • error–>post,error出现异常

项目分类

  • 传统项目
    • 各种企业里面用的管理系统
    • 需求方:公司、企业内部
    • 盈利模式:项目本身卖钱
    • 技术侧重点:业务功能
  • 互联网分类
    • 门户网站、电商网站
    • 需求方:广大用户群体
    • 盈利模式:虚拟币、增值服务、广告收益
    • 技术侧重点:网站性能、业务功能

常见的电商模式

在这里插入图片描述

专业术语

在这里插入图片描述
在这里插入图片描述

项目开发流程

  • 项目经理:管人
  • 产品经理:设计需求模型
  • 测试
  • 前端:大前端。UI、前端、nodejs、reactjs、vuejs、mongoDB
  • 后端
  • 移动端:IOS Android
  • 在这里插入图片描述
  • 在这里插入图片描述

项目介绍

  • 乐友商城是一个全品类的电商购物网站(B2C)
  • 用户可以在线购买商品、加入购物车、下单
  • 可以评论已购买商品
  • 管理员可以在后台管理商品的上下架、促销活动
  • 管理员可以监控商品销售情况
  • 客服可以在后台处理退款操作
  • 希望未来3到5年可以支持千万用户的使用

系统架构

在这里插入图片描述
在这里插入图片描述

系统架构解读

整个乐友商城可以分为两部分:后台管理系统、前台门户系统。

  • 后台管理
    • 后台系统主要包含以下功能:
      • 商品管理:包括商品分类、品牌、商品规格等信息的管理
      • 销售管理:包括订单统计、订单退款处理、促销活动生成等
      • 用户管理:包括用户控制、冻结、解锁等
      • 权限管理:整个网站的权限控制,采用JWT鉴权方案,对用户以及API进行权限控制
      • 统计:各种数据的统计分析展示
    • 后台系统会采用前后端分离开发,而且整个后台管理系统会使用Vue.js框架搭建出单页应用(SPA)
  • 前台门户
    • 前台门户面向的是客户,包含与客户交互的一切功能。例如:
      • 搜索商品
      • 加入购物车
      • 下单
      • 评价商品等等
    • 前台系统我们会使用Themeleaf模板引擎技术来完成页面开发,处于SEO(搜索引擎)优化的考虑,我们将不采用单页应用。

项目搭建

技术选型

  • 前端技术
    • 基础的HTML、CSS、JavaScript(基于ES6标准)
    • JQuery
    • Vue.js 2.0 以及基于Vue的框架:Vuetify(UI框架)
    • 前端构建工具:WebPack
    • 前端安装包工具: NPM
    • Vue脚手架:Vue-cli
    • Vue路由:Vue-router
    • ajax框架:axios
    • 基于Vue的富文本框架:quill-editor
  • 后端技术
    • 基础的SpringMVC、Spring 5.x和Mybatis3
    • Spring Boot 2.0.6版本
    • Spring Cloud最新版 Finchley.SR2
    • Redis-4.0
    • RabbitMQ-3.4
    • Elasticsearch-6.3
    • nginx-1.14.2
    • FastDFS-5.0.8
    • MyCat
    • Thymeleaf
    • mysql-5.6

开发环境

  • IDE:idea2017以上版本
  • JDK:JDK1.8
  • 项目构建:maven3.3.9以上版本
  • 版本控制工具:git

域名

我们在开发过程中,为了保证以后的生产,测试环境统一。尽量都采用域名来访问项目。
一级域名:www.leyou.com leyou.com leyou.cn
二级域名:manage.leyou.com/item api.leyou.com
我们可以通过switchhost来修改自己的host对应的地址,只要把这些域名指向127.0.0.1,那么跟你用localhost的效果是完全一样的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_72631.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 21~30 学习经历

leetcode 21~30 学习经历21. 合并两个有序链表22. 括号生成23. 合并K个升序链表24. 两两交换链表中的节点25. K 个一组翻转链表26. 删除有序数组中的重复项27. 移除元素28. 找出字符串中第一个匹配项的下标29. 两数相除30. 串联所有单词的子串小结21. 合并两个有序链表 将两个升…

opencv-StereoBM算法流程(二)

OpenCV BM对于处理非畸变的立体图像, 主要有以下 3 个步骤:1. 预处理滤波: 使图像亮度归一化并加强图像纹理2. 立体匹配: 沿着水平极线用 SAD 窗口进行匹配搜索3. 再滤波: 去除坏的匹配点.匹配之后, 如果左右视差检查使能了 disp12MaxDiff > 0, 还有使用cv::validateDispari…

复习知识点三:做人不能半途而废,就算躺平也要躺最舒服的那张床

目录 运算符​编辑 键盘录入: 练习:键盘输入数字并求和 练习: 算术运算符 隐式转换(自动类型提升) 强制转换 练习1: 字符串的 "" 操作 ​编辑 练习 1: 练习2: 练习3: 自增自减运算符 赋值运算符 关系运算符(比较运算符)的分类 练习: 逻辑运算符 短路逻辑运…

qt qchart学习

Qt Charts主要由QChartView、QChart、QLegend图例、坐标轴(由QAbstractAxis子类实现)、**数据源(由QAbstractSeries子类实现)**等组成使用QChart的前期准备1. Qt5.9及以上版本&#xff1b;2. .pro文件中添加QT charts3. 在使用QChart的各个控件之前&#xff0c;引用头文件并必…

Vulnhub靶场----4、DC-4

文章目录一、环境搭建二、渗透流程三、思路总结一、环境搭建 DC-4下载地址&#xff1a;https://download.vulnhub.com/dc/DC-4.zip kali&#xff1a;192.168.144.148 DC-4&#xff1a;192.168.144.152 二、渗透流程 端口扫描&#xff1a;nmap -T5 -p- -sV -sT -A 192.168.144.1…

OSI模型和网络协议简介

文章目录一、OSI七层模型1.1什么是OSI七层模型&#xff1f;1.2这个网络模型究竟是干什么呢&#xff1f;二、TCP/IP协议三、常见协议四、物联网通信协议以及MQTT4.1 物联网七大通信协议4.2 MQTT特性一、OSI七层模型 1.1什么是OSI七层模型&#xff1f; 我们需要了解互联网的本质…

MySQL进阶篇之MySQL索引

今天主要学习MySQL索引&#xff0c;不过主要是使用Linux系统使用MySQL&#xff0c;主要是先在Linux环境下按照MySQL&#xff0c;然后演示索引的相关操作&#xff0c;介绍了索引的底层结构&#xff0c;索引的分类及语法&#xff0c;索引的性能分析&#xff0c;索引的使用规则&am…

《爆肝整理》保姆级系列教程python接口自动化(二十一)--unittest简介(详解)

简介 前边的随笔主要介绍的requests模块的有关知识个内容&#xff0c;接下来看一下python的单元测试框架unittest。熟悉 或者了解java 的小伙伴应该都清楚常见的单元测试框架 Junit 和 TestNG&#xff0c;这个招聘的需求上也是经常见到的。python 里面也有单元 测试框架-unitt…

数据结构_ 堆结构与堆排序(c++ 实现 + 完整代码 )

堆结构与堆排序 文章目录堆结构与堆排序引入堆堆结构所满足的数学特性准备代码----------- 往堆中插入元素----------- 删除堆顶堆排序构建完整代码及测试动态分配版本非动态版本引入堆 二叉树 具有左孩子与右孩子的最普通的二叉树。 满二叉树 特殊的二叉树&#xff1a;每个节…

HTML课堂笔记

HTML 课堂笔记 文章目录相关概念code我的第一个html页面基本标签相关概念 1、什么是HTML&#xff1f; Hyper Text Markup Language 超文本标记语言 超文本&#xff1f;超级文本&#xff0c;例如流媒体&#xff0c;声音、视频、图片等。 标记语言&#xff1f;这种语言是由大量…

【Git】使用Git上传项目到远程仓库Gitee码云步骤详解

电脑里存放了很多项目&#xff0c;有的备份&#xff0c;有的没备份&#xff0c;如果不仔细分类管理的话&#xff0c;时间一长&#xff0c;到时看到那就会觉得非常杂乱&#xff0c;很难整理&#xff0c;这里有一个叫源代码托管&#xff0c;用过它的都知道&#xff0c;方便管理和…

【7/101】101次面试之测试技术面试题

01、什么是兼容性测试&#xff1f;兼容性测试侧重哪些方面&#xff1f;答&#xff1a;兼容性测试是一种软件测试类型&#xff0c;它的主要目的是确保一个应用程序在不同的操作系统、不同的浏览器、不同的设备、不同的网络环境等各种环境下能够正常运行&#xff0c;并且不会产生…

【并发编程十八】线程局部存储(TLS)

【并发编程十八】线程局部存储(TLS&#xff09;一、定义二、线程局部存储的实现1、windows系统2、linux系统3、c11三、windows系统1、线程局部存储是分块的&#xff08;TLS_MINIMUM_AVAILABLE&#xff09;2、获得索引3、通过索引&#xff1a;存储数据、取出数据4、释放索引和内…

UI自动化测试、接口测试等自动化测试策略

今天跟大家介绍UI测试、接口测试、单元测试主要内容&#xff0c;以及每种测试花费时间讨论。 UI测试【Selenium】 UI测试是最接近软件真实用户使用行为的测试类型。通常是模拟真实用户使用软件的行为&#xff0c;即模拟用户在软件界面上的各种操作&#xff0c;并验证这些操作对…

从0探索NLP——神经网络

从0探索NLP——神经网络 1.前言 一提人工智能&#xff0c;最能想到的就是神经网络&#xff0c;但其实神经网络只是深度学习的主要实现方式。 现在主流的NLP相关任务、模型大都是基于深度学习也就是构建神经网络实现的&#xff0c;所以这里讲解一下神经网络以及简单的神经网络…

Anaconda和PyCharm的一些安装问题和命令

今天更新了Windows上的Anaconda到2.3.2&#xff0c;PyCharm到2022.3。 ——发现是纯纯的犯贱orz。出了一堆问题。在这里记录一下供后来者参考。 Anaconda安装 将.\anaconda3\Scripts 和.\anaconda3\Library\bin添加到系统环境变量中。 新建环境的目录在.\anaconda3\envs下 N…

【黑盒模糊测试】路由器固件漏洞挖掘实战--AFL++ qemu_mode

前言 很久之前就想写AFL++的qemu_mode了,只是模糊测试专题的文章有些过于耗费时间,加上工作原因导致一直搁置。最近需要出差会用到黑盒模糊测试,所以就当做复习一遍,我记得Fuzzing 101也有一个qemu_mode的练习,有空的话下一篇文章更新吧~ 编写不易,如果能够帮助到你,希望…

linux的文件权限介绍

文件权限 在linux终端输入 ls -lh 出现下面界面 介绍 基本信息 其中的开头代表着文件类型和权限 而 root 和kali 则分别代表用户名和用户组名用户名顾名思义就是这个文件属于哪一个用户用户组是说自己在写好一个文件后&#xff0c;这个文件是属于该用户所有&#xff0c;…

Java中的Stack与Queue

文章目录一、栈的概念及使用1.1 概念1.2 栈的使用1.3 栈的模拟实现二、队列的概念及使用2.1 概念2.2 队列的使用2.3 双端队列(Deque)三、相关OJ题3.1 用队列实现栈。3.2 用栈实现队列。总结一、栈的概念及使用 1.1 概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在…

Linux系统安装MySQL8.0版本详细教程【亲测有效】

首先官网下载安装包&#xff1a;https://downloads.mysql.com/archives/community/ 一、上传到安装服务器 二、解压 tar -xvf mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz三、移动位置并重新命名 mv mysql-8.0.31-linux-glibc2.12-x86_64 /usr/local/mysql四、创建mysql用户…