posts - 4,  comments - 1,  trackbacks - 0
  2007年11月1日
  /**
     * 取得指定月份的第一天
     *
     * @param strdate String
     * @return String
     */
    public String getMonthBegin(String strdate)
    {
        java.util.Date date = parseFormatDate(strdate);
        return formatDateByFormat(date,"yyyy-MM") + "-01";
    }

    /**
     * 取得指定月份的最后一天
     *
     * @param strdate String
     * @return String
     */
    public String getMonthEnd(String strdate)
    {
        java.util.Date date = parseFormatDate(getMonthBegin(strdate));
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MONTH,1);
        calendar.add(Calendar.DAY_OF_YEAR, -1);
        return formatDate(calendar.getTime());
    }

    /**
     * 常用的格式化日期
     *
     * @param date Date
     * @return String
     */
    public String formatDate(java.util.Date date)
    {
        return formatDateByFormat(date,"yyyy-MM-dd");
    }

    /**
     * 以指定的格式来格式化日期
     *
     * @param date Date
     * @param format String
     * @return String
     */
    public String formatDateByFormat(java.util.Date date,String format)
    {
        String result = "";
        if(date != null)
        {
            try
            {
                SimpleDateFormat sdf = new SimpleDateFormat(format);
                result = sdf.format(date);
            }
            catch(Exception ex)
            {
                LOGGER.info("date:" + date);
                ex.printStackTrace();
            }
        }
        return result;
    }

 

/**
 * 日期操作
 *
 * @author xxx
 * @version 2.0 jdk1.4.0 tomcat5.1.0 * Updated Date:2005/03/10
 */
public class DateUtil {
 /**
  * 格式化日期
  *
  * @param dateStr
  *            字符型日期
  * @param format
  *            格式
  * @return 返回日期
  */
 public static java.util.Date parseDate(String dateStr, String format) {
  java.util.Date date = null;
  try {
   java.text.DateFormat df = new java.text.SimpleDateFormat(format);
   String dt=Normal.parse(dateStr).replaceAll(
     "-", "/");
   if((!dt.equals(""))&&(dt.length()<format.length())){
    dt+=format.substring(dt.length()).replaceAll("[YyMmDdHhSs]","0");
   }
   date = (java.util.Date) df.parse(dt);
  } catch (Exception e) {
  }
  return date;
 }

 public static java.util.Date parseDate(String dateStr) {
  return parseDate(dateStr, "yyyy/MM/dd");
 }

 public static java.util.Date parseDate(java.sql.Date date) {
  return date;
 }
 
 public static java.sql.Date parseSqlDate(java.util.Date date) {
  if (date != null)
   return new java.sql.Date(date.getTime());
  else
   return null;
 }

 public static java.sql.Date parseSqlDate(String dateStr, String format) {
  java.util.Date date = parseDate(dateStr, format);
  return parseSqlDate(date);
 }

 public static java.sql.Date parseSqlDate(String dateStr) {
  return parseSqlDate(dateStr, "yyyy/MM/dd");
 }

 
 public static java.sql.Timestamp parseTimestamp(String dateStr,
   String format) {
  java.util.Date date = parseDate(dateStr, format);
  if (date != null) {
   long t = date.getTime();
   return new java.sql.Timestamp(t);
  } else
   return null;
 }

 public static java.sql.Timestamp parseTimestamp(String dateStr) {
  return parseTimestamp(dateStr, "yyyy/MM/dd HH:mm:ss");
 }

 /**
  * 格式化输出日期
  *
  * @param date
  *            日期
  * @param format
  *            格式
  * @return 返回字符型日期
  */
 public static String format(java.util.Date date, String format) {
  String result = "";
  try {
   if (date != null) {
    java.text.DateFormat df = new java.text.SimpleDateFormat(format);
    result = df.format(date);
   }
  } catch (Exception e) {
  }
  return result;
 }

 public static String format(java.util.Date date) {
  return format(date, "yyyy/MM/dd");
 }

 /**
  * 返回年份
  *
  * @param date
  *            日期
  * @return 返回年份
  */
 public static int getYear(java.util.Date date) {
  java.util.Calendar c = java.util.Calendar.getInstance();
  c.setTime(date);
  return c.get(java.util.Calendar.YEAR);
 }

 /**
  * 返回月份
  *
  * @param date
  *            日期
  * @return 返回月份
  */
 public static int getMonth(java.util.Date date) {
  java.util.Calendar c = java.util.Calendar.getInstance();
  c.setTime(date);
  return c.get(java.util.Calendar.MONTH) + 1;
 }

 /**
  * 返回日份
  *
  * @param date
  *            日期
  * @return 返回日份
  */
 public static int getDay(java.util.Date date) {
  java.util.Calendar c = java.util.Calendar.getInstance();
  c.setTime(date);
  return c.get(java.util.Calendar.DAY_OF_MONTH);
 }

 /**
  * 返回小时
  *
  * @param date
  *            日期
  * @return 返回小时
  */
 public static int getHour(java.util.Date date) {
  java.util.Calendar c = java.util.Calendar.getInstance();
  c.setTime(date);
  return c.get(java.util.Calendar.HOUR_OF_DAY);
 }

 /**
  * 返回分钟
  *
  * @param date
  *            日期
  * @return 返回分钟
  */
 public static int getMinute(java.util.Date date) {
  java.util.Calendar c = java.util.Calendar.getInstance();
  c.setTime(date);
  return c.get(java.util.Calendar.MINUTE);
 }

 /**
  * 返回秒钟
  *
  * @param date
  *            日期
  * @return 返回秒钟
  */
 public static int getSecond(java.util.Date date) {
  java.util.Calendar c = java.util.Calendar.getInstance();
  c.setTime(date);
  return c.get(java.util.Calendar.SECOND);
 }

 /**
  * 返回毫秒
  *
  * @param date
  *            日期
  * @return 返回毫秒
  */
 public static long getMillis(java.util.Date date) {
  java.util.Calendar c = java.util.Calendar.getInstance();
  c.setTime(date);
  return c.getTimeInMillis();
 }

 /**
  * 返回字符型日期
  *
  * @param date
  *            日期
  * @return 返回字符型日期
  */
 public static String getDate(java.util.Date date) {
  return format(date, "yyyy/MM/dd");
 }

 /**
  * 返回字符型时间
  *
  * @param date
  *            日期
  * @return 返回字符型时间
  */
 public static String getTime(java.util.Date date) {
  return format(date, "HH:mm:ss");
 }

 /**
  * 返回字符型日期时间
  *
  * @param date
  *            日期
  * @return 返回字符型日期时间
  */
 public static String getDateTime(java.util.Date date) {
  return format(date, "yyyy/MM/dd HH:mm:ss");
 }

 /**
  * 日期相加
  *
  * @param date
  *            日期
  * @param day
  *            天数
  * @return 返回相加后的日期
  */
 public static java.util.Date addDate(java.util.Date date, int day) {
  java.util.Calendar c = java.util.Calendar.getInstance();
  c.setTimeInMillis(getMillis(date) + ((long) day) * 24 * 3600 * 1000);
  return c.getTime();
 }

 /**
  * 日期相减
  *
  * @param date
  *            日期
  * @param date1
  *            日期
  * @return 返回相减后的日期
  */
 public static int diffDate(java.util.Date date, java.util.Date date1) {
  return (int) ((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000));
 } 
}

 

Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
int date = now.get(Calendar.DAY_OF_MONTH);
int month = now.get(Calendar.MONTH) + 1;
int hour = now.get(Calendar.HOUR);
int min = now.get(Calendar.MINUTE);
int sec = now.get(Calendar.SECOND);

 

 

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;


