ubuntu命令行下java工程编辑与算法(第四版)环境配置

     2022-03-18     398

关键词:

ubuntu命令行下java工程编辑与算法(第四版)环境配置

在学习算法(第四版)中的实例时,因需要安装配套的java编译环境,可是在编译java文件的时候总是出各种错误,特在此总结一下。

ubuntu下java环境配置

由于网上教程比较多,而且也较全面,特此摆放一个链接,跟着此教程总就可以配置好oracle的java jdk,如果想更加省事,直接在命令行下键入java,会提示安装各种开源java jdk,只需要一个命令即可:

  1. sudo apt-get install xxxx //对应java版本 

algorithms(第四版)相对应的资料下载

相对应的算法jar包
相对应的算法数据
对应的github,熟悉java的人,可以通过eclipse或idea进行maven和gradle代码配置
算法这门课的配置流程

测试安装环境

跟着官方教程走,环境搭建一般没有问题,测试成功的一个实例

  1. [email protected]:~/java/code$ javac -d . RandomSeq 
  2. [email protected]:~/java/code$ java edu.princeton.cs.algs4.RandomSeq 5 100.0 200.0 
  3. //运行需要指定包名,否则无法运行,总是指出少主类 
  4. 168.00 
  5. 110.52 
  6. 152.05 
  7. 127.17 
  8. 127.25 

javac 与 java命令

  • javac
    javac用于编译java源文件,生成.class文件
    语法:javac [option] source
    常用的[option]选项:
    A、-classpath <路径>(-cp缩写):指定要使用的类路径或要使用的jar包的路径(jar文件、zip文件(里面都是错啦搜索文件)),使用后
    会覆盖CLASSPATH的设定
    B、-d <路径> :指定源文件编译后生成.class文件的存放位置
  • java
    java用于运行javac编译后生成的.class文件
    语法:java [option] classname [arguments]
    常用的[option]选项:
    A、-classpath <路径>(-cp缩写):指定要使用的类路径或要使用的jar包的路径(jar文件、zip文件(里面都是错啦搜索文件)),使用后
    会覆盖CLASSPATH的设定
    B、[arguments]:传递给main函数的参数
  • 用一个简单实例来阐述上面的使用方法
    类TestT引用类T,其代码分别如下:
  1. package a.b; //所在目录/src/java/code/a/b 
  2. import c.d.T;  
  3. public class TestT {  
  4. public static void main(String[] args) {  
  5. T t = new T();  
  6. t.p();  
  7. }  
  8. }  
  9. package c.d;   //所在目录/src/java/code/tmp/c/d/ 
  10. public class T {  
  11. public void p(){  
  12. System.out.println("class:T");  
  13. }  
  14. }  

输入javac编译和java执行命令之后

  1. //命令输入钱各个文件所在位置 
  2. [email protected]:~/java/code$ tree 

  3. ├── a 
  4. │   └── b 
  5. │   └── TestT.java 
  6. └── tmp 
  7. └── c 
  8. └── d 
  9. └── T.java 
  10. [email protected]:~/java/code/a/b$ javac -classpath ../../tmp TestT.java  
  11. [email protected]:~/java/code$ tree 

  12. ├── a 
  13. │   └── b 
  14. │   ├── TestT.class    //相对应的字节码生成 
  15. │   └── TestT.java 
  16. └── tmp 
  17. └── c 
  18. └── d 
  19. ├── T.class     //相对应的字节码 
  20. └── T.java 
  21. [email protected]:~/java/code$ java -cp .:tmp a/b/TestT   
  22. //.本地文件夹,表示TestT字节码;tmp用于寻找T字节码;包也是代表目录,tmp不需要详细写成tmp/c/d 
  23. // a/b/TestT用于指定主函数程序 
  24. class:T //程序运行结果 

从shell脚本来查看java和javac的使用

一般,一个工程下面都会有lib(引入的必要jar包),classes(保存.class文件),src(.java源代码)三个文件夹。
java文件夹的目录结构如下,文件之间的关系是Client.java调用了DemoService.java的方法;ServerImpl.java调用了DemoService.java的方法;Server.java调用了ServerImpl.java和DemoService.java的方法;

编译前的结构图:

