Commit 36bc321d authored by 宋欢's avatar 宋欢

done

parent 784321c4
# 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
.DS_Store
*.tar.gz
./mp3
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true">
<option name="TOP_LEVEL_CLASS_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="INNER_CLASS_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="METHOD_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
</value>
</option>
<option name="FIELD_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="IGNORE_DEPRECATED" value="false" />
<option name="IGNORE_JAVADOC_PERIOD" value="true" />
<option name="IGNORE_DUPLICATED_THROWS" value="false" />
<option name="IGNORE_POINT_TO_ITSELF" value="false" />
<option name="myAdditionalJavadocTags" value="date" />
</inspection_tool>
</profile>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/demo1.iml" filepath="$PROJECT_DIR$/demo1.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="8fd27cea-ff26-40ff-b3f2-b20a0a23d9b9" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="ProjectId" id="1fGCndIOFx8gYHwBkNVt0sVfujW" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showExcludedFiles" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="aspect.path.notification.shown" value="true" />
<property name="settings.editor.selected.configurable" value="project.propVCSSupport.Mappings" />
</component>
<component name="RunManager" selected="Application.HelloWorld">
<configuration name="ComplexArr" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="cn.qmai.study.java.demo1.ComplexArr" />
<module name="demo1" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="cn.qmai.study.java.demo1.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="HelloWorld" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="cn.qmai.study.java.demo1.HelloWorld" />
<module name="demo1" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="cn.qmai.study.java.demo1.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="SimpleArr" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="cn.qmai.study.java.demo1.SimpleArr" />
<module name="demo1" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="cn.qmai.study.java.demo1.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<recent_temporary>
<list>
<item itemvalue="Application.HelloWorld" />
<item itemvalue="Application.ComplexArr" />
<item itemvalue="Application.SimpleArr" />
</list>
</recent_temporary>
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="8fd27cea-ff26-40ff-b3f2-b20a0a23d9b9" name="Default Changelist" comment="" />
<created>1595835211219</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1595835211219</updated>
<workItem from="1595835213404" duration="68000" />
<workItem from="1595836034374" duration="229000" />
<workItem from="1595836341892" duration="98000" />
<workItem from="1595836539642" duration="150000" />
<workItem from="1595836840512" duration="42000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
</component>
<component name="WindowStateProjectService">
<state x="552" y="178" key="#Notifications" timestamp="1595836196090">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="552" y="178" key="#Notifications/0.0.1920.1040@0.0.1920.1040" timestamp="1595836196090" />
<state width="1877" height="282" key="GridCell.Tab.0.bottom" timestamp="1595836882269">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="282" key="GridCell.Tab.0.bottom/0.0.1920.1040@0.0.1920.1040" timestamp="1595836882269" />
<state width="1877" height="282" key="GridCell.Tab.0.center" timestamp="1595836882269">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="282" key="GridCell.Tab.0.center/0.0.1920.1040@0.0.1920.1040" timestamp="1595836882269" />
<state width="1877" height="282" key="GridCell.Tab.0.left" timestamp="1595836882269">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="282" key="GridCell.Tab.0.left/0.0.1920.1040@0.0.1920.1040" timestamp="1595836882269" />
<state width="1877" height="282" key="GridCell.Tab.0.right" timestamp="1595836882269">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state width="1877" height="282" key="GridCell.Tab.0.right/0.0.1920.1040@0.0.1920.1040" timestamp="1595836882269" />
<state x="166" y="235" key="SettingsEditor" timestamp="1595836204458">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="166" y="235" key="SettingsEditor/0.0.1920.1040@0.0.1920.1040" timestamp="1595836204458" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
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 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 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;
/**
* @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.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;
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 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;
/**
* 接口
*
* @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;
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"};
}
}
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