public class ManageWeek {
 //判断两个日期是否在同一周
 boolean isSameWeekDates(Date date1, Date date2) {
  Calendar cal1 = Calendar.getInstance();
  Calendar cal2 = Calendar.getInstance();
  cal1.setTime(date1);
  cal2.setTime(date2);
  int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
  if (0 == subYear) {
    if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
   return true;
  }
  else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {
    // 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周
    if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
   return true;
  }
  else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {
    if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
   return true;
  }
  return false;
 }
 
 
 //产生周序列
 public static String  getSeqWeek(){
  Calendar c = Calendar.getInstance(Locale.CHINA);
  String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));
  if(week.length()==1)week = "0" + week;
  String year = Integer.toString(c.get(Calendar.YEAR)); 
  return year+week;
 
 }
 
  //获得周一的日期
  public static String getMonday(Date date){
   Calendar c = Calendar.getInstance();
   c.setTime(date);
   c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
   return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
  }
 
 
  //获得周五的日期
  public static String getFriday(Date date){
   Calendar c = Calendar.getInstance();
   c.setTime(date);
   c.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);  
   return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
  
  
  }
 
  public static void main(String[] args){

  }

}

posted @ 2007-11-01 15:03 chaochao 阅读(303) | 评论 (0)编辑 收藏
  2007年10月18日
     摘要: 1. SQL server里的数据类型bigint和JAVA中的类型long对应。所以:id is bigint in sqlserver,so in java must use "getLong(id)" method.in sqlserver the index is begin with "1" instead of "0". 2. java.sql.SQLException: [Micr...  阅读全文
posted @ 2007-10-18 16:50 chaochao 阅读(503) | 评论 (0)编辑 收藏
  2007年9月29日
一,ping   

  它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。下面就来看看它的一些常用的操作。先看看帮助吧,在DOS窗口中键入:ping /? 回车,。所示的帮助画面。在此,我们只掌握一些基本的很有用的参数就可以了(下同)。   

  -t 表示将不间断向目标IP发送数据包,直到我们强迫其停止。试想,如果你使用100M的宽带接入,而目标IP是56K的小猫,那么要不了多久,目标IP就因为承受不了这么多的数据而掉线,呵呵,一次攻击就这么简单的实现了。   

  -l 定义发送数据包的大小,默认为32字节,我们利用它可以最大定义到65500字节。结合上面介绍的-t参数一起使用,会有更好的效果哦。   

  -n 定义向目标IP发送数据包的次数,默认为3次。如果网络速度比较慢,3次对我们来说也浪费了不少时间,因为现在我们的目的仅仅是判断目标IP是否存在,那么就定义为一次吧。   

  说明一下,如果-t 参数和 -n参数一起使用,ping命令就以放在后面的参数为标准,比如“ping IP -t -n 3”,虽然使用了-t参数,但并不是一直ping下去,而是只ping 3次。另外,ping命令不一定非得ping IP,也可以直接ping主机域名,这样就可以得到主机的IP。   

  下面我们举个例子来说明一下具体用法。   

  这里time=2表示从发出数据包到接受到返回数据包所用的时间是2秒,从这里可以判断网络连接速度的大小 。从TTL的返回值可以初步判断被ping主机的操作系统,之所以说“初步判断”是因为这个值是可以修改的。这里TTL=32表示操作系统可能是win98。

  (小知识:如果TTL=128,则表示目标主机可能是Win2000;如果TTL=250,则目标主机可能是Unix)

  至于利用ping命令可以快速查找局域网故障,可以快速搜索最快的QQ服务器,可以对别人进行ping攻击……这些就靠大家自己发挥了。   

  二,nbtstat   

  该命令使用TCP/IP上的NetBIOS显示协议统计和当前TCP/IP连接,使用这个命令你可以得到远程主机的NETBIOS信息,比如用户名、所属的工作组、网卡的MAC地址等。在此我们就有必要了解几个基本的参数。   

  -a 使用这个参数,只要你知道了远程主机的机器名称,就可以得到它的NETBIOS信息(下同)。   

  -A 这个参数也可以得到远程主机的NETBIOS信息,但需要你知道它的IP。

  -n 列出本地机器的NETBIOS信息。   

  当得到了对方的IP或者机器名的时候,就可以使用nbtstat命令来进一步得到对方的信息了,这又增加了我们入侵的保险系数。   

  三,netstat

  这是一个用来查看网络状态的命令,操作简便功能强大。   

  -a 查看本地机器的所有开放端口,可以有效发现和预防木马,可以知道机器所开的服务等信息,如图4。   

  这里可以看出本地机器开放有FTP服务、Telnet服务、邮件服务、WEB服务等。用法:netstat -a IP。

  -r 列出当前的路由信息,告诉我们本地机器的网关、子网掩码等信息。用法:netstat -r IP。
四,tracert

  跟踪路由信息,使用此命令可以查出数据从本地机器传输到目标主机所经过的所有途径,这对我们了解网络布局和结构很有帮助。如图5。   

  这里说明数据从本地机器传输到192.168.0.1的机器上,中间没有经过任何中转,说明这两台机器是在同一段局域网内。用法:tracert IP。   

  五,net   

  这个命令是网络命令中最重要的一个,必须透彻掌握它的每一个子命令的用法,因为它的功能实在是太强大了,这简直就是微软为我们提供的最好的入侵工具。首先让我们来看一看它都有那些子命令,键入net /?回车如图6。

  在这里,我们重点掌握几个入侵常用的子命令。   

  net view   

  使用此命令查看远程主机的所以共享资源。命令格式为net view \\IP。  

  net use

  把远程主机的某个共享资源影射为本地盘符,图形界面方便使用,呵呵。命令格式为net use x: \\IP\sharename。上面一个表示把192.168.0.5IP的共享名为magic的目录影射为本地的Z盘。下面表示和192.168.0.7建立IPC$连接(net use \\IP\IPC$ "password" /user:"name"),   

  建立了IPC$连接后,呵呵,就可以上传文件了:copy nc.exe \\192.168.0.7\admin$,表示把本地目录下的nc.exe传到远程主机,结合后面要介绍到的其他DOS命令就可以实现入侵了。   

  net start

  使用它来启动远程主机上的服务。当你和远程主机建立连接后,如果发现它的什么服务没有启动,而你又想利用此服务怎么办?就使用这个命令来启动吧。用法:net start servername,如图9,成功启动了telnet服务。   

  net stop

  入侵后发现远程主机的某个服务碍手碍脚,怎么办?利用这个命令停掉就ok了,用法和net start同。   

  net user

  查看和帐户有关的情况,包括新建帐户、删除帐户、查看特定帐户、激活帐户、帐户禁用等。这对我们入侵是很有利的,最重要的,它为我们克隆帐户提供了前提。键入不带参数的net user,可以查看所有用户,包括已经禁用的。下面分别讲解。

  1,net user abcd 1234 /add,新建一个用户名为abcd,密码为1234的帐户,默认为user组成员。

  2,net user abcd /del,将用户名为abcd的用户删除。

  3,net user abcd /active:no,将用户名为abcd的用户禁用。

  4,net user abcd /active:yes,激活用户名为abcd的用户。

  5,net user abcd,查看用户名为abcd的用户的情况  

  net localgroup

  查看所有和用户组有关的信息和进行相关操作。键入不带参数的net localgroup即列出当前所有的用户组。在入侵过程中,我们一般利用它来把某个帐户提升为administrator组帐户,这样我们利用这个帐户就可以控制整个远程主机了。用法:net localgroup groupname username /add。   

  现在我们把刚才新建的用户abcd加到administrator组里去了,这时候abcd用户已经是超级管理员了,呵呵,你可以再使用net user abcd来查看他的状态,和图10进行比较就可以看出来。但这样太明显了,网管一看用户情况就能漏出破绽,所以这种方法只能对付菜鸟网管,但我们还得知道。现在的手段都是利用其他工具和手段克隆一个让网管看不出来的超级管理员,这是后话。有兴趣的朋友可以参照《黑客防线》第30期上的《由浅入深解析隆帐户》一文。   

  net time

  这个命令可以查看远程主机当前的时间。如果你的目标只是进入到远程主机里面,那么也许就用不到这个命令了。但简单的入侵成功了,难道只是看看吗?我们需要进一步渗透。这就连远程主机当前的时间都需要知道,因为利用时间和其他手段(后面会讲到)可以实现某个命令和程序的定时启动,为我们进一步入侵打好基础。用法:net time \\IP。   

  六,at   

  这个命令的作用是安排在特定日期或时间执行某个特定的命令和程序(知道net time的重要了吧?)。当我们知道了远程主机的当前时间,就可以利用此命令让其在以后的某个时间(比如2分钟后)执行某个程序和命令。用法:at time command \\computer。   

  表示在6点55分时,让名称为a-01的计算机开启telnet服务(这里net start telnet即为开启telnet服务的命令)。   
七,ftp   

  大家对这个命令应该比较熟悉了吧?网络上开放的ftp的主机很多,其中很大一部分是匿名的,也就是说任何人都可以登陆上去。现在如果你扫到了一台开放ftp服务的主机(一般都是开了21端口的机器),如果你还不会使用ftp的命令怎么办?下面就给出基本的ftp命令使用方法。

  首先在命令行键入ftp回车,出现ftp的提示符,这时候可以键入“help”来查看帮助(任何DOS命令都可以使用此方法查看其帮助)。   

  大家可能看到了,这么多命令该怎么用?其实也用不到那么多,掌握几个基本的就够了。   

  首先是登陆过程,这就要用到open了,直接在ftp的提示符下输入“open 主机IP ftp端口”回车即可,一般端口默认都是21,可以不写。接着就是输入合法的用户名和密码进行登陆了,这里以匿名ftp为例介绍。   

  用户名和密码都是ftp,密码是不显示的。当提示**** logged in时,就说明登陆成功。这里因为是匿名登陆,所以用户显示为Anonymous。   

  接下来就要介绍具体命令的使用方法了。   

  dir 跟DOS命令一样,用于查看服务器的文件,直接敲上dir回车,就可以看到此ftp服务器上的文件。

  cd 进入某个文件夹。

  get 下载文件到本地机器。

  put 上传文件到远程服务器。这就要看远程ftp服务器是否给了你可写的权限了,如果可以,呵呵,该怎么 利用就不多说了,大家就自由发挥去吧。

  删除 删除远程ftp服务器上的文件。这也必须保证你有可写的权限。

  bye 退出当前连接。

  quit 同上。
  

  八,telnet

  功能强大的远程登陆命令,几乎所有的入侵者都喜欢用它,屡试不爽。为什么?它操作简单,如同使用自己的机器一样,只要你熟悉DOS命令,在成功以administrator身份连接了远程机器后,就可以用它来干你想干的一切了。下面介绍一下使用方法,首先键入telnet回车,再键入help查看其帮助信息。   

  然后在提示符下键入open IP回车,这时就出现了登陆窗口,让你输入合法的用户名和密码,这里输入任何密码都是不显示的。   

  当输入用户名和密码都正确后就成功建立了telnet连接,这时候你就在远程主机上具有了和此用户一样的权限,利用DOS命令就可以实现你想干的事情了。这里我使用的超级管理员权限登陆的。  

  
posted @ 2007-09-29 16:25 chaochao 阅读(178) | 评论 (0)编辑 收藏
  2007年9月18日
     摘要: /**********************************Page类*********************************************/ package com.nyhr.struts.page; /**  * 分页实体类,保存当前分页状态变量  * @author Yeno.hhr */ public class Page ...  阅读全文
posted @ 2007-09-18 08:56 chaochao 阅读(906) | 评论 (1)编辑 收藏
仅列出标题