随笔-153  评论-235  文章-19  trackbacks-0
 
    用String.substring方法,不小心会有越界异常。现实现一个没抛出越界异常,越界就返回null,不过直接返回的再用其它方法,可能有Null异常。现还实现可以负index的,可能逆向的。
package com.chenlb.util;   
  
public class StringUtil {   
       
    
/**  
     * start与end均可负数<br/>  
     * start < end正向取, start > end逆向取<br/>  
     * 示例:str="I am chenlb"<br/>  
     * StringUtil.substring(str, 0, 12) -> null<br/>  
     * StringUtil.substring(str, 12, 12) -> null<br/>  
     * StringUtil.substring(str, 12, 13) -> null<br/>  
     * StringUtil.substring(str, 4, 4) -> ""<br/>  
     * StringUtil.substring(str, 0, 4) -> "I am"<br/>  
     * StringUtil.substring(str, -4, -1) -> "enl"<br/>  
     * StringUtil.substring(str, -2, 4) -> "lbI am"<br/>  
     * StringUtil.substring(str, 4, 0) -> "ma I"<br/>  
     * StringUtil.substring(str, -1, -4) -> "lne"<br/>  
     * StringUtil.substring(str, 1, -4) -> "Iblne"<br/>  
     * StringUtil.substring(str, 0, -4) -> "blne"<br/>  
     * StringUtil.substring(str, -4, 0) -> "enlb"<br/>  
     * 
@return 越界返回null, start==end返回空  
     * 
@author chenlb 2008-6-18 下午12:39:51  
     
*/  
    
public static String substring(String str, int start, int end) {   
        
if(str == null) {   
            
return null;   
        }   
        
int len = str.length();   
        
if(Math.abs(start) >= len) {   
            
return null;   
        }   
        
if(Math.abs(end) > len) {   
            
return null;   
        }   
        StringBuilder sb 
= new StringBuilder();   
        
if(end > start) {    //正向   
            substring(sb, str, start, end);   
        } 
else if(end == start) {   
            
return "";   
        } 
else {    //逆向 end < start   
            substring(sb, str, end, start);   
            sb.reverse();   
        }   
        
return sb.toString();   
    }   
       
    
private static void substring(StringBuilder sb, String str, int start, int end) {   
        
int len = str.length();   
        
if(start < 0) {   
            
if(end < 0) {   
                sb.append(str.substring(len
+start, len+end));   
            } 
else {   
                sb.append(str.substring(len
+start, len));   
                sb.append(str.substring(
0, end));   
            }   
        } 
else {   
            sb.append(str.substring(start, end));   
        }   
    }   
}  

测试代码:
public void testSubstring() {   
        String str 
= "I am chenlb";   
           
        assertEquals(
null, StringUtil.substring(str, 012));   
        assertEquals(
null, StringUtil.substring(str, 1212));   
        assertEquals(
null, StringUtil.substring(str, 1213));   
           
        assertEquals(
"", StringUtil.substring(str, 44));   
           
        assertEquals(
"I am", StringUtil.substring(str, 04));   
        assertEquals(
"am", StringUtil.substring(str, 24));   
        assertEquals(
"I am chenlb", StringUtil.substring(str, 011));   
           
        assertEquals(
"enl", StringUtil.substring(str, -4-1));   
        assertEquals(
"lbI am", StringUtil.substring(str, -24));   
           
        assertEquals(
"ma I", StringUtil.substring(str, 40));   
        assertEquals(
"lne", StringUtil.substring(str, -1-4));   
        assertEquals(
"Iblne", StringUtil.substring(str, 1-4));   
           
        assertEquals(
"blne", StringUtil.substring(str, 0-4));   
        assertEquals(
"enlb", StringUtil.substring(str, -40));   
}  
posted @ 2008-06-24 13:53 流浪汗 阅读(542) | 评论 (0)编辑 收藏

Windows网络命令行程序 

 
ipconfig /all 查看配置 
ipconfig /renew 刷新配置 
ipconfig 管理 DNS 和 DHCP 类别 ID
Ping 测试连接
Arp 解决硬件地址问题
nbtstat 解决 NetBIOS 名称问题
netstat 显示连接统计
tracert 跟踪网络连接
pathping 测试路由器

