Commit bd33c619 authored by 宋欢's avatar 宋欢

Initial commit

parent 28943a49
# Treat all files in this repo as binary, with no git magic updating
# line endings. Windows users contributing to Go will need to use a
# modern version of git and editors capable of LF line endings.
#
# We'll prevent accidental CRLF line endings from entering the repo
# via the git-review gofmt checks.
#
# See golang.org/issue/9281
* -text
svn/
target/
test-output/
*.class
.classpath
.project
.settings/
tmp
temp
*.log
antx.properties
.idea/
*.iml
htdocs
package-info.java
.DS_Store
*.tar.gz
docker/data/
./mp3
\ No newline at end of file
# CentOS
Java下载
------
<pre>
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
Linux x64 Compressed Archive | jdk-8u261-linux-x64.tar.gz
</pre>
Java安装
------
<pre>
cd /usr/local
mkdir java
cd java
拷贝 jdk-8u261-linux-x64.tar.gz 到 /usr/local/java
tar -xzvf jdk-8u261-linux-x64.tar.gz
mv jdk1.8.0_261 jdk1.8
</pre>
Java环境变量
------
<pre>
sudo vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${JRE_HOME}/lib
source /etc/profile
</pre>
Java命令
------
<pre>
ln -s /usr/local/java/jdk1.8/bin/java /usr/bin/java
</pre>
Maven
------
<pre>
http://maven.apache.org/download.cgi
下载 Binary tar.gz archive | apache-maven-3.6.3-bin.tar.gz
tar -xzvf apache-maven-{版本}-bin.tar.gz
</pre>
Maven环境变量
------
<pre>
sudo vim /etc/profile
export MVN_HOME=Gz解压目录/apache-maven-{版本}
export PATH=$PATH:${MVN_HOME}/bin
source /etc/profile
</pre>
# MacOS
Java下载
------
<pre>
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
macOS x64 | jdk-8u261-macosx-x64.dmg
</pre>
Java安装
------
<pre>
双击,下一步...
</pre>
查看JavaHome目录
------
<pre>
/usr/libexec/java_home -V
</pre>
Java环境变量
------
<pre>
sudo vim /etc/profile
export JAVA_HOME=JavaHome目录
export JRE_HOME=${JAVA_HOME}/jre
export PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${JRE_HOME}/lib
source /etc/profile
</pre>
Maven
------
<pre>
http://maven.apache.org/download.cgi
下载 Binary zip archive | apache-maven-3.6.3-bin.zip
解压
</pre>
Maven环境变量
------
<pre>
sudo vim ~/.bash_profile
export MVN_HOME=Zip解压目录/apache-maven-{版本}
export PATH=$PATH:${MVN_HOME}/bin
source ~/.bash_profile
</pre>
# Windows
Java下载
------
<pre>
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
Windows x64 | jdk-8u261-windows-x64.exe
</pre>
Java安装
------
<pre>
双击,下一步...
</pre>
Java环境变量
------
<pre>
1、“我的电脑” 右键菜单点击 “属性(R)” 切换到 “控制面板 > 系统和安全 > 系统” 界面
</pre>
![avatar](Windows-控制面板.png)
<pre>
2、左侧菜单点击 “高级系统设置” 打开 “系统属性”
</pre>
![avatar](Windows-系统属性.png)
<pre>
3、点击 “环境变量(N)...” 打开 “环境变量”
</pre>
![avatar](Windows-环境变量.png)
Java环境变量
------
<pre>
1、新增,变量名(N):JAVA_HOME,变量值(V):jdk安装目录
</pre>
![avatar](Windows-环境变量-JAVA_HOME.png)
<pre>
2、新增,变量名(N):JRE_HOME,变量值(V):jre安装目录
</pre>
![avatar](Windows-环境变量-JRE_HOME.png)
<pre>
3、新增,变量名(N):CLASSPATH,变量值(V):jdk安装目录\lib\dt.jar:jdk安装目录\lib\tools.jar:jre安装目录\lib
如:C:\Program Files\Java\jdk1.8.0_261\lib\dt.jar:C:\Program Files\Java\jdk1.8.0_261\lib\tools.jar:C:\Program Files\Java\jdk1.8.0_261\jre\lib
注1:jdk安装目录 可用 %JAVA_HOME% 替换
注2:jre安装目录 可用 %JRE_HOME% 替换
</pre>
<pre>
4、编辑,变量名(N):Path
新增,变量值(V):jdk安装目录\bin
如:C:\Program Files\Java\jdk1.8.0_261\bin
新增,变量值(V):jre安装目录\bin
如:C:\Program Files\Java\jdk1.8.0_261\jre\bin
注1:jdk安装目录 可用 %JAVA_HOME% 替换
注2:jre安装目录 可用 %JRE_HOME% 替换
</pre>
安装成功?
------
<pre>
Dos命令:
java -version
</pre>
Maven
------
<pre>
http://maven.apache.org/download.cgi
下载 Binary tar.gz archive | apache-maven-3.6.3-bin.tar.gz
解压
</pre>
Maven环境变量
------
<pre>
1、新增,变量名(N):MAVEN_HOME,变量值(V):maven解压目录
</pre>
![avatar](Windows-环境变量-MAVEN_HOME.png)
<pre>
2、编辑,变量名(N):Path
新增,变量值(V):maven解压目录\bin
如:C:\Program Files\Apache\Maven\bin
注1:maven解压目录 可用 %MAVEN_HOME% 替换
</pre>
package cn.qmai.study.java.demo1;
/**
* 抽象类
*
* @author 宋欢
*/
public abstract class AbstractCalc {
/**
* 加
*
* @param num1 数1
* @param num2 数2
* @return 和
*/
public abstract int add(int num1, int num2);
/**
* 减
*
* @param num1 减数
* @param num2 被减数
* @return 差
*/
public abstract int subtract(int num1, int num2);
}
package cn.qmai.study.java.demo1;
/**
* @author 宋欢
*/
public class CalcImpl implements ICalc {
@Override
public int add(int num1, int num2) {
return num1 + num2;
}
@Override
public int subtract(int num1, int num2) {
return num1 - num2;
}
}
package cn.qmai.study.java.demo1;
/**
* @author 宋欢
*/
public class CalcImpl2 extends AbstractCalc {
@Override
public int add(int num1, int num2) {
return num1 + num2;
}
@Override
public int subtract(int num1, int num2) {
return num1 - num2;
}
}
package cn.qmai.study.java.demo1;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 复杂数组
*
* @author 宋欢
*/
public class ComplexArr {
/**
* Map初始容量
*/
private static final int MAP_INITIAL_CAPACITY = 4;
public static void main(String[] args) {
Map<Object, Object> book1 = new HashMap<>(MAP_INITIAL_CAPACITY);
book1.put(null, 1);
book1.put("name", "PHP核心技术与最佳实践");
Map<Object, Object> book2 = new HashMap<>(MAP_INITIAL_CAPACITY);
book2.put(null, "深入PHP:面向对象、模式与实践");
book2.put("price", 100);
Map<Object, Object> book3 = new HashMap<>(MAP_INITIAL_CAPACITY);
book3.put(null, 3);
book3.put("name", "PHP7内核剖析");
book3.put(null, 55.5);
List<Object> book4 = new ArrayList<>();
book4.add("PHP安全之道");
book4.add(62);
List<Object> book_3_4 = new ArrayList<>();
book_3_4.add(book3);
book_3_4.add(book4);
Map<Object, Object> books = new HashMap<>(MAP_INITIAL_CAPACITY);
books.put(1, book1);
books.put("深入PHP", book2);
books.put(null, book_3_4);
System.out.println(books);
}
}
package cn.qmai.study.java.demo1;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
/**
* 同时下载8首歌
*
* @author 宋欢
*/
public class DownloadMp3 {
/**
* 默认的连接超时,单位:毫秒
*/
public static final int DEFAULT_CONNECT_TIMEOUT_MS = 30 * 1000;
/**
* 默认的分配缓存空间,单位:字节
*/
public static final int DEFAULT_BUCKET = 4096;
/**
* Map初始容量
*/
private static final int MAP_INITIAL_CAPACITY = 8;
/**
* 发送下载请求
*
* @param url 访问链接,a URL String
* @param local 保存到本地的文件名,包括目录路径
* @throws IOException 下载失败,错误消息
*/
public static void download(String url, String local) throws IOException {
HttpURLConnection urlConn = null;
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
urlConn = (HttpURLConnection) (new URL(url)).openConnection();
urlConn.setRequestProperty("Connection", "Keep-Alive");
urlConn.setRequestMethod("GET");
urlConn.setConnectTimeout(DEFAULT_CONNECT_TIMEOUT_MS);
urlConn.connect();
int statusCode = urlConn.getResponseCode();
if (statusCode == HttpURLConnection.HTTP_OK) {
in = new BufferedInputStream(urlConn.getInputStream());
out = new BufferedOutputStream(new FileOutputStream(new File(local)));
int size;
byte[] bucket = new byte[DEFAULT_BUCKET];
while ((size = in.read(bucket)) != -1) {
if (size > 0) {
out.write(bucket, 0, size);
out.flush();
}
}
} else {
String errMsg = urlConn.getResponseMessage();
throw new IOException(errMsg);
}
} finally {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
if (urlConn != null) {
urlConn.disconnect();
}
}
}
public static void main(String[] args) {
// 下载网站 => 本地目录
Map<String, String> paths = new HashMap<>(MAP_INITIAL_CAPACITY);
paths.put("http://***.com/download?name=晴天.mp3", "mp3/晴天.mp3");
paths.put("http://***.com/download?name=稻香.mp3", "mp3/稻香.mp3");
paths.put("http://***.com/download?name=夜曲.mp3", "mp3/夜曲.mp3");
paths.put("http://***.com/download?name=安静.mp3", "mp3/安静.mp3");
paths.put("http://***.com/download?name=青花瓷.mp3", "mp3/青花瓷.mp3");
paths.put("http://***.com/download?name=东风破.mp3", "mp3/东风破.mp3");
paths.put("http://***.com/download?name=等你下课.mp3", "mp3/等你下课.mp3");
paths.put("http://***.com/download?name=爱在西元前.mp3", "mp3/爱在西元前.mp3");
for (Map.Entry<String, String> entry : paths.entrySet()) {
String url = entry.getKey();
String local = entry.getValue();
new Thread(() -> {
try {
download(url, local);
} catch (IOException e) {
System.out.println(e.getMessage());
}
}).start();
}
}
}
package cn.qmai.study.java.demo1;
/**
* 实战
*
* @author 宋欢
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
package cn.qmai.study.java.demo1;
/**
* 接口
*
* @author 宋欢
*/
public interface ICalc {
/**
* 加
*
* @param num1 数1
* @param num2 数2
* @return 和
*/
int add(int num1, int num2);
/**
* 减
*
* @param num1 减数
* @param num2 被减数
* @return 差
*/
int subtract(int num1, int num2);
}
package cn.qmai.study.java.demo1;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 简单数组
*
* @author 宋欢
*/
public class SimpleArr {
/**
* Map初始容量
*/
private static final int MAP_INITIAL_CAPACITY = 4;
public static void main(String[] args) {
Map<String, Object> book1 = new HashMap<>(MAP_INITIAL_CAPACITY);
book1.put("id", 1);
book1.put("name", "Java核心技术");
Map<String, Object> book2 = new HashMap<>(MAP_INITIAL_CAPACITY);
book2.put("name", "Java编程思想");
book2.put("price", 108);
Map<String, Object> book3 = new HashMap<>(MAP_INITIAL_CAPACITY);
book3.put("id", 3);
book3.put("name", "Java并发编程实战");
book3.put("price", 47.5);
List<Map<String, Object>> books = new ArrayList<>();
books.add(book1);
books.add(book2);
books.add(book3);
System.out.println(books);
}
}
package cn.qmai.study.java.demo1;
/**
* 定义变量
*
* @author 宋欢
*/
public class Variables {
public static void main(String[] args) {
// 布尔
boolean var1 = true;
// 整数
int var2 = 1;
// 浮点数
float var3 = 1.2f;
// 字符串
String var4 = "abc";
// 数组
int[] var5 = {1, 2, 3};
String[] var6 = {"a", "b", "c"};
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment