把这块金子刷上油漆丢到粪坑里面,还有发光的机会吗
千里马常有 而伯乐步常有
毒鸡汤真是害死人
年轻人入职场 不要一根筋 怎么die的都不知道
你的形象决定了你的未来01 作为公司的人事经理,今天我做了一件令我不愿意做的事情。就是约谈了一个做销售的同事。把他劝退。 我无数次在内心演练同他说话的情形,但是当他满脸笑意的问道:"杨经理,需要我...
把这块金子刷上油漆丢到粪坑里面,还有发光的机会吗
千里马常有 而伯乐步常有
毒鸡汤真是害死人
年轻人入职场 不要一根筋 怎么die的都不知道
你的形象决定了你的未来01 作为公司的人事经理,今天我做了一件令我不愿意做的事情。就是约谈了一个做销售的同事。把他劝退。 我无数次在内心演练同他说话的情形,但是当他满脸笑意的问道:"杨经理,需要我...
初始化的值 是你设置的weight值啊
dubbo技术内幕六 RoundRobinLoadBalanceRoundRobinLoadBalance是dubbo里面提供的按照权重进行轮询的负载均衡算法,整个算法设计的非常巧妙,如下1 初始化本地权重表,根据情况动态调整2 每次动态...
通过前面对duubo的介绍,我们支持,dubbo底层默认的使用netty作为nio框架来进行网络通信,等于说netty是基础,dubbo是建立在netty之上的能力扩展,所以...
上一章的中有讲到ServiceBean在export的过程中向zk写入的信息,这一章看下ReferenceBean在refer的过程中,向zk写的数据,已经监听了哪些变更。我...
前面的章节里面对zk的介绍很少,这边会介绍serviceBean在export的过程中,到底向zk写了什么,以及订阅了什么。zk的功能无非是信息的存储和变更通知。我们还是从S...
dubbo里面的过滤器机制能够让用户实现很好的定制扩展,就像tomcat里面的Filter的实现一样。我们看下在dubbo里面Filter具体是怎么实现的。在Referenc...
在上一篇对整个Client端的调用逻辑我们做了分析,这一章对Server端的源码做一些分析,整个Server端的类继承关系如下。 整个的继承关系还是主要分两个分支其中Abst...
如上所示,在dubbo的自介里面,是这样介绍exchange层与transport层的exchange 信息交换层:封装请求响应模式,同步转异步,以 Request, Res...
dubbo中提供了Protocol接口,我们看下源码 通过上面的接口类我们可以看到dubbo 通过refer封装了rpc调用成一个Invoker,而Invoker是dubbo...
经过前几章的讲解,相信大家对dubbo有了个大概的了解,让我们再回到最开始,在ReferenceConfig类的方法里面如下 其中T是我们定义的暴露给消费者的Interfac...
关于一致性hash的讲解网上很多,我们不说,具体看下dubbo里面是如何的实现一致性hash算法的。我们先看下ConsistentHashLoadBalance里面的doSe...
上一章我们提到了按权轮询算法RoundRobinLoadBalance,这节我们介绍下最少连接数算法LeastActiveLoadBalance。具体算法如下1 对所有的in...
RoundRobinLoadBalance是dubbo里面提供的按照权重进行轮询的负载均衡算法,整个算法设计的非常巧妙,如下1 初始化本地权重表,根据情况动态调整2 每次动态...
上一篇有介绍,在RegistryProtocol里面有很关键的一句如下 我们先看cluster的类继承关系,如下 cluster的继承非常的扁平,标准的策略模式的使用方式,而...
在上一篇有介绍,ReferenceBean refer的源码再贴一下 可以看到如上的源码里面,基本都是针对new出来的directory进行操作。我们先看下directory...
在dubbo里面比较复杂的是dubbo服务的refer过程。对dubbo service服务的引用都封装在ReferenceBean的实现里面。其继承关系如下 可以看到Ref...
既然有dubbo bean的export功能,那么就有dubbo bean的unexport功能,如果我们也将dubbo bean的unexport的功能搞清楚,我们可以设计...
按照dubbo官网的介绍,如下Apache Dubbo 是一款高性能、轻量级的开源 Java 服务框架记得最开始,dubbo是把自己定位成一款高性能的rpc框架,我们现在还是...
private void stepPondingSort(){
int[] steps = new int[]{0,1,0,2,1,0,1,3,2,1,2,1};
//int[] steps = new int[]{1,0,2};
Set<Integer> stepCat = Sets.newHashSet(Ints.asList(steps));
//去掉最小值和最大值,肯定是没有重复的
stepCat.remove(0);
Integer[] sortStep = stepCat.toArray(new Integer[0]);
Arrays.sort(sortStep);
int water = 0;
for(Integer cat : Arrays.asList(sortStep)){
int catInt = cat;
int firstIndex = -1;
int lastIndex =-1;
//找出左右当前分类的index,先对此cat进行填充
for(int i= 0;i < steps.length;i++){
if(steps[i] >= catInt){
if(steps[i]== catInt){
//如果firstIndex没有更新,那么进行更新,更新过后是不进行更新的
if(firstIndex == -1){
firstIndex = i;
lastIndex = i;
}else{
lastIndex = i;
}
}else{
//只有更新了firstIndex 采取更新lastIndex,如果firstIndex没有更新,lastIndex更新是没有意义的
if(firstIndex != -1){
lastIndex = i;
}
}
}
}
//如果右边也有,那么进行遍历
if(lastIndex > firstIndex ){
for(int i = firstIndex;i<lastIndex;i++){
if(steps[i] < catInt ){
steps[i] = catInt;
water++;
}
}
}
}
System.out.println("water is " + water);
}
台阶积水问题数组中的每一个元素相当于一个台阶,假使水量足够大,那么台阶上的积水有多少,例如数组[0,1,0,1,2,1,0,1,3,2,1,2,1]的台阶积水量为6,示例图如下: 思路:...
有bug ,如果是 1 0 2 这样的台阶,应该是积水 1 的 但是你的代码会返回0
台阶积水问题数组中的每一个元素相当于一个台阶,假使水量足够大,那么台阶上的积水有多少,例如数组[0,1,0,1,2,1,0,1,3,2,1,2,1]的台阶积水量为6,示例图如下: 思路:...