Vi, Java, Ant, Junit自学报告

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36124194/article/details/79942385

Vi, Java, Ant, Junit自学报告


列表

总感想

Vi

Java

Ant

Junit


自学Vi,Java,Ant,Junit总感想

  在实训内容发布的时候,我略微看了一下这个周末的任务,发现内容还是很多的,由于实训的平台是Linux,而我自己的电脑也装有Linux的虚拟机,所以我打算在自己的电脑配置实训的环境,这个配置环境的过程是痛苦的,首先是Java的,直接下了JDK然后安装,该系统路径,在终端测试就行;Ant也是如此,装完后我还自己写了一个小程序测试了一下;这两个的配置都比较顺利,Junit是一个包,直接复制过对应的目录下就行。在这个该系统路径的过程会出现各种迷之错误,导致程序运行不成功,但最后通过我自己的坚持,我在自己的Linux17.01成功配置了与云平台一样的实验环境,过程痛苦,但学到很多,发现自己对Linux也更加熟悉了。
  有了这样一个环境,我的自学生涯便开始了,Vi在17.01有点不一样,Backspace在插入模式下不能完成字符的删除,所以也是要自己上网去搜教程解决,熟悉了Vi这个文本编辑器,我开始学Java,由于Java与c++大同小异,我学习Java的目标是熟悉语法,因为Java主要是面向对象,而c++一部分也是,所以语法熟悉了,c++的那套方法在Java中也是适用的,何况Java提供这么多功能强大的包,不可能一次了解这么多,只能在需要用到的时候查阅。Ant的学习同样也有之前可以借鉴的语言,那就是html语言,大二上学期学过web,所以对这种树状结构的东西也是有点感觉和基础,学起来也没有那么麻烦,也就上网找了一个教程看了一下,随后在自己的虚拟机尝试了一下,发现xml和c++的makefile差不多。
  Vi用来编辑代码,Java JDK用来编译代码,Ant编辑Java项目,还差一个测试工具,无疑,Junit就是这样一个工具,其实也算不上是工具,它就是一个Java包,已经封装好了,提供API让用户进行代码测试,同样找了个教程学习,明白了其中的基本思想和原理,就是预期结果和程序输出的匹配,最后也在自己写的小测序测试了一下,也是没有问题的。
  在这个自学的过程,我也是感受到,合理利用网上各种资源进行自学,往往可以得到意想不到的效果,这次才第一周,我就感受到满满的收获了。虽然花费了很多时间在这上面,但有收获这才是最重要的,在群上很多人的问题其实google一下就能找到,但他们就是不愿意去检索,我觉得这才是最吃亏的,自己解决的问题总会印象深刻,所以尝试着自己解决问题,实在不行的时候才求助于人,我觉得这才是比较好的学习习惯。
  具体每个部分重要的知识点我在下面的章节会总结到,其中也有我自己对每部分的理解。


