我使用spring-data-elasticsearch框架从elasticsearch服务器获取查询结果,java代码如下:
public void testQuery() {
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withFields("createDate","updateDate").withQuery(matchAllQuery()).withPageable(new PageRequest(0,Integer.MAX_VALUE)).build();
List<Entity> list = template.queryForList(searchQuery, Entity.class);
for (Entity e : list) {
System.out.println(e.getCreateDate());
System.out.println(e.getUpdateDate());
}
}
Run Code Online (Sandbox Code Playgroud)
我在服务器中获取原始查询日志,如下所示:
{"from":0,"size":10,"query":{"match_all":{}},"fields":["createDate","updateDate"]}
Run Code Online (Sandbox Code Playgroud)
根据查询日志,spring-data-elasticsearch 会增加查询的大小限制。"from":0, "size":10, 我怎样才能避免它添加大小限制?
我使用 monit 来监控服务的状态,当服务关闭时,我想以相同的格式向多个收件人发送警报电子邮件。这是我的 monit 配置的一部分:
set mail-format { from: no-reply@gmail.com }
check host hostA with address hostA
alert userA@gmail.com
MAIL-FORMAT { # use local format
subject: redis is down on hostA
message: redis is down on hostA on port 6379
Yours sincerely,
monit
}
alert userB@gmail.com
MAIL-FORMAT { # use local format
subject: redis is down on hostA
message: redis is down on hostA on port 6379
Yours sincerely,
monit
}
if failed port 6379 retry 3 then exec "/monit/scripts/myscripts.sh" …Run Code Online (Sandbox Code Playgroud) 这是我对ConcurrentHashMap的测试
@Test
public void testIt2() {
Map<String, String> map = new ConcurrentHashMap<String, String>();
map.put("2", "2");
map.put("1", "1");
for (Entry<String, String> entry : map.entrySet()) {
map.clear();
System.out.println(entry.getKey());
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
1
2
Run Code Online (Sandbox Code Playgroud)
为什么?
我想创建一个自定义ClassLoader来加载某些路径中的所有jar文件(例如/ home/custom/lib).
那么我希望每次使用newoperator创建一个Object时,它都会在该路径中的所有jar文件中搜索类,然后搜索parameter(-cp)定义的类路径.
可能吗?
例如,有一个jar文件 /home/custom/lib/a.jar
在主类
public class Main {
public static void main(String[] args) {
// do something here to use custom ClassLoader
// here will search Car in /home/custom/lib/a.jar first then in java class path
Car car = new Car();
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个由 spring 管理的服务,我在该服务上添加了 @Validated 注释(参考这篇文章),它告诉 spring 将为我们进行验证,我们甚至不需要手动验证它。
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
import javax.validation.Valid;
@Component
@Validated
public class MyService {
public void execute(@Valid MyRequest request) {
//todo
}
}
Run Code Online (Sandbox Code Playgroud)
MyRequest 是一个 DTO,将由 spring 验证
import lombok.Data;
import javax.validation.constraints.Positive;
@Data
public class MyRequest {
@Positive(message = "id should be positive")
private Long id;
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器,出于某种原因,我不想在控制器中进行验证。
@Controller
public class MainController {
@Autowired
private MyService service;
@RequestMapping(value = "/execute", method = {GET, POST})
@ResponseBody
public MyResponse execute() {
MyResponse res = new …Run Code Online (Sandbox Code Playgroud) 我们的客户会向我们发送请求,包括时间戳字符串喜欢:
"2013-10-27T13:00:00.325234Z".我将用它来比较oracle数据库中的时间戳.
如何将上面的String转换为java.sql.Timestamp?
我可以将它转换为Date,但Date只有毫秒精度.
应该保持微秒和时区.提前致谢.