Fork me on GitHub

Dubbo-01-调用过程

Dubbo-01-调用过程

  • 微服务的普及化以及重要性,服务化场景下随之而来的就是服务之间的通信问题,那服务间的通信脑海中想到的就是 RPC,说到 RPC 就离不开咱们的 Dubbo。

mark

本文流程:

Dubbo 的简介、总体分层、核心组件以及大致调用流程

我们先来谈一谈什么叫 RPC ,我发现有很多同学不太了解这个概念,还有人把 RPC 和 HTTP 来进行对比。所以咱们先来说说什么是 RPC。

阅读更多...

Leetcode-014-最长公共前缀

Leetcode-014-最长公共前缀

思路:遍历

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。

1
2
3
4
5
6
7
8
9
10
11
12
示例 1:

输入: ["flower","flow","flight"]
输出: "fl"
示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:

所有输入只包含小写字母 a-z 。

解法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// 横向扫描
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}

// 拿到字符串数组的长度
int len = strs.length;
// 拿到第一个字符串
String prefix = strs[0];

// 两两比较,找出最长公共前缀
for (int i = 1; i < len; i++) {
prefix = longestPrefix(prefix, strs[i]);
if (prefix.length() == 0) {
break;
}
}
return prefix;
}

// 两两比较,找出最长公共前缀
private String longestPrefix(String str1, String str2) {
int length = Math.min(str1.length(),str2.length());
int index = 0;
while (index < length && str1.charAt(index) == str2.charAt(index)){
index ++;
}

// 截取字符串
return str1.substring(0,index);
}
}

Redis-14-key有效时间设置

Redis-14-key有效时间设置

前言

  • 本文对redis的过期处理机制做个简单的概述,让大家有个基本的认识。
  • Redis中有个设置时间过期的功能,即对存储在redis数据库中的值可以设置一个过期时间。作为一个缓存数据库,这是非常实用的。如我们一般项目中的token或者一些登录信息,尤其是短信验证码都是有时间限制的,按照传统的数据库处理方式,一般都是自己判断过期,这样无疑会严重影响项目性能。
阅读更多...

Linux-08-netstat详解

Linux-08-netstat详解

前言

  • Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

输出信息含义

  • 执行netstat后,其输出结果为
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHED
tcp 296 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHED
tcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHED
tcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHED
tcp 0 80 210.34.6.89:1161 210.34.6.10:netbios-ssn CLOSE

Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 1 [ ] STREAM CONNECTED 16178 @000000dd
unix 1 [ ] STREAM CONNECTED 16176 @000000dc
unix 9 [ ] DGRAM 5292 /dev/log
unix 1 [ ] STREAM CONNECTED 16182 @000000df

从整体上看,netstat的输出结果可以分为两个部分:

  • 一个是Active Internet connections,称为有源TCP连接,其中”Recv-Q“和”Send-Q“指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。

  • 另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。

  • 其中 : Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。

阅读更多...

Linux-07-内存管理

Linux-07-内存管理

前言

  • 操作系统内存管理:总的来说,操作系统内存管理包括物理内存管理虚拟内存管理

物理内存管理:

  • 包括程序装入等概念、交换技术、连续分配管理方式和非连续分配管理方式(分页、分段、段页式)。

虚拟内存管理:

  • 虚拟内存管理包括虚拟内存概念、请求分页管理方式、页面置换算法、页面分配策略、工作集和抖动。
阅读更多...

ZooKeeper-01-脑裂问题

ZooKeeper-01-脑裂问题

前言

  • 这是分布式系统中一个很实际的问题,书上说的不是很详细,整理总结一下。

1. 脑裂和假死

1.1 脑裂

  • 官方定义:当一个集群的不同部分在同一时间都认为自己是活动的时候,我们就可以将这个现象称为脑裂症状。
  • 通俗的说,就是比如当你的 cluster 里面有两个结点,它们都知道在这个 cluster 里需要选举出一个 master。那么当它们两之间的通信完全没有问题的时候,就会达成共识,选出其中一个作为 master。
  • 但是如果它们之间的通信出了问题,那么两个结点都会觉得现在没有 master,所以每个都把自己选举成 master。于是 cluster 里面就会有两个 master。

举例:

mark

阅读更多...

分布式-脑裂问题

分布式-脑裂问题

前言

  • 这是分布式系统中一个很实际的问题,书上说的不是很详细,整理总结一下。

1. 脑裂和假死

1.1 脑裂

  • 官方定义:当一个集群的不同部分在同一时间都认为自己是活动的时候,我们就可以将这个现象称为脑裂症状。
  • 通俗的说,就是比如当你的 cluster 里面有两个结点,它们都知道在这个 cluster 里需要选举出一个 master。那么当它们两之间的通信完全没有问题的时候,就会达成共识,选出其中一个作为 master。
  • 但是如果它们之间的通信出了问题,那么两个结点都会觉得现在没有 master,所以每个都把自己选举成 master。于是 cluster 里面就会有两个 master。

举例:

mark

阅读更多...
  • © 2019-2022 Zhuuu
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信