Vi

  1. Vi简介编辑器
      Vi是一个可视化的文本编辑器,所谓的可视化就是在编辑文本的时候可以看到操作的情况。简单地说Vi就是一个功能齐全的老式字处理器。对于程序员来说,掌握这个工具显得很重要,因为能通过命令解决的问题可以比用图形界面来得要省时间。
  2. Vi使用方法
      Vi共分为三种模式,这三种模式分别为命令模式,输入模式和底线命令模式,下面解释三种模式的区别和使用:

    1. 命令模式
      用户通过vi+filename后进入对应的文件里面,此时vi处于命令模式,也就是用户输入的东西被识别为命令,不会在文件中显示,我们可以通过命令来切换模式或者对文件进行修改。我们在这个模式常用的几个命令是
      • i
        切换到输入模式,之后就可以输入文本了。
      • x
        删除当前光标所在的位置的字符。
      • :
        切换到底线命令模式,在编辑器的最后一行可以输入命令并执行命令。
      • 输入模式
        在输入模式下,用户可以对文本进行编辑,这时与普通的编辑器大致相同。
      • 底线命令模式
        在命令模式下,通过输入英文冒号(:)切换到底线命令模式,在底线命令行模式下常用于输入命令对文件进行保存和关闭文件,按下ESC键可以退出底线命令模式。
        三种模式的切换示意图如下所示
        这里写图片描述
    2. Vi在各种模式的常用命令

      • 命令模式(一般进行光标移动,复制粘贴,替代等等)
        h和←:光标向左移动
        j和↓:光标向下移动
        k和↑:光标向上移动
        l和→:光标向右移动
        nh,nj,nk,nl:一次移动多个单位,其中n是整数
        [Ctrl+f]:屏幕向下移动一页
        [Ctrl+b]:屏幕向上移动一页
        [Ctrl+d]:屏幕向下移动半页
        [Ctrl+u]:屏幕向上移动半页
        0或home:移动到这一行的最前面字符处
        n enter:光标向下移动n行
        /word:从光标起往下找名为word的词
        ?word:从光标起往上找名为word的词
        x,X:x是往后删除一个字符与delete键一样,X为向前删除一个字符
        nx:向后删除n个字符
        dd:删除一整行
        ndd:删除游标往下的n行
        yy:复制游标所在的行
        nyy:复制游标往下n行
        p,P :p将复制的数据粘贴在光标的下一行,P为粘贴在上一行
        u:复原前一个动作
        [ctrl+r]:重做上一个动作

      • 输入模式
        输入模式就是对文本内容进行编辑和插入等,与一般的编辑器区别不大。

      • 底线命令模式
        w:将数据保存,也就是写入硬盘
        w!:强制写入文件
        q:离开Vi,但不保存文件修改内容
        q!:强制离开且不保存
        wq:保存后离开
        ZZ:改动过则保存再离开,没改动过直接离开
        w (filename):将内容保存为另外文件
        r (filename):读入另一个文件内容

Java

  1. 我所理解的Java
    Java其实是非常纯粹的面向对象的编程语言,他继承了c++面向对象的编程思想,同时又抛弃了c++中难以理解的指针,所以Java成为很多人的选择。
  2. Java特点

    • 简单的
      Java语言的语法和c++的语法很相似,学习了c++那些简单好用的特性,同时抛弃掉c++那些难以理解,让程序员容易犯错的特征,如操作符重载,指针等等,简单使这么语言保持长久的活力。
    • 面向对象的
      Java语言提供类,API接口等面向对象的特性,Java的编程也是以包为基础的编程,内置各种功能强大的包,例如直接生成图形界面的包,面向对象的程度比c++更高。
    • 可移植的
      一直以来Java良好的一直性一直被人们传颂,Java可以很好在windows,Mac OS, Linux系统中移植。
  3. Java与c++的区别
      Java是一门系统的语言,如果在这里说Java的语法就没意思了,跟何况篇幅有限,我们就简单说说Java与我们大家都很熟悉的c++语言的区别。
    • 图形界面
      Java是一种简单的用于开发图形界面的工具,无需其他第三方的工具,Java就能开发出漂亮的图形界面,在Java中有很多用于图形界面的包,常用的有以下几种:
      这里写图片描述
    • 网络编程
        Java与网络编程的包在Java.NET包中,包中包含很多网络相关的类,如传输协议,网络连接,服务器等等,运用这个包可以轻松用Java进行网络编程。
    • 移植性
        Java的移植性很强,在多个平台均可运行,这也是Java比c++好的原因,虽然说,c或c++的执行速度要比Java的要快,但由于他良好的移植性一直受到大家的喜爱。

Ant

  1. Ant简介
      简单地说,Ant就是一个将软件的编译,测试,部署等步骤联系在一起加以自动化的一个工具,也就是说Ant是一种基于Java的打包工具,Ant脚本采用XML格式编写,在项目结构复杂,有多个java文件的时候,通过Ant来组织项目,有利于项目的开发。
      Ant是用纯Java语言编写的,所以项目移植性比较好,Ant通过建立一个xml文件来生成target树,一个Ant文件可以有多个target,target可以分开执行。
  2. Ant安装与使用方法(Linux)
      下载到指定文件,这里是/usr/local/apache-ant,然后解压,最重要的一步是配置系统环境:
      写入/etc/profile文件ANT_HOME=/usr/local/apache-ant在PATH中添加:
$ANT_HOME/bin

PATH=$ANT_HOME/bin:$PATH

  使用:用ant命令测试,如果产生如下结果,说明安装成功:
