我使用以下代码来获取系统中运行的所有进程的详细信息:
Process p = Runtime.getRuntime().exec("ps aux");
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(p.getErrorStream()));
Run Code Online (Sandbox Code Playgroud)
我想ps aux
用管道符号过滤掉,所以我用它:
Process p = Runtime.getRuntime().exec("ps aux | grep java");
Run Code Online (Sandbox Code Playgroud)
它转到ErrorStream.后来我注意到管道符号(|)在Java中用作Bitwise包含OR运算符.所以我在管道符号前面使用了反斜杠,如下所示:
Process p = Runtime.getRuntime().exec("ps aux \\| grep java");
Run Code Online (Sandbox Code Playgroud)
但它再次进入ErrorStream.我如何ps aux | grep java
在Java中运行exec?
我一直致力于使用 JMX 获取系统指标,例如 CPU、内存、网络 I/O、磁盘 I/O。
对于 CPU,我使用了函数 OperatingSystemMXBean.getSystemLoadAverage() 并获得了 CPU 的负载。
对于内存,我使用了函数 OperatingSystemMXBean.getTotalPhysicalMemorySize() 和 OperatingSystemMXBean.getFreePhysicalMemorySize()。
有没有通过JMX获取网络I/O和磁盘I/O的功能?
我在 java 中使用 URLValidator 类来验证 URL 。但我希望如果用户不会在 URL 中提供任何协议,那么验证也应该返回为有效。
正确解释:如果在 URL "http://www.google.com" 中提供了它,那么它也应该是一个有效的 URL,如果提供了 "www.google.com",那么验证也应该作为有效的 URL 返回。
我已经尝试了很多。请帮助我。提前致谢。
我是JSP和Servlet的新手.我需要你在以下任务中提出建议.我有一个jsp页面,它有一个html表单,它接受用户的一些信息.
JSP页面info.jsp
<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<%
if(request.getAttribute("reply")!=null){
out.println(request.getAttribute("reply"));
}
%>
<form action="actionservlet" method="post" name="myform">
user Name:<input name="username" type="text" size="10" /><br />
First Name:<input name="username" type="text" size="10" /><br />
Last Name:<input name="username" type="text" size="10" /><br />
Email id:<input name="username" type="text" size="10" /><br />
<input name="submit" type="submit" value="Submit" />
<input name="Reset" type="reset" value="Reset" />
</form>
</body>
</html> …
Run Code Online (Sandbox Code Playgroud) 所有
在这里,我发布我对星号文件的疑问,首先我创建一个文件
touch test*
Run Code Online (Sandbox Code Playgroud)
如果我检查ls -lrt
它显示test*
当前的文件.然后我使用删除该文件rm *
.然后我创建两个test1*
test2*
使用相同触摸命令的文件.如果我检查ls -lrt
.这显示这两个文件是test1*
和test2*
.我再次test*
使用touch命令创建,现在我检查ls -lrt
.这次它不会显示文件test*
.为什么test*
文件没有列出?
感谢和问候
有人可以让我知道为什么下面的代码不是线程安全的?我得到的输出是0或45或90.共享资源计数器有一个同步方法,所以我一直期望90输出.我在这里错过了什么吗?请指教.请允许,也让我知道如何使这个代码线程安全.
class Counter{
long count = 0;
public synchronized void add(long value){
this.count += value;
}
}
class CounterThread extends Thread{
protected Counter counter = null;
public CounterThread(Counter counter){
this.counter = counter;
}
public void run() {
for(int i=0; i<10; i++){
counter.add(i);
}
}
}
public class Example {
public static void main(String[] args){
Counter counter = new Counter();
Thread threadA = new CounterThread(counter);
Thread threadB = new CounterThread(counter);
threadA.start();
threadB.start();
System.out.println(counter.count);
}
}
Run Code Online (Sandbox Code Playgroud)