当前位置:  编程技术>综合
本页文章导读:
    ▪Ant下的build.xml介绍       Ant下build.xml介绍   源码 要运行ant需要有一个build.xml,下边就是一个完整的build.xml,我们来详细的解释每一句: <?xml version="1.0" encoding="UTF-8" ?> <project name="H.........
    ▪windows命令行基础       命令行参考 A-Z :http://technet2.microsoft.com/WindowsServer/zh-CHS/Library/552ed70a-208d-48c4-8da8-2e27b530eac72052.mspx?mfr=true       Windows中有两种命令:内部命令和外部命令。内部命令即内置在命.........
    ▪计算24点      #include <iostream> #include <string> #include <sstream> #include <cmath> using namespace std; class C24p { private: struct Cell{ union{ double dbl; char sig; //1+2-3*4/ }num; .........

[1]Ant下的build.xml介绍
    来源: 互联网  发布时间: 2013-11-10
Ant下build.xml介绍   源码

要运行ant需要有一个build.xml,下边就是一个完整的build.xml,我们来详细的解释每一句:

 
<?xml version="1.0" encoding="UTF-8" ?>
<project name="HelloWorld" default="run" basedir=".">
 <property name="src" value="src"/>
 <property name="dest" value="classes"/>
 <property name="hello_jar" value="hello1.jar"/>
 <target name="init">
  <mkdir dir="${dest}"/>
 </target>
 <target name="compile" depends="init">
  <javac srcdir="${src}" destdir="${dest}"/>
 </target>
 <target name="build" depends="compile">
  <jar jarfile="${hello_jar}" basedir="${dest}"/>
 </target>
 <target name="run" depends="build">
  <java classname="test.ant.HelloWorld" classpath="${hello_jar}"/>
 </target>
 <target name="clean">
  <delete dir="${dest}" />
  <delete file="${hello_jar}" />
 </target>
 <target name="rerun" depends="clean,run">
  <ant target="clean" />
  <ant target="run" />
 </target>
</project>
详细解释
<project name="HelloWorld" default="run" basedir=".">
</project>

ant的所有内容必须包含在这个里边,name是你给它取的名字,basedir故名思意就是工作的根目录 .代表当前目录。default代表默认要做的事情。

<property name="src" value="src"/>

类似程序中的变量,为什么这么做想一下变量的作用

<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"/>
</target>

把你想做的每一件事情写成一个target ,它有一个名字,depends是它所依赖的target,在执行这个target 例如这里的compile之前ant会先检查init是否曾经被执行过,如果执行

过则直接直接执行compile,如果没有则会先执行它依赖的target例如这里的init,然后在执行这个target 如我们的计划

编译:

<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"/>
</target>

做jar包:

<target name="build" depends="compile">
<jar jarfile="${hello_jar}" basedir="${dest}"/>
</target>

运行:

<target name="run" depends="build">
<java classname="test.ant.HelloWorld" classpath="${hello_jar}"/>
</target>

为了不用拷贝,我们可以在最开始定义好目标文件夹,这样ant直接把结果就放在目标文件夹中了

新建文件夹:

<target name="init">
<mkdir dir="${dest}"/>
</target>

为了更多一点的功能体现,又加入了两个target

删除生成的文件

<target name="clean">
<delete dir="${dest}" />
<delete file="${hello_jar}" />
</target>

再次运行,这里显示了如何在一个target里边调用其他的target

<target name="rerun" depends="clean,run">
<ant target="clean" />
<ant target="run" />
</target>

好了,解释完成了,下边检验一下你的ant吧

新建一个src的文件夹,然后把HelloWorld.java按照包目录放进去,做好build.xml文件,在命令行下键入ant ,你会发现一个个任务都完成了。每次更改完代码只需要再次键入ant,有的时候我们可能并不想运行程序,只想执行这些步骤中的某一两个步骤,例如我只想重新部署而不想运行,键入:ant build,ant中的每一个任务都可以这样调用ant + target name,好了,这样一个简单的ant任务完成了。

作者:nnmmbb 发表于2013-1-12 23:44:45 原文链接
阅读:31 评论:0 查看评论

    
[2]windows命令行基础
    来源: 互联网  发布时间: 2013-11-10

命令行参考 A-Z :http://technet2.microsoft.com/WindowsServer/zh-CHS/Library/552ed70a-208d-48c4-8da8-2e27b530eac72052.mspx?mfr=true

      Windows中有两种命令:内部命令和外部命令。内部命令即内置在命令行解释器中的命令,不需要额外的程序,如dir 、copy 等。外部命令是以可执行文件的形式(扩展名通常为exe 或com),存在于磁盘上,这就意味着该程序必须存在,否则Windows是找不到该命令的,如format.com 

      要学习某个命令,最好的方法是阅读该命令的联机帮助。可以输入“命令名/?”或“help命令名”来查看命令的联机帮助,例如“format/?”。