这里写图片描述
接下来就是组织文件目录和写xml文件。
xml文件的基本结构如下:
这里写图片描述
xml文件对格式的要求比较严格,下面解释一下每个标签的含义:

  • 标签project,为树的根节点,熟悉可以设置name,basedir表示项目的根目录,default表示项目的默认任务名,在ant后面没有加任何任务的名称的时候,xml默认执行默认的任务。
  • 标签project之间会有一个或多个target标签,表示任务,name属性设置了任务的名称,如果具体知道任务名,可以在xml文件的目录下用(ant+任务名)来执行对应的任务,如果任务后面的属性depends有任务,那么在执行这个任务之前必须先执行完depends的任务。
  • 标签echo表示在命令行下输出。
  • 标签${}可以获取某个变量的值。

除此之外,xml文件还有很多的标签,下面只说明一下常用的标签及含义。

project

  构建文件的根元素,name属性指示project名称,default属性指示默认执行的target,basesir属性指示根路径的位置。

target

  是Ant一个基本的执行单元,一个xml文件可以分成几个target执行。name属性指示target名称,depends属性指示依赖的target,执行这个target前必须执行了依赖。if属性指示指定的属性是否存在。

task

  task是指一段可以被执行的代码,xml中task有很多类型,javac用来编译java程序,java用来执行java程序,jar用来生成jar包,echo用来在控制台输出字符,copy用来复制文件或路径,delete则用来删除文件或路径,mkdir用于创建文件,move移动文件

property

  用来对参数的定义,project的属性可以通过property元素来设定。用于引入外部文件时,可用

<property file= build.properties”/>

.
3. Ant使用感想
  文件系统的组织是使用的树状结构,而Ant是组织项目结构的工具,所以理所当然Ant的组织结构也是树状的,这与web的doc树类似,也就是html文件的组织结构,所以学习起来也不那么困难,基本上就是标签加属性就可以组织好文件的结构,相对于c++的makefile组织,这个组织文件的工具更加简单,可用性更强。学习了之后,我自己网上找了很多例子看了,基本上知道怎么写,然后自己写出了第一个xml并成功运行了HelloWorld程序,具体每句话的意思可以在上面介绍看
这里写图片描述


更多的关于Ant的语法可以查看Ant官方文档


Junit

  1. Junit简介
    Junit是一个开发源代码的Java测试框架,用于测试程序的正确性,它属于单元测试,主要用于回归测试。
  2. Junit之我的理解和使用感想
      这其实就是一个jar包,一个封装好的Java程序包,之前也略微接触过googletest,其实测试的目的就是为了可重用测试。其实这与我们大一的实训的googletest是类似的,就是统一测试,源代码与测试代码分开,在测试代码可以写多个测试样例,通过修改测试的数据可以使代码重用性得到增强,通过引入两个包就可以使用相关的测试函数和断言函数:
    这里写图片描述
    一个具体的测试的格式如下:
    这里写图片描述
      其中每一个@Test下面的一个方法是一个具体的测试样例,在测试中函数assertEquals是一个断言函数,它判断输出的结果是否和预期结果一样。如果看具体的代码,发现这与Java一个普通的类没有什么区别。
  3. Junit好处
      使测试代码和产品代码分开,代码的重复使用性强,Junit是开源的,可以进行二次开发,Junit一般和Ant结合一起开发。
  4. Junit包中常用的接口函数
    • test
      countTestCases()用来统计测试时的TestCase
      run( TestResult)用于执行本次测试
    • Assert
      Assert中有一些断言方法,主要用来对照预期结果和执行结果
      • assertTrue:断言为真,否则抛出异常。
      • assertFalse:断言为真,否则抛出异常。
      • assertEquals:断言两个对象相等,否则抛出异常。
      • assertNotNull:断言对象不为null,否则抛出异常。
      • assertNull:断言对象为null,否则抛出异常。
      • assertSame:断言两个引用指向同一个对象,否则抛出异常。
      • assertNotSame:断言两个引用指向不同的对象,否则抛出异常。

  在我们第一个阶段,测试的是一个HelloWorld的例子,其实写一个测试类很简单,就加入要测试的例子就好了,
这里写图片描述
本例有两个测试例子,一个对一个错,运行后应该是这样的
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_36124194/article/details/79942385