make.sh 编译脚本

  1.  
  2. #!/bin/bash  
  3.  
  4. # Get current position  
  5. TOP_DIR=$(pwd)  
  6.  
  7. # Add all necessary jars  
  8. LIBPATH=lib/commons-codec-1.6.jar:lib/commons-logging-1.1.1.jar 
  9. :lib/httpclient-4.2.5.jar:lib/httpcore-4.2.4.jar 
  10. :lib/junit-4.4.jar:lib/libthrift-1.0.0.jar:lib/log4j-1.2.14.jar 
  11. :lib/servlet-api-2.5.jar:lib/slf4j-api-1.5.8.jar:lib/slf4j-log4j12-1.5.8.jar  
  12.  
  13. #compile java file  
  14. # 编译生成的字节码放入本地目录下classes目录下 
  15. # $LIBPATH 表示DemoService.java所引用的jar包 
  16. #src/com/demo/DemoService.java 根据当前sh脚本所在目录找到所需要编译的程序 
  17. javac -cp $LIBPATH src/com/demo/DemoService.java -d ./classes/.  
  18. javac -cp $TOP_DIR/classes:$LIBPATH src/com/server/ServerImpl.java -d ./classes/.  
  19. javac -cp $TOP_DIR/classes:$LIBPATH src/com/server/Server.java -d ./classes/.  
  20. javac -cp $TOP_DIR/classes:$LIBPATH src/com/client/Client.java -d ./classes/. 

run.sh运行脚本

  1.  
  2. #!/bin/bash  
  3.  
  4. #Get client/server  
  5. SIDE=$1  
  6.  
  7. # Get current position  
  8. TOP_DIR=$(pwd)  
  9.  
  10. # Add all necessary jars  
  11. LIBPATH=lib/commons-codec-1.6.jar:lib/commons-logging-1.1.1.jar 
  12. :lib/httpclient-4.2.5.jar:lib/httpcore-4.2.4.jar 
  13. :lib/junit-4.4.jar:lib/libthrift-1.0.0.jar 
  14. :lib/log4j-1.2.14.jar:lib/servlet-api-2.5.jar 
  15. :lib/slf4j-api-1.5.8.jar:lib/slf4j-log4j12-1.5.8.jar  
  16.  
  17. #run program  
  18. # 由于所引用的类的字节码都放在一个classes目录下,我们只需要引入一个目录即可 
  19. # $LIBPATH 引入本程序所需要的jar包 
  20. if [ $SIDE == "server" ];then  
  21. java -cp $TOP_DIR/classes:$LIBPATH com/server/Server  
  22. else  
  23. java -cp $TOP_DIR/classes:$LIBPATH com/client/Client  
  24. fi  

编译后的结构图:
技术分享



















《算法》第四版idea运行环境的搭建

...我相信许多读者跟我一样,在学习Java的时候没有使用过命令行编译的形式去运行Java代码,直接使用Eclipse工具去进行开发的,因此,当看到书中%javaBinarySerachxxx.txt<xxx.txt的时 查看详情

在windows上安装「算法第四版」组件

...也提供了一个手把手的、使用我们提供的DrJava工具或者用命令行来创建、编译和运行你的第一个Java程序的手册,这个过程中用到的所有软件都可以自由下载本操作指南适用于32位和64位的Windows8、Windows7、VistaSP1和XPSP3——&md... 查看详情

算法(第四版)java第一章1.2节题解

前言整本《算法》Java版的题解已经托管在Github上:https://github.com/Mereder/Algorithms_4th ,大家根据README.md的导航可以迅速定位章节。书中代码用到了很多《算法》官方提供的依赖:https://algs4.cs.princeton.edu/home/ 大家可以去官网... 查看详情

算法第四版-文字版-下载地址-robertsedgewick

下载地址:https://download.csdn.net/download/moshenglv/10777447算法第四版,文字版,可复制,方便copy代码目录:第1章基础..................................................11.1基础编程模型.....................................41.1.1Java程序的基本 查看详情

我的2017年书单

