自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

红烧咸鱼的博客

躺着不站着....

  • 博客(130)
  • 收藏
  • 关注

原创 Alibaba微服务组件Nacos注册中心

文章目录1. Nacos介绍1.1 什么是Nacos1.2 主流的注册中心的介绍和对比1.3 Nacos架构2. Nacos的部署2.1 下载源码编译2.2 下载安装包2.3 启动2.3.1 单机模式2.3.2 集群模式2.3.2.1 搭建单机伪集群模式2.4 prometheus + grafana监控Nacos3. Nacos的核心功能3.1 服务注册3.2 服务心跳3.3 服务同步3.4 服务发现3.5 服务健康检查3.6 Nacos的整体架构3.7 服务注册表结构3.8 服务领域模型3.9 服务实例

2021-04-05 19:19:20 537 3

原创 HTTP&TCP协议概述

文章目录1. 从一个HTTP请求来看网络的分层1.1 复杂的网络1.2 OSI与TCP/IP的网络模型1.3 一个HTTP请求的分层解析流程1. 从一个HTTP请求来看网络的分层众所周知,我们的网络是非常复杂的,那么我们便由简及繁介绍下网络1.1 复杂的网络由上图我们可以看到,我们为了简化网络的复杂度,网络通信的不同方面被分解成多层次结构,每一层只与紧挨着的上层或者下层进行交互,将网络分层,这样就可以修改,甚至替换某一层的软件,只要层与层之间的接口保持不变,就不会影响到其他层。1.2 O

2021-03-28 19:44:38 1407

原创 Raft协议

文章目录1. 什么是Raft2. Raft相关概念介绍2.1 term2.2 Raft协议中的节点状态3. 图解Raft协议的选举3.1 节点状态followerleadercandidate(候选状态)3.2 leader的选举图解3.3 日志复制同步图解3.4 leader的选举机制详细介绍3.4.1 图解leader的选举机制3.5 网络分区的问题图解3.5.1 补充知识点首先给大家推荐一个极其好用的Raft的图解网址,相当好用,自己跑一遍跟着这个去理解Raft的图解网址1. 什么是Raft

2021-03-24 17:05:40 552

原创 Redis的C源码实现(1)--redisDB讲解

文章目录Redis的基本特性Redis的应用场景缓存计数器分布式ID生成海量的数据统计会话缓存(session)分布式队列/阻塞队列分布式锁实现热点数据存储社交类需求排行榜延迟队列redis的相关源码介绍Redis中的字符串Redis的字符串结构SDS小结Redis的字符串的代码实现Redis的value的存储RedisDb的存储结构dict结构存储总结redisDB主题数据结构Redis的基本特性非关系型数据库,是以键值对的形式进行存储的,可以根据key以O(1)的时间复杂度去除或者插入关联值。R

2021-03-23 17:00:17 607

原创 合并两个有序链表

题目将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解析:迭代法解决:遍历l1和l2若当前指向l1的指针的数小于当前指向l2指针的数,将小的l1指针的数取出,l1向后移动l2不动l2若小于l1也是...

2019-12-03 14:27:50 142

原创 从0到1整体认知分布式系统

概述分布式架构的发展历史与背景如何着手架构一套分布式系统Dubbo结构与设计说明一:分布式架构的发展历史与背景理解分布式架构:分布式架构是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。我们简单理解就是原来是一个节点干活,只有一个JVM进行操作。现在分布...

2019-12-03 01:42:26 434

原创 有效的括号

题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:(1)左括号必须用相同类型的右括号闭合。(2)左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。...

2019-12-02 11:34:15 1414

原创 最长公共前缀

题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。解析我们使用了两种方法进行解析,但是都是水...

2019-11-28 16:40:17 126 2

原创 微服务开发(17)--Hystrix的原理&&Zuul的原理图

Hystrix的基本运行流程创建Command对象我们会判断熔断器是否开启当熔断器开启的时候,我们不会执行自己真正的逻辑,而是直接执行器降级方法,执行FallBack方法若FallBack方法执行成功,则返回Fallback方法的执行结果若Fallback方法执行失败,则抛出异常当熔断器关闭的时候,表示需要执行正常的逻辑当熔断器关闭走向正常的逻辑的时候,会先判断当前的...