常规命令

md::mkdir

rd:rmdir

dir: ls         

 参数“/P”为分屏显示;

 参数“/w”为简要显示(只显示文件名,文件夹用[]标注)

          “/b”类似“/w”,只是文件夹不特殊标注

del :删除文件

ren :重命名文件
格式:ren 原文件 新文件

move: 移动

copy:复制文件

copy 源文件[+源文件]  目标文件

如:C:\>copy pic\ws?.jpg F:

        C:\>copy a1+a2            (将a2 的内容添加到a1 尾)


重定向:

>    覆盖

>>  追加

例:  E:\> dir *.mp3 >> mp3.txt


字符< 用于修改输入(某些命令从键盘读取的输入)           --------------------------> 用法见本文最后


管道(pipe)

     是一个操作符,它把输入和输出重定向结合在一起,从而将一个命令的输出立即作为另一个命令的输入。管道用竖直线字符(|)表示,该字符通常位于Enter键附近。最经典的使用管道的命令:more。可以说该命令大部分情况下都和管道一起使用。例如,要查看sort 命令的帮助信息,输入sort/? ,但一屏显示不完,使用sort/?| more来分屏显
示。
C:\>sort/?| more
SORT[/R][/+n][/Mkilobytes][/Llocale] [/RECrecordbytes]
[[drive1:][path1]filename1][/T[drive2:][path2]]
[/O[drive3:][path3]filename3]
/+n 指定开始每个比较的字符号码n。/+3 说明每个


另一个经典的使用管道的命令是find ,用来过滤输出。例如,我要查看当前的环境变量,
但我只对PATH 感兴趣,则输入:
C:\>set| find"Path"
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\bin;D:\soft\GnuP
G\pub

使用con(控制台/键盘)
C:\>copycont.txt (读取键盘输入,并复制到t.txt)
Hello,world!(此处用键盘输入,以Ctrl+Z结束)
^Z
已复制 1个文


巧用nul"粉碎"文件

C:\>copynult.txt (将“空”复制到t.txt ,这样就将t.txt 的大小改写为了0字节)

环境变量 环境变量是一个“变量名=变量值”的对应关系,每一个变量都有一个值与之对应。set 命令用于设置或查看环境变量。我们可以通过两个百分号的形式:“%变量名%”,在命令中引用
变量的值。
C:\>set(列出当前所有环境变量及其值)
……省略输出若干……
windir=C:\WINDOWS
C:\>cd %windir%(该命令在执行时,“%windir%”会自动被替换成“C:\WINDOWS”)
C:\WINDOWS>set str=Hello! (用“set 变量名=变量值”来设置一个变量)
C:\WINDOWS>echo  %str%(echo 命令可回显一个字符串)
Hello!

变量给命令或批处理文件带来了极大的灵活性,多用于批处理文件中。


批处理文件简介 批处理文件(亦称批处理程序或脚本)是纯文本文件,其文件扩展名为.bat 或.cmd 。在命令提示符下键入批处理文件的名称,Cmd.exe就会按照该文件中各个命令出现的顺序来逐个运行它们。在DOS中只能使用.bat的批处理文件。
可以在批处理文件中包含任何命令。某些命令,比如for、goto 和if 命令等,它们允许你对批处理文件中的命令作条件流程控制。例如,if 命令根据条件语句的结果来执行命令。

  有关批处理文件的详细信息,请参考以下命令的帮助页。 

命令                                      功能 

 rem                                添加一段注释 

 echo                              显示信息,或将命令回显打开或关上 

 if                                     执行批处理程序中的条件性处理 

 for                                  为一套文件中的每个文件运行一个指定的命令 

 goto                               跳转到批处理程序中某个标明的行执行 
 pause                            暂停批文件的处理并显示消息 

 call                                 从一个批处理程序调用另一个批处理程序,而不  终止父批处理程序                                     

 pushd                            保存当前目录,然后对其进行更改 

 popd                             还原 pushd 保存的当前目录的上一个值 

 shift                               更换批文件中可替换参数的位置 

 setlocal                         开始批文件中环境更改的本地化 

 endlocal                        结束批文件中环境更改的本地化 

 title                                设置 cmd.exe 会话的窗口标题 

 start                               启动另一个窗口来运行指定的程序或命令 


几个应用实例

批量改名 今天的《xxxHoLic》漫画更新到了158话,我下载后,得到
    
[3]计算24点
    来源: 互联网  发布时间: 2013-11-10
#include <iostream>
#include <string>
#include <sstream>
#include <cmath>
using namespace std;

class C24p
{
private:
    struct Cell{
        union{
            double dbl;
            char   sig; //1+2-3*4/
        }num;
        char typ;       //0数值1符号
        int  id;
        Cell* left;
        Cell* right;
        Cell():left(NULL),right(NULL){}
    }exp[7],ele[8];
    char exitflag;
    ostringstream  out;

