【SpringCloud】一、微服务架构简介
什么是微服务 微服务是2014年提出的概念 微服务是一种架构风格 一个应用拆分为一组小型服务 每个服务运行在自己的进程内,也就是可独立部署和升级 服务之间使用轻量级HTTP交互 服务围绕业务功能拆分 可以由全自动部署机制独立部署 去中心化,服务自治。服务可以使用不同的语言、不同的存储技术 什么是SpringCloud 分布式微服务架构的一站式解决方…
351
|
|
|
|
279 字
|
2 分钟
接口隔离原则
接口隔离原则 定义 Interface Segregation Principle:客户端不应该被强迫依赖它不需要的接口。 个人理解 两个类之间的依赖应当建立在最小的接口上。接口颗粒度把握好,太小了调用麻烦,太大了就会提供一些客户端不需要的内容,服务端改动时影响范围增大,影响扩展性。 如果接口部分内容需要复用,可以拆出来,再使用外观模式,提供客户端…
556
|
|
|
|
312 字
|
2 分钟
依赖倒置原则
依赖倒置原则 定义 高层模块不要依赖低层模块,应该通过抽象来互相依赖。除此之外,抽象不要依赖具体实现细节,具体实现细节依赖抽象。 个人理解 避免对具体实现类的直接引用,使其付出更小的代价达到扩展的目的,与开闭原则照应。 缺点也是老生常谈的类文件数量增加,可维护性下降。所以要在适当场景使用,切勿过度设计。例如service层定义接口,实际项目中,大部…
541
|
|
|
|
465 字
|
2 分钟
里式替换原则
里式替换原则 定义 Liskov Substitution Principle:子类对象能够替换程序中父类对象出现的任何地方,并且保证原来程序的逻辑行为不变及正确性不被破坏。 个人理解 能够替换不只是从语法(多态)角度考虑,还需要保证替换后,原有业务逻辑正确。 LSP的意义 改进已有实现 例如程序最开始实现时采用了低效的排序算法,改进时使用LSP实…
463
|
|
|
|
233 字
|
1 分钟内
开闭原则
开闭原则 定义 英文全称是Open Closed Principle,软件实体(模块、类、方法等)应该“对扩展 开放、对修改关闭”。 个人理解 在设计阶段,需要识别出哪些是不变的,哪些将来有可能改变的,留好扩展点。 寻找共性,进行抽象。通用的抽取封装到基类,同类型的、需要扩展的抽取为抽象方法。 如何理解“对扩展开放、对修改关闭”? 添加一个新的功能…
489
|
|
|
|
623 字
|
3 分钟
单一职责原则
单一职责原则 定义 单一职责原则的英文是 Single Responsibility Principle,缩写为 SRP。一个类或者模块只负责完成一个职责(或者功能)。 如何理解单一职责原则(SRP)? 一个类只负责完成一个职责或者功能。不要设计大而全的类,要设计粒度小、功能单一的 类。单一职责原则是为了实现代码高内聚、低耦合,提高代码的复用性、可…
665
|
|
|
|
999 字
|
7 分钟
第一章、JVM和Java体系架构
第一章、JVM和Java体系架构 JVM整体结构 方法区和堆是线程共享的 Java栈、本地方法栈、程序计数器是线程独享的 执行引擎包含解释器、即时编译器、垃圾回收器 Java代码执行流程 JVM架构模型 Java编译器输入的指令流是基于栈的指令集架构 基于栈的指令集架构 实现简单 不依赖于硬件,可移植性强 使用零地址指令分配方式,就是指令中没有操作…
394
|
|
|
|
563 字
|
3 分钟
十九、迭代器模式
Iterator Design Partern 作用 遍历容器实现复杂,并且方式有多种,例如遍历二叉树时,有前序、后序、中序遍历。将遍历容器从容器中独立出来,让两者的职责更单一。 容器使用的是迭代器接口,基于接口而非实现编程,替换迭代器更加容易。 示例 public class MyArrayList<E> implements Lis…
286
|
|
|
|
531 字
|
5 分钟
LeetCode:把二叉搜索树转换为累加树_538
思路 首先二叉搜索树需要中序遍历,但如果是中序遍历,计算前面节点依赖于后面节点的结果。所以将中序遍历倒过来即可。 二叉树的遍历不止3种,可以自行调整。 题目 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.va…
385
|
|
|
|
337 字
|
2 分钟
LeetCode:二叉搜索树中第K小的元素_230
思路 利用二叉搜索树的特征:中序遍历后是个递增的序列,很容易就AC了。 这样的时间复杂度是O(n),如果节点已经存储了序号,就可以像查找值一样O(logN)。 叶节点也满足二叉搜索树 题目 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。 示例 1: 输入:root = …
420
|
|
|
|
229 字
|
1 分钟内