jorneyr 最近的时间轴更新
jorneyr

jorneyr

V2EX 第 257181 号会员,加入于 2017-09-29 20:53:10 +08:00
今日活跃度排名 916
macOS say 命令的 Bug?
macOS  •  jorneyr  •  2 天前  •  最后回复来自 CloudnuY
15
12.5.1 被收回去了
Apple  •  jorneyr  •  40 天前  •  最后回复来自 findex
22
求推荐最小的矮轴键盘
程序员  •  jorneyr  •  42 天前  •  最后回复来自 totoro625
39
局域网网络转发问题
互联网  •  jorneyr  •  152 天前  •  最后回复来自 jorneyr
8
异地办公室组网可行吗?
互联网  •  jorneyr  •  166 天前  •  最后回复来自 datocp
62
Monterey 可用 QuickLook 插件讨论
Apple  •  jorneyr  •  190 天前  •  最后回复来自 jorneyr
13
MBP 14 和红米 Note Pro 11 使用 USB 2.0 的 Type-C 连接问题
Apple  •  jorneyr  •  197 天前  •  最后回复来自 jorneyr
9
MBP 14 寸的 TouchID 变的很慢
Apple  •  jorneyr  •  212 天前  •  最后回复来自 helloguys42
17
Monterey 中使用 VPN 访问公司内网
Apple  •  jorneyr  •  163 天前  •  最后回复来自 zuou
14
jorneyr 最近回复了
17 小时 29 分钟前
回复了 w4ngzhen 创建的主题 程序员 请完成实名认证以便使用 Gitee Pages 服务
99 买了个 Gitee Pages 服务支持自定义域名,然后各种问题,不用了。
```java
package cmd;

import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.ExecuteWatchdog;
import org.apache.commons.exec.PumpStreamHandler;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;

/**
* 生成临时 shell 脚本并执行
*/
public class ExecTempShellScript {
public static void main(String[] args) throws IOException {
// 1. 生成临时脚本文件
// 2. 命令写入脚本文件
// 3. 执行脚本
// 4. 删除临时脚本文件

String command = "ls -l /Users/biao";
Path path = Files.createTempFile("mongo-", ".sh");
Files.write(path, command.getBytes(StandardCharsets.UTF_8));
System.out.println(path);

try {
execSh(path.toString());
} finally {
Files.delete(path);
}
}

public static void execSh(String path) throws IOException {
CommandLine cmdLine = CommandLine.parse("sh " + path);
DefaultExecutor executor = new DefaultExecutor();
executor.setExitValues(null);

ExecuteWatchdog watchdog = new ExecuteWatchdog(60000);
executor.setWatchdog(watchdog);

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ByteArrayOutputStream errorStream = new ByteArrayOutputStream();
PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream,errorStream);

executor.setStreamHandler(streamHandler);
executor.execute(cmdLine);

// 获取程序外部程序执行结果
String out = outputStream.toString("UTF-8");
String error = errorStream.toString("UTF-8");

// 处理结果
System.out.println("==== ok ====");
System.out.println(out);
System.out.println("==== error ====");
System.out.println(error);
}
}
```
Java Process 不支持管道吧,有管道的命令我一般都是写入临时 shell 文件,然后执行 shell 文件。
@zzxgz Ansible 每个任务都会起一个进程,如果是耗时任务增加 -B -P 实时心跳检测的话每个任务还会多出 2 个进程,5000 个任务这会导致进程风暴吧。
这也怕,那也怕,啥都别搞就不怕了。
@registerrr 搞个队列吧,5000 个一起上,虽然可能也能行,但总是觉得有点莽。
感觉队列好像也不太好,楼主说每个接口的执行时间大概是 5 分钟,队列只能保证并发量,这样会导致总的运行时间非常长。
Go 的协程做这个比 Java 的线程更合适,或者升级到 Java 19 也支持虚拟线程了,性能提高很多。
2 天前
回复了 jorneyr 创建的主题 macOS macOS say 命令的 Bug?
@Megrax 新姿势啊。
3 天前
回复了 Ayanokouji 创建的主题 Apple 记一次 MacBook pro 更换屏幕
@Ayanokouji 好的,有空就去看看。
3 天前
回复了 Ayanokouji 创建的主题 Apple 记一次 MacBook pro 更换屏幕
我的也是 2021 MBP 14 ,有一个坏点,啥时候去看看。
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3915 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 41ms · UTC 03:53 · PVG 11:53 · LAX 20:53 · JFK 23:53
Developed with CodeLauncher
♥ Do have faith in what you're doing.