Map.merge()javadoc说,
如果指定的键尚未与值关联或与null关联,则将其与给定的非空值关联.否则,将相关值替换为给定重映射函数的结果,或者如果结果为null则删除.当组合密钥的多个映射值时,该方法可以是有用的.例如,要创建或附加String msg到值映射.
例如,要计算一篮子中每种类型的水果数量,代码如下:
public static void main(String[] args) {
Map<String, Integer> fruitCounts = new HashMap<>();
List<String> fruitBasket = Arrays.asList(
"Apple", "Banana", "Apple", "Orange", "Mango", "Orange", "Mango", "Mango");
for (String fruit : fruitBasket) {
fruitCounts.merge(fruit, 1/*First fruit of this type*/, (k, v) -> v + 1);
}
System.out.println(fruitCounts);
}
Run Code Online (Sandbox Code Playgroud)
有2个苹果,3个芒果,2个橙子和1个香蕉,但实际产量是
{Apple=2, Mango=2, Orange=2, Banana=1}
Run Code Online (Sandbox Code Playgroud)
这段代码有什么问题?
应用程序应在不影响客户端的情况下(在单独的线程中)异步记录以下信息。
如果我们inputstream
在过滤器中使用,那么spring不能再次使用它来将json映射到对象。在输入流到对象映射的某个地方,我们可以插入记录器吗?
更新:
我们可以在MessageConverter中重写日志记录代码,但这似乎不是一个好主意。
public class MyMappingJackson2MessageConverter extends AbstractHttpMessageConverter<Object> {
...
protected Object readInternal(Class<? extends Object> clazz, HttpInputMessage inputMessage)
throws IOException, HttpMessageNotReadableException {
InputStream inputStream = inputMessage.getBody();
String requestBody = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
String method = request.getMethod();
String uri = request.getRequestURI();
LOGGER.debug("{} {}", method, uri);
LOGGER.debug("{}", requestBody);
return objectMapper.readValue(requestBody, clazz);
}
protected void writeInternal(Object o, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
String responseBody = objectMapper.writeValueAsString(o);
LOGGER.debug("{}", responseBody);
outputMessage.getBody().write(responseBody.getBytes(StandardCharsets.UTF_8));
}
}
Run Code Online (Sandbox Code Playgroud) 服务类用@Service又名FooServiceImpl
注释,这使其符合自动装配的条件。为什么在单元测试期间这个类没有被拾取和自动装配?@Component
@Service
public class FooServiceImpl implements FooService {
@Override
public String reverse(String bar) {
return new StringBuilder(bar).reverse().toString();
}
}
@RunWith(SpringRunner.class)
//@SpringBootTest
public class FooServiceTest {
@Autowired
private FooService fooService;
@Test
public void reverseStringShouldReverseAnyString() {
String reverse = fooService.reverse("hello");
assertThat(reverse).isEqualTo("olleh");
}
}
Run Code Online (Sandbox Code Playgroud)
测试未能加载应用程序上下文,
2018-02-08T10:58:42,385 INFO Neither @ContextConfiguration nor @ContextHierarchy found for test class [io.github.thenilesh.service.impl.FooServiceTest], using DelegatingSmartContextLoader
2018-02-08T10:58:42,393 INFO Could not detect default resource locations for test class [io.github.thenilesh.service.impl.FooServiceTest]: no resource found for suffixes {-context.xml}.
2018-02-08T10:58:42,394 INFO …
Run Code Online (Sandbox Code Playgroud) 我可以使用mongo shell版本3.2.11中的以下命令连接到副本集.但同样适用于mongo shell v3.4.1.
mongo --host \
"replicaSet1/10.10.10.15:27001,10.10.10.16:27002,10.10.10.17:27000" mydbname \
-u root -p root \
--authenticationDatabase admin
[main] Error: Failed to parse mongodb:// URL: mongodb://replicaSet1/10.10.10.15:27001,10.10.10.16:27002,10.10.10.17:27000/mydbname :
Run Code Online (Sandbox Code Playgroud)
我在这里读到,自v 3.4.1发布以来,副本集地址格式没有改变.
为什么我无法连接到db?什么是解析错误,根据新格式(如果它在那里).
我正在使用 javax.validation.constraints.Pattern。
我正在添加模式的 pojo 还包含一个 List 对象。如何添加 @Pattern 注释以便检查元素?
@NotNull
private List<String> myListOfStrings;
Run Code Online (Sandbox Code Playgroud)
谢谢
jmeter ForEach控制器可用于迭代具有相同前缀的变量,如
myVar_1
myVar_2
myVar_3
Run Code Online (Sandbox Code Playgroud)
但在我的情况下输入变量是字符串数组,[ "val1", "val2", "val3" ]
如何迭代数组并为每个值发送单独的请求?
在SSL握手期间,客户端使用服务器的公钥加密生成的预主密钥并发送到服务器.服务器和客户端都执行步骤以使用约定的密码生成主密钥.客户端和服务器都使用主密钥生成会话密钥,这些密钥是用于加密和解密SSL会话期间交换的信息的对称密钥
http://www.symantec.com/connect/blogs/how-does-ssl-work-what-ssl-handshake
如何获取对称密钥,以便我可以将其存储到数据库中,并在每次客户端连接时使用相同的密钥?
服务器和客户端都应保存该密钥,并且永远不再进行握手过程.下次(即使断开连接后),他们应该使用https上的对称密钥直接启动通信.
简而言之,我希望SSL会话永远持续下去.
编辑 Android设备是客户端.每当客户端上线时,客户端 - 服务器仅交换少量字节数据.在这种情况下SSL是开销,不是吗?
java ×4
spring ×2
spring-boot ×2
annotations ×1
hashmap ×1
https ×1
java-8 ×1
jmeter ×1
jsse ×1
lambda ×1
logging ×1
mongo-shell ×1
mongodb ×1
regex ×1
rest ×1
ssl ×1
tomcat8 ×1
unit-testing ×1