Gateway统一网关
GatewayGateway是什么
Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,目标是替代ZUUL,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。
简单来说就是用于处理前来访问服务的每一个请求。可以对这些请求做出身份认证和权限校验,服务路由,负载均衡,请求限流等操作
服务路由:将请求发往具体的服务
负载均衡:每个服务都有多个实例,从中挑一个实例
请求限流:限制请求数量
断言:表示为一些布尔表达式,用于判断;路由断言即为判断路由请求是否合规
SpringCloudGatew搭建引入module SpringCloudGateway的依赖和Nacos的服务发现依赖
<dependencies> ...
计网
简答
什么叫计算机网络
利用通信线路,将具有独立功能的计算机互连成一个计算机集合,以传递信息和共享资源
计算机网络的功能
通信功能,资源功能(硬件资源共享,软件资源共享,数据资源共享)
计算机网络的发展分为哪些阶段
雏形面向终端的计算机通信网络;计算机互联网络;标准化网络、协议;网络互连与高速网络
计算机网络按照地理分为哪几种
局域网LAN:指在有限的地理区域内构成的规模相对较小的计算机网络,通常由一个管理部门统一管理。 其覆盖范围一般不超过几十公里
城域网MAN:覆盖范围在局域网和广域网之间,一般来说是将一个城市范围内的计算机互联。范围在几十公里到几百公里
广域网WAN:它一般是将不同城市或不同国家之间的局域网互联起来。 作用范围通常为几十公里到几千公里
模拟信号和数字信号的差异
模拟信号 - 是指在时间上和空间上连续变化的信号。
数字信号 - 是指在时间上离散的信号。
简述ICMP的作用
差错控制:路由器数据故障。
拥塞控制:网络阻塞,路由器需要通知发送主机采取相应措施。
连通测试:用于PING命令,可以使用ICMP报文测试主机之间通讯
局域网的主要特点是
覆 ...
Http客户端Feign
Http客户端Feign介绍
Feign 是 Netflix 开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API。
Spring Cloud Feign帮助我们定义和实现依赖服务接口的定义。在Spring Cloud feign的实现下,只需要创建一个接口并用注解方式配置它,即可完成服务提供方的接口绑定,简化了在使用Spring Cloud Ribbon时自行封装服务调用客户端的开发量。
Spring Cloud对Feign进行了增强,使Feign支持了Spring MVC注解,并整合了Ribbon和Eureka,从而让Feign的使用更加方便。
使用引入依赖<!-- feign客户端依赖--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
...
Public Key Retrieval is not allowed
Public Key Retrieval is not allowed报错java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
解决url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false&allowPublicKeyRetrieval=true
Nacos注册中心
Nacos注册中心
Nacos是阿里巴巴的产品,现在是SpringCloud的一个组件,相较于Eureka功能更加丰富,在国内受欢迎程度较高
Nacos和Eureka的区别共同点
都支持服务注册和服务拉取
都支持服务提供者心跳方式做健康检测
区别
Nacos支持服务端主动检测提供者状态:
临时实例采用心跳模式
非临时实例采用主动检测模式
临时实例心跳不正常会被剔除,非临时实例则不会被剔除
Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式
入门
下载地址
解压之后进入bin目录
cmd: startup.cmd -m standalone
默认端口:8848
浏览器访问:
http://你的IP:8848/nacos/index.html#/login
账号:nacos
密码:nacos
配置父工程<dependency> <groupId>com.alibaba.cloud</groupId> <artifa ...
Eureka注册中心
搭建Eureka服务Eureka的作用
消费者如何获取服务提供者的具体信息
eureka也是服务,它会将自己也提交到注册中心,用于eureka集群之间通信
服务提供者启动时,向eureka注册自己的信息
eureka保存这些信息
服务消费者根据服务名称向eureka拉取提供者的信息
如果有多个服务提供者,消费者该如何选择
服务消费者根据负载均衡算法,从服务列表中挑选一个
先非洲如何感知服务提供者的健康状态
服务提供者会每隔30s向注册中心发送心跳请求,报告健康状态
eureka会更新记录服务列表信息,心跳不正常会被剔除
消费者就可以拉取到最新的信息
添加依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>
启动注解@EnableEurekaServer
@ ...
Ajax,Axios
AjaxsAjaxGETPOSTJSON请求超时取消请求取消重复请求JQuery<body> <button>点击发送请求</button> <div id="result"></div> <script> // 获取 button 元素 const btn = document.getElementsByTagName('button')[0]; const result = document.getElementById("result"); // 绑定事件 btn.onclick = function(){ // ajax 实现 // 1. 创建对象 const xhr = new XMLHttpRequest(); // 2.初始化 设置请求方法和 url ...
微服务架构概念
微服务架构概念前言:
微服务架构是一种将应用程序分解为多个小而自治的服务的软件架构。每个服务都有自己的功能,进程,语言和协议。可以独立部署和拓展。微服务架构可以提升应用程序的灵活性,可拓展性和开发效率。
微服务技术栈
随着人们需求的增加,相应的服务就增加了,构建起一个庞大的服务集群。
服务越多,服务之间的相互调用越来越复杂,这样我们就需要一个注册中心来记录每一个服务的IP与端口及功能。当需要调用服务时,只需要把请求发给注册中心,拉取对应的服务。
同时,每个服务器都有自己的配置文件,当配置发生变动时更改过于繁琐,这样就产生了配置中心。它统一管理整个集群的配置文件,配置变更时它会通知相应的服务器,从而实现配置的热更新。
对用户的访问设置了服务网关,它完成了用户的身份验证,请求路由,负载均衡等功能。
数据的增加造成数据库无法抗住高并发与大量的数据,可以加入分布式缓存把数据库中数据放入内存当中提升查询效率,用分布式搜索完成海量数据的复杂查询。
通常一个业务会跨越多个服务,这会导致整个业务了列路很长,调用时常就会等于每个服务的执行时常之和。加入消息队列后,起始服务发出通知而不是直接调用进而减 ...
JDK,JRE,JVM
JDK,JRE,JVM的联系和区别JDK
JDK(Java Development Kit) 是Java的核心
包含了Java运行环境(JRE : Java Runtime Environment),一些Java工具(javac,jaca,jdb等),和Java的基础类库(即JavaAPI)。
JRE
JRE(Java Runtime Environment)是Java的运行环境
包含了JVM标准实现和Java核心类库(lib类库)
见名知意,它是Java运行时需要的
JVM
JVM(Java Virtual Machine),即Java虚拟机
三者的联系
JDK由JRE和一些Java工具以及基础类库组成,而JRE由JVM和lib类库组成
JDK是一个开发环境,它里面有将 java文件编译成 .class文件的 javac程序,也有jre.exe,javadoc.exe等用于开发的可执行指令文件。
JRE则是一个运行环境,它下面不包含任何的开发工具。
JVM执行 .class文件时,需要JRE下lib类库的支持,尤其是rt.jar
Sort
快速排序冒泡排序插入排序选择排序希尔排序归并排序基数排序堆排序package com.hero.sort;/* @author Heroxin @create 2022-10-31-19:49 @Description: 快速排序 https://blog.csdn.net/qq_40941722/article/details/94396010*/import java.util.Arrays;public class Quick { public static void main(String[] args) { int arr[] = {1, -3, 5, 2, 16, 10}; quickSort(arr, 0, arr.length - 1); System.out.println(Arrays.toString(arr)); } /** * @param arr 待排序数组 * @param left 左哨兵 * ...