From 8a970b7258460dbe7eb507eed88118d0c309445e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=B3=BD=E8=BF=9C?= Date: Tue, 22 Aug 2017 11:07:30 +0800 Subject: [PATCH 1/3] Update README.md --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 957a279..de07715 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,20 @@ + [JNA](https://github.com/CrowHawk/JavaLearning/tree/master/JNAPointer):演示了JNA的基本用法,使用Java调用C++代码。 ## 博客目录 +### Java基础 + [Java基础学习(1)——反射](https://crowhawk.github.io/2017/02/12/basic-java-reflect/) + [Java基础学习(2)——注解](https://crowhawk.github.io/2017/02/13/basic-java-annotation/) + [Java基础学习(3)——泛型](https://crowhawk.github.io/2017/02/21/basic-java-generic/) + [Java基础学习(4)——动态代理](https://crowhawk.github.io/2017/02/21/basic-java-proxy/) + [《Java多线程核心技术》读书笔记](https://crowhawk.github.io/2017/07/06/MultiThread/) +### JVM ++ [深入理解JVM(1)——Java内存区域与Java对象](https://crowhawk.github.io/2017/08/09/jvm_1/) ++ [深入理解JVM(2)——GC算法与内存分配策略](https://crowhawk.github.io/2017/08/10/jvm_2/) ++ [深入理解JVM(3)——7种垃圾收集器](https://crowhawk.github.io/2017/08/15/jvm_3/) ++ [深入理解JVM(4)——如何优化Java GC「译」](https://crowhawk.github.io/2017/08/21/jvm_4/) ++ [深入理解JVM(5)——虚拟机类加载机制](https://crowhawk.github.io/2017/08/21/jvm_5/) ++ [深入理解JVM(6)——类加载器](https://crowhawk.github.io/2017/08/21/jvm_6/) + ## 联系作者 [Personal Website:Crow Home](https://crowhawk.github.io/) From 3cf3178e12948dc9e727c861ac694def8c7cf663 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=B3=BD=E8=BF=9C?= Date: Mon, 4 Sep 2017 16:57:36 +0800 Subject: [PATCH 2/3] Update README.md --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index de07715..70fa8a3 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # JavaLearning -本仓库记录了我的Java进阶之路,旨在提供一个Java在线共享学习平台,帮助更多的Java学习者入门进阶 +本仓库记录了我的Java学习进阶之路,涵盖了Java基础、JDK源码、JVM中的重要知识,附有代码和博客讲解,旨在提供一个Java在线共享学习平台,帮助更多的Java学习者入门进阶。 ## 代码目录 + [Java基础](https://github.com/CrowHawk/JavaLearning/tree/master/Basic-java):包括枚举、范型、反射、动态代理的用法; @@ -13,6 +13,13 @@ + [Java基础学习(4)——动态代理](https://crowhawk.github.io/2017/02/21/basic-java-proxy/) + [《Java多线程核心技术》读书笔记](https://crowhawk.github.io/2017/07/06/MultiThread/) +### JDK源码 ++ [Java集合框架源码解读(1)——ArrayList、LinkedList和Vector](https://crowhawk.github.io/2017/08/26/collections_1/) ++ [Java集合框架源码解读(2)——HashMap](https://crowhawk.github.io/2017/08/27/collections_2/) ++ [Java集合框架源码解读(3)——LinkedHashMap](https://crowhawk.github.io/2017/08/28/collctions_3/) ++ [Java集合框架源码解读(4)——WeakHashMap](https://crowhawk.github.io/2017/08/29/collection_4/) ++ [Java集合框架源码解读(5)——TreeMap](https://crowhawk.github.io/2017/08/31/collection_5/) + ### JVM + [深入理解JVM(1)——Java内存区域与Java对象](https://crowhawk.github.io/2017/08/09/jvm_1/) + [深入理解JVM(2)——GC算法与内存分配策略](https://crowhawk.github.io/2017/08/10/jvm_2/) From 7bda9004a34a035603254cfa10bdabc263f0d937 Mon Sep 17 00:00:00 2001 From: CrowHawk Date: Wed, 6 Sep 2017 13:35:13 +0800 Subject: [PATCH 3/3] MoveToMaven --- Basic-java/Basic-java.iml | 11 -- BasicJava.iml | 14 +++ Enumeration/Enumeration.iml | 15 +++ Enumeration/pom.xml | 28 +++++ .../src/main/java/com/crow}/EnumCoin.java | 2 +- .../src/main/java/com/crow}/EnumTest.java | 2 +- .../target/classes/com/crow/EnumCoin$1.class | Bin 0 -> 516 bytes .../target/classes/com/crow/EnumCoin$2.class | Bin 0 -> 552 bytes .../target/classes/com/crow/EnumCoin.class | Bin 0 -> 878 bytes .../test-classes/com/crow/EnumTest.class | Bin 0 -> 878 bytes Generic/Generic.iml | 15 +++ Generic/pom.xml | 28 +++++ .../src/main/java/com/crow}/GenericTest.java | 13 ++- NIO/NIO.iml | 15 +++ NIO/pom.xml | 28 +++++ NIO/src/main/java/com/crow/CopyFile.java | 43 +++++++ .../main/java/com/crow/CreateArrayBuffer.java | 24 ++++ NIO/src/main/java/com/crow/CreateBuffer.java | 22 ++++ NIO/src/main/java/com/crow/MultiPortEcho.java | 108 ++++++++++++++++++ NIO/src/main/java/com/crow/ReadAndShow.java | 22 ++++ NIO/src/main/java/com/crow/ScatterGather.java | 77 +++++++++++++ NIO/src/main/java/com/crow/SliceBuffer.java | 33 ++++++ .../main/java/com/crow/TypesInByteBuffer.java | 21 ++++ NIO/src/main/java/com/crow/UseCharsets.java | 42 +++++++ NIO/src/main/java/com/crow/UseFileLocks.java | 38 ++++++ .../main/java/com/crow/UseFloatBuffer.java | 20 ++++ NIO/src/main/java/com/crow/UseMappedFile.java | 7 ++ .../main/java/com/crow/WriteSomeBytes.java | 24 ++++ NIO/target/classes/com/crow/CopyFile.class | Bin 0 -> 1449 bytes .../classes/com/crow/CreateArrayBuffer.class | Bin 0 -> 920 bytes .../classes/com/crow/CreateBuffer.class | Bin 0 -> 877 bytes NIO/target/classes/com/crow/ReadAndShow.class | Bin 0 -> 1483 bytes .../classes/com/crow/ScatterGather.class | Bin 0 -> 2630 bytes NIO/target/classes/com/crow/SliceBuffer.class | Bin 0 -> 1197 bytes .../classes/com/crow/TypesInByteBuffer.class | Bin 0 -> 1082 bytes NIO/target/classes/com/crow/UseCharsets.class | Bin 0 -> 2205 bytes .../classes/com/crow/UseFileLocks.class | Bin 0 -> 1472 bytes .../classes/com/crow/UseFloatBuffer.class | Bin 0 -> 1040 bytes .../classes/com/crow/UseMappedFile.class | Bin 0 -> 282 bytes .../classes/com/crow/WriteSomeBytes.class | Bin 0 -> 1254 bytes Proxy/Proxy.iml | 15 +++ Proxy/pom.xml | 28 +++++ .../src/main/java/com/crow}/Advice.java | 4 +- .../src/main/java/com/crow}/ImpAdvice.java | 2 +- .../src/main/java/com/crow}/ProxyTest.java | 8 +- ReadAndShow.txt | 1 + Reflect/Reflect.iml | 15 +++ Reflect/pom.xml | 28 +++++ .../src/main/java/com/crow}/FieldReflect.java | 2 +- .../src/main/java/com/crow}/ReflectTest.java | 5 +- pom.xml | 33 ++++++ 51 files changed, 767 insertions(+), 26 deletions(-) delete mode 100644 Basic-java/Basic-java.iml create mode 100644 BasicJava.iml create mode 100644 Enumeration/Enumeration.iml create mode 100644 Enumeration/pom.xml rename {Basic-java/src/com/crow/Enumeration => Enumeration/src/main/java/com/crow}/EnumCoin.java (96%) rename {Basic-java/src/com/crow/Enumeration => Enumeration/src/main/java/com/crow}/EnumTest.java (89%) create mode 100644 Enumeration/target/classes/com/crow/EnumCoin$1.class create mode 100644 Enumeration/target/classes/com/crow/EnumCoin$2.class create mode 100644 Enumeration/target/classes/com/crow/EnumCoin.class create mode 100644 Enumeration/target/test-classes/com/crow/EnumTest.class create mode 100644 Generic/Generic.iml create mode 100644 Generic/pom.xml rename {Basic-java/src/com/crow/Generic => Generic/src/main/java/com/crow}/GenericTest.java (85%) create mode 100644 NIO/NIO.iml create mode 100644 NIO/pom.xml create mode 100644 NIO/src/main/java/com/crow/CopyFile.java create mode 100644 NIO/src/main/java/com/crow/CreateArrayBuffer.java create mode 100644 NIO/src/main/java/com/crow/CreateBuffer.java create mode 100644 NIO/src/main/java/com/crow/MultiPortEcho.java create mode 100644 NIO/src/main/java/com/crow/ReadAndShow.java create mode 100644 NIO/src/main/java/com/crow/ScatterGather.java create mode 100644 NIO/src/main/java/com/crow/SliceBuffer.java create mode 100644 NIO/src/main/java/com/crow/TypesInByteBuffer.java create mode 100644 NIO/src/main/java/com/crow/UseCharsets.java create mode 100644 NIO/src/main/java/com/crow/UseFileLocks.java create mode 100644 NIO/src/main/java/com/crow/UseFloatBuffer.java create mode 100644 NIO/src/main/java/com/crow/UseMappedFile.java create mode 100644 NIO/src/main/java/com/crow/WriteSomeBytes.java create mode 100644 NIO/target/classes/com/crow/CopyFile.class create mode 100644 NIO/target/classes/com/crow/CreateArrayBuffer.class create mode 100644 NIO/target/classes/com/crow/CreateBuffer.class create mode 100644 NIO/target/classes/com/crow/ReadAndShow.class create mode 100644 NIO/target/classes/com/crow/ScatterGather.class create mode 100644 NIO/target/classes/com/crow/SliceBuffer.class create mode 100644 NIO/target/classes/com/crow/TypesInByteBuffer.class create mode 100644 NIO/target/classes/com/crow/UseCharsets.class create mode 100644 NIO/target/classes/com/crow/UseFileLocks.class create mode 100644 NIO/target/classes/com/crow/UseFloatBuffer.class create mode 100644 NIO/target/classes/com/crow/UseMappedFile.class create mode 100644 NIO/target/classes/com/crow/WriteSomeBytes.class create mode 100644 Proxy/Proxy.iml create mode 100644 Proxy/pom.xml rename {Basic-java/src/com/crow/Proxy => Proxy/src/main/java/com/crow}/Advice.java (74%) rename {Basic-java/src/com/crow/Proxy => Proxy/src/main/java/com/crow}/ImpAdvice.java (95%) rename {Basic-java/src/com/crow/Proxy => Proxy/src/main/java/com/crow}/ProxyTest.java (88%) create mode 100644 ReadAndShow.txt create mode 100644 Reflect/Reflect.iml create mode 100644 Reflect/pom.xml rename {Basic-java/src/com/crow/Reflect => Reflect/src/main/java/com/crow}/FieldReflect.java (94%) rename {Basic-java/src/com/crow/Reflect => Reflect/src/main/java/com/crow}/ReflectTest.java (94%) create mode 100644 pom.xml diff --git a/Basic-java/Basic-java.iml b/Basic-java/Basic-java.iml deleted file mode 100644 index c90834f..0000000 --- a/Basic-java/Basic-java.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/BasicJava.iml b/BasicJava.iml new file mode 100644 index 0000000..dadae47 --- /dev/null +++ b/BasicJava.iml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Enumeration/Enumeration.iml b/Enumeration/Enumeration.iml new file mode 100644 index 0000000..b1562b6 --- /dev/null +++ b/Enumeration/Enumeration.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Enumeration/pom.xml b/Enumeration/pom.xml new file mode 100644 index 0000000..b7b044a --- /dev/null +++ b/Enumeration/pom.xml @@ -0,0 +1,28 @@ + + + Basic-Java + com.crow + 1.0-SNAPSHOT + + 4.0.0 + + Enumeration + jar + + Enumeration + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + diff --git a/Basic-java/src/com/crow/Enumeration/EnumCoin.java b/Enumeration/src/main/java/com/crow/EnumCoin.java similarity index 96% rename from Basic-java/src/com/crow/Enumeration/EnumCoin.java rename to Enumeration/src/main/java/com/crow/EnumCoin.java index f855855..1d4b300 100644 --- a/Basic-java/src/com/crow/Enumeration/EnumCoin.java +++ b/Enumeration/src/main/java/com/crow/EnumCoin.java @@ -1,4 +1,4 @@ -package com.crow.Enumeration; +package com.crow; /** * Created by CrowHawk on 17/2/12. diff --git a/Basic-java/src/com/crow/Enumeration/EnumTest.java b/Enumeration/src/main/java/com/crow/EnumTest.java similarity index 89% rename from Basic-java/src/com/crow/Enumeration/EnumTest.java rename to Enumeration/src/main/java/com/crow/EnumTest.java index b7fa4ce..5f3cbd9 100644 --- a/Basic-java/src/com/crow/Enumeration/EnumTest.java +++ b/Enumeration/src/main/java/com/crow/EnumTest.java @@ -1,4 +1,4 @@ -package com.crow.Enumeration; +package com.crow; /** * Created by CrowHawk on 17/2/12. diff --git a/Enumeration/target/classes/com/crow/EnumCoin$1.class b/Enumeration/target/classes/com/crow/EnumCoin$1.class new file mode 100644 index 0000000000000000000000000000000000000000..1ad9916398eb12439887c342103a25ef0c20e715 GIT binary patch literal 516 zcmZvY&rZTX5XQfyg+eVTASiP603JZjH743%(uiC%+?TR}HDxzxi~3mV#l(XT;6oXw z72~09vVZ2AU%r{0&#(6n03&p5nAoqtK+8hg!U03+Oe&e2GnhTUKcmaj3&F5EkxEQA z>$!;T_&g+~G0_1JXFQT=ycNx4C1VE1S4u=)$m3X0*qQ`-Jq#lKI2^0Z+S5`Uk6Z>L z;Y$YQGn57CQ}L7#-0SCYg6&(qi2`vY)8f@%pTRwU;MCq&1)+|mTHc6cr56s0ICRj# z5kvEz;tchi%FyZg`O?&BHiyd#@0!f=fQwTaph*J-3bczTfx)7eOM0qUCtdai_L2c* zI#U2}P@%K^gTSUZT^6dSQJy}9y{*w8ivjZ$g=b<4_;aacE)Eft-?|v6XH)~tOii2H Mp=}do&<&Ko0eB8#f&c&j literal 0 HcmV?d00001 diff --git a/Enumeration/target/classes/com/crow/EnumCoin$2.class b/Enumeration/target/classes/com/crow/EnumCoin$2.class new file mode 100644 index 0000000000000000000000000000000000000000..a7d491dcf3bfb31789f82e8192d81ccfd3678ff7 GIT binary patch literal 552 zcmZvY!A`^FQZvr5Hx!bO zR?8_59^9! zj?rYOZYj=CPN@b?7#eLSUA@&G#G^3ot}Xk1Y?Ec0p$@kc>f@Y-tJAQ746Q73AR{^r zNRJictjRvW-Vz{Bdkg?&6lkxn5foukMled)rF;4?_BTe|BnR|&WL}BM;NPX1xR^xH b{l-Nj@0hBfny7JeJG3gKX%s>4kJj-Q?73>Q literal 0 HcmV?d00001 diff --git a/Enumeration/target/classes/com/crow/EnumCoin.class b/Enumeration/target/classes/com/crow/EnumCoin.class new file mode 100644 index 0000000000000000000000000000000000000000..afd13bf87e4f6f294f84ad0d8546d5186deba6bc GIT binary patch literal 878 zcmZuwZEw<06n<_gZ7D@I#@@u2%^?En5dCDfmuBhBB4BlW-woSCdpvf>0;$M87Z6&cIf$D^n!l1TRWv`2k%^ge9!aUc4KJ!=Zz%FYKF_o$L=%|SSMncpzUgRF`c|wH{ z*r0brPoXvIGbr`a52U`)Q?SYP23f#2p+dflEVk%vBxtfqF6PBm_$Y7_r8(zwVg%3f z_3uzW!ziS`AYIVDGL#T&@$ptnXeH2uP!+g^+mO18xHG4F#VjdAtCwaF*YXk;J!aWS z5dURqxJwc#Lcz}fcF*xUc0CG&-#H$(a)OR3 zo|9(KWy|G3NR4N}%To9RZq(%t~A`t2Uaz5}{?{DUM7$!*dfa@KVPs6R+`xVeJNShSf=< zTI-U#(d;utff&|K%9W4x%2Yx9dl+$##E=6j%Z(N%r2T=m7SZmw;}Q9k)9-V?&2Uhh zv)UV>F;OZ^bCTzbe^c1S(zI&h#ik=U(uiS$o=muml_NohvFV|RPG61KBVxIELp4!= zNnfe@CBT$KWLL?v>11>+>|KNX7^c_AriMWsS-P8}2Uy1jc^Tx8r-&;4ge1WMyH`k5 zuaNu&?fe=G*;EXDKSnx6hHf#87>g6^WvWs*8Vu}Uao8h2!oenPQBI@3(QRx|7lu3J HCvf*4XOqg8 literal 0 HcmV?d00001 diff --git a/Generic/Generic.iml b/Generic/Generic.iml new file mode 100644 index 0000000..b1562b6 --- /dev/null +++ b/Generic/Generic.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Generic/pom.xml b/Generic/pom.xml new file mode 100644 index 0000000..5c9204e --- /dev/null +++ b/Generic/pom.xml @@ -0,0 +1,28 @@ + + + Basic-Java + com.crow + 1.0-SNAPSHOT + + 4.0.0 + + Generic + jar + + Generic + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + diff --git a/Basic-java/src/com/crow/Generic/GenericTest.java b/Generic/src/main/java/com/crow/GenericTest.java similarity index 85% rename from Basic-java/src/com/crow/Generic/GenericTest.java rename to Generic/src/main/java/com/crow/GenericTest.java index 5fbab0c..3f1812f 100644 --- a/Basic-java/src/com/crow/Generic/GenericTest.java +++ b/Generic/src/main/java/com/crow/GenericTest.java @@ -1,16 +1,21 @@ -package com.crow.Generic; +package com.crow; /** * Created by CrowHawk on 17/2/16. */ -import java.lang.reflect.*; -import java.util.*; +import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; public class GenericTest { public static void main(String[] args) throws Exception{ - HashMap hashMap = new HashMap<>(); + HashMap hashMap = new HashMap(); hashMap.put("Tom", 1); hashMap.put("Jerry", 2); hashMap.put("Nick", 3); diff --git a/NIO/NIO.iml b/NIO/NIO.iml new file mode 100644 index 0000000..b1562b6 --- /dev/null +++ b/NIO/NIO.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/NIO/pom.xml b/NIO/pom.xml new file mode 100644 index 0000000..32ca5da --- /dev/null +++ b/NIO/pom.xml @@ -0,0 +1,28 @@ + + + Basic-Java + com.crow + 1.0-SNAPSHOT + + 4.0.0 + + NIO + jar + + NIO + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + diff --git a/NIO/src/main/java/com/crow/CopyFile.java b/NIO/src/main/java/com/crow/CopyFile.java new file mode 100644 index 0000000..f6f8266 --- /dev/null +++ b/NIO/src/main/java/com/crow/CopyFile.java @@ -0,0 +1,43 @@ +package com.crow; + +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.nio.ByteBuffer; +import java.nio.channels.FileChannel; + +/** + * Created by CrowHawk on 17/9/4. + */ +public class CopyFile { + public static void main(String[] args) throws Exception { + if (args.length<2) { + System.err.println( "Usage: java CopyFile infile outfile" ); + System.exit( 1 ); + } + + String infile = args[0]; + String outfile = args[1]; + + FileInputStream fin = new FileInputStream( infile ); + FileOutputStream fout = new FileOutputStream( outfile ); + + FileChannel fcin = fin.getChannel(); + FileChannel fcout = fout.getChannel(); + + ByteBuffer buffer = ByteBuffer.allocate( 1024 ); + + while (true) { + buffer.clear(); + + int r = fcin.read(buffer); + + if (r == -1) { + break; + } + + buffer.flip(); + + fcout.write(buffer); + } + } +} diff --git a/NIO/src/main/java/com/crow/CreateArrayBuffer.java b/NIO/src/main/java/com/crow/CreateArrayBuffer.java new file mode 100644 index 0000000..886e3e6 --- /dev/null +++ b/NIO/src/main/java/com/crow/CreateArrayBuffer.java @@ -0,0 +1,24 @@ +package com.crow; + +import java.nio.ByteBuffer; + +/** + * Created by CrowHawk on 17/9/4. + */ +public class CreateArrayBuffer { + static public void main( String args[] ) throws Exception { + byte array[] = new byte[1024]; + + ByteBuffer buffer = ByteBuffer.wrap( array ); + + buffer.put( (byte)'a' ); + buffer.put( (byte)'b' ); + buffer.put( (byte)'c' ); + + buffer.flip(); + + System.out.println( (char)buffer.get() ); + System.out.println( (char)buffer.get() ); + System.out.println( (char)buffer.get() ); + } +} diff --git a/NIO/src/main/java/com/crow/CreateBuffer.java b/NIO/src/main/java/com/crow/CreateBuffer.java new file mode 100644 index 0000000..0fe8def --- /dev/null +++ b/NIO/src/main/java/com/crow/CreateBuffer.java @@ -0,0 +1,22 @@ +package com.crow; + +import java.nio.ByteBuffer; + +/** + * Created by CrowHawk on 17/9/4. + */ +public class CreateBuffer { + public static void main( String args[] ) throws Exception { + ByteBuffer buffer = ByteBuffer.allocate( 1024 ); + + buffer.put( (byte)'a' ); + buffer.put( (byte)'b' ); + buffer.put( (byte)'c' ); + + buffer.flip(); + + System.out.println( (char)buffer.get() ); + System.out.println( (char)buffer.get() ); + System.out.println( (char)buffer.get() ); + } +} diff --git a/NIO/src/main/java/com/crow/MultiPortEcho.java b/NIO/src/main/java/com/crow/MultiPortEcho.java new file mode 100644 index 0000000..81479ee --- /dev/null +++ b/NIO/src/main/java/com/crow/MultiPortEcho.java @@ -0,0 +1,108 @@ +package com.crow; + +import java.io.IOException; +import java.net.InetSocketAddress; +import java.net.ServerSocket; +import java.nio.ByteBuffer; +import java.nio.channels.SelectionKey; +import java.nio.channels.Selector; +import java.nio.channels.ServerSocketChannel; +import java.nio.channels.SocketChannel; +import java.util.Iterator; +import java.util.Set; + +/** + * Created by CrowHawk on 17/9/4. + */ +public class MultiPortEcho { + private int ports[]; + private ByteBuffer echoBuffer = ByteBuffer.allocate( 1024 ); + + public MultiPortEcho( int ports[] ) throws IOException { + this.ports = ports; + + go(); + } + + private void go() throws IOException { + + Selector selector = Selector.open(); + + // Open a listener on each port, and register each one + // with the selector + for (int i=0; i < ports.length; i++) { + ServerSocketChannel ssc = ServerSocketChannel.open(); + ssc.configureBlocking(false); + ServerSocket ss = ssc.socket(); + InetSocketAddress address = new InetSocketAddress(ports[i]); + ss.bind(address); + + //将新打开的 ServerSocketChannels 注册到 Selector上,指定监听accept事件 + SelectionKey key = ssc.register(selector, SelectionKey.OP_ACCEPT); + System.out.println("Going to listen on " + ports[i]); + } + + while (true) { + int num = selector.select();//返回该选择器中对I/O事件准备就绪的channel对应的key的数量 + Set selectedKeys = selector.selectedKeys();//返回key的集合 + Iterator it = selectedKeys.iterator(); + while (it.hasNext()) {//遍历key集合,集合中的元素为SelectionKey类型 + SelectionKey key = (SelectionKey) it.next(); + if ((key.readyOps() & SelectionKey.OP_ACCEPT) + == SelectionKey.OP_ACCEPT) {//检查发生了什么类型的事件 + // Accept the new connection + ServerSocketChannel ssc = (ServerSocketChannel)key.channel(); + SocketChannel sc = ssc.accept(); + sc.configureBlocking( false ); + + // Add the new connection to the selector + SelectionKey newKey = sc.register( selector, SelectionKey.OP_READ );//监听read事件 + //Selector不会自己从已选择键集中移除SelectionKey实例。必须在处理完通道时自己移除。下次该通道变成就绪时,Selector会再次将其放入已选择键集中。 + it.remove(); + + System.out.println( "Got connection from "+sc ); + }else if ((key.readyOps() & SelectionKey.OP_READ) + == SelectionKey.OP_READ) { + // Read the data + SocketChannel sc = (SocketChannel)key.channel(); + + // Echo data + int bytesEchoed = 0; + while (true) { + echoBuffer.clear(); + int r = sc.read( echoBuffer ); + + if (r<=0) { + break; + } + echoBuffer.flip(); + + sc.write( echoBuffer ); + bytesEchoed += r; + } + + System.out.println( "Echoed "+bytesEchoed+" from "+sc ); + + it.remove(); + } + } + } + } + + public static void main( String args[] ) throws Exception { + if (args.length<=0) { + System.err.println( "Usage: java MultiPortEcho port [port port ...]" ); + System.exit( 1 ); + } + + int ports[] = new int[args.length]; + + for (int i=0; i 0; i++) { + System.out.println("Character" + i + ": " + (char)buffer.get()); + } + fin.close(); + } +} diff --git a/NIO/src/main/java/com/crow/ScatterGather.java b/NIO/src/main/java/com/crow/ScatterGather.java new file mode 100644 index 0000000..a911dd6 --- /dev/null +++ b/NIO/src/main/java/com/crow/ScatterGather.java @@ -0,0 +1,77 @@ +package com.crow; + +import java.net.InetSocketAddress; +import java.nio.ByteBuffer; +import java.nio.channels.ServerSocketChannel; +import java.nio.channels.SocketChannel; + +/** + * Created by CrowHawk on 17/9/4. + */ +public class ScatterGather { + static private final int firstHeaderLength = 2; + static private final int secondHeaderLength = 4; + static private final int bodyLength = 6; + + static public void main( String args[] ) throws Exception { + if (args.length!=1) { + System.err.println( "Usage: java UseScatterGather port" ); + System.exit( 1 ); + } + + int port = Integer.parseInt( args[0] ); + + ServerSocketChannel ssc = ServerSocketChannel.open(); + InetSocketAddress address = new InetSocketAddress( port ); + ssc.socket().bind( address ); + + int messageLength = + firstHeaderLength + secondHeaderLength + bodyLength; + + ByteBuffer buffers[] = new ByteBuffer[3]; + buffers[0] = ByteBuffer.allocate( firstHeaderLength ); + buffers[1] = ByteBuffer.allocate( secondHeaderLength ); + buffers[2] = ByteBuffer.allocate( bodyLength ); + + SocketChannel sc = ssc.accept(); + + while (true) { + + // Scatter-read into buffers + int bytesRead = 0; + while (bytesRead < messageLength) { + long r = sc.read( buffers ); + bytesRead += r; + + System.out.println( "r "+r ); + for (int i=0; i < buffers.length; ++i) { + ByteBuffer bb = buffers[i]; + System.out.println( "b " + i + " " + bb.position() + " " + bb.limit() ); + } + } + + // Process message here + + // Flip buffers + for (int i=0; iI={1Az{H<`2aqlAJei&3Me69FU_2D=FC3(T%`B^z1;!u1J(=-;rl*HvpHNa@FRXQ zs9e9}klhf7MSD2dA)uBhdzfor&~q+gVDLq}D|yg>Gf<2m6qfpl?tML?VP zpGkp%y5q^kUVB{z53O~VmZ7?DTkeV#I7;6&YT<^{6&SADe!FZ3{)_Uw-`TwFxN?qA zZOicl#)?nt&#gbLvTJ#*aw7~JuQjJaiGWXyepb*@AYX7JJ;!SjPQ^a}BB1-dFg{K< zRjhpM`rAEHJUpWvLhL_puesiP*;@j=f=do^-nr;C!qQEYq|j zwCsAX*_2FVG`UjU3}rPk)6ux~(w3dj@x88&o75YAFR-PeC(!?~TIW@6CWbMh_}=5anVYzWMIB2f z?qk`+12l9zH1P;4CRWif@fhsa;DII!9El*K&MvJ#mo^JLoR~i4zR$6-*$riz11E!| za3p=7laaJ5hS_gs!#m2!WsgRSam7EMDowt0$U-aD)QlM|8SZvXV6r%!bm=RNjl-(W zCv6nSS+2|R581PE0w*YmlNt)!l@?PP-W%uBBpi$C^0k>FW6tR_h5tqLY4xHsU8ln^ zF9Ii&n8YAI2I`jrV`7BsD77+o!97#jhWIBs9^;ygjE8WPvKc#I9C>Pen7}s#;bl=m znmXW?b~1ls;5AZ1=`Cp58^Wb$>m_aW-aBO1&Td0re23iHxoz}Sw3#g!l}ujS!l6ob zP{SLT6+N$Sp?@`>QTySGxzSweFJxa~MCk*o`K;QHtiJmH--P2rlu$pp9_D|5+7QN= z+61{xQJNv+3*=lO-ztvd4hmStNzUjLp5QcoM-dyC#vdp}dH%*+mMMLUWBe8}E8aQ5 zeGDtSIms$aaM({$N)e&P=R4*x$?;|wt~j5tf&BAHc*UBX%DI7cLn7&Cm% IQ%<4$0j`lvy8r+H literal 0 HcmV?d00001 diff --git a/NIO/target/classes/com/crow/CreateArrayBuffer.class b/NIO/target/classes/com/crow/CreateArrayBuffer.class new file mode 100644 index 0000000000000000000000000000000000000000..998c84c6f6a015cfb23e447c9d55b37b52ae5f92 GIT binary patch literal 920 zcmZ`%-EI<55dID<_g*k8)TJw4kNR!lzvJy5c`|j+;k_pJr8*xwwcvvs zGOX4euWviPcVyRm!2_}D`+Qs-bvnYY5N4lCmmz1h>WBOzw|m^}+Ks@MZnqNF zvKNFIVq9S{L|RoM+YT`qmZnIq^z7<55T~V#y-$u91k!VdI*JTN!yEaI*q5q>+<)XY z6(17@QaVZ|Hc&QkADbp@Z0XoG@c<7^Ji=ogPfR?;GlrG@)3MZhhX0B6i zC*Je)X;4Q#A28&tR<$^%!RTN_pv%_W1g+DPgpsw*BAjgE48O*B7>GWt-BWnpG<{v4#XaKJ`UF^GAxLNhg~$BONP! z2m2a^FOiIg&IB%#ZB7%gfHa+wSVV?E)a5UvqoiLhYWS6?Z~Q>yRXNQkh#r*F?WuA? zHGy{U4YBeB@y`?J7n`&4C1MEr<5VU^Br;SyPvr|_t>X%|u!IV7*vHk7Vqr=HS&Aw0 byA;n6?G$z>W0`2?$*+-Th5l<~N3i-2OAX06 literal 0 HcmV?d00001 diff --git a/NIO/target/classes/com/crow/CreateBuffer.class b/NIO/target/classes/com/crow/CreateBuffer.class new file mode 100644 index 0000000000000000000000000000000000000000..c6ac6dbdc5606d6d9d17b90d009d8cfbe996b78a GIT binary patch literal 877 zcmZ`%%Wl&^6g`u;apJmd(nlJgJi?CEt7J%$oF- zHgE@bb==djEs!~KeK&e8khUr<0j(aqR{|>y*H^EGy|xP9%C<*jwGlYdYst`!*XN)X zeQ*Z?n++%E*-jXIvg@Iek*W1$?yN3y#47)6_ zHfNjC+DRFKjqzdM4eZ+4Om*YMXGirTH}D5K?h6>rU>G{;r5g(_%u3md*-aQ&)M1&Z zV8=uiyCxoBPls*dA@)r?!ebpzOgzOilFq%8Kz@3W*X>i~M3g^;{wtcG7exzXrRTAe z5fzrK7PB$60Dtz0yJ%S-!FOOM#8YBCW}lO)uydc78y7OSYG2GYOc* zGGlX`fEDDq%AtT&7KsmkrBBh<3mSeR)u`s>2bYqpb*P=`UC;gQIp_OszW@624Zu+d9b1soa3qPNI$}5`o8vl8;G~XI zI4wtKWOFu!bC}d{UdIOHlDHuIi?X?t#AS)NA}4v-OzF6aYckTbh8Ydl6(r8vt{q%d z5YLV-C{U-ovQUsN*shpsR7=9YXOKP=yO=jn#61J|v7lkmzymD(joaZ^zF|9MNk2tNzG(%*H}DXTWb>FNoZD^S z37*R7GXu|IYA6}7a$qGiYqmjA) z$wMo=OjP8)f~4s&*_FQHRygStYKf!BIuO!{A$9Y6+arQl!g3bdM3;_$WgSdLd07{MUFLh=^_ zO~nw~ZJg!UE9`s5R-t?hx3{xRgo`?MaBQ>y*oj@7r7(=$3?dKzL>xWrpL|7ZDHC6X zS{QGl=T@JJ&q&N2nrK2>WRqNspHkVU-s8w8=wGp6X%$9hV-uSO)F#rIUXHlm_pXUd z6Pugpf2%4Ve*a*!fr!)?^pK8@jYwk?6{ShAm)iO;jtu76KR`boV<04cg5>t`t2u%_ qP$f<5ppK{}UX?aQF`c#$+!5 literal 0 HcmV?d00001 diff --git a/NIO/target/classes/com/crow/ScatterGather.class b/NIO/target/classes/com/crow/ScatterGather.class new file mode 100644 index 0000000000000000000000000000000000000000..18fc4db31adf6e47290d31b2b5839595e4115256 GIT binary patch literal 2630 zcmaJ@No*5W82(;7_Dm*|W&xX+gc2xA5+E+2O=#E?2qc8nkQC^`*qI~~9FIGm1k#0; z7FxP*bWv3aiAyfMl!J*tMe4QJo+?%95l);cRjO3z_r^}_gtQ00?ccut|G)RfzdXEs z7rZnDp22;)nIV9yUq`{K&u!a$7I4TEQ4r9{#oLr?;j0@BZ+iuo7V3|Xf z+i#^uyiozsD^S_(q_dux_6E$r1N>SsXVW-G?a>Z>l z@Bu!Q!$$@_#wU_L{@JG_2^XK?a|2(<;Y(aI@RfA>HLeL%7o8qSj9E!CA`i-sGgsz$ zit(weXYuLw#;$%KksJ#G3k?$N-6d%+>~#0NkTsH73+dc6iQRC zyaqKze7$MU8j4dI3UNpNs<0IV19* z^s+Gda6bM50plg?H1BDBA$Q53`S(WVteL44-xQCJOC76FL^kgY2$@NF2Lzs)!@*(~ z(_L_7RxVPJQWauj$qQEvTvdenS>UO8)y;ZEI0>SZbAI$ zyV%Gv}M#HLL^)6D%VkU6J@o5928}S?gDKy{5Z`( zJ#+`!srp+eKfEyqeNzq<)keD#`U#bt!DuiLoWT?EXi!n}bFexj7gVk43g(bC1a|lPY93nX^WB5S39@eA5yEm{m8Vu`g zofRdzb<_>(IYeuha}}+~p}us}z)jxEWnD}^x;_2qQlMQ6YreY(-Dz!|<SjTk@TU3iDu!Lg-QPg1tN7?OGG@uPDv6cMTO>P`u_m7bmgY5cg_T6Ob z#;}p!jaI(FF?`F0US~^x<@z^l!SA%Zhv)DBo%oaMzp)elV3!DCx2VD%5kZ%TVxL%p z9EKzk^H0|UVwci#{DFF3s?oFR zOLh9pODjY}L8{|4qj%7YN+d~Ql3qwVqU>ZXqM{GmC>2;CdaxZkNY8a*2XXJ>{b(b? h-IOZWO5c0Xg&+onfo|+&qC{so2IetrM| literal 0 HcmV?d00001 diff --git a/NIO/target/classes/com/crow/SliceBuffer.class b/NIO/target/classes/com/crow/SliceBuffer.class new file mode 100644 index 0000000000000000000000000000000000000000..42f718d216a57469c6266b19768535131a77094c GIT binary patch literal 1197 zcmZ`(+fvg|6kTc3rj#hiFOX_z`}B{(-tq0BdKUGiRT3_I0hjPx}4$*KYuBU_F8kT#4W+5<-j#F)l<> zh?Ef5gqRRQ7vg#w!)}Vxtq5-8j*3YYcO`^o?6U2pCCG`f4GGG;`^u8gk+aLzYQ0pn zs?Us~LrquCH4SIOsM_Lwq*T0ZyC$JGXSyZbth#UXyknbIroOppRi~M)WY}fe6EAW* z#%n`&jPjPA_o{YzYg$y3Y_2R-6yycY0*zBA$FLoY`c19*K1Y_)RDDp%?()St+l8c}g;wrCT9x8^;bU(m5jHk0%vPRk*0 zS+pw*=lBK^*;9*Y+eYoFCEf#v??Zgv(wO{i&9h20xB~Ujh&kbPJ{FHp#xhELP<*7U zbJ)CAqXe}gTph9za5gx#v;0WJF94Q8CuJ9JI(LbCaQri*kG{E^GUO}6=;2vAbU+Nf zytSbZ{Y=7OsTVSW)V+&Fz95j3X9trF$R7|*4(>Og6!rqr!JnVWPy@k2GO9KZD$qe) zk<;;%?>L-_HxQmwVoJ1qdw)_%#bZhXZG}CVfj^S6A1HDjg+|^Z`U&mSXbqe>`17lY zc#)KV2$8pwo<@}Ih?DXNZ{tL(lgku2%#pJ@56xGwV?!02DdfBt;{ literal 0 HcmV?d00001 diff --git a/NIO/target/classes/com/crow/TypesInByteBuffer.class b/NIO/target/classes/com/crow/TypesInByteBuffer.class new file mode 100644 index 0000000000000000000000000000000000000000..be44831305769e3a58e7e614673b00c4bc87aecd GIT binary patch literal 1082 zcmZ`&+j7!S6kUf#0%=<44YAg0t5zs&W4%-@wNju}lwM}az=KbRn9_7Y!i1pmA%2KH zM8^j|z+ZC4aUW8o9VIi_XPtfaWv%R!pTEEV0I-fD1(Ud=;4YSgxhG6YMmn5}F8rz# zSChiAEKDYf6|4%hra;4efz}0jAkagB9?5ttV}l{QW!k2<%`lQmR~e*&^Uh$1l}+0? z=rrqwTj6z!JdW_#^Fgb0TSmKN=ewSf@0^?%ZkB2` zxoI;bQg6#={5{t!Za1`J&o%8vw%3!p4XQHrpJU=z@0DSg36gEo(Job2c0cMy%QGFj zE#nD;a_n?m-Pkh)>%>2N)&vC=Q<#?VRK+uFs>lknh35?81A_b9J5{lb7bt}}Uk?w)(uav&`vRZ}+w=9~2 zN79n1QhLZI3AZ|4$)?gWfx;(bNszq&pFA7y(7PcBQ`B%Ta>9$g$||NF-fNwhA| KyGS^M+kXJN?(Tp9 literal 0 HcmV?d00001 diff --git a/NIO/target/classes/com/crow/UseCharsets.class b/NIO/target/classes/com/crow/UseCharsets.class new file mode 100644 index 0000000000000000000000000000000000000000..a948d2898ccf5a82c0021eb2caa322025bf110a9 GIT binary patch literal 2205 zcmah~YgZdp6x{T`v6z z{uliaTy`ygfIrIRzL_)`Fi_TF?rWcY_Br>Qn}7cO>u&&ac%|VTJWSy81inzQs3C?W z`B_%6lEA746>AB6DaWspSjUEjN603ysbLG-^7FO)e4}9pyBhZJSOWGX{)vijRU9aY zKd>D;c&MO#Vsc+WY}w5V1wC2Y5nGi~PI!A}uE?EK*0s#yzUkR=UEhoaN4BqEFl)J` zwB@-c>BqiUJ~BOD1pWfqN~Z1beBx>L*nDZGi>6aZ?*^Xj6c%dUOs_!uz81#{lD1Q> z1Z#Ha{eSifG`A8o5S=x2Ryc*=NP)7!fNbYb!S&Fy?WT83C-0UPElc>mWR?2JKunBC zOTkD8b%?c&Ove#LKP`a_NG^!)ka!|PX)9)6Dj05BZJOn>$S=JL#8Tz(P`K8}jNY3?qqv z&c&duo?4Otsbt|4F!kg)h-1w}#BppLASV23&%r83m-6Qv8HaHCwbopkf zTog=UxYlb|%4AC-Y4udc_xM4<(3^vcH^zJQB=AQ@<(=qwhUY5iFb|>PP)7m0dTo7o zduD$A-u;<56}FCJywFiZNrwYhMOnvB@KpFZ0#tOo1c^?i;{H}etf049dE2>TVKI`v z=2jy$%<)8+5a9mcX8Zvks*Vp4i>B`jHezyTb#dj{_Ewe;!}!(i-mtO4Zd~b>jaV|v3fAgzzfIo4#zrL4 z7A+N)M~g;cXB@iTmRaI+HQOS~5!wsA#UM0CoYY%P!R-slZrz8{q~2#&n>3qoB$}!g ztb8!Sr$E7UBwvwsj0AD6lP_g%D2$8Rn{b{v!VzJP_~WB@;@JUHI&_JkbwaG7>kEux zkUv=RuMNb*;P*OLX^slVj=N`2ey<%5^Bb>i_TpX6^$>s?xXD!#BY2M_G**s@>*3z7 zskUsYee*S92UBP0s3N}f8tTDRDshHnrbEuBQ<|K|4W4#pR3k2jgrWWcJvmxMS0T~+jDx{ZXa2r&4akhfae(UJchBtm>w~f9iAL8k{oW~1@6Gd`+RH0@e3wvQU8W+85t9Ii(@-} z#%-cl1VoK-)<*UsZN_<`4)A*39PO2Hh$GFFQ=cwQle2OkA>!baBYROPVjQ$ts`2pu`_zV_DjeG0l%OUw6 DQc*O< literal 0 HcmV?d00001 diff --git a/NIO/target/classes/com/crow/UseFileLocks.class b/NIO/target/classes/com/crow/UseFileLocks.class new file mode 100644 index 0000000000000000000000000000000000000000..9d3398cba5c724e8fc0d27b63e440f52a07397c9 GIT binary patch literal 1472 zcmZ`(Yf}?R6g`~>6UJeIkSNAi@ELp%-@4$UEWW^iN+OEyX3~by$qY3!S@aj}XZHhI zTICP$KloRyJw1sM%aE!}_dRp&z32A5Jzu|n`U2n#q=^D98n~3fot5#8q4~Fq0--|I8nooQc0No5A%AZgj96A5GlEEd#eRm@_etI~i1Tv;_l;0_iZ4 zK_npN1O{e(kERzbOSh$xIDISq6@_J76kWb3%b#729u??ZDqCKM2)L$5kZ138xsYDIHH>XX#1hwfskx zUFkK-)hKYh##Ee61`P%n>G7J10{Kdy(Drov@{;uGesjjQRT%0djGuUA3mj-OJW}j6 z>3PZx%liFn+t4yx>Jiwx4Ng^emVxz0)#* zvC{Z9&D!c}mxk)QFj7s9jNhV?eA|^hxyMP1IB!Ze+2FRqUtxV@n&fg!^F6d`W&7gF zwwo_4c7Fcxc6vL*)g`vJMm=?XOou$w_i}t6;P7~;5yMCxRMEZjQ-uVLd zU@xdLw)WFL&}A3Nph6tv^AH(ju7Yd&_y>shvCCmT`(n_<5$>%v0Y`C+RzFG@XAtfD zjXeDcTKSB`N;a8IeL%W$ViSD}|G~&+Hqn1FhaEW#BsVd*sIehpdL8DPL-r$b{~|q^ z($G#qr#7)m??<_3oZau4`U0jfjXYCoVUzfS&q0bB!Z1d#8##*1;}k~8EReg8>^-=K zB5t$J3M;MA^ATCPnBz!k!CX&pwXlGb^yPgfdxEEtAnQEu(HSIhmW&kNo#X#J_X%A1 EAK8glqW}N^ literal 0 HcmV?d00001 diff --git a/NIO/target/classes/com/crow/UseFloatBuffer.class b/NIO/target/classes/com/crow/UseFloatBuffer.class new file mode 100644 index 0000000000000000000000000000000000000000..48776005344770a97164dca5597cb3416ed59a64 GIT binary patch literal 1040 zcmZ`%OHOZj= z+Ov*l->nvNc6n3eT=H~eeM`7oqU=cfk5dVDoC-rSYxzaPD*MlkhZWm&eG#lw^Le{G zO9hL<@fdpa$Jt%+Oc<{43dTlIcD%x@Y{>F-Ogavob;=jz0+sCiPdb6kg=MK+t(fQd zMq@i|?S*BR0>}3%Dy}eS8-BHH*`_0B=xjtcDFJbuK!=JMj;pxFaUF!Yt&a4L2zEH; zFwe1oMUEvbbF5%hMTTPyCdUojRI$!+3%411k68pmqF(b}Zr8Q~f>U=Lp=Rg`z5h(c z5ErgX3HXxXsiShS5$Ry!=JLBwr*u$uj6>bT^HE2KyL>yGX`DXB^$6^I8IW&`VY``jDg| z^6>{K^as`w+5sZj=zM>AAJKOh=zrCrc(1zo^D~?wOQCy&&RNnU82t@GAL0Q3 literal 0 HcmV?d00001 diff --git a/NIO/target/classes/com/crow/UseMappedFile.class b/NIO/target/classes/com/crow/UseMappedFile.class new file mode 100644 index 0000000000000000000000000000000000000000..d61c3b341e38d8b06aef28237cf2f530b5521096 GIT binary patch literal 282 zcmZvWJ#WG=5Qg6i`Jf>!r~_hUYZF&m-5 H^pIQtwBkFc literal 0 HcmV?d00001 diff --git a/NIO/target/classes/com/crow/WriteSomeBytes.class b/NIO/target/classes/com/crow/WriteSomeBytes.class new file mode 100644 index 0000000000000000000000000000000000000000..aaa911451300584704e76d6703edb9ad28ddbdb9 GIT binary patch literal 1254 zcmZ`&+fvg|6kVrHn>GXqV7Yh$ytZhmh$0H27IcQ0iVt+`bo3>Sr!`KRFik4>?w9!D zvpNIb#t-mM{0ViPmZ3O9CzHL;K4)d^z1KeZ_2=790P}ckU=UdyxfEs%#Bf!aYX zX1iIFt+HM7xHD1;9NT+lw_Ft;Y--UfHx!sGIYG1Fw1S;NrR7F)D`?8%+en7XBy8HQ zFEEyUUV3f6u?wE+}Dxq-sZV+d;8l)OM2FAmB(2fL7bt&AS@Ywa_({{Ao zjz}f#CKJW#j=)qG;S=J#vVC8AVF$a`4G2rt+V#3@31oUuRco=cO@Q%e*OA+i8~CA) z+XAT-$2*Y7*b3S$N2=tk^#4}pRCgvU3=2$jIz6ULfx(d4)RZ=J(Qc&hOD68%u8w6B zE4XLk1cpqk;=YLoc&MXjVh!si9x3ASJ~|6nJ#nAbUQ35+jrO(TxRU3#T-Pd=(;dmb-JM1dx<8%J1rAZi@v;1rbV)XFHAc zo3TJ*M_oe2-)rJX`W$at!tsJoVunAXt~%m; PX}e+$FuKerhAaO7SGyRq literal 0 HcmV?d00001 diff --git a/Proxy/Proxy.iml b/Proxy/Proxy.iml new file mode 100644 index 0000000..b1562b6 --- /dev/null +++ b/Proxy/Proxy.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Proxy/pom.xml b/Proxy/pom.xml new file mode 100644 index 0000000..5073b11 --- /dev/null +++ b/Proxy/pom.xml @@ -0,0 +1,28 @@ + + + Basic-Java + com.crow + 1.0-SNAPSHOT + + 4.0.0 + + Proxy + jar + + Proxy + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + diff --git a/Basic-java/src/com/crow/Proxy/Advice.java b/Proxy/src/main/java/com/crow/Advice.java similarity index 74% rename from Basic-java/src/com/crow/Proxy/Advice.java rename to Proxy/src/main/java/com/crow/Advice.java index 915827f..4383bbe 100644 --- a/Basic-java/src/com/crow/Proxy/Advice.java +++ b/Proxy/src/main/java/com/crow/Advice.java @@ -1,6 +1,6 @@ -package com.crow.Proxy; +package com.crow; -import java.lang.reflect.*; +import java.lang.reflect.Method; /** * Created by CrowHawk on 17/2/20. diff --git a/Basic-java/src/com/crow/Proxy/ImpAdvice.java b/Proxy/src/main/java/com/crow/ImpAdvice.java similarity index 95% rename from Basic-java/src/com/crow/Proxy/ImpAdvice.java rename to Proxy/src/main/java/com/crow/ImpAdvice.java index 380062e..7027aac 100644 --- a/Basic-java/src/com/crow/Proxy/ImpAdvice.java +++ b/Proxy/src/main/java/com/crow/ImpAdvice.java @@ -1,4 +1,4 @@ -package com.crow.Proxy; +package com.crow; import java.lang.reflect.Method; diff --git a/Basic-java/src/com/crow/Proxy/ProxyTest.java b/Proxy/src/main/java/com/crow/ProxyTest.java similarity index 88% rename from Basic-java/src/com/crow/Proxy/ProxyTest.java rename to Proxy/src/main/java/com/crow/ProxyTest.java index 562d3c7..d69bdf1 100644 --- a/Basic-java/src/com/crow/Proxy/ProxyTest.java +++ b/Proxy/src/main/java/com/crow/ProxyTest.java @@ -1,7 +1,9 @@ -package com.crow.Proxy; +package com.crow; -import java.lang.reflect.*; -import java.util.*; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; +import java.util.ArrayList; import java.util.Collection; /** diff --git a/ReadAndShow.txt b/ReadAndShow.txt new file mode 100644 index 0000000..023431f --- /dev/null +++ b/ReadAndShow.txt @@ -0,0 +1 @@ +Read And Show. \ No newline at end of file diff --git a/Reflect/Reflect.iml b/Reflect/Reflect.iml new file mode 100644 index 0000000..b1562b6 --- /dev/null +++ b/Reflect/Reflect.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Reflect/pom.xml b/Reflect/pom.xml new file mode 100644 index 0000000..40d57c3 --- /dev/null +++ b/Reflect/pom.xml @@ -0,0 +1,28 @@ + + + Basic-Java + com.crow + 1.0-SNAPSHOT + + 4.0.0 + + Reflect + jar + + Reflect + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + diff --git a/Basic-java/src/com/crow/Reflect/FieldReflect.java b/Reflect/src/main/java/com/crow/FieldReflect.java similarity index 94% rename from Basic-java/src/com/crow/Reflect/FieldReflect.java rename to Reflect/src/main/java/com/crow/FieldReflect.java index a01edd1..25263e9 100644 --- a/Basic-java/src/com/crow/Reflect/FieldReflect.java +++ b/Reflect/src/main/java/com/crow/FieldReflect.java @@ -1,4 +1,4 @@ -package com.crow.Reflect; +package com.crow; /** diff --git a/Basic-java/src/com/crow/Reflect/ReflectTest.java b/Reflect/src/main/java/com/crow/ReflectTest.java similarity index 94% rename from Basic-java/src/com/crow/Reflect/ReflectTest.java rename to Reflect/src/main/java/com/crow/ReflectTest.java index d960b36..cb51a44 100644 --- a/Basic-java/src/com/crow/Reflect/ReflectTest.java +++ b/Reflect/src/main/java/com/crow/ReflectTest.java @@ -1,7 +1,8 @@ -package com.crow.Reflect; +package com.crow; import java.io.IOException; -import java.lang.reflect.*; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; /** diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..d8fff45 --- /dev/null +++ b/pom.xml @@ -0,0 +1,33 @@ + + 4.0.0 + + com.crow + Basic-Java + 1.0-SNAPSHOT + + Enumeration + Generic + Proxy + Reflect + JNA + NIO + + pom + + Basic-Java + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + +