自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Threadlocal在Dubbo中的妙用

RpcContext大家知道RpcContext是记录一次调用的上下文信息。源码中的注释如下(RpcContext是一个临时状态持有者。每次发送或接收请求时,RpcContext中的状态都会更改)/** * Thread local context. (API, ThreadLocal, ThreadSafe) * Note: RpcContext is a temporary state holder. States in RpcContext changes every time when re

2020-10-14 21:07:02 651

原创 Dubbo--负载均衡流程与源码(上)

前文上一篇讲到了Dubbo集群调用流程,主要包括路由、负载均衡、容错等等。那么今天就讲讲负载均衡。Dubbo版本(2.7.x)为啥要有负载均衡每台机器因为硬件、网络等原因性能肯定不同,就算是相同性能的机器,如果每次调用都只是相同一台,资源浪费不说,还可能因为相同调用机器满负荷而导致接口不稳定。因此可以根据每台机器性能可以灵活选择不同的提供者,负载均衡孕育而生。策略RandomLoadBalance随机,按权重设置随机概率。在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用

2020-10-11 13:33:58 122

原创 Dubbo--集群调用与容错

集群调用为了提供性能与保持高可用,通常一个接口能力会有多个提供者,也就是集群(Cluster)。下面分析一下,Dubbo中一次invoke(调用)的流程。首先介绍一下几个关键类,可以结合具体流程在进行消化。各节点关系(参考Dubbo官网)Cluster 将 Directory 中的多个 Invoker 伪装成一个 Invoker,对上层透明,伪装过程包含了容错逻辑,调用失败后,重试另一个Invoker 是 Provider 的一个可调用 Service 的抽象,Invoker 封装了 P

2020-10-10 13:15:47 160

原创 IP首部各字段解析

IP数据包格式及首部中的个字段字段解释第一行4位版本号:代表的就是IP协议的版本号,如果是IPv4就是0100,如果是IPv6就是0110。4位首部长度:IP头的长度,4位即1111,也就是15,而一行有32位即4个字节,所以除了最下面的数据段,头部最大为15x4=60字节,上面的5行20字节是雷打不动的,多余的40字节数也就是选项的字节。8位服务类型:包括3 bit的优先权字段(取...

2019-11-30 15:58:10 7039

原创 剑指offer(23)——二叉搜索树的后序遍历序列

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。题解思路:后序遍历即左右根,根据BST的特性,左子树的每个节点都小于根节点,右子树的每个几点大于根节点。回到题目对于一个数组,最后一个就是他的根节点,那我们从头遍历找到第一个大于根节点的下标为索引 left,这样left之前的数组就是左子树,lef...

2019-11-19 17:34:12 76

原创 剑指offer(21)——栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)题解先看题目,理解一下题目含义(一开始没看懂在讲什么,菜是原罪)。发现正确的弹出顺序...

2019-11-17 20:38:29 76

原创 Redis设计与实现——链表与字典

链表链表的数据结构一目了然,因为C底层没有链表结构,所以Redis自己实现了,是一个双端链表。但不仅如此,Redis还设计了一个list结构体来持有链表使得操作起来很简易。举个例子:链表总结:双端链表,取某个节点的前置节点和后置节点,取表头节点与表位节点的复杂度都为O(1)。list中由链表的长度,程序获取链表长度时不需遍历,因此复杂度为O(1)。无环链表,表头的pre与表...

2019-11-09 21:39:49 155

原创 剑指offer(3)——从尾到头打印链表

题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。题解一读完题后,目的是从尾到头的顺序打印,也就是相当于逆序打印,逆序打印很容易让人联想到一个数据结构,那就是栈。那答案就出来了,不多废话代码如下:public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { Sta...

2019-11-07 19:41:09 104

原创 Redis设计与实现——简单动态字符串(SDS)

Redis字符串简介在Redis中,字符串的存储不是使用C语言传统的字符串表示,而是使用一种名为简单动态字符串(simple dynamic string)的数据结构表示。例如: 这一条指令redis>SET msg "hello"OK键值对的键是一个字符串对象,底层实现是一个保存着“msg”的SDS键值对的值是一个字符串对象,底层实现是一个保存着“hello”的SDSSDS...

2019-11-07 15:07:34 171

空空如也

空空如也

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

TA关注的人

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