关键词:
ubuntu命令行下java工程编辑与算法(第四版)环境配置
在学习算法(第四版)中的实例时,因需要安装配套的java编译环境,可是在编译java文件的时候总是出各种错误,特在此总结一下。
ubuntu下java环境配置
由于网上教程比较多,而且也较全面,特此摆放一个链接,跟着此教程总就可以配置好oracle的java jdk,如果想更加省事,直接在命令行下键入java,会提示安装各种开源java jdk,只需要一个命令即可:
- sudo apt-get install xxxx //对应java版本
algorithms(第四版)相对应的资料下载
相对应的算法jar包
相对应的算法数据
对应的github,熟悉java的人,可以通过eclipse或idea进行maven和gradle代码配置
算法这门课的配置流程
测试安装环境
跟着官方教程走,环境搭建一般没有问题,测试成功的一个实例
- [email protected]:~/java/code$ javac -d . RandomSeq
- [email protected]:~/java/code$ java edu.princeton.cs.algs4.RandomSeq 5 100.0 200.0
- //运行需要指定包名,否则无法运行,总是指出少主类
- 168.00
- 110.52
- 152.05
- 127.17
- 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,其代码分别如下:
- package a.b; //所在目录/src/java/code/a/b
- import c.d.T;
- public class TestT {
- public static void main(String[] args) {
- T t = new T();
- t.p();
- }
- }
- package c.d; //所在目录/src/java/code/tmp/c/d/
- public class T {
- public void p(){
- System.out.println("class:T");
- }
- }
输入javac编译和java执行命令之后
- //命令输入钱各个文件所在位置
- [email protected]:~/java/code$ tree
- .
- ├── a
- │ └── b
- │ └── TestT.java
- └── tmp
- └── c
- └── d
- └── T.java
- [email protected]:~/java/code/a/b$ javac -classpath ../../tmp TestT.java
- [email protected]:~/java/code$ tree
- .
- ├── a
- │ └── b
- │ ├── TestT.class //相对应的字节码生成
- │ └── TestT.java
- └── tmp
- └── c
- └── d
- ├── T.class //相对应的字节码
- └── T.java
- [email protected]:~/java/code$ java -cp .:tmp a/b/TestT
- //.本地文件夹,表示TestT字节码;tmp用于寻找T字节码;包也是代表目录,tmp不需要详细写成tmp/c/d
- // a/b/TestT用于指定主函数程序
- 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 编译脚本
-
- #!/bin/bash
-
- # Get current position
- TOP_DIR=$(pwd)
-
- # Add all necessary jars
- LIBPATH=lib/commons-codec-1.6.jar:lib/commons-logging-1.1.1.jar
- :lib/httpclient-4.2.5.jar:lib/httpcore-4.2.4.jar
- :lib/junit-4.4.jar:lib/libthrift-1.0.0.jar:lib/log4j-1.2.14.jar
- :lib/servlet-api-2.5.jar:lib/slf4j-api-1.5.8.jar:lib/slf4j-log4j12-1.5.8.jar
-
- #compile java file
- # 编译生成的字节码放入本地目录下classes目录下
- # $LIBPATH 表示DemoService.java所引用的jar包
- #src/com/demo/DemoService.java 根据当前sh脚本所在目录找到所需要编译的程序
- javac -cp $LIBPATH src/com/demo/DemoService.java -d ./classes/.
- javac -cp $TOP_DIR/classes:$LIBPATH src/com/server/ServerImpl.java -d ./classes/.
- javac -cp $TOP_DIR/classes:$LIBPATH src/com/server/Server.java -d ./classes/.
- javac -cp $TOP_DIR/classes:$LIBPATH src/com/client/Client.java -d ./classes/.
run.sh运行脚本
-
- #!/bin/bash
-
- #Get client/server
- SIDE=$1
-
- # Get current position
- TOP_DIR=$(pwd)
-
- # Add all necessary jars
- LIBPATH=lib/commons-codec-1.6.jar:lib/commons-logging-1.1.1.jar
- :lib/httpclient-4.2.5.jar:lib/httpcore-4.2.4.jar
- :lib/junit-4.4.jar:lib/libthrift-1.0.0.jar
- :lib/log4j-1.2.14.jar:lib/servlet-api-2.5.jar
- :lib/slf4j-api-1.5.8.jar:lib/slf4j-log4j12-1.5.8.jar
-
- #run program
- # 由于所引用的类的字节码都放在一个classes目录下,我们只需要引入一个目录即可
- # $LIBPATH 引入本程序所需要的jar包
- if [ $SIDE == "server" ];then
- java -cp $TOP_DIR/classes:$LIBPATH com/server/Server
- else
- java -cp $TOP_DIR/classes:$LIBPATH com/client/Client
- 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算法,但在其他地方这个叫做并查集,就是说一系列点的连通问题,比如,我们有十个... 查看详情