...阅读一本书》《算法》(第四版)《构建之法:现代软件工程》(第二版)《算法》(第四版)《沸腾十五年》《程序员的思维修炼》《高效程序员的45个习惯》《破茧成蝶:用户体验设计师的成长之路》《EffectiveJava中文版》(... 查看详情

intellijidea配置《算法》(第四版)(代码片段)

红皮的算法一书,内部代码的实现调用了作者写的一个包。为了运行书内代码,需要配置相应的环境。准备网站:https://algs4.cs.princeton.edu/code/工具:IntelliJIDEA2019.3Java版本:jdk8Step1下载algs4.jarStep2将jar包移到某个目录下,笔者此处... 查看详情

算法第四版学习笔记一

1、Integer.toBinaryString(2);就是将输入的数字转换成二进制数,但是转换输出的是String类型的字符串。2、(char)(‘a‘+4);//e 在java中,char类型字符串运行时,直接当作ASCCII表上的整数来对待。 (‘b‘+‘c‘);//197char+char,char+int类型... 查看详情

算法第四版学习笔记之快速排序quicksort

软件:DrJava参考书:算法(第四版)章节:2.3快速排序(以下截图是算法配套视频所讲内容截图)1:快速排序2: 查看详情

练习代码——《算法(第四版)》

2017年11月20日。1importjava.util.Arrays;23publicclassProgram4{5publicstaticvoidmain(String[]args)6{7//testBinarySearch(‘+‘);8euclid(104,24);9}1011publicstaticintgcd(intp,intq)12{13System.out.println("p:"+ 查看详情

《算法-第四版》学习资源

1.作者网站(可下载全部源码和课后答案)  http://algs4.cs.princeton.edu/home/2.网络公开课(Coursera非常好的网站,有中文App了,比网易云课堂好太多了!!!)  https://www.coursera.org/learn/introduction-to-algorithms/home/info 查看详情

算法第四版question

1.ECLIPES标准输入流①RunAs-->RunConfigurations-->Commom-->InputFile在InputFile里面输入要读取的文本文件这对应着标准入流②如果还有arg[0]的就在Arguments里面输入参数就可以了。点Run后控制窗口没东西,需要结束输入流。③输入流最... 查看详情

算法第四版1.1.14(代码片段)

代码如下packagecom.zzh;importedu.princeton.cs.algs4.StdIn;importedu.princeton.cs.algs4.StdOut;publicclassTestpublicstaticvoidmain(String[]args)//TODOAuto-generatedmethodstubintn=StdIn.readInt();StdOut.p 查看详情

算法第四版1.1.13(代码片段)

代码如下:packagecom.zzh;importedu.princeton.cs.algs4.StdOut;importedu.princeton.cs.algs4.StdRandom;publicclassTestpublicstaticvoidmain(String[]args)//TODOAuto-generatedmethodstubintm=4,n=5;int[][]a=newi 查看详情

算法第四版1.1.20(代码片段)

代码如下packagecom.zzh;importedu.princeton.cs.algs4.StdIn;importedu.princeton.cs.algs4.StdOut;publicclassTestpublicstaticvoidmain(String[]args)intn=StdIn.readInt();StdOut.printf("%.1f\n",Math.log(fac(n) 查看详情

算法(第四版)学习笔记——初级排序算法

...表达式中受n的变化影响最大的那一项(不含系数)(注:若算法中语句执行次数为一个常数,则时间复杂度为O(1))若T(n)/f(n)求极限可得到一常数c,则时间复杂度T(n)=O(f(n))。一个算法中的语句执行次数称为语句频度或时间... 查看详情

算法第四版学习笔记二(有趣的递归算法)

1、publicstaticStringexR1(intn){if(n<=0)return"";returnexR1(n-3)+n+exR1(n-2)+n;} System.out.println(exR1(6));//3113611422462、publicstaticStringexR2(intn){Strings=exR1(n-3)+n+exR1(n-2)+n;if(n<=0)r 查看详情

《算法(第四版)》排序-----高速排序

參考文章:??http://ahalei.blog.51cto.com/4767671/13652851.概念高速排序,听这个名字就能想到它排序速度快。它是一种原地排序(仅仅须要一个非常小的辅助栈,注意不是数组)。且将长度为N的数组排序所需的时间和NlgN成正比缺点是:... 查看详情

算法(第四版)之并查集(union-find算法)(代码片段)

 开个新坑,准备学习算法(第四版),并把上面学到的东西写成博客,毕竟以前也学过一点算法,但效果甚微并查集,在这本书的第一章1.5中叫做union-find算法,但在其他地方这个叫做并查集,就是说一系列点的连通问题,比如,我们有十个... 查看详情