SpinrgCloud笔记P36-P46
36.Ribbon入门Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。主要功能是提供客户端的软件负载均衡算法和服务调用。
LB负载均衡(Load Balance)是什么简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA(高可用)。
Ribbon本地负载均衡客户端 VS Nginx服务端负载均衡区别
Nginx是服务器负载均衡,客户端所有请求都会交给nginx,然后由nginx实现转发请求。即负载均衡是由服务端实现的。
Ribbon本地负载均衡,在调用微服务接口时候,会在注册中心上获取注册信息服务列表之后缓存到JVM本地,从而在本地实现RPC远程服务调用技术。
集中式LB:即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把访问请求通过某种策略转发至服务的提供方;
进程内LB:将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。Ribbon就属于进程内LB,它只是一个类库,集成于消费方 ...
SpinrgCloud笔记P15-P35
15.Eureka基础知识
什么是服务治理
在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。
什么是服务注册
Eureka采用了CS的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息 比如 服务地址通讯地址等以别名方式注册到注册中心上。另一方(消费者|服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后再实现本地RPC调用RPC远程调用框架核心设计思想:在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)。在任何rpc远程框架中,都会有一个注册中心(存放服务地址相关信息(接口地址))
Eu ...
SpinrgCloud笔记P1-P14
1 项目地址 笔记地址项目地址:yangxiaozhuo/springcloud (github.com)
笔记博客地址:blog.yangxiaobai.top 或 杨小白の博客 - Dream big and dare to fail (yangxiaozhuo.github.io)
2 零基础微服务框架理论入门2.1 什么是微服务
微服务是一种架构风格
一个应用拆分为一组小型服务
每个服务运行在自己的进程内,也就是可独立部署和升级
服务之间使用轻量级HTTP交互
服务围绕业务功能拆分
可以由全自动部署机制独立部署
去中心化,服务自治。服务可以使用不同的语言、不同的存储技术
2.2 分布式微服务架构-落地维度
服务调用
服务降级
服务注册与发先
服务熔断
负载均衡
服务消息队列
服务网关
配置中心管理
自动化构建部署
服务监控
全链路追踪
服务定时任务
调度操作
2.3 SpringCloud 简介SpringCloud=分布式微服务架构的站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶
Sprin ...
dubbo分布式快速入门
1.分布式简要说明Dubbo是用于分布式系统的框架所以我们要先了解什么是分布式
分布式系统是若干独立 计算机的集合,这些计算机对于用户来说就像单个相关系统。
1.1 Dubbo和SpringCloud对比
1.2 发展的演变
ORM单一应用架构:一个项目装到一个服务器当中,也可以运行多个服务器每一个服务器当中都装一个项目。
MVC垂直应用架构:将应用切割成几个互不相干的小应用,在将每个小应用独立放到一个服务器上,如果哪一个应用的访问数量多就多加几台服务器。
**RPC分布式应用架构(远程过程调用)**:当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
SOA流动计算架构:在分布式应用架构的基础上增加了一个调度、治理中心基于访问压力实时管理集群容量、提高集群的利用率,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键 (不浪费计算机资源)
1.3 什么是RPCRPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网 ...
Redis VS MySql,到底谁更快?(一)
前言:“redis为什么比Mysql快?”
我相信这是大家只要学过redis或者看过面试题都会遇到也都会回答的一个问题。那么,我突然想到一个问题:redis一定比mysql快吗?
答案是:不一定!
今天看着黑马点评的项目,突然想到,redis是不是一定比mysql快呢?所以就去各大主流程序员网站进行搜索,包括掘金,csdn。只在csdn中只找到了一篇文章有进行对比测试,采用jmeter测试得出redis比mysql快接近6倍。
没找到答案的我,针对于这个疑问,我做了以下几场测试。
测试1测试1测试平台如下
1234mysql-8.0.29 在本机运行虚拟机CentOS7.6 分一核二线程,2G运行内存redis-6.2.6 在虚拟机运行测试数据库hmdp中,tb_user表查询
这里我们先连接上本机的数据库,并在redis中添加key为user的数据。
编写连接测试的代码,运行后可以拿到两边的测试数据。
12345678910111213@Resourceprivate StringRedisTemplate stringRedisTemplate;@Resourc ...
五子棋设置背景
打开cmd控制台
执行下面三行代码,
如图
123pip --versionpython -m pip install --upgrade pippip install Pillow
改代码,其中”图片的名称”,放自己图片的文件名就好,要求图片和代码在同一个文件夹下面。
1im = get_image("图片的名称.png",850,600)
如图
效果
如图
代码
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313 ...
理工学堂使用
理工学堂使用理工学堂做题技巧,有以下两种方法,如想简答处理请使用第一种方法,若想跟深探讨尝试,可以尝试第二种使用方法。
下面直接上具体操作!
利用浏览器查看答案
利用工具,直接发送请求
利用浏览器查看答案第一步,微信打开理工学堂,点击用浏览器打开
第二步,浏览器按F12,或右键点击检查
讲浏览器切换成手机样式
点击网络,查看网路数据传输
调整合适的窗口大小
输入账号密码登录
第三步,找到要做的课程,如下图先清理网络数据,后打开要做的课程(这里以图示为例)
强调,顺序很重要,先清理,后打开(其实不清理也可以,为了后续方便,清理之后更简洁)
第四步,在网络栏中找到showQuestions的列表
单击展开
点击右侧预览
展开data,从0-9中的answer,对应着1-10题的答案。0-1是判断题,ABCD是选择题,填空题直接对应着照抄answer后面的数据
第五步,照着答案选择后提交,成功100分
利用工具直接发送请求这里需要下载postman软件,官网下载就好,免费的,链接如下
Download Postman | Get Started for ...
异常和集合
异常throw异常就是当程序执行到一段代码,发生异常后,就new一个对应的类的对象,这个类是一个异常类,如:NullPointerException和NumberFormatException,然后throw或者catch,throw就是抛出一个异常,和return对比。
throw
return
异常退出
正常退出
throw后执行的代码不定,看异常处理机制动态决定
返回位置确定:上一级调用者
try/catch1234567System.out.println("请输入一个数字");try { int num = Integer.parseInt(args[0]); System.out.println(num);} catch(NumberFormatException e) { System.out.println("参数" + arg[0] + "不是有效数字,请输入数字");}
如果在try内跑出来异常,可以由catch来捕获,捕获后程序 ...
javaIO
Java IOJava IO中常用的类
整个java.io包中最重要的就是五个类和一个接口。五个类是指:File、OutputStream、InputStream、Writer、Reader;一个接口是指Serializable
java I/O主要包含三个部分:
1.流式部分—IO的主体部分;
2.非流式部分—主要包含一些辅助流式部分的类,如:File类、RandomAccessFile类和FileDescriptor类
3.其他类—文件读取部分的与安全相关的类,如:SerializablePermission类,以及与本地操作系统相关的文件系统类,如:FileSystem类和Win
32FileSystem类和WinNTFileSystem类
主要的类如下
File(文件特征与管理):用于文件或者目录的描述信息,例如:生成新目录,修改文件名,删除文件,判断文件所在路径等。
InputStream(二进制格式操作)抽象类,基于字节的输入,是所有输入流的父类。
OutputStream(二进制格式操作)抽象类,基于字节的输出,是所有输出流的父类。
Reader(文件格 ...
面向对象
类可以把类看作函数的容器,或者表示自定义的数据类型。
修饰符
public:可以修饰类、类方法、类变量、实例变量、实例方法、构造方法,表示可以被外部访问。
private:可以修饰类、类方法、类变量、实例变量、实例方法、构造方法,表示不可以被外部访问,只能在类的内部使用
static:修饰类变量和类方法,也可以修饰内部类
final:修饰类变量,实例变量,表示只能被赋值一次。
protect:可以被同一个包内和子类访问。 包
private < 默认 < protected < public 字符编码
构造方法构造方法体现了多态
1234567public Point() { //构造器A this(0, 0);}public Point( int x, int y){ //构造器B this.x = x; this.y = y;}
构造方法可以有多个,但是和其他方法不同,构造方法特殊的地方:
名称是固定的,与类名相同。
没有返回值,也不能有返回值。构造方 ...