Dubbo 使用的几个记忆点
因为后台使用的 dubbo 作为 rpc 框架,并且会有一些日常使用情景有一些小的技巧,在这里做下记录作笔记用,包括只拉取不注册,只注册不拉取和权重配置
因为后台使用的 dubbo 作为 rpc 框架,并且会有一些日常使用情景有一些小的技巧,在这里做下记录作笔记用,包括只拉取不注册,只注册不拉取和权重配置
给定两个大小分别为 `m` 和 `n` 的正序(从小到大)数组 `nums1` 和 `nums2`。请你找出并返回这两个正序数组的 **中位数** 。
给定一个已排序的链表的头 `head` , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的
1 <= nums1.length, nums2.length <= 10000 <= nums1[i], nums2[i] <= 1000两个数组的交集,最简单就是两层循环了把两个都存在的找出来,不过还有个要去重的问题,稍微思考下可以使用集合 set 来处理,先把一个数组全丢进去,再对比另外一个,如果出现在第一个集合里就丢进一个新的集合,最后转换成数组,这次我稍微取了个巧,因为看到了提示里的条件,两个数组中的元素都是不大于 1000 的,所以就搞了个 1000 长度的数组,如果在第一个数组出现,就在对应的下标设置成 1,如果在第二个数组也出现了就加 1,
public int[] intersection(int[] nums1, int[] nums2) {
// 大小是 1000 的数组,如果没有提示的条件就没法这么做
// define a array which size is 1000, and can not be done like this without the condition in notice
int[] inter = new int[1000];
int[] outer;
int m = 0;
for (int j : nums1) {
// 这里得是设置成 1,因为有可能 nums1 就出现了重复元素,如果直接++会造成结果重复
// need to be set 1, cause element in nums1 can be duplicated
inter[j] = 1;
}
for (int j : nums2) {
if (inter[j] > 0) {
// 这里可以直接+1,因为后面判断只需要判断大于 1
// just plus 1, cause we can judge with condition that larger than 1
inter[j] += 1;
}
}
for (int i = 0; i < inter.length; i++) {
// 统计下元素数量
// count distinct elements
if (inter[i] > 1) {
m++;
}
}
// initial a array of size m
outer = new int[m];
m = 0;
for (int i = 0; i < inter.length; i++) {
if (inter[i] > 1) {
// add to outer
outer[m++] = i;
}
}
return outer;
}