2019-11-27 18:04:55 526

原创 颜色分类

题目给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意不能使用代码库中的排序函数来解决这道题示例输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶一个直观的解决方案是使用计数排序的两趟扫描算法。...

2019-11-26 20:37:25 418

原创 微服务开发(16)--SpringBoot源码分析外部tomcat启动war包的原理

前面我们已经介绍了SpringBoot的内置Tomcat的启动过程原理那么,SpringBoot打包成war包的时候,又是怎么运行的?在此之前先记结论SpringBoot程序是jar的方式,是通过IOC容器启动的方式,带动了Tomcat的启动;若SpringBoot程序是war包的方式,则是Tomcat启动带动了IOC容器的启动如何写一个war类型的SpringBoot程序首先打包...

2019-11-26 16:45:37 515

原创 微服务开发(12)--Hystrix的使用

分布式系统遇到的问题我们在使用分布式架构模式的情况下,会遇到服务雪崩等问题,先来明确几个概念服务扇出在分布式系统中,存在服务A调用服务B,而服务B又去调用服务C,服务D,这样的调用过程就是服务扇出服务雪崩或者级联故障在我们某一条扇出的服务调用链路中有一个服务,由于响应时间过程或者抛出异常,导致服务调用者老被占用越来越多的资源,从而导致整个系统崩溃,整个的过程就叫做服务雪崩或...

2019-11-26 15:13:00 230

原创 跳跃游戏

题目给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。注意:这里的到达最后一个位置表示的是只要经过就行,不一定非要刚好到达最后一个下标示例1输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例...

2019-11-25 21:23:06 97

原创 合并两个有序数组

题目给定两个有序整数组nums1和nums2,将nums2合并到nums1中,是的num1成为一个有序数组。说明初始化nums1和nums2的元素数量分别是m和n你可以假设nums1有足够的空间,空间大小大于或者等于m+n,以次来保存nums2中的元素示例输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3...

2019-11-23 21:50:29 105

原创 N皇后问题

题目n皇后问题研究的是如何将n个皇后放置在n*n的棋盘上。并且使皇后彼此之间不能相互攻击。皇后之间不能在同一行,同一列,正斜,反斜上同时存在上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入: 4输出: [[".Q…...

2019-11-23 12:05:16 246

原创 微服务开发(13)--ZUUL的使用

什么是网关Zuul是Netflix开源的微服务网关,它可以和Eureka,Ribbon,Hystrix等组件配合使用。Zuul的核心是一系列的过滤器Zuul网关也有负载均衡的功能,该负载均衡是服务端的负载均衡,因为客户访问网关,由服务网关来决定跳到哪一个服务,而不是自己决定的。一:主要功能身份认证与安全:识别每一个资源的验证要求,并且拒绝那些与要求不符合的请求审查与监控:在边缘位置...

2019-11-22 15:53:27 415

原创 最大子序之和

题目:给定一个整数组nums,找到一个具有最大和的连续子数组,子数组最少应该包含一个元素,返回其最大的和示例输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。要求时间复杂度O(n)思路:这个我们用动态规划的思路来解决,首先我们遍历数组如果sum > 0,则说明sum对...

2019-11-21 22:50:04 119

转载 MYSQL索引优化

参考这个

2019-11-20 14:15:52 79

原创 罗马数字转整数

题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字...

2019-11-20 11:51:25 130

原创 整数反转

题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。思路...

2019-11-19 15:47:24 169

原创 无重复字符的最长子串

题目给定一个字符串,请你找出其中不含有重复字符的最长子串的长度实例1输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “w...

2019-11-19 14:40:36 220

原创 回文数

题目判断一个整数是否是回文数。回文数是指正序(从左到右)和倒序(从右到左)读都是一样的整数示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个...

2019-11-19 10:03:44 222

原创 微服务开发(10)--Feign的使用

SpringCloud OpenFeign什么是FeignFeign是Netflix开发的声明式,模板化的Http客户端。Feign可以帮助我们更加快捷的,优雅的调用Http API与Ribbon对比来说,Feign的速度相对会慢一点,Feign的底层实际上就是使用了Ribbon进行调用的Feign使用的是动态代理,而Ribbon使用的是拦截器Ribbon借由RestTemplate来...

2019-11-19 00:33:38 478

原创 微服务开发(9)--Ribbon的使用

SpringCloud Ribbon什么是RibbonSpringCloud Ribbon是基于NetFilix ribbon实现的一套客户端的负载均衡工具,Ribbon客户端组件提供一系列的完善的配置,如超时,重试等。通过Load Balancer(LB)获取到服务提供的所有机器实例,Ribbon会自动基于某种规则(轮询,随机)去调用这些服务。Ribbon也可以实现我们自己的负载均衡算法。...

2019-11-18 23:26:21 245

原创 微服务开发(11)--Ribbon&Feign源码解析

Ribbon源码解析Ribbon的使用流程图从上图我们可以看到我们首先创建了一个Eureka集群,端口号分别为8001和8002User1服务和User2服务作为服务的提供方将自己的服务信息注册到Eureka中此时Order服务作为服务的消费者,我们会首先从Eureka中拉取服务注册列表,放到本地,做为缓存ribbon拉取的服务注册列表则是Order本都服务的注册列表,而不是自己从E...

2019-11-18 21:17:53 476

原创 两数相加

题目给出两个非空的链表用来表示两个非负整数。其中,他们各自的位数是按照逆序的方式进行存储的,并且他们的每个节点只能存储一位数字。如果,我们将这两个数字加起来,则会返回一个新的链表来表示他们的和。可以假设除了数字0以外,这两个数都不会以0开头示例输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:3...

2019-11-15 23:11:35 149

原创 两数之和

题目给定一个整数组nums和一个目标值target,请你在该数组中找出和为目标值的两个整数,并且返回他们的数组的下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例给定nums = [2, 7, 11, 15],target = 9因为nums[0] + nums[1] = 2 + 7 = 9所以返回[0, 1]解析(参考了leetco...

2019-11-14 16:01:19 59

原创 各位相加

题目描述:给定一个非负整数num,反复将各个位上的数字相加,直到结果是一位数为止,返回示例输入:38输出:2解释:各位相加的过程是:3 + 8 = 11, 1 +1 =2。由于2是一位数,所以返回2要求不使用循环或者递归,并且在O(1)时间复杂度内解决这个问题解析假设有一个三位数(其实几位数都行)n1 = 100 * a + 10 * b + c...

2019-11-14 11:41:43 207

原创 微服务开发(8)--Eureka源码深入分析(客户端)

Eureka客户端解析下图是我们Eureka客户端的主要流程分析:根据上图分析源码1. 查看我们的pom文件,发现我们导入了maven依赖 <!--Eureka的客户端依赖--> <dependency> <groupId>org.springframework.cloud</groupId&...

2019-11-13 00:39:55 507

原创 微服务开发(7)--Eureka源码深入分析(Server服务端)

看源码的方法:先使用: 先看官方文档快速掌握框架的基本使用抓主线: 找一个demo入手,顺腾摸瓜快速静态看一遍框架的主线源码(抓大放小),记得画出源码的主流程图,一定不要一开始就陷入源码的细枝末节,否则会把自己绕晕画图做笔记: 总结框架的一些核心功能点,从这些功能点入手深入到源码的细节,边看源码走向图,并对关键源码的理解做笔记,把源码里的闪光点都记录下来,后来可以借鉴到工作项目中,理解能力...

2019-11-13 00:10:38 296

原创 微服务开发(6)--微服务介绍及Eureka服务注册与发现详解

微服务入门一:微服务概述1. 微服务是什么(1)微服务的核心就是把传统的单机应用,根据业务将单机应用拆分成为一个个的服务,将其彻底的解耦,每一个服务都是提供特定的功能,一个服务只做一件事,类似进程,每个服务都能够单独部署,甚至可以拥有自己的数据库。这样的一个个小的服务就是微服务。(2) 比如传统的单机电商应用,可以将整个服务化为订单,支付,库存,物流,积分等模块(这里的模块就是一个一个的s...

2019-11-11 17:40:11 408

原创 微服务开发(4)-- 手写starter启动器

自定义Starter在SpringBoot中我们已经分析了stater的原理,现在我们自己手写一个starter自定义starter的步骤(1)自定义starter(2)使用starter代码实现创建starter引入maven依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://ma...

2019-11-08 18:16:30 476

原创 微服务开发(5)--SpringBoot的内置Tomcat启动过程

内容讲解本章节我们主要讲解:(1)以redis的自动装配为例,如何修改RedisTemplate的序列化器(2)Bean的后置处理器的作用以及工作的时机(3)BeanPostProcess,InitializingBean以及自定义@Init的执行时机(4)tomcat的启动流程(==重点 ==)(5)如何扫描自己的组件,以及如何调用到@Import的注解如何修改RedisTem...

2019-11-07 23:39:22 1622

原创 微服务开发(2)-- SpringBoot整合JDBC&Druid&MyBatis

SpringBoot整合JDBC代码实现导入maven依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...

2019-11-06 23:03:57 149

原创 微服务开发(3)-- SpringBoot自动装配原理详解

SpringBoot自动装配原理详解这里我们以redis的集成为例,先体会下有自动装配和没有自动装配功能的代码的配置不使用自动装配功能(1)加入配置<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</art...

2019-11-06 21:23:33 801

原创 微服务开发(1)-- SpringBoot快速开始

一. SpringBoot的微服务开发利器什么是微服务,微服务和微服务架构的区别?目前而言,对于微服务业界没有一个统一的标准定义,但是通常而言提倡把单一的应用程序划分为一组小的服务每个小的服务都会运行在自己的进程中,服务之间通过轻量级的通信机制(http和rest api)来进行通信,那么这一个个的小服务就是微服务。单体架构:传统的单一电商应用来说,订单,支付,用户,商品,库存等模块...

2019-11-05 10:30:45 179

原创 分布式缓存架构(3)-Redis事务&主从复制&哨兵机制

Redis的主从复制概述:redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库,一类是从数据库,主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并且接受主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载均衡能力。主...

2019-11-03 03:24:38 179

原创 分布式缓存架构(2)-SpringBoot整合Redis

分布式Redis缓存什么是redis非关系型数据库,NOSQL可以设置有效期,是内存数据库,同时也可以将其持久化,保证数据的高可用Redis是由意大利人开发的一款内存高速缓存数据库,该数据库由C语言编写,Redis是一个key-value存储系统,他支持丰富的数据类型。如:string,list,set,zset(有序set),hashredis采用的是基于内存的采用单进程单线程模型的...

2019-11-01 16:50:09 143

原创 分布式缓存架构(1)-初始分布式缓存架构EhCache

为什么要使用缓存?为了减轻服务器端的压力缓存应用在什么地方?浏览器访问图片自带缓存技术CDN内容分发的时候做静态资源缓存代理缓存(Nginx)使用缓存技术的目的是为了减轻服务器端的压力。我们今天是在应用层去做缓存,就是代码层面实现缓存Session保存在服务器端,保存在单个JVM中,返回sessionId,将sessionId保存在响应头中,客户端存...

2019-10-28 17:38:16 200

原创 互联网安全架构(6)-基于OAuth2.0协议方式

Oauth2.0协议一般是用在互联网API开放平台上的,比如第三方联合登录等会用到Oauth2.0联合协议为什么会有Oauth2.0?因为在互联网开放平台中,接口互相调用,保证安全性的问题什么是开放平台?暴露公网IP提供API接口常见的开放平台:支付宝,微信,蚂蚁金服,百度等开放平台适合于大型互联网公司不同的开放平台对接的Oauth2.0的协议流程都是相同的,无非...

2019-10-27 01:30:29 171

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除