这是起源:
List<Role> managedRoles = new ArrayList<>();
for (Role role : roles) {
if (role.getManagedRole() != null) { // a list of Role.
managedRoles.addAll(role.getManagedRole());
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我要的:
managedRoles = roles.stream().filter(r -> r.getManagedRole() != null).map(role -> role.getManagedRole()).collect(); // how to addAll ?
Run Code Online (Sandbox Code Playgroud)
但是role.getManagedRole() is a List<Role>,我认为addAll需要一些功能.那么如何在Lambda中制作呢?
当它是最后一个处理程序时,应调用ChannelDuplexHandler write方法,但实际上不是。
ChannelPipeline p = ...;
p.addLast("1", new InboundHandlerA());
p.addLast("5", new InboundOutboundHandlerX());
Run Code Online (Sandbox Code Playgroud)
入站和出站事件的评估顺序分别为1.5和5。
所以我认为write在in调用时应ctx.write()在以下类中channelRead调用:
@ChannelHandler.Sharable
@Component
public class InboundOutboundHandlerX extends ChannelDuplexHandler {
@Override
public void channelReadComplete(ChannelHandlerContext ctx) {
ctx.flush();
}
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
ctx.write(msg); // I have also tried writeAndFlush(msg)
}
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
ctx.write(msg, promise);
}
}
Run Code Online (Sandbox Code Playgroud)
是否有一种特殊的技巧来获取最后一个称为双工处理程序的写方法?
根据 spring cloud zuul 8.1.3 zuul timeout,以下配置应该使 zuul 在 20 秒后超时,但是,它在 10 秒时超时。
server:
port: 8769
spring:
application:
name: service-zuul
zuul:
host:
connect-timeout-millis: 20000
socket-timeout-millis: 60000
zuul:
routes:
tp:
path: /**
url: http://localhost:9998
ribbon:eureka:enabled: false
Run Code Online (Sandbox Code Playgroud)
从控制台输出可以看出,过滤器和超时异常之间的间隔只有 10 秒。这意味着zuul.host.connect-timeout-millis不起作用。
struct s11
{
alignas(16) char s;
int i;
};
Run Code Online (Sandbox Code Playgroud)
是否alignas(n) X x意味着它将分配 n 个字节来保存 a X,当X实际上远小于 n 字节时,其余内存将全为 0?
s11.s记忆中的 是什么时候0x0,是否意味着s11.i将会在0x10?然而,以下pdiff是0x4
s11 o;
ptrdiff_t pdiff = (char*)&o.i - (char*)&o.s;
Run Code Online (Sandbox Code Playgroud)
sizeof(s11)不是 16 乘以 2,而是sizeof(s1)8 乘以 3?struct s1
{
char s;
double d; // alignof(double) is 8.
int i;
}
Run Code Online (Sandbox Code Playgroud)
编辑:这是我在大量挖掘和代码片段之后发现的,alignas 如何影响结构(类)大小。
alignas(n) X x 表示在内存中x位于偏移多个n字节的地方,从0x00开始。因此,s11.s可以位于0x00、0x10、0x20等位置。因为 …
在下面的代码中,我认为p2应该打印10。但实际上它打印的是随机值。我开始理解为什么它不是 10,有以下 (1)-(3) 想法。
{
int m = 10; // local var m
qDebug() << "m0: " << &m;
connect(btn2, &QPushButton::clicked, this, [&]() { qDebug() << "m2: " << &m; qDebug() << "p2 " << m; m = 20; qDebug() << "p22 " << m; }); // captured var m
}
Run Code Online (Sandbox Code Playgroud)
输出:
m0: 0x8ff8ac
p0 10
m2: 0x8ff8ac
p2 11974204
p22 20
m2: 0x8ff8ac
p2 20
p22 20
Run Code Online (Sandbox Code Playgroud)
(1). 第一次调用 lambda 时,其捕获的 varm具有随机值。我认为这可能是因为 local varm …
以下代码会导致错误:
Class<? extends BaseHandler<?, ?>> aClass = resource.getHandler();
BaseHandler<?, ?> baseHandler = resource.getHandler();
BaseHandler<?, ?> baseHandler = (BaseHandler<?, ?>) resource.getHandler();;
Run Code Online (Sandbox Code Playgroud)
第一行有效。第二行第三种强制转换有错误:
Inconvertible types; cannot cast 'java.lang.Class<capture<? extends c.c.BaseHandler<?,?>>>' to 'c.c.BaseHandler<?,?>'
Run Code Online (Sandbox Code Playgroud)
我是这样认为的:
Class<? extend BaseHandler<?, ?>>应该是BaseHandler的子Class类型。那么baseHandler应该代表所有儿童班级。为什么会出现编译错误?
c++ ×2
java ×2
lambda ×1
netflix-zuul ×1
netty ×1
python ×1
python-3.7 ×1
qt5 ×1
spring ×1
sqlalchemy ×1