`
linhui_dragon
  • 浏览: 149431 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
java 获取指定的进程id
package test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class GetPid {
 
 private static final String PNAME = "QQ";

 public static void main(String[] args)
   throws IOException {
  System.out.println("包含关键字 "+PNAME+" 的进程有:");
  System.out.println();
  String path = System.getProperty("user.dir");
  final File createFileName = new File(path + "\\mytempscript.vbe");
  if(createFileName.exists()?createFileName.delete():createFileName.createNewFile()){}

  final PrintWriter pw = new PrintWriter(new FileWriter(createFileName,
    true), true);
  pw.println("for each ps in getobject(\"winmgmts:\\\\.\\root\\cimv2:win32_process\").instances_");
  pw.println("wscript.echo ps.handle&vbtab&ps.name");
  pw.println("next");
  pw.close();

  final InputStream ii = Runtime.getRuntime().exec(
    "cscript " + path + "\\mytempscript.vbe").getInputStream();

  final InputStreamReader ir = new InputStreamReader(ii);

  final BufferedReader br = new BufferedReader(ir);
  String str = null;
  String[] ss = null;
  while ((str = br.readLine()) != null) {
   if (str.indexOf(PNAME)>0&&str.endsWith(".exe")) {
    ss = str.split("\\s");
    for(int i=0;i<ss.length;i+=2){
     System.out.println("****************************");
     System.out.println("进程名:"+ss[i+1]+"\n进程ID:"+ss[i]);
    }
   }
  }
  System.out.println("****************************");
  ir.close();
  ii.close();
  br.close();
 }
} 


运行结果如下

包含关键字 QQ 的进程有:

****************************
进程名:QQ.exe
进程ID:3956
****************************
TOMCAT最佳实践 TOMCAT最佳实践
TOMCAT最佳实践


http://wenku.baidu.com/view/3c5e727f5acfa1c7aa00cc15.html

SSH 分页思考 http://tiger-hu.iteye.com/blog/1037035
分页程序是自己构造写的,分页的时候只使用了三个变量,一个是totalpages总页码,一个是当前页码currentpages,一个就是数据list集合。


<div  class="pageNav"> 
<!--define the url of the previous page and next page--> 
<s:url id="url_index" value="/pageAction.action"> 
<s:param name="assistDto.currentPages" value="1"></s:param> 
</s:url> 
<s:url id="url_pre" value="/pageAction.action"> 
<s:param name="assistDto.currentPages" value="#attr.assistDto.currentPages-1"></s:param> 
</s:url> 
<s:url id="url_next" value="/pageAction.action"> 
<s:param name="assistDto.currentPages" value="#attr.assistDto.currentPages+1"></s:param> 
</s:url> 
<s:url id="url_end" value="/pageAction.action"> 
<s:param name="assistDto.currentPages" value="#attr.assistDto.totalPages"></s:param> 
</s:url> 
<table align="center"> 
<tr> 
<td> 
<s:if test="#attr.assistDto.currentPages <= 1">首页  </s:if> 
<s:else><s:a href="%{url_index}">首页  </s:a></s:else></td> 
<td> 
<s:if test="#attr.assistDto.currentPages > 1"> 
<s:a href="%{url_pre}">上一页  </s:a></s:if> 
<s:else>上一页  </s:else></td> 
<td>第${attr.assistDto.currentPages} 页  </td> 
<td><s:if test="#attr.assistDto.currentPages < #attr.assistDto.totalPages"> 
<s:a href="%{url_next}">下一页  </s:a></s:if> 
<s:else>下一页  </s:else></td> 
<td><s:if test="#attr.assistDto.currentPages == #attr.assistDto.totalPages || #attr.assistDto.totalPages<=1">尾页  </s:if> 
<s:else><s:a href="%{url_end}">尾页  </s:a></s:else></td> 
<td>共${attr.assistDto.totalPages}页   </td> 
</tr> 
</table> 
</div> 

使用s:iterator或c:foreach页面循环输出两个list http://tiger-hu.iteye.com/blog/1032623
有这样的需求,两个list: 
1.list包含属性X,值为1、2、3、4、5、6 
2.list2包含属性Y,值为a、b、C、D、E、F 
3.两个list的size相同 
4.输出成(原来的大小),值为合并后的,即:1a、2b、3C、4D、5E、6F 
方法是:通过struts的iterator和set、property标签,如下所示: 
Java代码  
<s:iterator value="list1" status="status" step="1">          
/*以下是取得list2的第几个属性对象,并设置到request的范围共享*/  
<s:set name="list2" value="#attr.l2[#attr.status.getIndex()]" scope="request"/>   
<s:property value="#request.list1.x"/>   
<s:property value="#request.list2.y"/>   
</s:iterator>  

<s:iterator value="list1" status="status" step="1">		
/*以下是取得list2的第几个属性对象,并设置到request的范围共享*/
<s:set name="list2" value="#attr.l2[#attr.status.getIndex()]" scope="request"/>
<s:property value="#request.list1.x"/>
<s:property value="#request.list2.y"/>
</s:iterator>

下面是使用foreach实现的两个输出: 
Java代码  
<c:forEach  items="${list1}" var="item" varStatus="status">   
    <c:out value="${item.X}"></c:out>   
    <c:out value="${list2[status.index].Y}"></c:out>   
</c:forEach>   

<c:forEach  items="${list1}" var="item" varStatus="status">
	<c:out value="${item.X}"></c:out>
	<c:out value="${list2[status.index].Y}"></c:out>
</c:forEach> 


另附: 
jstl中的varStatus 

和 var 属性一样, varStatus 用于创建限定了作用域的变量。不过,由 varStatus 属性命名的变量并不存储当前索引值或当前元素,而是赋予 javax.servlet.jsp.jstl.core.LoopTagStatus 类的实例。该类定义了一组特性,它们描述了迭代的当前状态,下面列出了这些特性: 

特性         Getter                       描述 
current    getCurrent()           当前这次迭代的(集合中的)项 
index       getIndex()               当前这次迭代从 0 开始的迭代索引 
count       getCount()             当前这次迭代从 1 开始的迭代计数 
first          isFirst()                  用来表明当前这轮迭代是否为第一次迭代的标志 
last          isLast()                  用来表明当前这轮迭代是否为最后一次迭代的标志 
begin      getBegin()             begin 属性值 
end         getEnd()                 end 属性值 
step        getStep()                step 属性值 



<c:foreach var="showBspSubTop" varstatus="i" begin="1" step="1" items="${ showBspSubTops }"></c:foreach> 

java按行读取文本文件 http://tiger-hu.iteye.com/blog/994179
获得一个文件流Java代码  
public static BufferedReader getBufferedReader(String filePath,String charset) {   
        InputStreamReader isr;   
        BufferedReader bufferedReader =null;   
        try {   
            isr = new InputStreamReader(new FileInputStream(filePath), charset);   
            bufferedReader= new BufferedReader(isr);     
        } catch (UnsupportedEncodingException e) {   
            e.printStackTrace();   
            logger.info(e.getLocalizedMessage());   
        } catch (FileNotFoundException e) {   
            e.printStackTrace();   
            logger.info(e.getLocalizedMessage());   
        }     
        return bufferedReader;   
    }  




通过文件流读取文本文件 
Java代码  
public static StringBuffer getStringBufferWithLineSplitor(BufferedReader bufferReader,String lineSplitor) {   
        String content;   
        StringBuffer stringBuffer = new StringBuffer();    
        try {    
            while ((content = bufferReader.readLine()) != null) {   
                stringBuffer.append(content+lineSplitor);   
            }   
        } catch (IOException e) {   
            logger.info(e.getLocalizedMessage());   
            System.out.println("輸出文件錯誤");   
        }   
        return stringBuffer;   
    }  

public static StringBuffer getStringBufferWithLineSplitor(BufferedReader bufferReader,String lineSplitor) {
		String content;
		StringBuffer stringBuffer = new StringBuffer(); 
		try { 
			while ((content = bufferReader.readLine()) != null) {
				stringBuffer.append(content+lineSplitor);
			}
		} catch (IOException e) {
			logger.info(e.getLocalizedMessage());
			System.out.println("輸出文件錯誤");
		}
		return stringBuffer;
	}

使用bufferReader的readLine可以读取到单行的数据,然而我们一般都是统一进行返回数据然后批量处理。那么我们就可以在中间加入一个分隔符,比如这个lineSplitor就可以设置为"\n"啦。 
that is all。 

IP 跟 MAC的校验
JSP 中:IP 跟 MAC的校验
ip 不能以0/127/224-255开头,MAC 第16位不能为1,不得超过3行 
/^(((2[0-2]?[0-2]?|1[0-1]?[0-9]?|12[0-6]|12[8-9]|1[3-9]?[0-9]?)\.\b((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\b|\.)){3})\/([0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-([2-9A-F][0-9A-F]|0[0-9A-F])))$|^((2[0-2]?[0-2]?|1[0-1]?[0-9]?|12[0-6]|12[8-9]|1[3-9]?[0-9]?)\.\b((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\b|\.)){3})$|^([0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-([2-9A-F][0-9A-F]|0[0-9A-F]))$/
本地密码的正则表达式的校验
 //本地密码的正则表达式    不支持中文
    public static String userPwd_patternStr = "\\w\\?`~!@#%\\^&\\*\\(\\)\\[\\]\\\\\\{\\}\\|\\-=+:;',\\.<>/]*";
