在编写安全框架时,我面临着一个常见的困境:"汇集或不汇集"
基本上这个问题分为两个"群体":
第1组:SecureRandom
因为调用nextBytes(...)
是同步的,它可能成为WebApp /多线程应用程序的瓶颈
第2组:加密服务提供商,如MessageDigest
,Signature
,Cipher
,KeyFactory
,...(因为的成本getInstance()
?)
你有什么意见 ?
你在这些问题上的习惯是什么?
我终于花时间自己测试了@Qwerky Share
课程,我觉得结果很......令人惊讶.
这个类缺乏我的主要关注:像GenericObjectPool或StackObjectPool这样的池.
所以我重新修改了这个类以测试所有4种选择:
我不得不将循环次数降低到100000,因为1M花了太多时间在游泳池上.
我还在Thread.yield()
每个循环的末尾添加了一个,以使负载具有更好的形状.
结果(累积运行时):
在带有REST服务的wildfly 8.1中,我想实现CORS ContainerRequestFilter和ContainerResponseFilter.
我的请求过滤器工作正常但ContainerResponseFilter
从未加载或调用
package org.test.rest;
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.container.PreMatching;
import javax.ws.rs.ext.Provider;
@Provider
@PreMatching // <-- EDIT : This was my mistake ! DO NOT ADD THIS
public class CorsResponseFilter implements ContainerResponseFilter {
public CorsResponseFilter() {
System.out.println("CorsResponseFilter.init");
}
@Override
public void filter(ContainerRequestContext req,
ContainerResponseContext resp) throws IOException {
System.out.println("CorsResponseFilter.filter");
resp.getHeaders().add("Access-Control-Allow-Origin", "*");
resp.getHeaders().add("Access-Control-Allow-Credentials", "true");
resp.getHeaders().add("Access-Control-Allow-Methods",
"GET, POST, DELETE, PUT");
resp.getHeaders().add("Access-Control-Allow-Headers",
"Content-Type, Accept");
}
}
Run Code Online (Sandbox Code Playgroud)
这在我看来是一个Wildfly/resteasy bug.你有另一个想法/我错过了什么吗?
如何在mattermost中添加链接预览功能?
添加包含链接的帖子时,我希望最重要的是自动添加链接内容的预览
StreamEx是一个功能强大的库,但在某些时候我不再需要它的超级大国了.
我怎么能摆脱StreamEx内部开销?这会造成问题吗?
防爆.
public void process(Path path){
StreamEx.of(Files.lines(path))
.groupRuns(...)
//See below
.unwrap()
//
.map(...)
.forEach(...)
}
Run Code Online (Sandbox Code Playgroud) 我偶然发现了一个相当烦人的问题:我有一个包含大量数据源的程序,它能够传输相同类型的元素,并且我想"映射"程序中的每个可用元素(元素顺序不物).
因此我试图将我Stream<Stream<T>> streamOfStreamOfT;
简化为简单的Stream<T> streamOfT;
使用streamOfT = streamOfStreamOfT.reduce(Stream.empty(), Stream::concat);
由于元素顺序对我来说并不重要,我尝试将reduce操作并行化为.parallel()
:streamOfT = streamOfStreamOfT.parallel().reduce(Stream.empty(), Stream::concat);
但是这会触发一个java.lang.IllegalStateException: stream has already been operated upon or closed
要亲自体验它,只需通过注释/取消注释即可使用以下主要内容(java 1.8u20) .parallel()
public static void main(String[] args) {
// GIVEN
List<Stream<Integer>> listOfStreamOfInts = new ArrayList<>();
for (int j = 0; j < 10; j++) {
IntStream intStreamOf10Ints = IntStream.iterate(0, i -> i + 1)
.limit(10);
Stream<Integer> genericStreamOf10Ints = StreamSupport.stream(
intStreamOf10Ints.spliterator(), true);
listOfStreamOfInts.add(genericStreamOf10Ints);
}
Stream<Stream<Integer>> streamOfStreamOfInts = listOfStreamOfInts
.stream(); …
Run Code Online (Sandbox Code Playgroud)