
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 閱讀(311) |
評論 (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 閱讀(515) |
評論 (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 閱讀(186) |
評論 (0) |
編輯 收藏

2007年9月18日
摘要: /**********************************Page類*********************************************/
package com.nyhr.struts.page;
/**
* 分頁實體類,保存當前分頁狀態變量
* @author Yeno.hhr
*/
public class Page ...
閱讀全文
posted @
2007-09-18 08:56 chaochao 閱讀(916) |
評論 (1) |
編輯 收藏