我是 CompletableFuture 的新手,这是一个我想尝试的简单方法
CompletableFuture.supplyAsync( ()-> {System.out.println("async");});
Run Code Online (Sandbox Code Playgroud)
当我尝试编译时,出现错误
Error:(23, 26) java: no suitable method found for supplyAsync(()->{ Syst[...]"); })
method java.util.concurrent.CompletableFuture.<U>supplyAsync(java.util.function.Supplier<U>) is not applicable
(cannot infer type-variable(s) U
(argument mismatch; bad return type in lambda expression
missing return value))
method java.util.concurrent.CompletableFuture.<U>supplyAsync(java.util.function.Supplier<U>,java.util.concurrent.Executor) is not applicable
(cannot infer type-variable(s) U
(actual and formal argument lists differ in length))
Run Code Online (Sandbox Code Playgroud)
我想知道上面的内容有什么问题吗?
我再次需要你的帮助。我正在尝试将我的 java 网站上线。
我用什么:
用于查询的数据包太大 (4739923 > 1048576)。您可以通过设置 max_allowed_packet' 变量在服务器上更改此值。
我尝试过的:
1.就像错误所说的那样,我尝试通过执行以下操作来更改服务器上的值:
mysql -u rootSET GLOBAL max_allowed_packet=1073741824;/etc/init.d/mysql restart但我仍然有错误。
2.我查看了:如何更改 max_allowed_packet 大小
但是,当我执行此操作时nano /etc/mysql/my.cnf,文件看起来像(我没有任何 [mysql]):
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Nov 10 23:57:02 2017 from 82.236.220.195
root@XXXX:~# …Run Code Online (Sandbox Code Playgroud) 拥有这个泛型代码
\n\nstatic final <T> List<Class<? extends T>> findSubClasses(Class<T> clz, String packageName){\n ClassPathScanningCandidateComponentProvider provider =\n new ClassPathScanningCandidateComponentProvider(false);\n provider.addIncludeFilter(new AssignableTypeFilter(clz));\n Set<BeanDefinition> beanDefinitions = provider.findCandidateComponents(packageName);\n List<Class<? extends T>> subClasses = beanDefinitions.stream().map(b->mapToClass(b, clz)).collect(Collectors.toList());\n return subClasses;\n}\n\nprivate static final <T> Class<? extends T> mapToClass(BeanDefinition beanDefinition, Class<T> clz) {\n String className = beanDefinition.getBeanClassName();\n try {\n return (Class<? extends T>) Class.forName(className);\n } catch (ClassNotFoundException e) {\n log.error("Failed to load the scanned class {}", className, e);\n }\n return null;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我在b->mapToClass(b, clz)
Bad\xc2\xa0return\xc2\xa0type\xc2\xa0in\xc2\xa0lambda\xc2\xa0expression:\xc2\xa0Class<capture\xc2\xa0of\xc2\xa0?\xc2\xa0extends\xc2\xa0T>\xc2\xa0cannot\xc2\xa0be\xc2\xa0converted\xc2\xa0to\xc2\xa0Class<Object>\nRun Code Online (Sandbox Code Playgroud)\n\n如何解决这个问题?
\n我正在尝试编写一个 java 8 流收集器,它反映了rxjava 缓冲区运算符的功能
我有一个工作代码:
// This will gather numbers 1 to 13 and combine them in groups of
// three while preserving the order even if its a parallel stream.
final List<List<String>> triads = IntStream.range(1, 14)
.parallel()
.boxed()
.map(Object::toString)
.collect(ArrayList::new, accumulator, combiner);
System.out.println(triads.toString())
Run Code Online (Sandbox Code Playgroud)
这里的累加器是这样的:
final BiConsumer<List<List<String>>, String> accumulator = (acc, a) -> {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("Accumulator|");
stringBuilder.append("Before: ").append(acc.toString());
int accumulatorSize = acc.size();
if (accumulatorSize == 0) {
List<String> newList = new ArrayList<>();
newList.add(a);
acc.add(newList); …Run Code Online (Sandbox Code Playgroud) 我正在尝试将十进制值转换为二进制值,我已使用堆栈作为数据结构。当使用普通的堆栈弹出时,它以正确的顺序打印我,例如 4 的二进制转换将为 100。但我是 java 8 的新手,并尝试尽可能多地使用 lambda 来学习,并在执行过程中,我意识到它打印 FIFO ex for 4 它正在打印 001。请找到下面的代码并让我知道我哪里做错了。
package com.interview.random;
import java.util.Stack;
public class ConvertDecimalToBinary {
public Stack<Integer> convertToBinary(int num){
Stack<Integer> st=new Stack<>();
while(num>1){
st.push(num%2);
num=num/2;
}
st.push(num);
return st;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Stack<Integer> st=new ConvertDecimalToBinary().convertToBinary(4);
//printing correctly
while(!st.isEmpty()){
System.out.println(st.pop());
}
//Printing in FIFO not correct
st.forEach(i->System.out.println(i));
}
Run Code Online (Sandbox Code Playgroud)
}
在Java 8 Comparator中,我们可以如下创建一个比较器。
Comparator.comparing(keyExtractor);
Run Code Online (Sandbox Code Playgroud)
目前我有一堂课如下
class Employee {
String name;
Department dept;
}
class Department {
String departmentName;
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我想为 Employee 类创建一个比较器,根据部门名称对记录进行排序,我该如何编写我的密钥提取器?
尝试了下面的代码,但没有成功。
Comparator.comparing(Employee::getDept::getDepartmentName);
Run Code Online (Sandbox Code Playgroud) 我有一个清单triples
List<Triple<String, String, String>> triplets;
Run Code Online (Sandbox Code Playgroud)
我想分组成这样的地图
Map<Pair<String, String>, String> mapping;
Run Code Online (Sandbox Code Playgroud)
value地图的哪里是三元组的第三个元素。如果发生相同的情况,key它应该覆盖剩余的第三个值。
例如
def triples = [ {a, b, c} ; {a, d, e} ; {a, b, f } ]
// grouping
def map = [ {a,b} : c ; {a, d} : e ]
Run Code Online (Sandbox Code Playgroud)
如何使用Java 8及其grouping在流中做到这一点?
解析 JSONString ( assigned=[util.TaskAudit@24c7b944]}) 时如下:
Map<String, List<TaskAudit>> auditTrailMap = new HashMap<>();
ObjectMapper mapper = new ObjectMapper();
mapper.configure(Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
try {
auditTrailMap = mapper.readValue(strObject, new TypeReference<Map<String, List<TaskAudit>>>(){});
} catch (IOException e) {
log.error("{}", e);
}
Run Code Online (Sandbox Code Playgroud)
我收到以下异常:
com.fasterxml.jackson.core.JsonParseException:意外的字符('='(代码61)):期望用冒号分隔字段名称和值[junit],位于[来源:{assigned=[util.TaskAudit@24c7b944]} ; 行:1,列:11]
任何人都可以提供有关如何解决该问题的任何线索。
编辑:基本上这个函数的输入是来自数据库的字符串字段。保存时我们这样保存:
Map<String, List<TaskAudit>> auditTrailMap = new HashMap<>();
auditTrailMap.put("assigned", taskAuditList);
String jsonString = new JSONObject(auditTrailMap).toString();
Run Code Online (Sandbox Code Playgroud)
但是,在尝试解析 jsonString 时,它就像 (signed=[util.TaskAudit@24c7b944]}) 一样,我不知道“=”来自哪里以及如何解析它。
每当我尝试使用 Intellij 的 scenebuilder 打开 fxml 文件时,它都会给出以下信息:
Failed to start SceneBuilder: "C:\Program Files (x86)\Oracle\JavaFX Scene Builder 2.0"
Run Code Online (Sandbox Code Playgroud)

(我已经从设置中输入了场景生成器的路径)
这个问题已被问过多次,但没有一个解决方案对我有用。我以管理员身份运行 DOS 命令窗口,但是当运行 keytool 命令来安装证书时,出现上述错误:
C:\Program Files\Java\jdk1.8.0_191\jre\lib\security>keytool -import -file xxx.yyy.zzz.crt -alias xxxx.yyy.zzz.com -keystore cacerts -storepass changeit -noprompt
Certificate was added to keystore
keytool error: java.io.FileNotFoundException: cacerts (Access is denied)
Run Code Online (Sandbox Code Playgroud)
我使用的是 Windows 10,JDK 1.8.0_191。为什么管理员的访问会被拒绝?
java-8 ×10
java ×6
lambda ×2
comparator ×1
generics ×1
jackson ×1
java-stream ×1
javafx ×1
jsonparser ×1
keytool ×1
mariadb ×1
rx-java ×1
scenebuilder ×1
windows-10 ×1