??xml version="1.0" encoding="utf-8" standalone="yes"?> 代码如下Q调用kettle 4.2版本 package test;
http://blog.csdn.net/chen978616649/article/details/9063695
import org.apache.commons.lang.StringUtils;
import org.apache.commons.vfs.FileSelector;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.util.EnvUtil;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobMeta;
import org.pentaho.di.repository.RepositoryDirectory;
import org.pentaho.di.repository.RepositoryDirectoryInterface;
import org.pentaho.di.repository.kdr.KettleDatabaseRepository;
import org.pentaho.di.repository.kdr.KettleDatabaseRepositoryMeta;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
import com.longtech.configuration.BaseConfiguration;
import com.platform.common.util.LoggerUtil;
/**
*
* @Description: java调用kettle 数据库型资料库中的{?br /> * @author chen 此类是调用kettle 4.2版本的测试类
* @version 1.0,
* @date 2013-5-23 下午02:40:50
*/
public class ExecRepositoryTrans {
/**
* 本测试类慎用Q!Q!Q!Q?br />* @param args
*/
public static void main(String[] args) {
//D:\java\workspace\sics\src\config\kettle
String classesdir = BaseConfiguration.getString("classesdir");
String jobName = BaseConfiguration.getString("kettle.path.file");
if(StringUtils.isNotEmpty(jobName)){
LoggerUtil.info(ExecRepositoryTrans.class, "执行kettle job start-------------------");
runJob(classesdir + jobName);
LoggerUtil.info(ExecRepositoryTrans.class, "执行kettle job end -------------------");
}else{
LoggerUtil.info(ExecRepositoryTrans.class, "请配|kettle.path.file job 的\径文?);
}
}
/**
*java 调用kettle 转换
*/
public static void runTransfer(){
Trans trans=null;
FileSelector f = null;
try {
// 初始?
String fName= "D:\\kettle\\informix_to_am_4.ktr";
// 转换元对?
KettleEnvironment.init();//初始?br /> EnvUtil.environmentInit();
TransMeta transMeta = new TransMeta(fName);
// 转换
trans = new Trans(transMeta);
// 执行转换
trans.execute(null);
// {待转换执行l束
trans.waitUntilFinished();
//抛出异常
if(trans.getErrors()>0){
throw new Exception("There are errors during transformation exception!(传输q程中发生异?");
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* java 调用 kettle 的job
* @param jobname 如: String fName= "D:\\kettle\\informix_to_am_4.ktr";
*/
public static void runJob(String jobname){
try {
KettleEnvironment.init();
//jobname 是Job脚本的\径及名称
JobMeta jobMeta = new JobMeta(jobname, null);
Job job = new Job(null, jobMeta);
//向Job 脚本传递参敎ͼ脚本中获取参数|${参数名}
//job.setVariable(paraname, paravalue);
job.start();
job.waitUntilFinished();
if (job.getErrors() > 0) {
throw new Exception("There are errors during job exception!(执行job发生异常)");
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 配置数据?调用资源库中的相关job 、transfer
*/
public static void dbResource(){
String transName="t1";
try {
KettleEnvironment.init();
DatabaseMeta dataMeta = new DatabaseMeta("KettleDBRep","MSSQL","Native","127.0.0.1","etl","1433","sa","bsoft");
KettleDatabaseRepositoryMeta repInfo = new KettleDatabaseRepositoryMeta();
repInfo.setConnection(dataMeta);
KettleDatabaseRepository rep = new KettleDatabaseRepository();
rep.init(repInfo);
rep.connect("admin", "admin");
RepositoryDirectoryInterface dir = new RepositoryDirectory();
dir.setObjectId(rep.getRootDirectoryID());
TransMeta tranMeta = rep.loadTransformation(rep.getTransformationID(transName, dir), null);
Trans trans = new Trans(tranMeta);
trans.execute(null);
trans.waitUntilFinished();
} catch (KettleException e) {
e.printStackTrace();
}
}
}
]]>
]]>
]]>
https://github.com/SpringSource/spring-framework/tags/v3.2.4.RELEASE
2、安装jdk1.7(1.6~译会报错,找不到java.util.concurrent.ForkJoinPool)
3、进入源码目录执?不要有中文\?
C:\>cd spring-framework
C:\spring-framework>gradlew build -x javadoc -x api -x groovydoc -x jdiff -x reference
3?打包Q包含运行时依赖jar包)
C:\>cd spring-framework
C:\spring-framework>gradlew depsZip -x javadoc -x api -x groovydoc -x jdiff -x reference
PSQ我在编译时发现如果要生成javadocQ会~译不成功,所以将javadoc、api、groovydoc、jdiff、reference{Q务都从Q务列表中去除了,以保证编译和打包都能正常通过?br />~译q程会下载一些依赖包Q放到c盘用L录下
]]>
2Q安?2位的Oracle客户端( instantclient-basic-win32-11.2.0.1.0Q?/span>
下蝲 instantclient-basic-win32-11.2.0.1.0.zip (一定得?2位的Q不要下错了版本QOracle官网有下载)Q将其解压至Oracle安装目录的Product下(本机命名为:instantclient_11_2Q:D:\Oracle\app\YM\product\instantclient_11_2?/span>
拯数据库安装根目录下的一个目录D:\Oracle\app\YM\product\11.2.0\dbhome_1\NETWORK到Oracle客户端目录下D:\Oracle\app\YM\product\instantclient_11_2Q其实只需?NETWORK\ADMIN\tnsnames.oraQ最好是直接拯q个文g到D:\Oracle\app\YM\product\instantclient_11_2目录下)
3Q安装PL/SQL Developer
安装 PL/SQL DeveloperQ在perference->Connection里面讄OCI Library和Oracle_HomeQ例如本|ؓQ?/span>
Oracle Home QD:\Oracle\app\YM\product\instantclient_11_2
OCI Library Q?D:\Oracle\app\YM\product\instantclient_11_2\oci.dll
4) 讄环境变量(修改PATH和TNS_ADMIN环境变量)
对于NLS_LANG环境变量, 最好设|成和数据库端一? 首先从数据库端查询字W集信息:
SQL> select userenv('language') nls_lang from dual;
NLS_LANG
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
叛_"我的电脑" - "属? - "高" - "环境变量" - "pȝ环境变量":
1>.选择"Path" - 点击"~辑", ?"D:\Oracle\app\YM\product\instantclient_11_2;" 加入;
2>.点击"新徏", 变量名设|ؓ"TNS_ADMIN", 变量D|ؓ"D:\Oracle\app\YM\product\instantclient_11_2;", 点击"定";
3>.点击"新徏", 变量名设|ؓ"NLS_LANG", 变量D|ؓ"SIMPLIFIED CHINESE_CHINA.ZHS16GBK", 点击"定";
最后点?定"退?
启动 PL/SQL Developer Q运行无问题?/span>
]]>
使用权限 : 所有用?nbsp;
使用方式 :
crontab [ -u user ] file
crontab [ -u user ] { -l | -r | -e }
说明 :
crontab 是用来让使用者在固定旉或固定间隔执行程序之用,换句话说Q也是cM使用者的时程表?u user 是指讑֮指定 user 的时E表Q这个前提是你必要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话Q就是表C定自q时程表?nbsp;
参数 :
crontab -e : 执行文字~辑器来讑֮时程表,内定的文字编辑器?VIQ如果你想用别的文字~辑器,则请先设?VISUAL 环境变数来指定用那个文字编辑器(比如?setenv VISUAL joe)
crontab -r : 删除目前的时E表
crontab -l : 列出目前的时E表
crontab file [-u user]-用指定的文g替代目前的crontab?nbsp;
时程表的格式如下 :
f1 f2 f3 f4 f5 program
其中 f1 是表C分钟,f2 表示时Qf3 表示一个月份中的第几日Qf4 表示月䆾Qf5 表示一个星期中的第几天。program 表示要执行的E序?nbsp;
?f1 ?* 时表C每分钟都要执行 programQf2 ?* 时表C每时都要执行E序Q其馀cL
?f1 ?a-b 时表CZW?a 分钟到第 b 分钟q段旉内要执行Qf2 ?a-b 时表CZW?a 到第 b 时都要执行Q其馀cL
?f1 ?*/n 时表C每 n 分钟个时间间隔执行一ơ,f2 ?*/n 表示?n 时个时间间隔执行一ơ,光cL
?f1 ?a, b, c,... 时表C第 a, b, c,... 分钟要执行,f2 ?a, b, c,... 时表C第 a, b, c...个小时要执行Q其馀cL
使用者也可以所有的讑֮先存攑֜档案 file 中,?crontab file 的方式来讑֮时程表?nbsp;
例子 :
#每天早上7Ҏ行一?/bin/ls :
0 7 * * * /bin/ls
?12 月内, 每天的早?6 点到 12 点中Q每?个小时执行一?/usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup
周一到周五每天下?5:00 寄一信l?alex@domain.name :
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata
每月每天的午?0 ?20 ? 2 ?20 ? 4 ?20 ?...执行 echo "haha"
20 0-23/2 * * * echo "haha"
注意 :
当程序在你所指定的时间执行后Q系l会寄一信l你Q显CE序执行的内容,若是你不希望收到q样的信Q请在每一行空一g后加?> /dev/null 2>&1 卛_
例子2 :
#每天早上6?0?nbsp;
10 6 * * * date
#每两个小?nbsp;
0 */2 * * * date
#晚上11点到早上8点之间每两个时Q早??nbsp;
0 23-7/2Q? * * * date
#每个月的4号和每个C拜的礼拜一到礼拜三的早?1?nbsp;
0 11 4 * mon-wed date
#1月䆾日早??nbsp;
0 4 1 jan * date
范例
$crontab -l 列出用户目前的crontab.
crontab命o的功能是在一定的旉间隔调度一些命令的执行。在/etc目录下有一个crontab文gQ这里存放有pȝq行的一些调度程序。每个用户可以徏立自q调度crontab?nbsp;
crontab命o有三UŞ式的命o行结构:
crontab [-u user] [file]
crontab [-u user] [-e|-l|-r]
crontab -l -u [-e|-l|-r] W一个命令行中,file是命令文件的名字。如果在命o行中指定了这个文Ӟ那么执行crontab命oQ则这个文件拷贝到crontabs目录下;如果在命令行中没有制定这个文Ӟcrontab命o接受标准输入(键盘Q上键入的命令,q将他们也存攑֜crontab目录下?nbsp;
命o行中-r选项的作用是?usr/spool/cron/crontabs目录下删除用户定义的文gcrontabQ?nbsp;
命o行中-l选项的作用是昄用户crontab文g的内宏V?nbsp;
使用命ocrontab -u user -e命o~辑用户user的cron(c)作业。用户通过~辑文g来增加或修改M作业h?nbsp;
执行命ocrontab -u user -r卛_删除当前用户的所有的cron作业?nbsp;
作业与它们预定的旉储存在文?usr/spool/cron/crontabs/username里。username使用户名Q在相应的文件中存放着该用h要运行的命o。命令执行的l果Q无论是标准输出q是错误输出Q都以邮g形式发给用户。文仉的每一个请求必d含以spaces和tabs分割的六个域。前五个字段可以取整数|指定何时开始工作,W六个域是字W串Q称为命令字D,其中包括了crontab调度执行的命令?nbsp;
W一道第五个字段的整数取D围及意义是:
0?9 表示?nbsp;
1?3 表示时
1?1 表示?nbsp;
1?2 表示月䆾
0? 表示星期Q其?表示星期日)
/usr/lib/cron/cron.allow表示谁能使用crontab命o。如果它是一个空文g表明没有一个用戯安排作业。如果这个文件不存在Q而有另外一个文?usr/lib/cron/cron.deny,则只有不包括在这个文件中的用h可以使用crontab命o。如果它是一个空文g表明M用户都可安排作业。两个文件同时存在时cron.allow优先Q如果都不存在,只有用户可以安排作业?/span>
]]>
]]>
Ҏ一Q用java.util.DatecL实现Qƈl合java.text.DateFormatcL实现旉的格式化Q看下面代码Q?/span>
import java.util.*;
import java.text.*;
//以下默认旉日期昄方式都是汉语语言方式
//一般语a默认汉语就可以了,旉日期的格式默认ؓMEDIUM风格Q比如:2008-6-16 20:54:53
//以下昄的日期时间都是再Datecȝ基础上的来的Q还可以利用CalendarcL实现见类TestDate2.java
public class TestDate {
public static void main(String[] args) {
Date now = new Date();
Calendar cal = Calendar.getInstance();
DateFormat d1 = DateFormat.getDateInstance(); //默认语言Q汉语)下的默认风格QMEDIUM风格Q比如:2008-6-16 20:54:53Q?br /> String str1 = d1.format(now);
DateFormat d2 = DateFormat.getDateTimeInstance();
String str2 = d2.format(now);
DateFormat d3 = DateFormat.getTimeInstance();
String str3 = d3.format(now);
DateFormat d4 = DateFormat.getInstance(); //使用SHORT风格昄日期和时?br /> String str4 = d4.format(now);
DateFormat d5 = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL); //昄日期Q周Q时__到秒Q?br /> String str5 = d5.format(now);
DateFormat d6 = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); //昄日期。时__到秒Q?br /> String str6 = d6.format(now);
DateFormat d7 = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT); //昄日期Q时__到分Q?br /> String str7 = d7.format(now);
DateFormat d8 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM); //昄日期Q时__到分Q?br /> String str8 = d8.format(now);//与SHORT风格相比Q这U方式最好用
System.out.println("用Date方式昄旉: " + now);//此方法显C的l果和Calendar.getInstance().getTime()一?br />
System.out.println("用DateFormat.getDateInstance()格式化时间后为:" + str1);
System.out.println("用DateFormat.getDateTimeInstance()格式化时间后为:" + str2);
System.out.println("用DateFormat.getTimeInstance()格式化时间后为:" + str3);
System.out.println("用DateFormat.getInstance()格式化时间后为:" + str4);
System.out.println("用DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL)格式化时间后为:" + str5);
System.out.println("用DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG)格式化时间后为:" + str6);
System.out.println("用DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT)格式化时间后为:" + str7);
System.out.println("用DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM)格式化时间后为:" + str8);
}
}
q行l果Q?/span>
用Date方式昄旉: Mon Jun 16 20:54:53 CST 2008
用DateFormat.getDateInstance()格式化时间后为:2008-6-16
用DateFormat.getDateTimeInstance()格式化时间后为:2008-6-16 20:54:53
用DateFormat.getTimeInstance()格式化时间后为:20:54:53
用DateFormat.getInstance()格式化时间后为:08-6-16 下午8:54
用DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL)格式化时间后?br />Q?008q??6?星期一 下午08?4?3U?CST
用DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG)格式化时间后?br />Q?008q??6?下午08?4?3U?br />用DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT)格式化时间后
为:08-6-16 下午8:54
用DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM)格式化时?br />后ؓQ?008-6-16 20:54:53
Ҏ二:用java.util.CalendarcL实现Q看下面Q?/span>
import java.util.*;
import java.text.*;
//以下是利用CalendarcL实现日期旉的,和Datecȝ比较比较?/span>
public class TestDate2 {
public static void main(String[] args) {
Calendar ca = Calendar.getInstance();
int year = ca.get(Calendar.YEAR);//获取q䆾
int month=ca.get(Calendar.MONTH);//获取月䆾
int day=ca.get(Calendar.DATE);//获取?br /> int minute=ca.get(Calendar.MINUTE);//?nbsp;
int hour=ca.get(Calendar.HOUR);//时
int second=ca.get(Calendar.SECOND);//U?br /> int WeekOfYear = ca.get(Calendar.DAY_OF_WEEK);
System.out.println("用Calendar.getInstance().getTime()方式昄旉: " + ca.getTime());
System.out.println("用Calendar获得日期是:" + year +"q?+ month +"?+ day + "?);
System.out.println("用Calendar获得旉是:" + hour +"?+ minute +"?+ second +"U?);
System.out.println(WeekOfYear);//昄今天是一周的W几天(我做的这个例子正好是周二Q故l果昄2Q如果你再周6q行Q那么显C?Q?br />
}
}
q行l果是:
用Calendar.getInstance().getTime()方式昄旉: Mon Jun 16 21:54:21 CST 2008
用Calendar获得日期是:2008q??6?br />用Calendar获得旉是:9?4?1U?br />2
ȝQ中的来_Ҏ二是最方便的,Ҏ一昑־分笨拙,不过看个人喜Ƣ了?/span>
转自Q?/span>http://student.csdn.net/space.php?uid=122120&do=blog&id=14681
Ҏ三:
字母 | 日期或时间元?/span> | 表示 | CZ |
---|---|---|---|
G | Era 标志W?/span> | Text | AD |
y | q?/span> | Year | 1996 ; 96 |
M | q中的月?/span> | Month | July ; Jul ; 07 |
w | q中的周?/span> | Number | 27 |
W | 月䆾中的周数 | Number | 2 |
D | q中的天?/span> | Number | 189 |
d | 月䆾中的天数 | Number | 10 |
F | 月䆾中的星期 | Number | 2 |
E | 星期中的天数 | Text | Tuesday ; Tue |
a | Am/pm 标记 | Text | PM |
H | 一天中的小时数Q?-23Q?/span> | Number | 0 |
k | 一天中的小时数Q?-24Q?/span> | Number | 24 |
K | am/pm 中的时敎ͼ0-11Q?/span> | Number | 0 |
h | am/pm 中的时敎ͼ1-12Q?/span> | Number | 12 |
m | 时中的分钟?/span> | Number | 30 |
s | 分钟中的U数 | Number | 55 |
S | 毫秒?/span> | Number | 978 |
z | 时区 | General time zone | Pacific Standard Time ; PST ; GMT-08:00 |
Z | 时区 | RFC 822 time zone |
|
一、在linux?nbsp;
删除q些目录是很单的Q命令如?nbsp;
find . -type d -name ".svn"|xargs rm -rf
或?nbsp;
find . -type d -iname ".svn" -exec rm -rf {} \;
二、在windows下用以下法子Q?nbsp;
1、在目q的目录,执行dos命oQ?nbsp;
xcopy project_dir project_dir_1 /s /i
2、或者在目根目录执行以下dos命o
for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn"
其实W二U方法可以用来干很多事的Q比如把代码中的.svn替换ZQ意其他文件名q在盘根目录下执行Q就可以从硬盘上删除所有的q个文g啦?nbsp;
3、添加注册表(亲自动手试q?
可以?#8220;快速删除SVN版本信息”命名增加到资源管理器的右键上Q这P鼠标点两下就能把选中目录下的所?svn目录q掉了?nbsp;
代码为:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="快速删除SVN版本信息"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c D:\工具\批处理文件删除SVN版本信息.bat"
这D代码保存ؓ一?reg文gQ双ȝ认导入注册表中不完整Q后来自己手工添加。注意:文g“批处理文件删除SVN版本信息.bat”不能?在有I格的文件夹下,认删除时请看一下当前目录不要删除不该删的目录下的SVN版本信息。不知道怎么改进“cmd.exe /c D:\工具\批处理文件删除SVN版本信息.bat”?nbsp;
批处理文件删除SVN版本信息.bat文g内容如下Q?nbsp;
@echo off
echo ***********************************************************
echo 清除SVN版本??nbsp;
echo ***********************************************************
:start
::启动q程Q切换目?nbsp;
:set pwd=%cd%
:cd %1
echo 工作目录是:& chdir
:input
::获取输入Q根据输入进行处?nbsp;
set source=:
set /p source=定要清楚当前目录下?svn信息吗?[Y/N/Q]
set "source=%source:"=%"
if "%source%"=="y" goto clean
if "%source%"=="Y" goto clean
if "%source%"=="n" goto noclean
if "%source%"=="N" goto noclean
if "%source%"=="q" goto end
if "%source%"=="Q" goto end
goto input
:clean
::d理过E,执行清理工作
@echo on
@for /d /r %%c in (.svn) do @if exist %%c ( rd /s /q %%c & echo 删除目录%%c)
@echo off
echo "当前目录下的svn信息已清?
goto end
:noclean
::分支q程Q取消清理工?nbsp;
echo "svn信息清楚操作已取?
goto end
:end
::退出程?nbsp;
cd "%pwd%"
pause
注:最后一U方法,如果出现错误Q就打开注册表,扑ֈ对应的项Q吧“cmd.exe /c D:\工具\批处理文件删除SVN版本信息.bat “直接写入注册表中卛_使用
我只用了最后一U方法:
报文件没有关联错误,扑ֈq个注册表项Q[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
写入Q?#8220;cmd.exe /c D:\工具\批处理文件删除SVN版本信息.bat “Q注意\?/p>
q有一个要注意的:在用的时候,不要在要清除的文件夹上右击,在要清除的文件夹里面的子文g夹上叛_--》快速删除svn版本信息
Ҏ一Q当时就是输入在服务器端讄的密码(诺顿的默认密码是symantecQ?nbsp;
Ҏ二:修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\INTEL\LANDesk\VirusProtect6CurrentVersion\AdministratorOnly\Security
修改UseVPUninstallPassword键gؓ0Q即可无需密码卸蝲