Spring Cloud Nacos-学习笔记
Spring Nacos参考:
spring官网
https://spring.io/projects/spring-cloud-alibaba
nacos
https://nacos.io/en-us/
课程开场白
首先学习配置管理
搞清楚什么是配置中心
nacos 是配置中心的实现方案
服务发现
服务治理
首先通过一个快速入门程序学习nacos的配置中心的搭建方案
这里建议参考官方
https://spring-cloud-alibaba-group.github.io/github-pages/2021/en-us/index.html#_spring_cloud_alibaba_rocketmq_binder
第五章节会将nacos的最佳应用
第三和第四是基础
第五章是重点
nacos功能
服务发现
服务健康检查
配置管理
DNS服务
服务和元数据管理
配置中心介绍配置文件信息使用nacos保存用于它自身启动或运行需要的信息。
相当于spring consul的功能。
配置中心
发布修改配置
获取最新配置
配置更新通知后获取最新配置
对于类似于 ...
Spring Boot
Spring BootSpring Boot 可以轻松创建独立的、生产级的基于 Spring 的应用程序,您可以“直接运行”这些应用程序。
我们对 Spring 平台和第三方库采取了固执的观点,因此您可以轻松上手。大多数 Spring Boot 应用程序需要最少的 Spring 配置。
如果您正在寻找有关特定版本的信息,或有关如何从早期版本升级的说明。
特征
创建独立的 Spring 应用程序
直接嵌入Tomcat、Jetty或Undertow(无需部署WAR文件)
提供自以为是的“入门”依赖项以简化您的构建配置
尽可能自动配置 Spring 和 3rd 方库
提供生产就绪功能,例如指标、运行状况检查和外部化配置
完全不需要代码生成,也不需要 XML 配置
入门Quickstart Guide创建一个hello
创建项目
添加代码
12345678910111213141516171819202122package org.akachi.springbootquickstartguide;import org.springframework.boot.SpringApplicat ...
系统架构笔记
系统架构师学习笔记微服务设计思想
任何技术都是可以被抽象、替换插拔的。
系统架构图基本概念
架构架构就是对系统中的实体以及实体之间的关系所进行的抽象描述,是一系列的决策。架构是结构和愿景。
架构图为了抽象的表示软件系统的整体轮廓和各个组件之间的相互关系和约束边界,以及软件系统的物理部署和软件系统的演进方向的整体视图。
架构图的作用要让干系人理解、遵循架构决策,就需要把架构信息传递出去:解决沟通障碍达成共识减少歧义
架构图分类有一种比较流行的是4+1视图,分别为场景视图、逻辑视图、物理视图、处理流程视图和开发视图。
场景视图用于描述系统的参与者与功能用例间的关系,反映系统的最终需求和交互设计,通常由用例图表示。
逻辑视图描述系统软件功能拆解后的组件关系,组件约束和边界,反映系统整体组成与系 统如何构建的过程,通常由UML的组件图和类图来表示。
物理视图用于描述系统软件到物理硬件的映射关系,反映出系统的组件是如何部署到一组可 计算机器节点上,用于指导软件系统的部署实施过程。
处理流程视图用于描述系统软件组件之间的通信时序,数据的输入输出,反映系统的功能流程 与数据流程,通常由时序图和流 ...
Spring Cloud 组件介绍
Spring 概念介绍什么是springSpring 使每个人都可以更快、更轻松、更安全地进行 Java 编程。Spring 对速度、简单性和生产力的关注使其成为世界上最受欢迎的 Java框架。
spring优点
应用广泛
灵活
简化开发
快捷
安全
持续维护
spring应用访问
微服务微服务架构是“新常态”。构建小型、自包含、随时可以运行的应用程序可以为您的代码带来极大的灵活性和弹性。Spring Boot 的许多专门构建的功能使在生产中大规模构建和运行微服务变得容易。并且不要忘记,没有微服务架构是不完整的春云 ‒ 简化管理并提高容错能力。
什么是微服务?微服务是一种现代软件方法,其中应用程序代码以小的、可管理的、独立于其他部分的方式交付。
为什么要构建微服务?它们的小规模和相对隔离可以带来许多额外的好处,例如更容易维护、提高生产力、更大的容错能力、更好的业务一致性等等。
实现关键使用spring Boot作为微服务的服务主体,它提供了一个自包含的引用开发框架。这是微服务的基础。
微服务的架构性质会为开发与维护带来一系列的麻烦。
spring提供Spring Cloud作为微服 ...
JVM 调优
JVM 调优场景调优Eden内存大小
内存太大 STW太久。内存太小回收太平凡。
考虑吞吐量与STW的平衡
调优Survivor
对象在Survivor中待不到足够的时间。或者某些对象直接晋升到Old
同一个年龄的某个对象超过仓库的一半大小则晋升到老年代。
Metaspace 导致 FullGC关键调优参数
Used 已用空间大小
capacity 当前已使用且未分配的大小
committed 当前已分配的空间大小
reserved 预留空间大小
这个例子中发生了FULL GC 实际使用35MB 但占用空间 56MB。这里可能出现了碎片。
通过Dump文件看是不是存在很多某走类加载器。
在反射实实际上会出现new一个ClassFileAssenbler
这里会创建一个ClassFile
调用次数超过15次之后会创建一个DelegatingClassLoader 来加载这个ClassFile
并且这个DelegatingClassLoader 会作为软引用被创建。所以即便进行FullGC 也需要两次。
解决办法
适当的调高matespace空间大小
优化不合理的反射调用,列 ...
JVM 中篇
JVM 中篇字节码与类的加载篇
概述java规范和虚拟机规范的关系
JAVA 规范指的是
java语言的规范,使用符合java规范的编译器讲java编译成class。比如javac编译器。
JVM 规范指的是java虚拟机规范
有很多实现,比如阿里的实现、华为的和ibm的实现。它们负责从导入class文件开始工作。
字节码文件的跨平台性通过java编译器编译完成的文件class,可以在不同的平台上运行,只要平台上安装了JVM。
java的前端编译器java编译器要完成编译有以下几个步骤。
词法解析
语法解析
语义解析
生成字节码
前段编译器和后端编译器的关系
前端编译器编译后的文件有可能进入解释器被执行,也有可能成为热点代码进入JIT执行。在JIT中代码执行效率会高很多。这也是为什么java被定义为半解释半编译行语言。
其他前端编译器
javac
ECJ eclipse的
AspectJ IDEA的
后端编译器
AOT
程序运行之前直接把文件翻译成机器指令。
会破坏java的跨平台性。
目前只处于linux中
JIT
在HotSpot中将热点代码编译为机器码。
ja ...
JVM 上篇
JVM 上篇
这门课程基于Java虚拟机规范来理解。只要实现此规范就是java虚拟机。
1.8的Java虚拟机规范https://docs.oracle.com/javase/8/docs/
授课大纲
介绍
虚拟机与JAVA虚拟机
Java HotSpot JVM 是Oracle官方的虚拟机
java 的跨平台性是通过JVM完成的
java 虚拟机是个跨语言的平台可以接收比如Scala Kotlin java等多种语言
JAVA虚拟机有哪些
Classic
HotSpot
垃圾回收器
G1
ZGC
Shenandoah GC
JVM 的整体结构
类装载子系统
运行时数据区
方法区
java栈
本地方法栈
堆
程序计数器
执行引擎
解释器
JIT 即时编译器
垃圾回收器
JAVA代码执行流程
java编译器
词法分析
语法分析
语法抽象语法树
语义分析
注解抽象语法树
字节码生成器
JAVA 虚拟机
类加载器
字节码校验器
执行引擎
翻译字节码
逐条执行指令
JIT编译器
将字节码编译成机器指令后缓存,并作为热点代码反复执行
操 ...
Java 多线程
Java 多线程概念
线程就是独立执行的路径;
线程是程序中执行的线程。 Java虚拟机允许应用程序同时执行多个执行线程。
线程分为守护线程和非守护线程,当一个进程中的非守护线程全部停止运行后守护线程也会停止运行。
线程可以通过Thread 或实现Runnable
创建线程创建方式 继承Thread classThread 实现代码
123456789101112class PrimeThread extends Thread { long minPrime; PrimeThread(long minPrime) { this.minPrime = minPrime; } public void run() { // compute primes larger than minPrime . . . }}
12PrimeThread p = new PrimeThread(143); p.start();
实现 Runnable接口Run ...