我使用以下依赖项作为我的父项maven pom.xml:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.6.RELEASE</version>
</parent>
Run Code Online (Sandbox Code Playgroud)
如果我将版本定义为属性<version>${spring-boot.version}</version>我收到以下错误:
项目生成错误:非解析父POM:故障转移org.springframework.boot:弹簧引导起动父:POM:从$ {弹簧boot.version} http://repo.spring.io/milestone是缓存在本地存储库中,在弹簧里程碑的更新间隔过去或强制更新之前,不会重新尝试解析.原始错误:无法传输工件org.springframework.boot:spring-boot-starter-parent:pom:$ {spring-boot.version} from/to spring-milestones(http://repo.spring.io/milestone) :索引85处路径中的非法字符: http: //repo.spring.io/milestone/org/springframework/boot/spring-boot-starter-parent/ $ {spring-boot.version}/spring-boot-starter- parent - $ {spring-boot.version} .pom和'parent.relativePath'指向错误的本地POM
那么是不可能将父版本定义为maven属性?
spring-data提供了一种通过定义方法名称来生成SQL搜索的方法.
以下工作正常:
@Entity
public class Book {
Date from, to;
}
//CrudRepository<Book>
findByFromDateBetween(Date departure, Date arrival);
Run Code Online (Sandbox Code Playgroud)
但为什么以下不起作用呢?
findByFromDateBetweenAndToDateBetween(Date departure, Date arrival);
Run Code Online (Sandbox Code Playgroud)
要连接两个日期搜索,我必须重复日期:
findByFromDateBetweenAndToDateBetween(Date departure, Date arrival, Date departure, Date arrival);
Run Code Online (Sandbox Code Playgroud)
问题:是否可以重复使用参数?
我想使用java8迭代嵌套列表streams,并在第一次匹配时提取列表的一些结果.不幸的是,如果子元素与过滤器匹配,我还必须从父内容中获取值.
我怎么能这样做?
// java7
Result result = new Result();
//find first match and pupulate the result object.
for (FirstNode first : response.getFirstNodes()) {
for (SndNode snd : first.getSndNodes()) {
if (snd.isValid()) {
result.setKey(first.getKey());
result.setContent(snd.getContent());
return;
}
}
}
Run Code Online (Sandbox Code Playgroud)
// java8
response.getFirstNodes().stream()
.flatMap(first -> first.getSndNodes())
.filter(snd -> snd.isValid())
.findFirst()
.ifPresent(???); //cannot access snd.getContent() here
Run Code Online (Sandbox Code Playgroud) 我想利用@NamedQuery里面的一个JpaRepository.但它不起作用:
public interface MyEntityRepository extends JpaRepository<MyEntity, Long> {
@Query(name = MyEntity.FIND_ALL_CUSTOM)
List<MyEntity> findAllCustom(Pageable pageable);
}
@Entity
@NamedQuery(
name = MyEntity.FIND_ALL_CUSTOM, query = "select * from MyEntity me where me.age >= 18"
)
public class MyEntity {
public static final String FIND_ALL_CUSTOM = "findAllCustom";
}
Run Code Online (Sandbox Code Playgroud)
结果:
org.springframework.data.mapping.PropertyReferenceException: No property findAllCustom found for type MyEntity!
at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:75)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:327)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:270)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:241)
at org.springframework.data.repository.query.parser.Part.<init>(Part.java:76)
at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:235)
at org.springframework.data.repository.query.parser.PartTree$Predicate.buildTree(PartTree.java:373)
at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:353)
at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:84)
at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:61)
at …Run Code Online (Sandbox Code Playgroud) 如何设置相对于tomcat dir的日志记录路径/logs/mylog.log?
我尝试了什么:改变logging.file房产application.properties
保留文件名:#logging.file=- >所有内容都记录到控制台,因此写入tomcat/logs/localhost.yyyy-mm-dd.log
logging.file=mylog.log - >写入控制台,与#logging.file相同
logging.file=d:/mylog.log - >写到位置d:/mylog.log
logging.file=../logs/mylog.log - >写入控制台,因此仍然是localhost*.log
没有成功.我对外部化配置不感兴趣,例如通过提供系统或环境变量.
我想把a List<String>变成a Map<String, Integer>.列表的值应作为键,地图值将静态初始化.
我想保持列表的顺序,因此使用a LinkedHashMap,并忽略重复.
问题:使用java8 streamAPI 有什么优势吗?因为,比较以下内容,只是关于语法我永远不会去详细的流api,但总是坚持旧的foreach循环:
//foreach
Map<String, Integer> map = new LinkedHashMap<>();
for (String k : abk) {
if (k != null) map.put(k, STATIC_VAL);
}
//streams
Map<String, Integer> map2 = abk.stream()
.filter(Objects::nonNull)
.collect(Collectors.toMap(
Function.identity(),
k -> STATIC_VAL,
(v1, v2) -> v1,
LinkedHashMap::new));
Run Code Online (Sandbox Code Playgroud)
你会坚持使用旧方法还是使用新的lambda表达式?
我想读取一个大文件,处理每一行并将结果插入数据库.我的目标是并行处理行,因为每个进程都是一个冗长的任务.因此,我希望一个线程继续读取,多个线程继续处理,并且一个线程继续以块的形式插入到db.
我把它分解如下:
1)按顺序逐行读取文件(简单)
2)将每一行发送到线程池(3个线程),因为处理是长时间运行的任务.在线程池忙时阻止进一步读取行.
3)将每个处理行从每个theadpool写入StringBuffer
4)监视缓冲区大小,并将结果以块的形式写入数据库(例如,每1000个条目)
ExecutorService executor = Executors.newFixedThreadPool(3);
StringBuffer sb = new StringBuffer();
String line;
AtomicInteger count = new AtomicInteger(0);
while ((line = reader.read()) != null) {
count.getAndIncrement();
Future<String> future = executor.submit(() -> {
return processor.process(line);
});
//PROBLEM: this blocks until the future returns
sb.append(future.get());
if (count.get() == 100) {
bufferChunk = sb;
count = new AtomicInteger(0);
sb = new StringBuffer();
databaseService.batchInsert(bufferChunk.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
问题:
future.get() 将永远阻止读者,直到一个未来返回结果
缓冲区"监控"可能做得不对
可能我不是以正确的方式做这件事.但是我怎样才能做到这一点?
旁注:filesize大约是10GB,所以我不能先将整个文件读入内存来准备并行任务.
如何选择selenium webdriver的链接?
之前的Selenium将通过以下方式完成:
selenium.click("link=Users");
Run Code Online (Sandbox Code Playgroud)
但是我怎么能用webdriver做同样的事情呢?
我想过
driver.findElement(By.partialLinkText("Users")).click();
Run Code Online (Sandbox Code Playgroud)
但这不起作用.没有点击链接!
<html>
<body>
<div id="mainpage" class="mainpage">
<div id="pageid" class="pageid">
<div id="body">
<table>
<tbody>
<tr>
<td>
<table>
<tbody>
<tr>
<td>
<div id="id_menu" class="mymenu">
<ul>
<li class="li_class ">
<a href="/user.xhtml">Users</a>
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
org.openqa.selenium.NoSuchElementException: Unable to locate element:
{"method":"partial link text","selector":"Users"} Command duration or timeout: 11.36
seconds For documentation on this error, please visit: http://seleniumhq.org/exceptions
/no_such_element.html Build info: version: '2.24.1', revision: '17205', time: '2012-06-19
17:28:14' System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1',
java.version: '1.7.0_02' Driver …Run Code Online (Sandbox Code Playgroud) 我为我创建了以下函数postgresql:
CREATE FUNCTION myfunc(param INT) RETURNS VOID AS..
Run Code Online (Sandbox Code Playgroud)
如果没有 ,我该如何调用该函数SELECT?当我运行时SELECT myfunc(1)它会工作,即使它不会按设计返回任何内容。
但我想在没有 select, just 的情况下运行它myfunc(1),这不起作用并告诉我Syntax error at 1。
我正在尝试在 PostgreSQL 中的重复更新中实现插入中的 db_merge 函数?。
我无法SELECT db_merge(..)从 java 运行,因为这会给我一个"A result was returned when none was expected."), PSQLState.TOO_MANY_RESULTS)错误。
我想利用postgres,CopyManager如:
CopyManager cp = ((PGConnection) dataSource.getConnection()).getCopyAPI();
Run Code Online (Sandbox Code Playgroud)
正如我所使用的那样spring-boot,数据源是a org.apache.tomcat.jdbc.pool.DataSource,因此是连接a Jdbc4Connection.
问题:转换会抛出以下错误:
java.lang.ClassCastException: com.sun.proxy.$Proxy55 cannot be cast to org.postgresql.PGConnection
Run Code Online (Sandbox Code Playgroud)
此外,当我尝试强制转换为Jdbc4Connection时,我得到了同样的错误!
java.lang.ClassCastException: com.sun.proxy.$Proxy55 cannot be cast to org.postgresql.jdbc4.Jdbc4Connection
Run Code Online (Sandbox Code Playgroud)
我能做什么?
java ×9
spring ×5
postgresql ×3
spring-boot ×3
java-8 ×2
java-stream ×2
future ×1
jdbc ×1
maven ×1
optional ×1
selenium ×1
spring-data ×1
tomcat ×1
xpath ×1