vi,java,ant,junit的自学报告(studyreport.md)

中级实训自学报告

vi部分

vi概括

自学vi,首先要了解什么是vi,百度搜索出来的结果是Unix及linux系统下标准的编辑器,所以可以说是linux(或者说是类Unix)系统
自带的一款代码编辑器。进入linux界面使用后才发现没有窗口,非常的简洁,不过在看了很多帖子之后发现程序员们对于vi/vim编辑器
还是大为赞赏的,总结出来它的优点就是vi没有菜单,但拥有很多指令,虽然费时费力,但一旦掌握,
vi 可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。写代码的效率会大幅的提高,
并且vi 编辑器会依据文件扩展名或者是文件内的开头信息,判断该文件的内容而自动的执行该程序的语法判断式,再以颜色来显示
程序代码与一般信息。

vi的安装

在某些发行版中,例如 CentOS 或者 Read Hat,当系统安装完毕后,vi/vim 编辑器默认就已经被安装了。

进入vi/vim编辑器

首先linux命令vi就可以进入vi编辑器了,目前来说系统里自带的都是vi增强版vim。

  • [$vi filename] 可创建一个文件并进入vi编辑器

如果希望在进入 vi 后,光标处于文件中特定的某行上,可在 vi 命令上加上行号和文件名,其格式如下:

  • [$vi +行号 filename] 注意加号是要写的 如:vi +5 joker.cpp 光标就会显示在第五行

如果希望在进入 vi 之后光标处于文件最末行,则只需去掉命令中+后面的数字 n 即可

  • [$vi + filename] 如 vi + joker.cpp

vi 编辑器支持模式匹配,也就是说用户可以在命令中指定一个模式串。之后进入 vi 后,
光标就处于文件中第一个与指定模式串相匹配的那行上。其格式如下:

  • [vi +/模式字符串 filename] 如$vi +/main test.c,就会查找代码中的main函数并对其进行编辑

使用 vi 可以同时编辑多个文件,只要在进入 vi 的命令中写入所要操作的文件即可,还可以使用通配符,其格式如下:

  • $vi 需要打开文件的通配符
    如 $vi *.cpp *.h 打开所有的c++源文件和头文件
vi工作模式

想要用好vi/vim编辑器,首先就得熟悉vi的工作模式,比起以前我们所熟悉的图形化编辑器,vi的工作模式是直接用指令来操控的而不是用鼠标去点击。vi的工作模式有三种,命令行模式,文本输入模式,末行模式。

命令行模式command mode

这是进入vi编辑器后的默认模式,进入vi编辑器,不论在哪个状态,按下esc键,就会进入命令行模式,它的功能就是控制光标的移动,
字符,字或行的删除,移动复制某段,然后就是进入插入模式,或者进入底行模式。

插入模式insert mode

在命令模式下,输入插入命令i,附加命令a,打开命令o,修改命令c,取代命令r,或替换命令s,都会进入到插入模式,此时,终端底下会出现INSERT的字样代表进入了插入模式插入模式我的理解是编辑模式,可以在这个模式下编辑代码,编辑好代码后,按下:进入底行模式,按下wq,代表保存并离开,
按esc进入命令行模式

底行模式 last line mode

可将写的代码文件保存并退出vi编辑器(也可以只保存不退出),如果不退出,则进入命令行模式,底行模式也有许多指令,多数是和文件管理有关。

三者之间的转换

在这里插入图片描述

一些常用的指令

介绍完vi的大体框架后,我们来看看vi有哪些常用到的指令,由于实训时间有限,不能列出所有的有用指令,以下只是我个人认为
用的比较多的指令

