- Published on
ARTS 第22周
- Authors
- Name
- Jason Yang
- @yangjinlong86
Algorithm
package org.nocoder.leetcode.solution;
/**
* 136. Single Number
* Given a non-empty array of integers, every element appears twice except for one. Find that single one.
*
* Note:
*
* Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
*
* Example 1:
*
* Input: [2,2,1]
* Output: 1
* Example 2:
*
* Input: [4,1,2,1,2]
* Output: 4
*
* @author yangjinlong
* @date 2018-12-06
*/
public class SingleNumber {
public static int singleNumber(int[] nums) {
int result = 0;
for(int i : nums) {
result ^= i;
}
return result;
}
public static void main(String[] args) {
int[] arr1 = new int[]{2,2,1};
int[] arr2 = new int[]{4,1,2,1,2};
System.out.println(singleNumber(arr1));
System.out.println(singleNumber(arr2));
}
}
Review
Announcing Stack Overflow for Teams
you can ask questions that will only be visible to members of your team, company, or organization.
既可以面向团队提问,又可以面向世界提问
Tip
Spring Cloud Ribbon 负载均衡重试机制
1、升级 Spring Cloud 版本
从
Camden-SR2
开始,Spring Cloud 整合了Spring Retry
来增强RestTemplate
的重试能力,通过简单的配置即可实现服务访问重试策略。我们项目中的Spring Cloud
版本选择从Brixton.RELEASE
升级至Camden-SR3
。
pom.xml 中,将 spring-cloud-dependencies
的 version
修改为 Camden.SR3
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2、增加配置文件
# 开启重试机制,默认是false
spring.cloud.loadbalancer.retry.enabled=true
# 对所有操作请求都进行重试
ribbon.OkToRetryOnAllOperations=true
Ribbon
负载均衡重试配置文件说明
# 开启重试机制,默认是false
spring.cloud.loadbalancer.retry.enabled=true
# 请求连接的超时时间
ribbon.ConnectTimeout=250
# 请求处理的超时时间,使用SimpleClientHttpRequestFactory时,不用配置
ribbon.ReadTimeout=1000
# 对所有操作请求都进行重试
ribbon.OkToRetryOnAllOperations=true
# 切换实例的重试次数,默认为1,可使用默认值
ribbon.MaxAutoRetriesNextServer=2
# 对当前实例的重试次数,默认为1,可使用默认值
ribbon.MaxAutoRetries=1
RestTemplate
默认使用的是 ClientHttpRequestFactory
是 SimpleClientHttpRequestFactory
, 此时 ribbon.ConnectTimeout
,ribbon.ReadTimeout
这两个参数配置是不生效的。
如需设置 connectTimeout
,需要手动创建 SimpleClientHttpRequestFactory
实例,注入 RestTemplate
构造方法中。
@Bean
@LoadBalanced
RestTemplate restTemplate() {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(250);
RestTemplate restTemplate = new RestTemplate(factory);
//自定义响应错误处理
restTemplate.setErrorHandler(new LibraryResponseErrorHandler());
return restTemplate;
}
另一种实现,把 ribbon.httpclient.enabled
设置为 true
,RestTemplate
的 ClientHttpRequestFactory
就会使用 RibbonClientHttpRequestFactory
,此时 ribbon.ConnectTimeout
,ribbon.ReadTimeout
这两个参数配置会生效(注: SpringCloud
版本:Camden.SR3
)。
Share
twitter上看到一个好玩的东西