Spring Cloud part2—认识微服务解决方案SpringCloud
微服务解决方案SpringCloud
简介
Spring
Cloud是Java领域内非常热门的微服务解决方案,SpringCloud在业内已经被广泛应用,对于微服务中常见的问题和挑战都有很好的解决效率。
Spring Cloud
提供了⼀些可以让开发⼈员快速构建分布式服务的⼯具,比如配置管理、服务发现、
熔断、智能路由等,他们可以在任何分布式环境中很好的⼯作。
其实SpringCloud就是一个完整的微服务架构,提供了所有功能,整个开发项目中所需要的架构功能微服务都有,也就是说整个springcloud就是一个完整的项目,这个架构已经搭建完毕了,用到了直接获取即可,只需要往架构中注入自己的业务代码就可以
作为基于 Spring
的全家桶,它并非单一框架,而是一套整合了众多成熟组件的开源解决方案 ——
从服务注册发现(Eureka、Nacos)到负载均衡(Ribbon),从配置中心(Config、Apollo)到熔断降级(Hystrix、Resilience4j),从
API 网关(Gateway)到分布式追踪(Sleuth+Zipkin),Spring...
Spring Cloud part1—理解微服务架构
认识微服务架构
在入门Spring Cloud
之前,我们需要先了解下什么是微服务,在架构发展的过程中,项目开发遇到了哪些问题,以及Spring
Cloud是用来解决什么问题的。
单体架构 vs 微服务架构的区别
在学习微服务之前,先了解它与传统单体架构的核心差异,能帮助我们更好地理解微服务的设计初衷
下图表示了单体架构到微服务架构的发展过程
image-20250710085009656
单体架构将所有功能模块(如用户管理、订单处理、支付系统等)打包在一个应用程序中,部署在单一服务器或集群上。
特点
代码集中在一个代码库,开发工具和技术栈统一
部署简单,只需打包成一个应用(如 JAR、WAR...
使用IDEA新建Java项目时候出现的一些生成文件都有什么作用
分析Idea创建项目的时候产生的文件作用
下面使用 IDEA 创建JAVA项目时
Build system 方式选择 IntelliJ
后创建出的项目包含的各个文件部分
image-20250716233538096
其中
.idea:
这个目录是 IntelliJ IDEA 的项目配置目录,它包含了许多关于项目设置的
XML
配置文件,如项目的编码、语言级别、编译器设置、项目结构、编译器设置、代码样式等。这个目录是
IntelliJ
特有的,通常不应该被加入到版本控制系统中(除非团队中所有成员都使用
IntelliJ IDEA),对项目的正常运行和开发环境的配置至关重要。
out/
这是 IntelliJ 默认的编译输出目录,编译过程中生成的
.class 文件和其他资源会被存放在这里。默认情况下,Java
类编译后的输出会放在 out/production/[项目名]
目录下。
[projectName].iml
这是一个 IntelliJ...
Docker part6—Docker容器数据卷详解
Docker 容器数据卷
什么是容器数据卷
容器数据卷是 Docker
中用于持久化存储容器数据的一种机制。简单来说,数据卷就像是容器与宿主机之间的
“共享文件夹”
Docker 将应用与运行的环境打包形成容器运行,
Docker容器产生的数据,如果不通过 docker...
DESIRE-Tony Ann 乐谱
12345678910111213141516171819202122X:1T:DESIREC:Tony AnnQ:1/4=130M:4/4L:1/8K:F#%%score (T1 T2)V:T1 trebleV:T2 treble[V:T1] |: z2 f2f2f2 z2 f2f2f2 | z2 f2f2f2 z2 f2f2f2 |[V:T2] |: F2 z2 z4 | ^F2 z2 z4 |[V:T1] z2 f2f2f2 z2 f2f2f2 | z2 f2f2f2 z2 f2f2f2 |[V:T2] F2 z2 z4 | ^F2 z2 z4 |[V:T1] z2 f2f2f2 z2 f2f2f2 | z2 f2f2f2 z2 f2f2f2 |[V:T2] F2 z2 z4 | ^F2 z2 z4 |[V:T1] z2 f2f2f2 z2 f2f2f2 | z2 ^a2f2^a2f2 z2 f2^a2f2^a2f2 |[V:T2] F2 z2 z4 | ^F2 z2 z4 |[V:T1] z2 f2f2f2f2 z2 f2f2f2f2 | z2 f2f2f2f2 z2...
Java开发中JSON的应用与处理详解
Java与JSON
关于 JSON,最重要的是要理解它是一种数据格式,不是一种编程语言**。虽然具有相同的语法形式,但
JSON 并不从属于 JavaScript。而且,并不是只有 JavaScript 才使用
JSON,毕竟 JSON 只是一种数据格式。很多编程语言都有针对 JSON
的解析器和序列化器。
JSON
是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量。
对象(object):一个对象包含一系列非排序的键/值对,一个对象以
{开始,并以 }结束。每个键/值对之间使用
:分区。多个键值对之间通过 ,
分割。需要注意的是JSON 的键是一个 String 类型的字符串
img
值(value):可以是双引号括起来的字符串(string)、数值(number)、true、false、
null、对象(object)或者数组(array)。这些结构可以嵌套使用。
JSON 值的格式
ECMAScript 5 定义了一个原生的 JSON 对象; JSON对象包含两个方法:
用于解析...
Dcoker part5-Docker将容器提交为新镜像和容器相关内容
Docker Commit 命令
Docker
中用于将容器的修改提交为新镜像的命令,当我们对运行中的容器进行了配置修改、软件安装等操作后,可以通过该命令将这些变更固化为一个新的镜像,以便后续复用或分发。
基本语法
如下命令可以允许我们将容器的当前状态保存为一个新的镜像。当我们在容器中安装了新软件或修改了配置,需要保存这些更改的时候,我们可以把该镜像打包为一个容器进行发布。
1docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
CONTAINER:要提交的容器 ID
或名称。
REPOSITORY[:TAG](可选):新镜像的名称和标签,格式为仓库名:标签名。
常用参数
参数
作用
-a, --author
指定镜像作者,如--author "ergoutree"。
-c, --change
在提交时添加 Dockerfile
指令(如CMD、ENV),会应用到新镜像中。
-m, --message
添加提交信息,类似 Git...
Docker part4-镜像的分层概念和镜像结构
Ubuntu容器说明
回顾一下,容器只不过是一个正在运行的进程,它还应用了一些附加的封装功能,以使其与主机和其他容器保持隔离。而镜像包含运行应用程序所需的所有内容——代码或二进制文件、运行时、依赖项以及所需的任何其他文件系统对象。
实际上在实际使用中,我们使用镜像创建容器,非常像使用一个新的系统镜像(这里的镜像包含了运行程序的所有内容)来安装系统(创建容器)
有镜像才能创建容器,这是根本前提
那么这些容器的关系是什么情况,如下图
image-20250708171232253
推荐 Ubuntu,因为 CentOS 太大了
貌似现在你在 Ubuntu 装 docker,就会自带一个 Ubuntu 的镜像上的 Ubuntu
容器
Docker镜像加载原理
镜像基本
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件,这个打包好的运行环境就是
image 镜像文件。只有通过这个镜像文件才能生成 Docker...
Docker part3-Docker常用命令
Docker 帮助类命令
1docker --help
功能:显示 Docker
命令行工具的全局帮助信息,包括所有可用的子命令列表,以及如何使用 Docker
命令的基本语法结构。
示例:在终端输入
docker --help,会输出类似以下内容:
image-20250708144835613
1docker COMMAND --help
功能:显示具体某个 Docker
子命令的帮助信息,比如想了解 docker run
命令的详细用法和参数说明,就可以使用 docker run --help
。它会列出该命令的语法格式、各个参数的含义、以及一些使用示例。
示例:执行
docker run --help,输出内容会包含:
image-20250708144953099
1docker help
功能:与 docker --help...
Docker part1-Docker理念与架构理解
了解docker的前生 LXC
LXC为Linux
Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。
Linux Container提供了在单一可控主机节点上支持多个相互隔离的 server
container 同时执行的机制。Linux Container有点像
chroot,提供了一个拥有自己进程和网络空间的虚拟环境,但又有别于虚拟机,因为lxc是一种操作系统层次上的资源的虚拟化。
docker并不是LXC替代品,docker底层使用了LXC来实现,LXC将linux进程沙盒化,使得进程之间相互隔离,并且能够控制各进程的资源分配。
在LXC的基础之上,docker提供了一系列更强大的功能。
而docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,这是
LXC...
Java8新特性-Stream流的全面讲解
什么是Stream流
Java 8 引入的 Stream API
是一个革命性的特性,它为集合操作提供了一种更高效、更简洁的方式。配合同版本的lambda表达式的出现,我们操作集合(Collection)提供了极大的便利。Stream
是 Java 8
中处理集合数据的抽象概念,它不是一个数据结构,而是一个来自数据源的元素队列并支持聚合操作。
Stream 将要处理的元素集合看作一种流,在流的过程中,借助 Stream API
对流中的元素进行操作,比如:筛选、排序、聚合等。
Stream
允许你以声明式方式处理数据集合,将复杂的数据处理任务转化为一系列简单的操作链。
这里的流指的是一系列元素的序列,它可以在一次遍历的过程中逐个处理这些元素。在Java中,流是对数据的抽象,可以操作各种不同类型的数据源,如集合、数组、文件等。
Stream可以由数组或集合创建,对流的操作分为两种:
中间操作,每次返回一个新的流,可以有多个。(筛选 filter、映射
map、排序 sorted、去重组合...
Docker part2-Docker的安装和使用
Docker简介
简而言之,Docker
是一个可供开发者通过容器(container)来构建,运行和共享应用(application)的平台。用容器来部署应用被称为集装箱化(containerization)。
Docker
就像一个盒子,里面可以装很多物件,如果需要某些物件,可以直接将该盒子拿走,而不需要从该盒子中一件一件的取。
Docker中文社区、Docker中文文档
Docker 包括三个基本概念:
镜像(Image)
Docker的镜像概念类似于虚拟机里的镜像(比如.ISO文件),是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。
例如:一个镜像可以包含一个完整的...
理解Java Lambda表达式的使用
Lambda表达式概述
Lambda表达式是 Java8
正式引入的一种语法,它的本质上是一个匿名函数,是对匿名函数的简写形式,它可以被传递给方法或存储在变量中,提供了一种清晰简洁的方式来表示一个接口的单个方法。
我们可以把
Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递),因为Lambda
表达式支持函数式编程范式,它允许开发人员传递行为而不是具体的值,这简化了代码结构和流程控制。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升;
而且它极大地增强了 Java
的编程模型,尤其在处理集合和流时,我们接下来在学习 Stream Api 和在
Spring 中异常处理与响应构建,Bean定义与条件配置等时候都需要用到
Lambda表达式
让我们通过一个具体例子看Lambda表达式如何简化代码:
传统匿名内部类写法:
123456Comparator<String> comparator = new Comparator<String>() { @Override public...