下面这些都是在命令模式下进行的,主要是方便编辑文档。。

  • 移动光标:除了上下左右键之外,在命令行模式下,h,j,k,l分别代表左,下,上,右,这里有个骚操作,如果想向下移动多行,比如向下移动50行(前提是你有那么多行,要不然直接到最后一行),在命令行模式下,按下50j或50“光标键下”,就可以直接向下移动50行

  • 翻页:当你的代码比较多的时候,翻页就显得重要了,用法是 ctrl+f向下,+b向上,+d向下移动半页,+u向上移动半页

  • [n space] 这个n代表数字,代表在当前一行移到第n个字符,如20 再按下空格,光标就来到 第二十个字符上

  • 0 移到这一行最前面

  • $ 移到这一行最后面

  • 大写的H 光标移到当前窗口屏幕最上方一行第一个字符

  • 大写的M 光标移到当前窗口屏幕中间一行第一个字符

  • 大写的L 光标移到当前窗口屏幕最下方一行第一个字符

  • 大写的G 移到这个文档的最后一行的第一个字符

  • nG 这是上面这个加上数字,可移动到文档的第n行

  • 小写的gg 移到文档第一行

  • n+enter 和之前的骚操作n+向下键一样的功能,向下移动n行,但是感觉更好用是不是hhhh

  • 查找字符 /word,word就是你要找的词,如我要找joker这个词,直接 /joker 即可,要注意查找的部分是当前光标所在之下的内容

  • 查找字符 ?word 和上面功能相同,不过找的是光标所在之上的内容

  • n和N: n我觉得可以用next来理解,它会遵循前一个命令的行为,比如之前是/word,那就向下搜索下一个出现的word,如果是?word那就向上搜索下一个出现的word,而N的功能是相反的,它是反转其功能,之前是向上搜索,那么下一个就向下搜索。

  • :n1,n2s/word1/word2/g 注意前面有个:,后面有个s,这是替换n1到n2这两行中间所有的word1,换为word2

  • :1,$s/word1/word2/g 或 :%s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !

  • :1,$s/word1/word2/gc 或 :%s/word1/word2/gc 和上面一样,不过需要用户确认confirm一下

  • x和X x向后删除一个字符,X向前删除

  • dd 删除光标所在的那一行

  • ndd 删除光标所在的向下n行,包含光标所在那一行

  • yy 复制光标所在的那一行

  • nyy 复制光标所在的向下n行,包含光标所在那一行

  • p,P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后,那10行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。

  • u 复原前一个动作

  • ctrl+r 重做上一个动作

  • . 就是一个小数点,英文的,也是重复上一步

    而下面这些都是底行模式下用的,主要是文件的保存等对文件整体进行的一些操作

  • wq 储存后离开,若为 :wq! 则为强制储存后离开

  • :w [filename] 将编辑的数据储存成另一个档案(类似另存新档)

  • :r [filename] 在编辑的数据中,读入另一个档案的数据。亦即将 [filename] 这个档案内容加到游标所在行后面

  • :n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案

  • :! command 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如[:! ls /home]即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!

  • :set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号

  • :set nonu 与 set nu 相反,为取消行号!

那么vi的自学部分就到这里了,应该还有很多方便的指令,
但我觉得目前掌握上面这些就已经可以很好的在linux下进行代码的编写了,继续努力!

java的自学部分

下载安装jdk

在官网上下载安装jdk,ta推荐使用java8跟之后的sonarQube适配,所以搜索java8 linux64的版本下载,我是竟然还要注册oracle的账号。。
下载成功后,首先将压缩包拷贝至 /opt文件夹,然后新建一个java文件夹,并设置所有权限为当前用户。如下所示

jiger@ubuntu:~/Downloads$ ls
jdk-8u231-linux-x64.tar.gz
jiger@ubuntu:~/Downloads$ sudo cp jdk-8u231-linux-x64.tar.gz /opt
[sudo] password for jiger: 
jiger@ubuntu:~/Downloads$ cd /opt
jiger@ubuntu:/opt$ sudo mkdir java
jiger@ubuntu:/opt$ ls
java  jdk-8u231-linux-x64.tar.gz

jiger@ubuntu:/opt$ sudo chown jiger java
jiger@ubuntu:/opt$ sudo chgrp jiger java

解压!
tar -zxvf jdk-8u181-linux-x64.tar.gz -C /opt/java/
设置环境变量,修改/etc/profile
sudo vim /etc/profile
后面加上这几句

JAVA_HOME=/opt/java/jdk1.8.0_231   #jdk存放位置
JRE_HOME=/opt/java/jre1.8.0_231    #jre存放位置
PATH=$PATH:$JRE_HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export JRE_HOME
export PATHi

然后wq保存,再通过这句
source /etc/profile
就配置完成了
此时可以通过java -version来查看版本,如下图
在这里插入图片描述

java语言的入门

java语法与我们之前学习的c++有许多相似之处,但是其抛弃了c++中的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配
。且java也是面向对象的,所以具有封装,继承,多态等面向对象的特性而且java语言的一个优点是跨平台。java引进虚拟机原理,并且
代码就运行与虚拟机里,这样使得不同平台与java可建立接口来实现不同平台的开发。

java helloworld入门