IP校验 不能以0、127及224-255开头;是正确的IP
public class IpReg {   
       
    public static void main(String[] args) {   
        String s = "225.255.255.255";   
           
        boolean b = false;   
        //只要捕获到了异常,说明Ip是非法的,根据需要处理异常   
        try {   
            b = validateIP(s);   
        } catch (Exception e) {   
            e.printStackTrace();   
        }   
        System.out.println("验证结果为 :"+b);   
    }   
       
    public static boolean validateIP(String ip){   
        boolean b = false;   
        String[] ips = ip.split("\\.");   
        if(ips.length!=4){   
            throw new IllegalArgumentException("Illegal IP ["+ip+"]");   
        }   
           
        //对第一组进行验证   
        String[] ips1 = ips[0].split("");   
        if(ips1.length>4){   
            throw new IllegalArgumentException("Illegal IP ["+ip+"],String ["+ips[0]+"] given that length must less than 4");   
        }   
           
        int fip = 0;   
        try {   
            fip = Integer.parseInt(ips[0]);   
        } catch (NumberFormatException e) {   
            throw new IllegalArgumentException("Illegal IP ["+ip+"],param ["+ips[0]+"] given must be type of number!");   
        }   
        //如果没有抛出异常,则全部是数字,进行判断是否合法   
        if(fip<0 | fip == 0 | fip == 127){   
            throw new IllegalArgumentException("Illegal IP ["+ip+"], can not begin with "+fip);   
        }else{   
            b = true;   
            for(int i=224;i<=255;i++){   
                if(fip==i){   
                    throw new IllegalArgumentException("Illegal IP ["+ip+"], can not begin with "+fip);   
                }   
            }   
        }   
        //对剩下的三组进行验证   
        boolean b2 = validate(ips[1]);   
        boolean b3 = validate(ips[2]);   
        boolean b4 = validate(ips[3]);   
           
        return b&b2&b3&b4;   
    }   
       
    private static boolean validate(String subip){   
        String[] ips = subip.split("");   
        if(ips.length>4){   
            throw new IllegalArgumentException("Illegal IP ["+subip+"],String ["+subip+"] given that length must less than 4");   
        }   
        Integer ip = null;   
           
        try {   
            ip = Integer.parseInt(subip);   
        } catch (NumberFormatException e) {   
            throw new IllegalArgumentException("Illegal IP ["+subip+"],param ["+ips[0]+"] given must be type of number!");   
        }   
        //如果没有抛出异常,则全部是数字,进行判断是否合法   
        if(ip<=255 && ip>-1){   
            return true;   
        }else{   
            throw new IllegalArgumentException("Illegal IP ["+subip+"],param ["+subip+"] given that must less than 256 and great than -1");   
        }   
    }   
}  
正则表达式:IP校验
正则表达式:IP校验 
        String strPattern = 
            "^(([0-9]|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.)" + "{3}([0-9]|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])$"; 
Global site tag (gtag.js) - Google Analytics