谷粒商城-2-SpringCloud组件
一、SpringCloud Alibaba1. 组件选择结合 SpringCloud Alibaba 我们最终的技术搭配方案:
SpringCloud Alibaba - Nacos:注册中心(服务发现/注册)
SpringCloud Alibaba - Nacos:配置中心(动态配置管理)
SpringCloud - Ribbon:负载均衡
SpringCloud - Feign:声明式 HTTP 客户端(调用远程服务)
SpringCloud Alibaba - Sentinel:服务容错(限流、降级、熔断)
SpringCloud - Gateway:API 网关(webflux 编程模式)
SpringCloud - Sleuth:调用链监控
SpringCloud Alibaba - Seata:原 Fescar,即分布式事务解决方案
版本选择
由于 Spring Boot 1 和 Spring Boot 2 在 Actuator 模块的接口和注解有很大的变更,且spring-cloud-commons 从 1.x.x 版本升级到 2.0.0 版本也有较大的变更 ...
算法
二叉树
对于大部分二叉树的题,都可以通过一下思路解决
思路:根结点需要子节点提供哪些信息才可以解决问题呢?
对于任一一个结点,如果需要满足以下条件
左子树满足条件A
右子树满足条件A
条件B
所以子树需要向该节点提供
是否满足条件A
条件B需要的数据
具体参考本章:相关概念及其实现判断 / 判断平衡二叉树
二叉树节点结构
class Node{
int value;
Node left;
Node right;
}
普通遍历用递归和非递归两种方式实现二叉树的先序、中序、后序遍历
输入:root = [1,null,2,3]
输出:[3,2,1]
递归先序:第一次来到结点时访问
中序:第二次来到结点时访问
后续:第三次来到结点时访问
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList();
ret ...
谷粒商城-1-分布式基础&环境搭建
分布式基础&环境搭建
一、项目简介1. 项目背景1. 电商模式市面上有 5 种常见的电商模式 B2B、B2C、C2B、C2C、O2O;
1、B2B 模式
B2B (Business to Business), 是指商家与商家建立的商业关系。 如:阿里巴巴
2、B2C 模式
B2C (Business to Consumer), 就是我们经常看到的供应商直接把商品卖给用户,即“商对客” 模式,也就是通常说的商业零售,直接面向消费者销售产品和服务。如:苏宁易购、京东、
天猫、小米商城
3、C2B 模式
C2B (Customer to Business),即消费者对企业。先有消费者需求产生而后有企业生产,即先有消费者提出需求,后有生产企业按需求组织生产
4、C2C 模式
C2C (Customer to Consumer) ,客户之间自己把东西放上网去卖,如:淘宝,闲鱼
5、O2O 模式
O2O 即 Online To Offline,也即将线下商务的机会与互联网结合在了一起,让互联网成为线下交易的前台。线上快速支付,线下优质服务。如:饿了么,美团,淘票票,京东到家
...
Linux常用操作
Linux基础命令Linux的目录结构
/,根目录是最顶级的目录了
Linux只有一个顶级目录:/
路径描述的层次关系同样适用/来表示
/home/itheima/a.txt,表示根目录下的home文件夹内有itheima文件夹,内有a.txt
ls命令功能:列出文件夹信息
语法:ls [-l -h -a] [参数]
参数:被查看的文件夹,不提供参数,表示查看当前工作目录
-l,以列表形式查看
-h,配合-l,以更加人性化的方式显示文件大小
-a,显示隐藏文件
隐藏文件、文件夹在Linux中以.开头的,均是隐藏的。
默认不显示出来,需要-a选项才可查看到。
pwd命令功能:展示当前工作目录
语法:pwd
cd命令功能:切换工作目录
语法:cd [目标目录]
参数:目标目录,要切换去的地方,不提供默认切换到当前登录用户HOME目录
HOME目录每一个用户在Linux系统中都有自己的专属工作目录,称之为HOME目录。
普通用户的HOME目录,默认在:/home/用户名
root用户的HOME目录,在:/root
FinalShell登陆终端后, ...
设计模式
概览
设计模式分为三大部分
第一部分是设计模式相关介绍
设计模式的概述
UML图
软件设计原则
第二部分是设计模式的学习
创建者模式。
结构型模式。
行为型模式。
第三部分是综合案例
自定义spring的IOC功能。
1. 设计模式概述1.1 软件设计模式的产生背景“设计模式”最初并不是出现在软件设计中,而是被用于建筑领域的设计中。
1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。
1990年软件工程界开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。直到1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)、约翰·威利斯迪斯(John Vlissides)等 4 位作者合作出版了《设计模式:可复用面向对象软件的基础》一书,在此书中收录了 ...
Spring-3-AOP
Spring-3-AOP今日目标
理解并掌握AOP相关概念
能够说出AOP的工作流程
能运用AOP相关知识完成对应的案例编写
重点掌握Spring的声明式事务管理
1,AOP简介前面我们在介绍Spring的时候说过,Spring有两个核心的概念,一个是IOC/DI,一个是AOP。
前面已经对IOC/DI进行了系统的学习,接下来要学习它的另一个核心内容,就是==AOP==。
对于AOP,我们前面提过一句话是:==AOP是在不改原有代码的前提下对其进行增强。==
对于下面的内容,我们主要就是围绕着这一句话进行展开学习,主要学习两方面内容AOP核心概念,AOP作用:
1.1 什么是AOP?
AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构。
OOP(Object Oriented Programming)面向对象编程
我们都知道OOP是一种编程思想,那么AOP也是一种编程思想,编程思想主要的内容就是指导程序员该如何编写程序,所以它 ...
Spring-2-IOC及整合
Spring-2-IOC及整合今日目标
掌握IOC/DI配置管理第三方bean
掌握IOC/DI的注解开发
掌握IOC/DI注解管理第三方bean
完成Spring与Mybatis及Junit的整合开发
1,IOC/DI配置管理第三方bean前面所讲的知识点都是基于我们自己写的类,现在如果有需求让我们去管理第三方jar包中的类,该如何管理?
1.1 案例:数据源对象管理在这一节中,我们将通过一个案例来学习下对于第三方bean该如何进行配置管理。
以后我们会用到很多第三方的bean,本次案例将使用咱们前面提到过的数据源Druid(德鲁伊)和C3P0来配置学习下。
1.1.1 环境准备学习之前,先来准备下案例环境:
创建一个Maven项目
pom.xml添加依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifa ...
Spring-1-基础
Spring-1-基础今日目标
掌握Spring相关概念
完成IOC/DI的入门案例编写
掌握IOC的相关配置与使用
掌握DI的相关配置与使用
1,课程介绍对于一门新技术,我们需要从为什么要学、学什么以及怎么学这三个方向入手来学习。那对于Spring来说:
1.1 为什么要学?
从使用和占有率看
Spring在市场的占有率与使用率高
Spring在企业的技术选型命中率高
所以说,Spring技术是JavaEE开发必备技能,企业开发技术选型命中率>==90%==
说明:对于未使用Spring的项目一般都是些比较老的项目,大多都处于维护阶段。
从专业角度看
随着时代发展,软件规模与功能都呈几何式增长,开发难度也在不断递增,该如何解决?
Spring可以==简化开发==,降低企业级开发的复杂性,使开发变得更简单快捷
随着项目规模与功能的增长,遇到的问题就会增多,为了解决问题会引入更多的框架,这些框架如何协调工作?
Spring可以==框架整合 ...
并发编程
1.概览
1.1 这门课讲什么这门课中的【并发】一词涵盖了在 Java 平台上的
进程
线程
并发
并行
以及 Java 并发工具、并发问题以及解决方案、一些其它领域的并发
2.基础与线程本章内容
进程和线程的概念
并行和并发的概念
线程基本应用
2.1 进程与线程进程
程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的
当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。
进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等)
线程
一个进程之内可以分为一到多个线程。
一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给 CPU 执行
Java 中,线程作为最小调度单位,进程作为资源分配的最小单位。 在 windows 中进程是不活动的,只是作为线程的容器
二者对比
进程基本上相互独立的, ...
JVM-4-内存模型
1. java 内存模型很多人将【java 内存结构】与【java 内存模型】傻傻分不清,【java 内存模型】是 Java Memory Model(JMM)的意思。
简单的说,JMM 定义了一套在多线程读写共享数据时(成员变量、数组)时,对数据的可见性、有序性、和原子性的规则和保障
1.1 原子性原子性在学习线程时讲过,下面来个例子简单回顾一下:
问题提出,两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,结果是 0 吗?
1.2 问题分析以上的结果可能是正数、负数、零。为什么呢?因为 Java 中对静态变量的自增,自减并不是原子操作。
例如对于 i++ 而言(i 为静态变量),实际会产生如下的 JVM 字节码指令:
getstatic i // 获取静态变量i的值
iconst_1 // 准备常量1
iadd // 加法
putstatic i // 将修改后的值存入静态变量i
而对应 i– 也是类似:
getstatic i // 获取静态变量i的值 ...