首先sudo vim HelloWorld.java
输入以下代码

    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

然后:wq保存
javac HelloWorld.java
java HelloWorld
编译成功!
然后在看完类和对象的概述后,大概了解了java的门路,不过在某些方面还需要多加熟悉,
如事件的监听以及监听后依据用户的操作进行的方法,还有GUI的熟悉,就是首先用JFrame来制作一个文本框,
JFrame还要设置标题,由于需要制作计算器,所以需要的按钮,以及输入框,在百度了GUI后都可以找到对应的控件
,然后按照java new的定义格式,一个一个定义出来,再通过setsize,horizionalignment(“center/left/right”)等调整布局,
UI方面就好了,然后再通过ActionListener,获取用户的操作,包括点击按钮,输入数据,再通过actionPerformed写出具体的操作,
再将每个原件对应到相应的监听器里,然后实现即可。由于是简单的计算器,所以代码不是很难,但对于了解java真的很有效果,
由于本人水平有限,没有扩展计算器,但又理解了一门新语言让我很开心所以应该很有趣

Ant的自学部分

ant简介

ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。
在实际软件开发中,有很多地方可以用到ant。
ant 是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点:
1、跨平台性:Ant是纯Java语言编写的,所以具有很好的跨平台性。
2、操作简单:Ant是由一个内置任务和可选任务组成的,用ant任务就像是在dos中写命令行一样
。Ant运行时需要一个XML文件(构建文件)。 Ant通过调用target树,就可以执行各种task。每个task实现了特定接口对象。
3、维护简单、可读性好、集成简单:由于Ant构建文件 时XML格式的文件,所以很容易维护和书写,而且结构很清晰。
Ant可以集成到开发环境中。由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开发环境中去。

ant安装

1、从http://ant.apache.org 上下载tar.gz版ant

2、复制到/usr下

3、tar -vxzf apahce-ant-1.9.14-bin.tar.gz解压

4、chmod 777 apahce-ant-1.9.14

5、vi /etc/profile修改系统配置文件

#set Ant enviroment

    export ANT_HOME=/usr/apache-ant-1.9.2

    export PATH=$PATH:$ANT_HOME/bin

6、source /etc/proifle立刻将配置生效

7、ant -version测试ant是否生效

ant脚本编写

我们首先要写好一个xml文件,其中包含了需要执行的编译运行步骤。然后按下ant即可进行编译
在这里插入图片描述
通过ant教程我们可以了解到ant的写法,这个标签必写,他有几个属性,name,default,basedir。

  • name 用于指定 project 元素的名称
  • default 用于指定 project 默认执行时所执行的 target 的名称。
  • 用于指定基路径的位置。该属性没有指定时,使用 Ant 的构件文件的附目录作为基准目录。
    写好这个project后,我们就要写你希望ant帮你执行的每一步了,这个每一步,则是用target标签来写的。需要注意,target存在依赖关系,就是target中规定depends 在这个HelloWorld项目里很好理解,compile这个target作用就是编译,所以它得基于前一步写好的文件。而前一部的功能就是删除每次编译运行完生成的.class文件。
    target内部就是我们每一步的功能,按照步骤写好即可。
    运行结果:
    在这里插入图片描述
Junit的自学部分

JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言)。

那么怎么使用呢,直接找到junit的jar包,放置在项目的编译文件夹内,然后写好用于测试的java文件,然后直接运行测试文件就可以了。非常的方便

import static org.junit.Assert.*;
import org.junit.Test;
public class TestHelloWorld{
        @Test
        public void test(){
                assertEquals("HelloWorld","HelloWorld");

        }
}


由于我是在自己电脑上进行环境配置,所以需要把下载好的junit-4.10.jar包,hamcrest-core-1.3.jar包添加到jdk中的lip目录.
然后再进行编译,编译时需要加上以下两句,作用是指明包的路径,否则之间编译找不到库文件

javac -classpath .:junit-4.10.jar HelloWorldTest.java
java -classpath .:junit-4.10.jar -ea org.junit.runner.JUnitCore HelloWorldTest

测试成功!如图
在这里插入图片描述

至此,有关自学的报告全部完成,没想到环境配置以及测试需要这么大的功夫,不过在网上看到一条评论,测试一开始会很麻烦,但写到后面会越来越轻松,这次的任务也只是一个helloworld,日后遇到更大的项目可能需要改进的地方还有很多,继续加油吧!

java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:132) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:123) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83) at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBefor
05-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值