小编Jor*_*kie的帖子

在Java中从Optional-> List-> List转换的链方法

我有一个Optional包含列表的对象.我想将此列表中的每个对象映射到另一个列表,并返回结果列表.

那是:

public List<Bar> get(int id) {
    Optional<Foo> optfoo = dao.getById(id);
    return optfoo.map(foo -> foo.getBazList.stream().map(baz -> baz.getBar()))
}
Run Code Online (Sandbox Code Playgroud)

如果没有溪流内的溪流,有没有一种干净的方式呢?

我认为这flatMap可能是解决方案,但我无法弄清楚如何在这里使用它.

java optional java-8 java-stream

12
推荐指数
2
解决办法
3188
查看次数

Spring Boot中的多播Websockets

上下文

第一次在春天使用websockets.我的应用程序涉及一种类型的用户(CHAP)将其当前位置提供给订阅的所有其他人(USR)(并且有权订阅此信息)

我正在阅读文档并找到了我认为可以解决这个问题的这一部分,但我并不是百分之百确定它是如何工作的,并且会喜欢有更强理解力的人换句话说.我已经看到类似的堆栈溢出问题,但解决方案感觉太具体(虽然这可能只是我自己缺乏理解).

问题

每个主题一个CHAP,可以将其位置发布到主题.用户可以订阅其授权订阅的任何主题.

基本上:

  • 变量端点上的多个主题(类似于/ {route_id}/location)

  • 用户可以订阅这些主题并在可用时接收更新

  • 具有CHAP角色的用户可以发布到一个主题.(即每个CHAP都有一个可以发布到的{route_id}.

  • 具有USR角色的用户可以收听他们所属的多个主题(即每个USR都有几条路线可以监听更新)

这与具有多个聊天室的问题类似,这是websockets的常见示例.但是我找到的所有示例都有静态聊天室名称,单个聊天室,或者只能将消息定位到一个用户(不是一个组)

现行守则

@MessageMapping("/chaperone/location") // chaperone sends data to here
@SendTo("/{route_id}/location") // users can listen in on this
public BusModel updateLocation(@DestinationVariable long route_id, BusModel busModel) {
    return routeService.updateBusLocation(busModel);
}
Run Code Online (Sandbox Code Playgroud)

我的想法是,伴侣发布到该URL,所有订阅他们路线的用户都会得到更新.

谢谢!

java authentication spring websocket spring-boot

8
推荐指数
1
解决办法
806
查看次数

Python记录器PID在顶部不同

我像这样初始化我的记录器main.py

logging.basicConfig(level=logging.DEBUG, format='%(process)d - %(name)s - %(levelname)s - %(message)s')
Run Code Online (Sandbox Code Playgroud)

然后在顶部的每个模块中我有:

logger = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)

当我在多个线程中使用记录器时,显示的进程 ID 是相同的(父 ID),如果包含的话,线程 ID 是不同的。但是,当我top在 Linux 中使用命令行工具时,我看到每个线程有不同的 PID。

当子进程使用记录器时,如何显示子进程的 PID?我需要缩小问题发生的范围,但仅仅知道模块名称是不够的。

例如,当我让主线程生成另一个线程时,顶部显示这两个条目:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND    
 9686 jm354     20   0  528608  17584   9192 S   0.0   0.2   0:00.07 python                                                                                                          
 9690 jm354     20   0  528608  17584   9192 S   0.0   0.2   0:00.01 python    
Run Code Online (Sandbox Code Playgroud)

但日志只显示 PID 9686,尽管 logger.info 在不同的线程中使用。

我正在使用多处理队列和 threading.Thread 模块

import logging
import threading
from multiprocessing import …
Run Code Online (Sandbox Code Playgroud)

python logging multithreading python-multithreading python-3.x

6
推荐指数
1
解决办法
8135
查看次数

S3 Boto3 Stubber 没有下载文件的映射?

目前正在编写测试并尝试利用Stubberbotocore 提供的功能。

我想:

client = boto3.client("s3")
response = {'Body': 'content'}
expected_params = {'Bucket': 'a_bucket_name', 'Key': 'a_path', 'Filename': 'a_target'}

with Stubber(client) as stubber:
    stubber.add_response('download_file', response, expected_params)
    download_file(client, "a_bucket_name", "a_path", "a_target")
Run Code Online (Sandbox Code Playgroud)

该下载文件是我自己的函数,仅包装客户端 download_file 调用。它在实践中有效。

stubber.add_response但是,由于“OperationNotFound”错误,测试失败。我使用调试器逐步完成,问题出现在存根 API 中:

if not hasattr(self.client, method):
    raise ValueError(
        "Client %s does not have method: %s"
        % (self.client.meta.service_model.service_name, method))

# Create a successful http response
http_response = AWSResponse(None, 200, {}, None)

operation_name = self.client.meta.method_to_api_mapping.get(method) <------- Error here
self._validate_response(operation_name, service_response)
Run Code Online (Sandbox Code Playgroud)

字典中似乎没有两者之间的映射,这是存根 API 的失败还是我遗漏了什么?

amazon-s3 botocore aws-sdk boto3 python-3.7

6
推荐指数
1
解决办法
2064
查看次数

迭代可变路径中的文件 (Bash)

我一直在寻找在变量路径中迭代文件的最佳方法,并遇到了这个问题。

但是,这个和我发现的所有其他解决方案都使用文字路径而不是变量,我相信这是我的问题。

for file in "${path}/*"
do
     echo "INFO - Checking $file"
     [[ -e "$file" ]] || continue
done
Run Code Online (Sandbox Code Playgroud)

即使目录中肯定有文件(如果我将文字路径之一放在${path}我得到预期结果的位置),这总是只迭代一次,并且 $file 的值始终是${path}/*没有任何通配符的文字值.

我究竟做错了什么?

bash shell glob

5
推荐指数
1
解决办法
1348
查看次数

使用Java LocalTime锁定下溢/溢出

当从LocalTime对象中减去给定量时,我意识到可能发生上溢/下溢.

例:

00:30 - 35 minutes = 23:55
23:30 + 35 minutes = 00:05
Run Code Online (Sandbox Code Playgroud)

对于我的应用程序,我想锁定时间,以便上面会00:00在下溢和23:59溢出时生成.

这可能吗?

java date localtime java-8 java-time

4
推荐指数
1
解决办法
85
查看次数

在bash脚本中将subshel​​l中的sterr重定向到当前shell中的stdout

我有一个执行功能的子shell:

local thing=$( doFunc )

doFunc将日志输出发送到stderr(2),并且' thing'被分配给(1)doFunc上的输出stdout

如何运行此行,但从stderr子shell 打印到stdout当前shell?

bash shell scripting io-redirection subshell

2
推荐指数
1
解决办法
178
查看次数

x86 行“imulq $44,(%rbx), %rax”有什么作用?

我知道 imul 是有符号乘法,并且文档似乎表明三个操作数的语法是imulq dest, source1, source2. 因此,该行将读取为:将 %rbx 中存储的地址的内容与 %rax 中的值相乘,然后将其存储在内存位置 44 中,但这肯定不正确吗?

x86 assembly att

1
推荐指数
1
解决办法
5739
查看次数