String的substring和subSequence的区别 rainy

      今天截取字符串的时候,无意中发现了subSequence,并且不小心用上了,呵呵,发现同样能和substring一样截取,效果一模一样。我就好奇地翻看了一下源码:

public CharSequence subSequence(int beginIndex, int endIndex) {
          return this.substring(beginIndex, endIndex);
}

      根据JDK的文档,String.subSequence只是为了实现CharSequence接口上的同名方法而放在那里的,其行为与String.substring一样。

区别是:substring和subSequence的返回类型不一样,substring返回的是String,subSequence返回的是实现了CharSequence接口的类,也就是说使用subSequence得到的结果,只能使用CharSequence接口中的方法。不过在String类中已经重写了subSequence,调用subSequence方法,可以直接下转为String对象。

Java比较两个时间相差多少天,多少个月,多少年 cloudy

在项目开发当中,我们时常碰到要比较两个时间或者与当前时间相差多少天,多少个月,多少年的问题。

本人结合网上的一些例子,稍作修改,提供出下面示例,与网友们分享。

java代码
  1. package com.test;  
  2. import java.text.DateFormat;  
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Calendar;  
  5. import java.util.Date;  
  6. /**  
  7.  * @description 日期比较天 月 年  
  8.  * @author www.javawind.net  
  9.  */ 
  10. public class DateTest {  
  11.     public static void main(String[] args) {  
  12.         String date = "2008-06-12";  
  13.           
  14.         DateTest.compareDate(date, null0);  
  15.         DateTest.compareDate(date, null1);  
  16.         DateTest.compareDate(date, null2);  
  17.           
  18.         date = "2006-06-03";          
  19.         DateTest.compareDate(date, null0);  
  20.         DateTest.compareDate(date, null1);  
  21.         DateTest.compareDate(date, null2);  
  22.         DateTest.compareDate(date, "2009-06-01"0);  
  23.         DateTest.compareDate(date, "2009-06-01"1);  
  24.         DateTest.compareDate(date, "2009-06-01"2);  
  25.     }  
  26.       
  27.     /**  
  28.      * @param date1 需要比较的时间 不能为空(null),需要正确的日期格式  
  29.      * @param date2 被比较的时间  为空(null)则为当前时间  
  30.      * @param stype 返回值类型   0为多少天,1为多少个月,2为多少年  
  31.      * @return  
  32.      */ 
  33.     public static int compareDate(String date1,String date2,int stype){  
  34.         int n = 0;  
  35.           
  36.         String[] u = {"天","月","年"};  
  37.         String formatStyle = stype==1?"yyyy-MM":"yyyy-MM-dd";  
  38.           
  39.         date2 = date2==null?DateTest.getCurrentDate():date2;  
  40.           
  41.         DateFormat df = new SimpleDateFormat(formatStyle);  
  42.         Calendar c1 = Calendar.getInstance();  
  43.         Calendar c2 = Calendar.getInstance();  
  44.         try {  
  45.             c1.setTime(df.parse(date1));  
  46.             c2.setTime(df.parse(date2));  
  47.         } catch (Exception e3) {  
  48.             System.out.println("wrong occured");  
  49.         }  
  50.         //List list = new ArrayList();  
  51.         while (!c1.after(c2)) {                     // 循环对比,直到相等,n 就是所要的结果  
  52.             //list.add(df.format(c1.getTime()));    // 这里可以把间隔的日期存到数组中 打印出来  
  53.             n++;  
  54.             if(stype==1){  
  55.                 c1.add(Calendar.MONTH, 1);          // 比较月份,月份+1  
  56.             }  
  57.             else{  
  58.                 c1.add(Calendar.DATE, 1);           // 比较天数,日期+1  
  59.             }  
  60.         }  
  61.           
  62.         n = n-1;  
  63.           
  64.         if(stype==2){  
  65.             n = (int)n/365;  
  66.         }     
  67.           
  68.         System.out.println(date1+" -- "+date2+" 相差多少"+u[stype]+":"+n);        
  69.         return n;  
  70.     }  
  71.       
  72.     /**  
  73.      * 得到当前日期  
  74.      * @return  
  75.      */ 
  76.     public static String getCurrentDate() {  
  77.         Calendar c = Calendar.getInstance();  
  78.         Date date = c.getTime();  
  79.         SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd");  
  80.         return simple.format(date);  
  81.     }  

运行结果:

2008-06-12 -- 2009-06-09 相差多少天:362
2008-06-12 -- 2009-06-09 相差多少月:12
2008-06-12 -- 2009-06-09 相差多少年:0
2006-06-03 -- 2009-06-09 相差多少天:1102
2006-06-03 -- 2009-06-09 相差多少月:36
2006-06-03 -- 2009-06-09 相差多少年:3
...

SQL 存储过程使用CHARINDEX分隔逗号,间隔的数组 cloud

这里假设有 一串数组变量 "appNum1,appNum2,appNum3,appNum4,appNum5,appNum6,appNum7,appNum8"

当我们需要在存储过程中遍历这个数组的子项时,我们可以通过 CHARINDEX 或者结合Left,Right来分隔和遍历它

注意:由于字符串index的计算问题,下面定义变量的时候,需要在最后面增加一个逗号",",否则遍历的时候将缺少最后一个子项

方法一:

代码
  1. declare @item varchar(50),@rowName varchar(200)  
  2. declare @m int,@n int,@i int 
  3. Set @rowName='appNum1,appNum2,appNum3,appNum4,appNum5,appNum6,appNum7,appNum8,' 
  4. Set @m=CHARINDEX(',',@rowName)  
  5. Set @n=1  
  6. Set @i=0  
  7. WHILE  @m>0  
  8.     BEGIN         
  9.         Set @item=SubString(@rowName,@n,@m-@n)  
  10.         Print Cast(@i as varchar)+'-'+@item  
  11.         Set @i=@i+1  
  12.         Set @n=@m+1       
  13.         Set @m=CHARINDEX(',',@rowName,@n)  
  14.     END 

方法二:

代码
  1. DECLARE @s varchar(4000)  
  2. DECLARE @i int 
  3. Set @i=0  
  4. SET @s='appNum1,appNum2,appNum3,appNum4,appNum5,appNum6,appNum7,appNum8,'     
  5. WHILE CHARINDEX(',',@s)>0     
  6.     BEGIN     
  7.         Print Cast(@i as varchar)+'-'+LEFT(@s,CHARINDEX(',',@s)-1)  
  8.         Set @i=@i+1    
  9.         SET @s=RIGHT(@s,LEN(@s)-CHARINDEX(',',@s))     
  10.     END 

两个方法的运行结果都是:
0-appNum1
1-appNum2
2-appNum3
3-appNum4
4-appNum5
...

SQL 存储过程中使用游标查询(遍历)某表格中的数据 cloud

我们在使用存储过程当中,有时在统计数据的时候,需要查询某表中的数据,并且得到指定字段的具体值,这时就需要用到游标查询来遍历表数据

示例:
这里有一个表(demo),字段结构和数据如下:

idf         namef                websitef
----------- -------------------- -------------------------------------------
1           javawind             http://www.javawind.net
2           blog                 http://blog.javawind.net
3           csdn                 http://www.csdn.net
...

有道难题之解谜游戏 答案 suny

有道难题之解谜游戏 地址:http://www.youdao.com/nanti/mi/

呵呵 我到了第七关就被难住了,后面的部分答案都是搜索来的,本人在这里简单讲解一下 答案:

1、一样的人物:google、youdao、sougou、yahoo都有2个,而baidu没有,所以“人物”是:o

...

SQL中取DateTime数据类型中的日期和时间 cloudy

      我们知道SQL中表示日期和时间的数据类型为DateTime,数据格式如 '2009-04-13 11:00:27.857',日期和时间是结合在一起的,有时我们只想要日期不要时间,有时我们只要时间而不要日期。可以通过Convert()函数来达到我们的目的。

Convert()函数的功能是:将某种数据类型的表达式显式转换为另一种数据类型。
Convert()函数的格式是:Convert(Data_Type[(Length)], Expression [, Style])

Data_Type[(Length)]为转换后的数据类型,Length为长度,可选(转换为某些数据类型时不需要写);Expression为备转换的表达式,Style为日期时间样式。
...

VSS登录错误(Access to file"...rights.dat" denied)的解决方法 cloud

      今天同事把VSS目录从服务器转移到某台工作机后,我无论通过VSS客户端还是Eclipse连接都无法登录,通过网上邻居却可以打开该目录。

      VSS客户端打开工程时提示 Access to file"\\...\rights.dat" denied

      该提示是指没有网络访问的权限,用户要在共享文件夹有可写的权限才可以。我们在设置共享文件的时候应该允许用户更改文件。还要把共享文件夹的只读设置去掉!

...

Tomcat6.0虚拟目录配置 suny

这里假设设置虚拟目录 "javawind",通过 http://localhost:8080/javawind 访问物理路径 D:\javawind\webRoot 文件夹里面的内容。设置过程如下:

第一种方法:打开 Tomcat6.0\conf\server.xml 文件,在 <Host> 和 </Host> 之间加入:即:<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
后面一行插入
...

遍历HashMap的key、value和整个对象 suny

以下通过程序来简单实践一下HashMap的的遍历

PS:如果要保持HashMap的遍历顺序和原插入顺序一致,可以使用LinkedHashMap,使用方法和HashMap一样,改一下声明即可:LinkedHashMap myMap = new LinkedHashMap(); 当然需要导入:java.util.LinkedHashMap

import java.util.Collection;
import java.util.HashMap;
...

郁闷的上班经历 rainy

      2008.11.03,8点准时起床了。洗漱完毕后,8:15出门坐车上班去。这时天空下着雨,郁闷了,湿漉漉的挤车最讨厌啦。

      好不容易在8:32挤上了813路,一路走走停停,突然在距离公司还有2个站的地方卡住啦,郁闷死!卡了10多分钟后,眼看就要迟到了,车里很多人也按耐不住了,要求下车走路去了,我也跟着大队下车了,准备走路10分钟左右上班去,鬼知道公交车还能卡多久。我靠,刚下车没一会儿,塞车就通了,车流快速地往前跑去,眼睁睁地看着刚才的公交车比我还快地跑了,一大堆人郁闷死。

      到达公司9:05,虽然说是迟到了,可是不知道为啥没有我的考勤卡。进去先,咦,怎么那么少人啊?我的同事呢?
      技术总监看见我来了也惊奇:“你怎么来了?不是要去**局上班么?”
      我郁闷了:“不是吧,他们怎么没有通知我呢?他们来了公司还是直接去**局了?”
      技术总监回答:“没有来公司,直接去**局了!”
      我郁闷死:“上周五怎么不通知我呢?”
      之后拆下硬盘,郁闷地离开公司去**局了!

      我记得公司门口是有公交车到**局那边的,跑到公交车站一看,郁闷,怎么没有234路啊?天天看着它经过,难道反向就不经过了?还是绕到其他站去了?晕了,不会要我走到岗顶去坐车吧?想了下,之前查过公司到**局的乘车路线,好像坐车到时代广场转车就可以到了。

      嗯,好不犹豫上了191路,一下子到了时代广场站,一下车就去看站牌,我晕,怎么没有到**局的公交车?哦,这里是(1)站,到前20米的(2)站看看,一看,更郁闷,也没有直达的,只能坐其他车到附近再走10分钟路程。

      左等右等,其他班车的都过了n辆了,就是不见我要等的车到来,郁闷30分钟后,终于来了。
...


Total:128|‹34567891011121313 Pages