帮我优化Java代码public static void getLinux(){ System.out.println("请输入IP地址和linux的端口,示例: 127.0.0.1:22"); String temp = sc.nextLine(); String[] ipPort = temp.split(":"); if (ipPort.length == 2) { logger.info("登录ip:" + ipPort[0]); LinuxCache.ipCache.put("ipAddress", ipPort[0]); logger.info("登录端口:" + ipPort[1]); LinuxCache.ipCache.put("port", ipPort[1]); } else { System.out.println("<>请输入正确格式<>"); getLinux(); } if (!StringUtils.isBlank(LinuxCache.ipCache.get("dockerIp"))) { return; } String ipAddress = LinuxCache.ipCache.get("ipAddress"); int port = Integer.parseInt(LinuxCache.ipCache.get("port")); JSch jsch = new JSch(); System.out.println("请输入用户名:"); String username = sc.nextLine(); System.out.println("请输入密码:"); String password = sc.nextLine(); try { session = jsch.getSession(username, ipAddress, port); session.setPassword(password); session.setConfig("StrictHostKeyChecking", "no"); session.connect(100000); logger.info("登录成功"); LinuxCache.ipCache.put("dockerIp", ipAddress); logger.info("dockerIp缓存成功"); } catch (Exception e) { System.out.println("连接错误,请重新输入连接信息"); getLinux(); } }
时间: 2024-01-13 09:03:17 浏览: 64
下面是我对这段 Java 代码的一些优化建议:
1. 减少重复代码:如果用户输入的 IP 地址和端口号不符合格式要求,则会要求用户重新输入,这段代码重复了两次。可以将这段代码封装成一个方法,以便在需要时调用。
2. 使用常量:将字符串常量放到常量池中,以便重复使用。例如,可以将字符串“ipAddress”和“port”放到常量池中。
3. 避免不必要的类型转换:将字符串转换为整数时,应该使用 parseInt() 方法,而不是 valueOf() 方法。这可以减少不必要的对象创建和内存分配。
4. 使用 try-with-resources:在使用 JSch 会话时,应该使用 try-with-resources 语句,以确保会话和通道在使用完毕后正确关闭。
5. 使用日志输出:使用日志输出代替 System.out.println() 方法,以便更好地控制日志输出和记录。
下面是优化后的代码:
```
public static void getLinux() {
System.out.println("请输入 IP 地址和 Linux 的端口,示例:127.0.0.1:22");
String temp = sc.nextLine();
String[] ipPort = temp.split(":");
if (ipPort.length == 2) {
logger.info("登录 IP:" + ipPort[0]);
LinuxCache.ipCache.put("ipAddress", ipPort[0]);
logger.info("登录端口:" + ipPort[1]);
LinuxCache.ipCache.put("port", ipPort[1]);
} else {
System.out.println("<>请输入正确格式<>");
getLinux();
return;
}
if (!StringUtils.isBlank(LinuxCache.ipCache.get("dockerIp"))) {
return;
}
String ipAddress = LinuxCache.ipCache.get("ipAddress");
int port = Integer.parseInt(LinuxCache.ipCache.get("port"));
JSch jsch = new JSch();
System.out.println("请输入用户名:");
String username = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
try {
try (Session session = jsch.getSession(username, ipAddress, port)) {
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect(100000);
logger.info("登录成功");
LinuxCache.ipCache.put("dockerIp", ipAddress);
logger.info("dockerIp缓存成功");
}
} catch (Exception e) {
logger.error("连接错误,请重新输入连接信息", e);
getLinux();
}
}
```
希望这些优化建议能帮助到您。
阅读全文