posted @ 2008-06-24 13:51 流浪汗 阅读(258) | 评论 (0)编辑 收藏

    今天运行下程序,报错说“内存不够”。在Tomcat可以扩大JVM的内存栈呢?然后看那bin目录下启动文件,找到catalina.bat文件的JAVA_OPTS(大概在103行,5.5.X),在再添加一个set JAVA_OPTS参数即可如:

set JAVA_OPTS=%JAVA_OPTS% -Xms100m -Xmx512m 
posted @ 2008-06-24 13:49 流浪汗 阅读(363) | 评论 (0)编辑 收藏
    前段时间学习Linux命令,偶然发现curl命令很有用。这里简单介绍下。网络上部分解析是:curl是一个利用URL语法在命令行方式下工作的文件传输工具。

   它可以取得有规律的url的内容。比如:http://www.example.com/001.html 到 http://www.example.com/100.html ,它有一种表达式可以这些内容下载下来,这功能绝对比迅雷强,迅雷只支持一个变量,curl只你喜欢可任意多。它可继点续传,提交表单……

   来看下简单的使用:

1.查看响应的头
curl -I http://chenlb.javaeye.com 
现在正如robbin说的可以看下X-Runtime: 0.47101

2.在学校要代理才可以上javaeye.com。用-x设代理
curl -x proxy.gdut.edu.cn:8080 -I http://chenlb.javaeye.com 

3.把返回的内容保存下来,用-o filename参数
curl -o chenlb.html http://chenlb.javaeye.com  

4.保存内容时要filename很烦,用一个-O参数来指定用服务器的文件名,这个批量下载很有用。
curl -O http://baike.baidu.com/view/[1-2].htm
批量下载百科的1.htm 2.htm两个页面,这功能够强。

我常用的就是以上四个。

5.很多要referer的,有-e参数可以设置
curl -o me.html -e http://www.javaeye.com http://chenlb.javaeye.com  

还有很多很多参数,留给大家去发现,比如:发送数据,提交表单,设置用户与密码,用什么协议啊……
posted @ 2008-06-24 13:47 流浪汗 阅读(1479) | 评论 (0)编辑 收藏
      java命令引入jar时可以-cp参数,但时-cp不能用通配符(多个jar时什么烦要一个个写,不能*.jar),面通常的jar都在同一目录,且多于1个。前些日子找到(发现)-Djava.ext.dirs太好。

如:

java -Djava.ext.dirs=lib MyClass  
posted @ 2008-06-22 23:58 流浪汗 阅读(5056) | 评论 (0)编辑 收藏
    javascript xslt 处理xml备忘录。支持firefox。
参考:
w3school XSLT - 客户端 http://www.w3school.com.cn/xsl/xsl_client.asp
如何使用Javascript XSLT 处理XML文件 http://java.chinaitlab.com/advance/533787.html