    void putele(int n);
    bool chkele(int n);
    bool cal();
    void show();
    void toformulate(C24p::Cell* root);
    char sigprio(const C24p::Cell &val); //符号优先级
public:
    C24p(double num1=1,double num2=1,double num3=1,double num4=1);
    const string getstr() const;
    void run();
};

C24p::C24p(double num1,double num2,double num3,double num4)
{
    int i;
    ele[0].num.dbl=num1;
    ele[1].num.dbl=num2;
    ele[2].num.dbl=num3;
    ele[3].num.dbl=num4;
    for(i=0;i<4;++i){
        ele[i].typ=0;   //数值
        ele[i+4].typ=1; //符号
        ele[i+4].num.sig=i+1;
    }
    for(i=0;i<8;++i){
        ele[i].id=i;
    }
    exitflag=0;
}

void C24p::putele(int n)
{
    int start,end;

    start=0;
    if(n<2){
        end=4;
    }
    else{
        end=8;
    }
    for(int i=start;i<end;++i){
        exp[n]=ele[i];
        if(chkele(n)){
            putele(n+1);
        }
        if(exitflag==1){
            break;
        }
    }
}

bool C24p::chkele(int n)
{
    int i;
    int nums=0,sigs=0;

    for(i=0;i<=n;++i){
        if(exp[i].typ==0){  //数值
            ++nums;
        }
        else{
            ++sigs;
        }
    }
    if(nums-sigs<1){
        return false;
    }
    if(exp[n].typ==0){      //数值
        for(i=0;i<n;++i){
            if(exp[i].id == exp[n].id){
                return false;
            }
        }
    }
    if(n==7-1){
        if(nums!=4 || sigs!=3){
            return false;
        }
        if(exp[n].typ!=1){      //不是符号
            return false;
        }
        if(cal()){
            exitflag=1;
        }
        return false;
    }
    return true;
}

bool C24p::cal()
{
    double dblstack[4];
    int    stackp=-1;
    int    i;

    for(i=0;i<7;++i){
        if(exp[i].typ==0){
            ++stackp;
            dblstack[stackp]=exp[i].num.dbl;
        }
        else{
            switch(exp[i].num.sig){
            case 1:
                dblstack[stackp-1] = dblstack[stackp-1]+dblstack[stackp];
                break;
            case 2:
                dblstack[stackp-1] = dblstack[stackp-1]-dblstack[stackp];
                break;
            case 3:
                dblstack[stackp-1] = dblstack[stackp-1]*dblstack[stackp];
                break;
            case 4:
                dblstack[stackp-1] = dblstack[stackp-1]/dblstack[stackp];
                break;
            }
            --stackp;
        }
    }
    if(fabs(dblstack[stackp]-24) <= 0.1){
        show();
        return true;
    }
    else{
        return false;
    }
}

const string C24p::getstr() const
{
    return out.str();
}

void C24p::run()
{
    putele(0);
}

void C24p::show()
{
    int expstack[4];
    int pstack=-1;

    for(int i=0;i<7;++i){
        if(exp[i].typ==0){  //数值
            ++pstack;
            expstack[pstack]=i;
        }
        else{
            exp[i].right=&exp[expstack[pstack]];
            --pstack;
            exp[i].left=&exp[expstack[pstack]];
            expstack[pstack]=i;
        }
    }
    toformulate(exp+expstack[pstack]);
}

void C24p::toformulate(C24p::Cell* root)
{
    char sigtyp;
    switch((*root).num.sig){
    case 1:
        sigtyp='+';
        break;
    case 2:
        sigtyp='-';
        break;
    case 3:
        sigtyp='*';
        break;
    case 4:
        sigtyp='/';
        break;
    }
    if(root->left->typ == 0){   //数值
        out << (*(root->left)).num.dbl;
        out << sigtyp;
    }
    else{       //符号
        if(sigprio(*root) > sigprio(*(root->left))){    //当前优先级比左边优先级高
            out << '(';
            toformulate(root->left);
            out << ')';
        }
        else{
            toformulate(root->left);
        }
        out << sigtyp;
    }
    if(root->right->typ == 0){  //数值
        out << (*(root->right)).num.dbl;
    }
    else{       //符号
        if(sigprio(*root) > sigprio(*(root->right))){
            out << '(';
            toformulate(root->right);
            out << ')';
        }
        else{
            toformulate(root->right);
        }
    }
}

char C24p::sigprio(const C24p::Cell &val)
{
    switch(val.num.sig){
    case 1:
    case 2:
        return 1;
    case 3:
    case 4:
        return 2;
    default:
        return 0;
    }
}

int main()
{
    C24p a(5,5,5,1);
    a.run();
    cout << a.getstr();
    return 1;
}


作者:adream307 发表于2013-1-12 23:33:53 原文链接
阅读:35 评论:0 查看评论

    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3