Docker高级篇
尚硅谷 2022 版 Docker 实战教程官方课程资料:https://pan.baidu.com/s/1AyYbnDRoD-m2xBPvfvjh7Q?pwd=8gfh提取码:8gfh
Docker 高级一. DockerFile 解析1. DockerFile 是什么官网地址:https://docs.docker.com/engine/reference/builder/
Dockerfile 是用来构建 Docker 镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。
构建三步骤:
编写 Dockerfile 文件
docker build 命令构建镜像
docker run 依镜像运行容器实例
2. DockerFile 构建过程解析2.1 Dockerfile 内容基础知识
每条保留字指令都必须为大写字母且后面要跟随至少一个参数
指令按照从上到下,顺序执行
”#“ 表示注释
每条指令都会创建一个新的镜像层并对镜像进行提交
2.2 Docker 执行 Dockerfile 的大致流程
docker 从基础镜像运行一个容器
执行一条指令并对容器作出修改
执行 ...
Redis高级篇及最佳实践
案例参考:黑马程序员
一.分布式缓存– 基于 Redis 集群解决单机 Redis 存在的问题
单机的 Redis 存在四大问题:
1.Redis 持久化Redis 持久化分为两种
RDB 持久化
AOF 持久化
1.1 RDB 持久化RDB 全称 Redis Database Backup file(Redis 数据备份文件),也就是快照,把内存中的所有数据存到磁盘上。故障修复后,读取磁盘文件恢复数据。快照文件为 RDB 文件,默认存在当前目录。
1.1.1 什么时候执行 RDB有四种情况会执行 RDB
执行 save 命令
执行 bgsave 命令
redis 手动关机
触发执行 RDB 条件
save 命令
执行下面的命令,可以立即执行一次 RDB:
save 命令会导致主进程执行 RDB,这个过程中其它所有命令都会被阻塞。只有在数据迁移时可能用到。
bgsave 命令
下面的命令可以异步执行 RDB:
这个命令执行后会开启独立进程完成 RDB,主进程可以持续处理用户请求,不受影响。
手动停机 redis
触发执行 RDB 条件
Redis 内部有 ...
IDEA复制实例开启多个服务
1.找到 IDEA 下的 Services 并点开
1.1 没有 Services点击 View->Tool Windows->Services
2.点击+号选择 Run Configuration Type
3.选择 Spring Boot
这时你就可以看到你的项目了
接下来我们需要复制该实例并且改变端口启动
4.右键选择 Copy Configuration
5.在对应位置修改名字和端口
-Dserver.port=xxxx
6.确认后就可以看到有两个实例了
7.启动一个运行在 8080
一个运行在 8081
Java8新特性
一.Java8 新特性
1.Java8 新特性的好处
速度更快
代码更少(增加了新的语法:Lambda 表达式)
强大的 Stream API
便于并行
最大化减少空指针异常:Optional
Nashorn 引擎,允许在 JVM 上运行 JS 应用
2.并行流与串行流并行流就是把一个内容分成多个数据块,并用不同的线程分别处理每个数据块的流。相比较串行的流,并行的流可以很大程度上提高程序的执行效率。Java 8 中将并行进行了优化,我们可以很容易的对数据进行并行操作。Stream API 可以声明性地通过 parallel() 与 sequential() 在并行流与顺序流之间进行切换。
二.Lambda 表达式Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使 Java 的语言表达能力得到了提升。
1.Lambda 表达式的使用
举例: (o1,o2) -> Integer.compare(o1,o2);
格式:
-> : lambda ...
Docker基础篇
尚硅谷 2022 版 Docker 实战教程官方课程资料:https://pan.baidu.com/s/1AyYbnDRoD-m2xBPvfvjh7Q?pwd=8gfh提取码:8gfh
一.Docker 简介与安装Docker 两个主要部件:
Docker: 开源的容器虚拟化平台:http://www.docker.com
Docker Hub: 用于分享、管理 Docker 容器的 Docker SaaS 平台 – Docker Hub
Docker 为什么出现?
解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
1. Docker 基本组成Docker 镜像Docker 镜像是 Docker 容器运行时的只读模板,每一个镜像由一系列的层 (layers) 组成。相当于容器的“源代码”,docker 镜像文件类似于 Java 的类模板,而 docker 容器实例类似于 java 中 new 出来的实例对象。
Docker 仓库Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。
Docker 容器Docker 容器和文件夹很类似, ...
Redis的Java客户端
目前我了解到的有以下 4 种。
Spring-Data-Redis:https://spring.io/projects/spring-data-redis
Jedis:https://github.com/redis/jedis/wiki
Lettuce:https://lettuce.io/ ,这里不做介绍,太高级了,估计 hold 不住。
Redisson :https://github.com/redisson/redisson/wiki
Spring Data Redis1.介绍SpringData 是 Spring 中数据操作的模块,包含对各种数据库的集成,相当于定义了一些如增删改查的抽象接口,继而有对应不同数据库的实现。
Spring Data JDBC
Spring Data JPA
Spring Data MongoDB
Spring Data Redis
。。。
其中对 redis 集成模块就叫做 Spring Data Redis。
提供了对不同 Redis 客户端的整合(Lettuce 和 Jedis)
提供了 RedisTemplate ...
Redis基础实战
一.Redis 入门1.初识 RedisRedis 是一种键值型的NoSql数据库。
键值型:是指 Redis 中存储的数据都是以 key、value 对的形式存储,而 value 的形式多种多样,可以是字符串、数值、甚至 json
1.1 认识 NoSQL1.1.1 什么是 NoSQL
NoSQL 最常见的解释是”non-relational“, 很多人也说它是”Not Only SQL“
NoSQL 仅仅是一个概念,泛指非关系型的数据库
区别于关系数据库,它们不保证关系数据的 ACID 特性
NoSQL 是一项全新的数据库革命性运动,提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入
常见的 NoSQL 数据库有:Redis、MemCache、MongoDB等
1.1.2 NoSQL 与 SQL 的差异
| | SQL | NoSQL || ——– | ————— | ————————————— | ——————— ...
微服务技术栈
写代码步骤
建 Module
改 pom
写 yml
主启动
Spring Cloud一.初识微服务1. 三种架构单体架构将业务的所有功能集中在一个项目中开发,打成一个包部署。优点:架构简单,部署成本低缺点:耦合度高(维护困难、升级困难),牵一发而动全身
分布式架构根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。优点:降低服务耦合,有利于服务升级和拓展缺点:服务调用关系错综复杂分布式架构虽然降低了服务之间的耦合,但是服务拆分的时候也需要考虑很多问题:
服务拆分的粒度如何界定?
服务之间如何调用?
服务的调用关系如何管理?
人们需要制定一套行之有效的标准来约束分布式架构
微服务架构微服务架构特征:
单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
自治:团队独立、技术独立、数据独立、独立部署和交付
面向服务:服务提供统一标准的接口,与语言和技术无关
隔离性强:服务调用做好隔离、容错、降级、避免出现级联问题
微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低 ...
JVM-内存及垃圾回收
类加载子系统类加载子系统一
类加载子系统作用
负责从文件系统或者网络中加载 Class 文件,Class 文件开头有特定标识(cafebabe)
Classloader 只负责 class 文件的加载,至于是否可运行,则有执行引擎决定
加载的类信息存放于称为方法区的内存空间,除了类信息,方法区还会存放运行时常量池信息,还可能包括字符串字面量和数字常量。(常量池运行时加载到内存中,即运行时常量池)
类加载器 ClassLoader 的角色
1.class file 存在与本地硬盘上。可以理解为设计师画在之上的模板,而最终这个模板在执行的时候是要加载到 JVM 当中来,根据这个文件实例化出 n 个一模一样的实例。
2.class file 加载带 JVM 中,被称为 DNA 元数据模块,放在方法区。
3.在 .class 文件 –> JVM –> 最终成为元数据模板,此过程就要一个运输工具(类装载器 Class Loader),扮演一个快递员的角色。
类的加载过程
一.加载
通过一个类的全限定名获取定义此类的二进制字节流
将这个字节流所代表的静态存储结构转化为方法区的 ...