1.xml文件,cdcatalog.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited with XML Spy v2007 (http://www.altova.com) -->
<catalog>
    
<cd>
        
<title>Empire Burlesque</title>
        
<artist>Bob Dylan</artist>
        
<country>USA</country>
        
<company>Columbia</company>
        
<price>10.90</price>
        
<year>1985</year>
    
</cd>
    
<cd>
        
<title>Hide your heart</title>
        
<artist>Bonnie Tyler</artist>
        
<country>UK</country>
        
<company>CBS Records</company>
        
<price>9.90</price>
        
<year>1988</year>
    
</cd>
</catalog>

2.xsl文件,cdcatalog.xsl
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited with XML Spy v2007 (http://www.altova.com) -->
<xsl:stylesheet version="1.0"
xmlns:xsl
="http://www.w3.org/1999/XSL/Transform">
<xsl:output method='html' version='1.0' encoding='UTF-8' indent='yes'/>

<xsl:template match="/">
  
<html>
  
<body>
  
<h2>My CD Collection</h2>
    
<table border="1">
      
<tr bgcolor="#9acd32">
        
<th align="left">Title</th>
        
<th align="left">Artist</th>
      
</tr>
      
<xsl:for-each select="catalog/cd">
      
<tr>
        
<td><xsl:value-of select="title"/></td>
        
<td><xsl:value-of select="artist"/></td>
      
</tr>
      
</xsl:for-each>
    
</table>
  
</body>
  
</html>
</xsl:template>
</xsl:stylesheet>


3.html文件,index.html
<html>
<body>

<script type="text/javascript">
var xml;
var xsl;
if(typeof window.ActiveXObject != 'undefined') {
    xml 
= new ActiveXObject("Microsoft.XMLDOM");
    xsl 
= new ActiveXObject("Microsoft.XMLDOM");
else if(document.implementation && document.implementation.createDocument) {    //mozilla
    xml = document.implementation.createDocument(""""null);
    xsl 
= document.implementation.createDocument(""""null);
}
// Load XML 

xml.async 
= false;
xml.load(
"cdcatalog.xml");

// Load XSL

xsl.async 
= false;
xsl.load(
"cdcatalog.xsl");

// Transform

if(typeof window.ActiveXObject != 'undefined') {
    document.write(xml.transformNode(xsl));
else if(document.implementation && document.implementation.createDocument) {    //mozilla
    var xsltProcessor = new XSLTProcessor();
    xsltProcessor.importStylesheet(xsl);
    
// transformToDocument方式
    var result = xsltProcessor.transformToDocument(xml);
    
var xmls = new XMLSerializer();
    document.write(xmls.serializeToString(result));
}

</script>

</body>
</html>


posted @ 2008-05-18 19:02 流浪汗 阅读(772) | 评论 (1)编辑 收藏
     摘要: 自己实现的优先队列 PriorityQueue  阅读全文
posted @ 2008-05-08 23:08 流浪汗 阅读(992) | 评论 (0)编辑 收藏
    想到局域网上建一个dns服务器,昨天晚上搞了好久都不成,包括今天也发了好多时间也不能通过.最后找到

水小筑之Blog

http://blog.chinaunix.net/u/5302/showart_238337.html
的博客, 帮了大忙,网上的很多文章都试过了都没有很好的结果.

我安装的centos是单CD的服务版本.安装后已经有bind了

1.配置文件在/etc/named.conf
//
// named.conf for Red Hat caching-nameserver 
//

options {
    directory 
"/var/named";
    dump
-file "/var/named/data/cache_dump.db";
        statistics
-file "/var/named/data/named_stats.txt";
    
/*
     
* If there is a firewall between you and nameservers you want
     
* to talk to, you might need to uncomment the query-source
     
* directive below.  Previous versions of BIND always asked
     
* questions using port 53, but BIND 8.1 uses an unprivileged
     
* port by default.
     
*/
     
// query-source address * port 53;
};

// 
// a caching only nameserver config
// 
controls {
    inet 
127.0.0.1 allow { localhost; } keys { rndckey; };
};

zone 
"." IN {
    type hint;
    file 
"named.ca";
};

zone 
"localdomain" IN {
    type master;
    file 
"localdomain.zone";
    allow
-update { none; };
};

zone 
"localhost" IN {
    type master;
    file 
"localhost.zone";
    allow
-update { none; };
};

zone 
"chenlb.com" IN {
    type master;
    file 
"chenlb.com.zone";
    allow
-query { any; };
    allow
-transfer { any; };
    allow
-update { none; };
};

zone 
"0.0.127.in-addr.arpa" IN {
    type master;
    file 
"named.local";
    allow
-update { none; };
};

zone 
"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
    file 
"named.ip6.local";
    allow
-update { none; };
};

zone 
"255.in-addr.arpa" IN {
    type master;
    file 
"named.broadcast";
    allow
-update { none; };
};

zone 
"0.in-addr.arpa" IN {
    type master;
    file 
"named.zero";
    allow
-update { none; };
};

include 
"/etc/rndc.key";

    只要添加一个zone就行,看上面
zone "chenlb.com" IN {
    type master;
    file 
"chenlb.com.zone";
    allow
-query { any; };
    allow
-transfer { any; };
    allow
-update { none; };
};

2.在/var/named/chroot/var/named/目录里建个chenlb.com.zone(上面的file),内容如下:
$TTL    86400
@       IN      SOA    chenlb.com.  root.chenlb.com.(
                                      
2008050201 ; Serial
                                      
28800      ; Refresh
                                      
14400      ; Retry
                                      
3600000    ; Expire
                                      
86400 )    ; Minimum
        IN NS    chenlb.com.
        IN MX 
10 mail.chenlb.com.
@       IN A     
192.168.0.60
www     IN A     
192.168.0.60
ftp     IN A     
192.168.0.60
mail    IN A     
192.168.0.60

3.在/var/named目录下建链接
# ch /var/named
#
 ln -s /var/named/chroot/var/named/chenlb.com.zone chenlb.com.zone

4.启动named
# /etc/init.d/named start

5.测试前添加nds服务地址
# vi /etc/resolv.conf

在加
nameserver 192.168.0.60
search chenlb.com
说明:192.168.0.60是我本机地址

现在本机下可以ping  www.chenlb.com了

要在加的机上可以使用DNS服务,要在防火墙里允许

6.修改/etc/sysconfig/iptables添加下面的
-A RH-Firewall-1-INPUT -p udp -m udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT

    OK,现在在win里添加dns地址192.168.0.60就在ping  www.chenlb.com了. 呵呵


posted @ 2008-05-02 20:46 流浪汗 阅读(999) | 评论 (0)编辑 收藏
    昨天安装好了lighttpd,现在想试下与tomcat的一起工作。把所有的*.jsp让tomcat去处理。用到lighttpd的代理,lighttpd与tomcat比apache与tomcat要简单多。开始喜欢上了lighttpd。

修改lighttpd的配置
# vi /usr/local/lighttpd-1.4.19/lighttpd.conf

去掉mod_proxy注释
server.modules              = (
#...
#                               
"mod_proxy",
#...
                              )

去掉proxy.server注释
proxy.server               = ( ".jsp" =>
                               ( 
"localhost" =>
                                 (
                                   
"host" ="192.168.0.60",
                                   
"port" =8080
                                 )
                               )
                             )



重启lighttpd,然后http://192.168.0.60/index.jsp就可以看到tomcat的页面了。
posted @ 2008-05-02 00:03 流浪汗 阅读(2261) | 评论 (0)编辑 收藏
    近几日都想玩下服务器。此文是在linux下的lighttpd安装php。参考疯狂的鼠标 的博客: http://blog.csdn.net/shined_zhang/archive/2007/10/28/1852349.aspx

1.安装lighttpd看http://www.blogjava.net/chenlb/archive/2008/04/30/197617.html

2.安装mysql看http://www.blogjava.net/chenlb/archive/2007/03/20/105114.html

3.安装php,先到http://www.php.net 下载,我下载的是php-5.2.5
# tar -zxvf php-5.2.5.tar.gz
# cd php-
5.2.5
#./configure --prefix
=/usr/local/php-5.2.5 --enable-fastcgi --with-mysql=/usr/local/mysql --enable-zend-multibyte --with-config-file-path=/usr/local/php-5.2.5/conf --enable-discard-path --enable-force-cgi-redirect
# make
# make install
#mkdir /usr/local/php-
5.2.5/conf
#cp php.ini-dist /usr/local/php-
5.2.5/conf/php.ini

    我在安装过程中也出过问题,说我没有找到xml2。要yum install libxml2*一下。

4.修改lighttpd的配置。  把mod_fastcgi去掉注释。
# vi /usr/local/lighttpd-1.4.19/lighttpd.conf

server.modules              = (
#
#                               
"mod_fastcgi",
#
                              )

  

    找到fastcgi.server去掉注释,修改后看起来像。
fastcgi.server             = ( ".php" =>
                               ( 
"localhost" =>
                                 (
                                   
"socket" ="/usr/local/lighttpd-1.4.19/php-fastcgi.socket",
                                   
"bin-path" ="/usr/local/php-5.2.5/bin/php-cgi"
                                 )
                               )
                            )


5.php测试页面phpinfo.php放到你的www目录下。
<?php
echo phpinfo();
?>


最后启动或重启lighttpd即可。

posted @ 2008-05-01 16:48 流浪汗 阅读(1140) | 评论 (0)编辑 收藏
仅列出标题
共16页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last