我正在尝试Dynamic Web Application
使用Java 8(以及Wildfly appServer,如果这很重要)构建一个eclipse,但是我无法让Eclipse Luna M5使用Java 8(我确实安装了Java 8 BETA支持,它适用于JavaSE项目).
在我的POM中,我将级别设置为Java 8:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
但在我这样做后,maven -> update project
我收到以下错误:
Could not update project ExampleApp configuration
Version 1.8 of project facet java does not exist.
Run Code Online (Sandbox Code Playgroud)
事实上,没有java 1.8项目方面 project->preferences->project facets->java
我可以手动创建这样的facet
并将它添加到eclipse或者我将不得不等到java 8发布并且eclipse的人决定添加它吗?
在某些目的中,需要JVM
考虑它在具有N
核心的机器上运行而不是真实数量的核心(例如4
核心而不是核心16
).
JVM
在一些基于Mandriva/Red Hat Linux核心的Linux版本下运行.
这个问题是边缘情况,因为我期待这个问题的各种解决方案.这不是纯粹的linux管理问题,也不是纯粹程序员的问题.
所以...任何想法?
应StreamingOutput
的OutputStream
由实现类被关闭?
java-doc没有给出任何建议.我想它只是代表底层ServletOutputStream
,这意味着它不应该被关闭,但我的猜测可能是错误的:)此外,javadoc引用了一个MessageBodyWriter
接口,它明确表示输出流不能被关闭.
https://docs.oracle.com/javaee/7/api/javax/ws/rs/core/StreamingOutput.html
我正在使用Fortify SCA来查找我的应用程序中的安全问题(作为大学作业).我遇到了一些我无法摆脱的"Log Forging"问题.
基本上,我记录了一些来自Web界面的用户输入值:
logger.warn("current id not valid - " + bean.getRecordId()));
Run Code Online (Sandbox Code Playgroud)
并且Fortify将此报告为日志伪造问题,因为getRecordId()返回用户输入.
我已经关注了这篇文章,我正在用空格替换"新行",但问题依然存在
logger.warn("current id not valid - " + Util.replaceNewLine(bean.getRecordId()));
Run Code Online (Sandbox Code Playgroud)
任何人都可以提出解决此问题的方法吗?
我一直在玩Java 8 Streams - API
,我决定使用microbenchmark stream()
和parallelStream()
stream.正如预期的parallelStream()
那样,速度提高了两倍,但是其他东西弹出 - 如果我在将数据传递给filter
它之前对数据进行排序,结果需要花费5-8倍的时间,filter->map->collect
而不是传递未排序的列表.
(Stream) Elapsed time [ns] : 53733996 (53 ms)
(ParallelStream) Elapsed time [ns] : 25901907 (25 ms)
Run Code Online (Sandbox Code Playgroud)
(Stream) Elapsed time [ns] : 336976149 (336 ms)
(ParallelStream) Elapsed time [ns] : 204781387 (204 ms)
Run Code Online (Sandbox Code Playgroud)
package com.github.svetlinzarev.playground.javalang.lambda;
import static java.lang.Long.valueOf;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
import com.github.svetlinzarev.playground.util.time.Stopwatch;
public class MyFirstLambda {
private static final int ELEMENTS = 1024 * …
Run Code Online (Sandbox Code Playgroud) 我在Java中尝试使用枚举类型.当我写下面的课时,
public class EnumExample {
public enum Day {
private String mood;
MONDAY, TUESDAY, WEDNESDAY;
Day(String mood) {
}
Day() {
}
}
}
Run Code Online (Sandbox Code Playgroud)
编译说:Syntax error on token String, strictfp expected.
我知道strictfp
它会是什么,但它会来到这里吗?
从我的主要开始,我开始了两个名为生产者和消费者的线程。两者都包含while(true)
循环。生产者循环是 UDP 服务器,因此它不需要睡眠。我的问题出在消费者循环中。消费者循环从链接队列中删除对象并将其传递给函数以进行进一步处理。根据研究,在循环中使用线程睡眠不是一个好习惯,因为有时 O/S 不会在设置时间结束时释放。如果我在应用程序理想时删除线程睡眠,它会将 CPU 拖到 20% 到 30%。
class Producer implements Runnable {
private DatagramSocket dsocket;
FError fer = new FError();
int port =1548;
ConcurrentLinkedQueue<String> queue;
Producer(ConcurrentLinkedQueue<String> queue){
this.queue = queue;
}
@Override
public void run() {
try {
// Create a socket to listen on the port.
dsocket = new DatagramSocket(port);
// Create a buffer to read datagrams into.
byte[] buffer = new byte[30000];
// Create a packet to receive data into the buffer
DatagramPacket …
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种将类型约束转移到某种包装器中的方法。例如,在 Ada 中您可能会看到如下内容:
type Element is Integer range 100 .. 1000;
Run Code Online (Sandbox Code Playgroud)
它定义了一种新类型Element
,尽管它仍然是整数,但它绑定到特定范围。还有mod
一个会循环回来(超级有用)。
在 Rust 中,到目前为止,我一直在我的所有函数中手动检查这一点,即:
if x < 100 || x >= 1000 {
// throw some kind of error
}
Run Code Online (Sandbox Code Playgroud)
但最好定义一个新类型,在赋值时为我执行此检查,类似于默认情况下整数不能溢出的方式。我知道我们没有继承,但也许我可以实现某种特征?
TL;DR:我确信我的方法不是最佳实践,但是标准的替代方法是什么?
我在解决 Fortify 中的日志伪造问题时遇到问题。“将未经验证的用户输入写入日志”问题是从 getLongFromTimestamp() 方法中的两个日志调用中引发的。
public long getLongFromTimestamp(final String value) {
LOGGER.info("getLongFromTimestamp(" + cleanLogString(value) + ")");
long longVal = 0;
Date tempDate = null;
try {
tempDate = new SimpleDateFormat(FORMAT_YYYYMMDDHHMMSS, Locale.US).parse(value);
} catch (ParseException e) {
LOGGER.warn("Failed to convert to Date: " + cleanLogString(value) + " Exception: " + cleanLogString(e.getMessage()));
throw new Exception(e);
}
if (tempDate != null) {
longVal = tempDate.getTime();
}
return longVal;
}
private cleanLogString(String logString) {
String clean = logString.replaceAll("[^A-Za-z0-9]", "");
if(!logString.equals(clean)) {
clean += " …
Run Code Online (Sandbox Code Playgroud) 我在我的项目中使用 apache-commons-math RealMatrix 来处理矩阵运算,但是我无法以正确的格式打印它。
到目前为止,对于我拥有的每个矩阵,它都是这样的:
double coord[][] = new double[3][3];
coord[0][0] = 1d;
coord[0][1] = 0d;
coord[0][2] = 0d;
coord[1][0] = 2d;
coord[1][1] = 1d;
coord[1][2] = 1d;
coord[2][0] = 3d;
coord[2][1] = 2d;
coord[2][2] = 0d;
System.out.println("coordinates [nó, x, y]");
for(int co = 0 ; co < 3 ; co++){
for(int or = 0 ; or < 3 ; or++){
System.out.printf("%10.5f\t",coord[co][or]);
}
System.out.print("\n");
}
Run Code Online (Sandbox Code Playgroud)
输出:
coordinates [nó, x, y]
1,00000 0,00000 0,00000
2,00000 1,00000 1,00000
3,00000 2,00000 0,00000
Run Code Online (Sandbox Code Playgroud)
但是当我使用 …