以上为Arrays工具类提供的静态方法 asList ,包括方法名,方法参数(可变的多个泛型对象),返回类型(实现List接口的对象),整个方法定义构成了Arrays工具类提供的API:将某类型的多个对象转换为填充了这些对象的List。
第三方库和API的关系,类似于餐馆和点餐,对于餐馆(第三方库,被调用方)提供的点餐服务(API)来说,消费者(调用方)不用关心餐馆内部如何实现。
import org.fusesource.jansi.AnsiConsole;
import static org.fusesource.jansi.Ansi.Color.*;
import static org.fusesource.jansi.Ansi.ansi;
public class Main {public static void main(String[] args) {AnsiConsole.systemInstall();int lineNumber = 0;System.out.print( ansi().fg(MAGENTA).a(++lineNumber));System.out.println( ansi().fg(CYAN).a("面试官:").fg(RED).a("你都会什么编程
语言?") );System.out.print( ansi().fg(MAGENTA).a(++lineNumber));System.out.println( ansi().fg(BLUE).a("我: ").fg(GREEN).a("精通C、
C++、Java、HTML、JavaScript等语言,的单词拼写") );System.out.print( ansi().fg(MAGENTA).a(++lineNumber));System.out.println( ansi().fg(CYAN).a("面试官:").fg(RED).a("就这?会什么系
统嘛?") );System.out.print( ansi().fg(MAGENTA).a(++lineNumber));System.out.println( ansi().fg(BLUE).a("我: ").fg(GREEN).a("精通
Windows、Mac、Linux系统,的关机") );AnsiConsole.systemUninstall();}
}
步骤二:javac编译
参考下面的javac编译命令说明
先下载 jansi 依赖包,下载好保存在本地任意路径:jansi下载链接
再使用 javac 命令来编译(注意依赖包路径要改成自己的):
javac -cp "E:/test/lib/jansi-2.3.3.jar" -encoding UTF-8 Main.java执行成功,cmd不会出现异常报错信息,并且会在当前路径下生成Main.class文件。 步骤三:java运行 参考下面的java运行命令说明 使用 java 命令来运行(注意依赖包路径要改成自己的):
java -cp ".;E:/test/lib/jansi-2.3.3.jar" Main输出结果如下:
执行java程序会:
1. 开启java虚拟机 2. 加载class字节码到内存 3. java虚拟机执行字节码指令(翻译为机器码) 4. cpu执行机器码
jar文件中需要包含 META-INF/MANIFEST.MF 文件,作为描述信息,格式为键: 值,我们主要关注两个: Main-Class: 入口类的全限定名(包名+类名) Class-Path: 指定jar文件运行时依赖包的路径。多个依赖包时:(1)Windows中以 ; 间隔 (2)Mac/Linux中以 : 间隔对于以上的打包操作来说,jdk提供了jar命令进行打包操作:jar (oracle.com) 我们主要关注以下几个常用参数:
jar命令使用格式为:
jar cvf 生成的文件名 包含的文件或目录[多个之间Windows以 ; 间隔,Mac或Linux以 : 间隔]
jar cvfe 生成的文件名 入口类的全限定名 包含的文件或目录以上命令可以生成 META-INF/MANIFEST.MF 及 Main-Class ,但需要手动配置 Class-Path
jar cvfe main.jar Main Main.class以下为执行结果:
以上命令执行成功会在当前路径下,生成一个main.jar的文件,用解压工具(如WinRAR)打开,再双击使用编辑器打开其中的 META-INF/MANIFEST.MF 文件,添加 Class-Path :
以下为文件内容:
在第4行添加 Class-Path ,设置为 jansi 依赖包的路径(建议设置为生成的main.jar包到 jansi 依赖 包的相对路径),修改后为:Manifest-Version: 1.0
Created-By: 1.8.0_281 (Oracle Corporation) Main-Class: Main
Manifest-Version: 1.0 Created-By: 1.8.0_281 (Oracle Corporation) Main-Class: Main Class-Path: lib/jansi-2.3.3.jar注意修改完成后,在解压工具中更新:
修改完成后,即可以直接运行:
java -jar main.jar
要在cmd中全局使用Maven命令,需要配置环境变量。
再在 Path 环境变量中,添加Maven工具bin目录为全局命令路径
%M2_HOME%\bin
mvn -version以下为安装配置成功的输出内容:
在Maven中可以配置以上仓库:Maven根目录下的 conf 目录中, settings.xml 文件即为Maven的全局配置文件,以上的Maven仓库都可以在其中进行配置。我们主要配置本地仓库,远程仓库暂不配置(此时会使用Maven默认的官方远程仓库)。
以下为 settings.xml 中,本地仓库配置的地方: 在XML中 为注释结束,以上
Maven初次使用从网络中下载大量的依赖包,可以使用我们准备好的本地仓库内容,解压到以上路径即可。注意解压后,在以上路径下的内容为:
点击 Next 后,需要输入以下信息:
GroupId:组织id、组织名,一般使用公司的域名,如com.alibaba。同时按规范,自己写的 java都在这样的包下。个人使用随便取自己英文名或拼音都行。 ArtifactId:产品id、产品名,项目即产品,所以一般使用本项目名,多个英文之间 - 间隔。 Version:产品的版本号,本项目可能有多个版本提供给别人使用。以上三个字段代表了唯一的一个产品,我们创建 Maven 项目,引入其他产品(依赖包)都需要使用这些字段标识唯一的一个产品或项目
选择项目路径
创建完成后,如果右下角出现以下弹窗,需要开启自动导入功能:
至此项目新建完成。
了解:IDEA创建时,会省略一个 src/test/resources 的目录,代表测试资源目录,用于存放单元测试用的配置文件,可以自行创建。
观察编译后的运行时结构: 1.指定JDK版本:默认情况下,maven 会使用 1.5 版本进行代码检查,需要修改为 1.8。在属性标签
1.8 1.8
2.引入依赖包:当前项目需要引入第三方库依赖包时使用。在
org.fusesource.jansi jansi 2.3.3 mysql mysql-connector-java 5.1.49
以下为全部 pom.xml 内容:
4.0.0 org.example Fo 1.0-SNAPSHOT 1.8 1.8 org.fusesource.jansi jansi 2.3.3 mysql mysql-connector-java 5.1.49
注意
在IDEA中修改了 pom.xml 后,记得在Maven面板中刷新才能生效:
对于以上命令,大家可以双击运行并观察执行结果。
注意:一定要检查控制台输出日志,出现 BUILD SUCCESS 才算执行成果:PS:JDK是Java程序开发需要的环境,JDK包含了JRE。
数据库包括: 1. 关系型数据库(RDBMS数据库)如MySQL,Oracle,SQL Server,DB2等。 2. 非关系型数据库(NoSQL数据库)如Redis,MongoDB,HBase等。 以上数据库都可以提供服务,让其他程序调用。
有些信息虽然可以直接在程序代码中保存,但会存在灵活性,维护性等等问题。在不同的环 境需要灵活调整的信息,在设计上,一般会考虑保存在配置文件中,程序从配置文件读取:PS(了解):更进一步,配置信息也不一定必须保存在程序内的配置文件中,还可以保存在 其他地方,如数据库,其他系统URL资源。
- 例如数据库URL,账号,密码等信息,不同开发人员可能需要连接本机数据库,或开发 环境数据库;有时候可能需要连接测试数据库调试问题;项目部署到生产环境时,又要调整为连接生产数据库。
- 例如引用外部本地文件资源的路径,不同开发人员在本机运行程序时,需要调整为本地某个路径;程序在开发环境,测试环境,生产环境运行时,又需要调整为当前环境主机的本地路径。
- 如果以上信息保存在程序中,那就得重新编译,步骤繁琐,且容易出错。
- Java中一般使用日志框架,可以输出到控制台,也可以输出到日志文件。此时不再使用 System.out.print 打印。
- 日志框架一般提供调试信息,普通信息,警告信息,错误信息等,便于不同模式下打印不同的信息。
- 还可以使用不同的日志文件,按多种维度来记录:如按日期,按业务,按分层(不同的Java包)等等。以便于更快速的查找到日志信息。
下载Repository.zip,确保存放在本地某个路径中,之后别移动了。并解压压缩包,解压后是这样的: