- 博客(25)
- 资源 (1)
- 收藏
- 关注
原创 尚硅谷Docker与微服务实战2022阳哥【高级篇】
从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段Dockerfile是软件的原材料【药方】Docker镜像是软件的交付品【根据药方抓的药】Docker容器则可以认为是软件镜像的运行态,也即依照镜像运行的容器实例【煎好的药】Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Docker体系的基石。
2023-04-26 00:18:52 4600 1
原创 尚硅谷Docker与微服务实战2022阳哥【基础篇】
总结:搬家—>搬楼假定您在开发一个尚硅谷的谷粒商城,您使用的是一台笔记本电脑而且您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。此外,您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。您希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销。请问?您要如何确保应用能够在这些环境中运行和通过质量检测?并且在部署过程中不出现令人头疼的版本、配置问题,也无需重新编写代码和进行故障修复?
2023-04-26 00:17:18 502
原创 尚硅谷Java8 新特性学习笔记
Java 8一、介绍1、生态Lambda 表达式函数式接口方法引用 / 构造器引用Stream API接口中的默认方法 / 静态方法新时间日期 API其他新特性2、新特性速度更快代码更少强大的 Stream API便于并行最大化减少空指针异常 Optional (Kotlin ?)3、温故而知新Hashmap 底层结构/原理 老话题不再阐述 …并发hashmap …Java虚拟机 …Java内存模型 …二、Lambda 表达式Lambd
2022-03-25 16:14:47 4614 1
原创 RabbitMQ学习笔记
RabbitMQ 一、消息中间件概述(一) 为什么学习消息队列电子商务应用中,经常需要对庞大的海量数据进行监控,随着网络技术和软件开发技术的不断提高,在实战开发中MQ的使用与日俱增,特别是RabbitMQ在分布式系统中存储转发消息,可以保证数据不丢失,也能保证高可用性,即集群部署的时候部分机器宕机可以继续运行。在大型电子商务类网站,如京东、淘宝、去哪儿等网站有着深入的应用 。队列的主要作用是消除高并发访问高峰,加快网站的响应速度在不使用消息队列的情况下,用户的...
2022-03-25 16:13:08 2541
原创 尚硅谷 SpringCloud 第二季学习笔记【已完结】
SpringCloud一、介绍(一)cloud和boot之间的依赖关系https://spring.io/projects/spring-cloud#overviewFinchley 是基于 Spring Boot 2.0.x 构建的不再 Boot 1.5.xDalston 和 Edgware 是基于 Spring Boot 1.5.x 构建的,不支持 Spring Boot 2.0.xCamden 构建于 Spring Boot 1.4.x,但依然能支持 Spring Boot 1.5.x
2022-03-25 16:09:33 11968 21
原创 谷粒商城 Day09 首页分类与SpEL动态缓存切面
Day09 首页分类与SpEL动态缓存切面一、优化缓存逻辑百万并发进来,判断 bloomFilter 和缓存中拿,先执行哪个最好?1. 先布隆 ,再缓存 面对攻击 1 好2. 先缓存 ,再布隆 正常业务 2 好 99%数据可能都在缓存有 99w + 99w ~= 200w缓存永远都得看,布隆少判断一次就节省很多时间所以最后我们商品详情的流程是这样的,用户查询查某个skuId,先判断缓存中有没有,这里解释一下为什么要先判断缓存,在正常业务时,先缓存再布隆好,因为99%的
2021-12-16 18:09:50 420 1
原创 谷粒商城 Day08 布隆过滤器与缓存切面
Day08 布隆过滤器与缓存切面一、答疑使用HashMap本地缓存,是使用内存还是硬盘?如果使用内存,是不是程序重启了,缓存就丢失了?二、业务中缓存使用总结&问题&面试题1、数据一致性问题数据库修改以后,缓存的数据需要同步过来【缓存中的所有数据都应当有过期时间】① 缓存的每个数据都必须有过期时间允许有一段时间数据不一致,但是要保证数据最终要一致【最终一致性】sku:info:50:后台改了50号数据,30min 分钟过期,数据过期以后,下一次对此数据的查询会触发更新逻辑,最
2021-12-14 22:24:13 883
原创 谷粒商城 Day07 缓存与分布式锁
Day07 缓存与分布式锁一、答疑1、如何开启 OpenFeign 的日志功能loggin.level.你feign接口所在的包 : debug 就可以例如:2、缓存穿透问题Redis的穿透,如果我用随机值去攻击的话,那么上课讲的设置 null 值的方法不就没有效果了吗?每次 key 都是 uuid 的东西每次缓存没有,去查数据库,然后返回 null,再缓存既浪费了 redis,数据库还防止不住缓存 null 值已经没有作用了解决方法:布隆过滤器(下次用)【使用少量空间,来做到判
2021-12-13 10:46:28 827
原创 谷粒商城 Day06 商品详情页web&缓存简介
Day06 商品详情页web&缓存简介一、查询商品详情页流程图分布式下使用本地Map作为缓存主要以下问题1、数据一致性问题2、缓存失效问题 缓存在某些时刻并没有缓解数据库压力。全发给数据库,导致请求堆积问题,造成服务雪崩思路:虽然咱们实现了页面需要的功能,但是考虑到该页面是被用户高频访问的,所以性能需要优化。一般一个系统最大的性能瓶颈,就是数据库的io操作。从数据库入手也是调优性价比最高的切入点。一般分为两个层面,一是提高数据库sql本身的性能,二是尽量避免直接查询数据库。重
2021-12-12 20:01:37 980
原创 谷粒商城 Day05 商品详情页接口准备
Day05 商品详情页接口准备一、Thymeleaf1、thymeleaf 简介① HelloControllercom.atguigu.thymeleaf.controller.HelloController/** * 1、引入starter * <dependency> * <groupId>org.springframework.boot</groupId> * <artifac
2021-12-12 19:48:56 736
原创 谷粒商城 Day04 sku与spu接口
Day04 sku与spu接口一、答疑1、Docker① 如果在创建容器的时候,没有进行端口映射和卷的挂载,后来又想添加,我们如何做呢?docker update 不行把docker容器的核心内容docker cp出来,再启动一个新容器挂载② 如何创建nacos的容器镜像呢,和Sentinel完全不一样?FROM alpineCOPY ./nacos /app/nacosENTRYPOINT [“sh”,"/app/nacos/bin/startup.sh"]2、SQL①
2021-12-12 19:40:22 1286
原创 谷粒商城 Day03 后台跨域与文件上传
Day03 后台跨域与文件上传根据接口文档完成各个接口文档位置:D:\尚硅谷-Java-210301\16_尚硅谷_雷丰阳_谷粒商城\资料\01 后台管理系统一、根据分类id获取平台属性接口http://api.gmall.com/admin/product/attrInfoList/{category1Id}/{category2Id}/{category3Id}请求参数category1Id:一级分类IDcategory2Id:二级分类IDcategory3Id:三级分
2021-12-12 19:28:45 926
原创 谷粒商城 Day02 项目搭建与前后联调
Day02 项目搭建与前后联调二、项目基础概念1、三级分类建立好数据库之后,查询出所有分类商品SELECT b1.id "一级分类Id",b1.`name` "一级分类名",b2.id "二级分类Id",b2.`name` "二级分类名",b3.id "三级分类Id",b3.`name` "三级分类名"FROM base_category1 b1LEFT JOIN base_category2 b2 ON b1.id = b2.category1_idLEFT JOIN base_catego
2021-12-12 19:23:31 419
原创 MyBatis-Plus 笔记
MyBatis-Plus1、MyBatis-Plus 入门官网:http://mp.baomidou.com参考教程:http://mp.baomidou.com/guide/(一)简介MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。润物无声只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。效率至上只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间。
2021-11-11 00:56:02 549
原创 day11_面向对象05
day11复习1. 练习:Bank-Customer[]-AccountAccount类package com.atguigu.exer1;/** * @author shkstart * @create 10:22 */public class Account { //账户类 private double balance; public Account(double init_balance){ this.balance = init_balanc
2021-03-23 20:03:05 126
原创 day10_面向对象04
day10复习1. this调用构造器package com.atguigu.java;import com.sun.media.sound.SoftTuning;/** * this 可以用来调用:属性、方法、构造器 * * 1. this调用属性、方法 * * 2. this调用构造器 * ① 格式: this(参数列表) * ② this调用构造器的操作,只能声明在构造器中。表示调用当前类中的指定的重载的其他的构造器 * ③ this(参数列表) 只能声明在构造器的首
2021-03-16 00:53:43 208
原创 day09_面向对象03
day09复习1. 练习/** * 声明一个日期类型MyDate:有属性:年year,月month,日day。 * * 创建2个日期对象,分别赋值为:你的出生日期,你对象的出生日期,并显示信息。 * * * 小结: * 基本数据类型的变量就根据其类型存储相应的值。比如:int i = 5; char c = 'a' * 引用数据类型的变量存储的值就两种情况:① null ② 对象或数组实体在堆空间中存储位置的首地址值。 * * @author shkstart * @creat
2021-03-16 00:51:05 1669
原创 day08_面向对象02
day08复习1. 方法的声明方法声明的格式说明测试类中方法的定义 * * 0. 举例: * Scanner类中:nextXxx():nextInt() * Math类中:random() / sqrt() * Arrays类中:equals() / toString() / sort(int[] arr) / binarySearch() * * 1. 方法的定义(或声明)格式: * 权限修饰符 返回值类型 方法名(形参列表){ * //方法体 *
2021-03-16 00:47:48 208
原创 day07_面向对象01
day07复习1. 数组整体的概述1. (了解)数组的理解:多个相同数据类型的变量按照一定顺序组织起来的集合2. (重点)一维数组的使用 ① 数组的声明与初始化 ② 数组元素的调用 ③ 数组的长度 ④ 数组的遍历 ⑤ 数组元素默认初始化值 ⑥ 数组的内存解析3. (重点)二维数组的使用 ① 数组的声明与初始化 ② 数组元素的调用 ③ 数组的长度 ④ 数组的遍历 ⑤ 数组元素默认初始化值 ⑥ 数组的内存解析4. (重点)数组中常见算法的使用5. (熟悉)Arrays工具类的
2021-03-16 00:44:33 115
原创 day06_数组
day06复习1. 每天一考 /* 第1题: int m=0,n=3; if(m>0) if(n>2) System.out.println("A"); System.out.println("C"); else System.out.println("B"); */ /* 3.一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3. 编程 找出1000以内的所有完数。(因子:除去这个
2021-03-16 00:41:13 287
原创 day05_基本项目
day05 基本项目1、求其最大公约数和最小公倍数/*题目:输入两个正整数m和n,求其最大公约数和最小公倍数。比如:12和20的最大公约数是4,最小公倍数是60。说明:break关键字的使用:一旦在循环中执行到break,就跳出循环*/import java.util.Scanner;class ForTest{ public static void main(String[] args){ Scanner scan = new Scanner(System.in);
2021-03-16 00:37:56 82
原创 day04_流程控制
day04复习1. 流程控制结构的说明Java语言对应的三类结构:2. 分支结构1:if-else格式格式1:if(条件表达式){ 执行语句}格式2:二选一if(条件表达式){ 执行语句1}else{ 执行语句2}格式3:多选一if(条件表达式1){ 执行语句1}else if(条件表达式2){ 执行语句2}...}else{ 执行语句n}基本使用class IfTest { public static void main(Strin
2021-03-16 00:36:51 110
原创 day03_运算符
day03复习1. 复习class ReviewTest{ public static void main(String[] args){ //拓展1 char c1 = '5'; char c2 = 5; System.out.println(c1 == c2);//false char c3 = 97; char c4 = 'a'; System.out.println(c3 == c4);//true System.out.println(c4 + 1
2021-03-16 00:33:12 212
原创 day02_变量
day02复习第1章:Java语言概述HelloWorld的总结:/*一、编写的说明1. 大括号的位置:行尾的风格2. 必要的代码缩进3. 每一条执行语句都换行书写4. 必要操作符与变量之间的空格二、1. Java是严格区分大小写的2. 一个Java源文件中可以声明多个java类。则在编译源文件之后,会声明对应的java类的字节码文件。3. 源文件中最多有一个类使用public进行修饰;使用public修饰的类的类名必须与源文件名相同。4. 一般在开发中,一个源文件中,只声明一
2021-03-16 00:21:10 195
原创 day01_Java语言概述
day01复习第0章:编程入门1. 计算机的概述计算机 = 硬件 + 软件1.1 硬件:冯诺依曼体系[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SSF7Qwkp-1615737601231)(day01复习.assets/image-20210303092622614.png)]cpu:cpu的衡量标准:速度的计量单位是赫兹(Hz),1Hz相当于每秒1个脉冲。随着CPU速度不断提高,目前以千兆赫(GHz)来表述。内存:① 数据单位:一个0或者一个1存储为
2021-03-15 00:05:57 156
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人