* 生产者-消费者模型的阻塞队列实现
*/
@@ -67,7 +67,8 @@ public void run() {
while (true) {
Product product = new Product("MAC");
try {
- buffer.put(product);
+ buffer.put(product);//
+ System.out.println("生产者[" + Thread.currentThread().getName() + "]--------产品:" + buffer.size());
System.out.println("生产者[" + Thread.currentThread().getName() + "]生产了一个产品:" + product);
} catch (InterruptedException e) {
e.printStackTrace();
@@ -87,7 +88,8 @@ public Consumer(BlockingQueue
* 同步代码块
*/
diff --git a/concurrent/src/main/java/synchronizeds/SynchronizedMethodTest.java b/concurrent/src/main/java/synchronizeds/SynchronizedMethodTest.java
index c6f77a9..8ee449e 100644
--- a/concurrent/src/main/java/synchronizeds/SynchronizedMethodTest.java
+++ b/concurrent/src/main/java/synchronizeds/SynchronizedMethodTest.java
@@ -1,7 +1,7 @@
package synchronizeds;
/**
- * Created by 李恒名 on 2017/6/14.
+ * Created by on 2017/6/14.
*
* 同步成员方法
*/
diff --git a/concurrent/src/main/java/synchronizeds/SynchronizedStaticMethodTest.java b/concurrent/src/main/java/synchronizeds/SynchronizedStaticMethodTest.java
index c7a3220..6e89681 100644
--- a/concurrent/src/main/java/synchronizeds/SynchronizedStaticMethodTest.java
+++ b/concurrent/src/main/java/synchronizeds/SynchronizedStaticMethodTest.java
@@ -1,7 +1,7 @@
package synchronizeds;
/**
- * Created by 李恒名 on 2017/6/14.
+ * Created by on 2017/6/14.
*
* 同步静态方法
*/
diff --git a/concurrent/src/main/java/synchronizeds/SynchronizedTest.java b/concurrent/src/main/java/synchronizeds/SynchronizedTest.java
index 235db28..fb57b32 100644
--- a/concurrent/src/main/java/synchronizeds/SynchronizedTest.java
+++ b/concurrent/src/main/java/synchronizeds/SynchronizedTest.java
@@ -1,7 +1,7 @@
package synchronizeds;
/**
- * Created by 李恒名 on 2017/6/14.
+ * Created by on 2017/6/14.
*/
public class SynchronizedTest {
diff --git a/concurrent/src/main/java/thread/DeadlockTest.java b/concurrent/src/main/java/thread/DeadlockTest.java
index 88e90ef..7918d72 100644
--- a/concurrent/src/main/java/thread/DeadlockTest.java
+++ b/concurrent/src/main/java/thread/DeadlockTest.java
@@ -3,7 +3,7 @@
import java.util.concurrent.TimeUnit;
/**
- * Created by 李恒名 on 2017/8/29.
+ * Created by on 2017/8/29.
*
* 死锁测试,线程1获得A锁(monitor)之后尝试获得B锁,线程2获得B锁后尝试获得A锁,线程1和线程2即产生死锁。
*/
diff --git a/concurrent/src/main/java/thread/HowToCreateThread.java b/concurrent/src/main/java/thread/HowToCreateThread.java
index 28493e6..2bd7e12 100644
--- a/concurrent/src/main/java/thread/HowToCreateThread.java
+++ b/concurrent/src/main/java/thread/HowToCreateThread.java
@@ -3,7 +3,7 @@
import java.util.concurrent.*;
/**
- * Created by 李恒名 on 2017/6/8.
+ * Created by on 2017/6/8.
*/
public class HowToCreateThread {
@@ -41,7 +41,7 @@ public void run() {
public static void method3() {
//实现 java.util.concurrent.Callable
- class Task implements Callable {
+ class Task implements Callable {//线程组。。
@Override
public Object call() throws Exception {
@@ -51,7 +51,7 @@ public Object call() throws Exception {
}
}
- ExecutorService es = Executors.newFixedThreadPool(1);
+ ExecutorService es = Executors.newFixedThreadPool(1);//sigle 与 单线程的区别。
Future future = es.submit(new Task());
try {
System.out.println("Calculate Completed Sum:" + future.get());
diff --git a/concurrent/src/main/java/thread/InterruptTest.java b/concurrent/src/main/java/thread/InterruptTest.java
index 561e49a..7760d62 100644
--- a/concurrent/src/main/java/thread/InterruptTest.java
+++ b/concurrent/src/main/java/thread/InterruptTest.java
@@ -1,7 +1,7 @@
package thread;
/**
- * Created by 李恒名 on 2017/6/16.
+ * Created by on 2017/6/16.
*/
public class InterruptTest {
@@ -14,7 +14,7 @@ public static void main(String[] args) throws InterruptedException {
thread.start();
//中断该线程
- thread.interrupt();
+// thread.interrupt();//没什么效果?
}
}
diff --git a/concurrent/src/main/java/thread/JoinTest.java b/concurrent/src/main/java/thread/JoinTest.java
index 2a99aaa..1c1aa19 100644
--- a/concurrent/src/main/java/thread/JoinTest.java
+++ b/concurrent/src/main/java/thread/JoinTest.java
@@ -1,18 +1,25 @@
package thread;
+import java.util.concurrent.TimeUnit;
+
/**
- * Created by 李恒名 on 2017/6/16.
+ * Created by on 2017/6/16.
*/
public class JoinTest {
public static void main(String[] args) throws InterruptedException {
- Thread thread1 = new Thread(() -> System.out.println(Thread.currentThread().getName() + " Work End"));
+ Thread thread1 = new Thread(() -> System.out.println(Thread.currentThread().getName() + " Work End 0"));
thread1.start();
thread1.join();//合并到主线程,主线程将等待该子线程执行完毕才会执行
- Thread thread2 = new Thread(() -> System.out.println(Thread.currentThread().getName() + " Work End"));
+ Thread thread2 = new Thread(() -> {
+ System.out.println(Thread.currentThread().getName() + " Work End 1");
+ try {Thread.sleep(1000);}
+ catch (InterruptedException e) {}}
+ );
thread2.start();
- thread1.join();//合并到主线程,主线程将等待该子线程执行完毕才会执行
+// thread1.join();//合并到主线程,主线程将等待该子线程执行完毕才会执行
+ thread2.join();//合并到主线程,主线程将等待该子线程执行完毕才会执行
System.out.println("Main Thread Work End");
diff --git a/concurrent/src/main/java/thread/NotifyTest.java b/concurrent/src/main/java/thread/NotifyTest.java
index b5c61f5..7c0a522 100644
--- a/concurrent/src/main/java/thread/NotifyTest.java
+++ b/concurrent/src/main/java/thread/NotifyTest.java
@@ -1,12 +1,13 @@
package thread;
/**
- * Created by 李恒名 on 2017/6/16.
+ * Created by on 2017/6/16.
*/
public class NotifyTest {
- public synchronized void work() {
+ public synchronized void work() {//synchronized
System.out.println("Begin Work");
+ System.out.println("Begin time"+System.currentTimeMillis());
try {
//等待唤醒
wait();
@@ -14,6 +15,7 @@ public synchronized void work() {
e.printStackTrace();
}
System.out.println("Work End");
+ System.out.println("End time"+System.currentTimeMillis());
}
public synchronized void continueWork() {
@@ -26,6 +28,6 @@ public static void main(String[] args) throws InterruptedException {
//等待3000毫秒后唤醒,继续工作。
Thread.sleep(3000);
- test.continueWork();
+// test.continueWork();//注释调则 一直不唤醒。
}
}
diff --git a/concurrent/src/main/java/thread/TimedJoinTest.java b/concurrent/src/main/java/thread/TimedJoinTest.java
index edd1bff..72e017a 100644
--- a/concurrent/src/main/java/thread/TimedJoinTest.java
+++ b/concurrent/src/main/java/thread/TimedJoinTest.java
@@ -1,7 +1,7 @@
package thread;
/**
- * Created by 李恒名 on 2017/6/16.
+ * Created by on 2017/6/16.
*/
public class TimedJoinTest {
@@ -17,6 +17,7 @@ public static void main(String[] args) throws InterruptedException {
});
thread.start();
thread.join(100);//合并到主线程,主线程将等待该子线程执行完毕才会执行,只等待100毫秒,过时不在等。
+// thread.join();//合并到主线程,主线程将等待该子线程执行完毕才会执行,主线程一直等。
System.out.println("Main Thread Work End");
diff --git a/concurrent/src/main/java/thread/WaitTest.java b/concurrent/src/main/java/thread/WaitTest.java
index 01158d0..4c0eaa0 100644
--- a/concurrent/src/main/java/thread/WaitTest.java
+++ b/concurrent/src/main/java/thread/WaitTest.java
@@ -1,18 +1,20 @@
package thread;
/**
- * Created by 李恒名 on 2017/6/16.
+ * Created by on 2017/6/16.
*/
public class WaitTest {
public synchronized void work() {
System.out.println("Begin Work");
+ System.out.println("Begin time"+System.currentTimeMillis());
try {
//等待1000毫秒后,自动唤醒继续执行
wait(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
+ System.out.println("End time"+System.currentTimeMillis());
System.out.println("Work End");
}
diff --git a/concurrent/src/main/java/thread/YieldTest.java b/concurrent/src/main/java/thread/YieldTest.java
index 189d4e4..397a733 100644
--- a/concurrent/src/main/java/thread/YieldTest.java
+++ b/concurrent/src/main/java/thread/YieldTest.java
@@ -1,13 +1,17 @@
package thread;
/**
- * Created by 李恒名 on 2017/6/16.
+ * Created by on 2017/6/16.
*/
public class YieldTest {
public void work(){
for (int i = 0; i < 3; i++) {
System.out.println(Thread.currentThread().getName() + " Working");
+ try{Thread.sleep(1000);}
+ catch(Exception e){
+ e.printStackTrace();
+ }
Thread.yield();
}
}
@@ -17,6 +21,7 @@ public static void main(String[] args) {
YieldTest test = new YieldTest();
new Thread(() -> test.work()).start();
new Thread(() -> test.work()).start();
+ System.out.println(Thread.currentThread().getName() + " Working");
/**
输出:
diff --git a/concurrent/src/main/java/unsafe/CustomAtomicInteger.java b/concurrent/src/main/java/unsafe/CustomAtomicInteger.java
index f598261..6e51da3 100644
--- a/concurrent/src/main/java/unsafe/CustomAtomicInteger.java
+++ b/concurrent/src/main/java/unsafe/CustomAtomicInteger.java
@@ -7,7 +7,7 @@
import java.util.concurrent.CountDownLatch;
/**
- * Created by 李恒名 on 2017/6/20.
+ * Created by on 2017/6/20.
*/
public class CustomAtomicInteger {
private volatile int value;
diff --git a/concurrent/src/main/java/unsafe/PrivateConstructTestClass.java b/concurrent/src/main/java/unsafe/PrivateConstructTestClass.java
index 6fb0e1c..6f1accf 100644
--- a/concurrent/src/main/java/unsafe/PrivateConstructTestClass.java
+++ b/concurrent/src/main/java/unsafe/PrivateConstructTestClass.java
@@ -1,7 +1,7 @@
package unsafe;
/**
- * Created by 李恒名 on 2017/6/15.
+ * Created by on 2017/6/15.
*/
public class PrivateConstructTestClass {
diff --git a/concurrent/src/main/java/unsafe/TestClass.java b/concurrent/src/main/java/unsafe/TestClass.java
index 4bdc10c..6d44eba 100644
--- a/concurrent/src/main/java/unsafe/TestClass.java
+++ b/concurrent/src/main/java/unsafe/TestClass.java
@@ -1,7 +1,7 @@
package unsafe;
/**
- * Created by 李恒名 on 2017/6/21.
+ * Created by on 2017/6/21.
*/
public class TestClass {
private int value;// 没有初始化
diff --git a/concurrent/src/main/java/unsafe/UnsafeLock.java b/concurrent/src/main/java/unsafe/UnsafeLock.java
index 863824f..ec523c1 100644
--- a/concurrent/src/main/java/unsafe/UnsafeLock.java
+++ b/concurrent/src/main/java/unsafe/UnsafeLock.java
@@ -5,7 +5,7 @@
import java.lang.reflect.Constructor;
/**
- * Created by 李恒名 on 2017/6/21.
+ * Created by on 2017/6/21.
*/
public class UnsafeLock {
private Unsafe unsafe;
diff --git a/concurrent/src/main/java/unsafe/UnsafeLockTest.java b/concurrent/src/main/java/unsafe/UnsafeLockTest.java
index 1c79610..b031cc3 100644
--- a/concurrent/src/main/java/unsafe/UnsafeLockTest.java
+++ b/concurrent/src/main/java/unsafe/UnsafeLockTest.java
@@ -1,7 +1,7 @@
package unsafe;
/**
- * Created by 李恒名 on 2017/6/21.
+ * Created by on 2017/6/21.
*/
public class UnsafeLockTest {
diff --git a/concurrent/src/main/java/unsafe/UnsafeTest.java b/concurrent/src/main/java/unsafe/UnsafeTest.java
index d3e1ad1..41b3902 100644
--- a/concurrent/src/main/java/unsafe/UnsafeTest.java
+++ b/concurrent/src/main/java/unsafe/UnsafeTest.java
@@ -11,7 +11,7 @@
import java.lang.reflect.Method;
/**
- * Created by 李恒名 on 2017/6/20.
+ * Created by on 2017/6/20.
*/
public class UnsafeTest {
private Unsafe unsafe;
diff --git a/concurrent/src/main/java/volatiles/DBConnection.java b/concurrent/src/main/java/volatiles/DBConnection.java
new file mode 100644
index 0000000..5c80106
--- /dev/null
+++ b/concurrent/src/main/java/volatiles/DBConnection.java
@@ -0,0 +1,5 @@
+package volatiles;
+
+public class DBConnection {
+ //https://blog.csdn.net/gavin_dyson/article/details/70832185
+}
diff --git a/concurrent/src/main/java/volatiles/DataSourceEnum.java b/concurrent/src/main/java/volatiles/DataSourceEnum.java
new file mode 100644
index 0000000..2cc4bfd
--- /dev/null
+++ b/concurrent/src/main/java/volatiles/DataSourceEnum.java
@@ -0,0 +1,12 @@
+package volatiles;
+
+public enum DataSourceEnum {
+ DATASOURCE;
+ private DBConnection connection = null;
+ private DataSourceEnum() {
+ connection = new DBConnection();
+ }
+ public DBConnection getConnection() {
+ return connection;
+ }
+}
diff --git a/concurrent/src/main/java/volatiles/EHSSingleton.java b/concurrent/src/main/java/volatiles/EHSSingleton.java
new file mode 100644
index 0000000..fe2fe7d
--- /dev/null
+++ b/concurrent/src/main/java/volatiles/EHSSingleton.java
@@ -0,0 +1,22 @@
+package volatiles;
+
+public class EHSSingleton {
+
+ // 1.将构造函数私有化,不可以通过new的方式来创建对象
+ private EHSSingleton(){}
+
+ // 2.在类的内部创建自行实例
+ private static EHSSingleton instance = new EHSSingleton();///俄汉式 没有并发问题。
+
+ // 3.提供获取唯一实例的方法
+ public static EHSSingleton getInstance() {
+ return instance;
+ }
+}
+ //一上来就创建对象了,如果该实例从始至终都没被使用过,则会造成内存浪费。
+ //链接:https://www.jianshu.com/p/debb798ca9ef
+ //
+ //编写单例模式的代码其实很简单,就分了三步:
+ //将构造函数私有化
+ //在类的内部创建实例
+ //提供获取唯一实例的方法
\ No newline at end of file
diff --git a/concurrent/src/main/java/volatiles/EHSSingletonTest.java b/concurrent/src/main/java/volatiles/EHSSingletonTest.java
new file mode 100644
index 0000000..3c3c229
--- /dev/null
+++ b/concurrent/src/main/java/volatiles/EHSSingletonTest.java
@@ -0,0 +1,19 @@
+package volatiles;
+
+public class EHSSingletonTest {
+
+
+ public static void main(String[] args) {
+
+ for (int i = 0; i < 2000; i++) {
+ new Thread(() -> {
+ EHSSingleton instance = EHSSingleton.getInstance();
+ System.out.println(instance);
+ }).start();
+ }
+
+
+ }
+
+ //链接:https://www.jianshu.com/p/debb798ca9ef
+}
diff --git a/concurrent/src/main/java/volatiles/Singleton.java b/concurrent/src/main/java/volatiles/Singleton.java
index d5fa659..52c5a2b 100644
--- a/concurrent/src/main/java/volatiles/Singleton.java
+++ b/concurrent/src/main/java/volatiles/Singleton.java
@@ -1,25 +1,42 @@
package volatiles;
/**
- * Created by 李恒名 on 2017/6/15.
+ * Created by on 2017/6/15.
*/
public class Singleton {
- private volatile static Singleton instance;
+ private static Singleton instance;//volatile 此处是防止指令重排?没测试出来?懒汉式
private Singleton() {
- new AssertionError("don't support reflect.");
+ new AssertionError("don't support reflect.");//
}
public static Singleton getInstance() {
- if (instance == null) { // Single Checked
- synchronized (Singleton.class) {
- if (instance == null) { // Double checked
+ if (instance == null) { // Single Checked///提高性能
+ synchronized (Singleton.class) {///注释掉 有多线程问题。
+ if (instance == null) { // Double checked ///注释掉 有多线程问题。
instance = new Singleton();
}
}
}
return instance;
}
+
+ public static void main(String[] args) {
+ for (int i = 0; i <1000 ; i++) {
+ new Thread(()->{
+ try{ Thread.sleep(1000);}
+ catch(Exception e){
+ e.printStackTrace();
+ }
+ System.out.println(Singleton.getInstance().toString());
+ }).start();
+ }
+ }
+// System.out.println(Singleton.getInstance().toString());
+// System.out.println(Singleton.getInstance().toString());
+// System.out.println(Singleton.getInstance().toString());
+// System.out.println(Singleton.getInstance().toString());
+// System.out.println(Singleton.getInstance().toString());
}
diff --git a/concurrent/src/main/java/volatiles/SingletonLazy.java b/concurrent/src/main/java/volatiles/SingletonLazy.java
new file mode 100644
index 0000000..bba2ffa
--- /dev/null
+++ b/concurrent/src/main/java/volatiles/SingletonLazy.java
@@ -0,0 +1,23 @@
+package volatiles;
+
+
+public class SingletonLazy {
+
+ private SingletonLazy() {
+ }
+
+ // 使用内部类的方式来实现懒加载
+ private static class LazyHolder {///只有静态内部类 才可以有 静态成员变量。
+ // 创建单例对象
+ private static final SingletonLazy INSTANCE = new SingletonLazy();
+ }
+
+ // 获取对象
+ public static final SingletonLazy getInstance() {
+ return LazyHolder.INSTANCE;
+ }
+
+}
+
+ //链接:https://www.jianshu.com/p/debb798ca9ef
+
diff --git a/concurrent/src/main/java/volatiles/SingletonTest.java b/concurrent/src/main/java/volatiles/SingletonTest.java
new file mode 100644
index 0000000..308eba9
--- /dev/null
+++ b/concurrent/src/main/java/volatiles/SingletonTest.java
@@ -0,0 +1,49 @@
+package volatiles;
+
+public class SingletonTest {
+ public static void main(String[] args) {
+ /*for (int i = 0; i <200 ; i++) {
+ new Thread(()->{
+ try{ Thread.sleep(1000);}
+ catch(Exception e){
+ e.printStackTrace();
+ }
+ System.out.println(Singleton.getInstance().toString());
+ }).start();
+ }*/
+ /*
+ for (int i = 0; i <2000 ; i++) {
+ new Thread(()->{
+ try{ Thread.sleep(1000);}
+ catch(Exception e){
+ e.printStackTrace();
+ }
+ System.out.println(SingleEnum.INSTANCE.hashCode());
+ }).start();
+ }
+ */
+
+ /*
+ for (int i = 0; i <2000 ; i++) {
+ new Thread(()->{
+ try{ Thread.sleep(1000);}
+ catch(Exception e){
+ e.printStackTrace();
+ }
+ System.out.println(SingletonLazy.getInstance().toString());
+ }).start();//懒加载
+ }
+ */
+ for (int i = 0; i <2000 ; i++) {
+ new Thread(()->{
+ try{ Thread.sleep(1000);}
+ catch(Exception e){
+ e.printStackTrace();
+ }
+ DBConnection con1 = DataSourceEnum.DATASOURCE.getConnection();
+ DBConnection con2 = DataSourceEnum.DATASOURCE.getConnection();
+ System.out.println(con1 == con2);
+ }).start();//枚举形式
+ }
+ }
+}
diff --git a/concurrent/src/main/java/volatiles/VolatileTest.java b/concurrent/src/main/java/volatiles/VolatileTest.java
index b87909b..059436f 100644
--- a/concurrent/src/main/java/volatiles/VolatileTest.java
+++ b/concurrent/src/main/java/volatiles/VolatileTest.java
@@ -1,11 +1,11 @@
package volatiles;
/**
- * Created by 李恒名 on 2017/6/14.
+ * Created by on 2017/6/14.
*/
public class VolatileTest {
- private /*volatile*/ int sharedValue = 0;
+ private volatile int sharedValue = 0;/////volatile
public static void main(String[] args) throws InterruptedException {
VolatileTest test = new VolatileTest();
@@ -37,8 +37,9 @@ public void listener() {
int localValue = sharedValue;
while (sharedValue < 5) {
if (localValue != sharedValue) {
- System.out.println("Value Changed:" + sharedValue);
+ System.out.println("localValue Value before Change :" + localValue);
localValue = sharedValue;
+ System.out.println("localValue Value after Changed..:" + sharedValue);
}
}
}
diff --git a/container/pom.xml b/container/pom.xml
index cbc9689..c3b5ee6 100644
--- a/container/pom.xml
+++ b/container/pom.xml
@@ -4,7 +4,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
* 冒泡排序
*/
diff --git a/data-structure-algorithm/src/main/java/arithmetic/HeapSort.java b/data-structure-algorithm/src/main/java/arithmetic/HeapSort.java
index 454beb9..4698a39 100644
--- a/data-structure-algorithm/src/main/java/arithmetic/HeapSort.java
+++ b/data-structure-algorithm/src/main/java/arithmetic/HeapSort.java
@@ -3,7 +3,7 @@
import java.util.Arrays;
/**
- * Created by 李恒名 on 2017/6/15.
+ * Created by on 2017/6/15.
*
* 堆排序,对简单选择排序的优化。
* 1. 将序列构建成大顶堆。
diff --git a/data-structure-algorithm/src/main/java/arithmetic/InsertSort.java b/data-structure-algorithm/src/main/java/arithmetic/InsertSort.java
index 445e708..48a519d 100644
--- a/data-structure-algorithm/src/main/java/arithmetic/InsertSort.java
+++ b/data-structure-algorithm/src/main/java/arithmetic/InsertSort.java
@@ -3,7 +3,7 @@
import java.util.Arrays;
/**
- * Created by 李恒名 on 2017/6/15.
+ * Created by on 2017/6/15.
*/
public class InsertSort {
public static void sort(int[] arr) {
diff --git a/data-structure-algorithm/src/main/java/arithmetic/QuickSort.java b/data-structure-algorithm/src/main/java/arithmetic/QuickSort.java
index ba05c74..4367f40 100644
--- a/data-structure-algorithm/src/main/java/arithmetic/QuickSort.java
+++ b/data-structure-algorithm/src/main/java/arithmetic/QuickSort.java
@@ -3,7 +3,7 @@
import java.util.Arrays;
/**
- * Created by 李恒名 on 2017/6/15.
+ * Created by on 2017/6/15.
*/
public class QuickSort {
diff --git a/data-structure-algorithm/src/main/java/arithmetic/SelectSort.java b/data-structure-algorithm/src/main/java/arithmetic/SelectSort.java
index d652140..a04b36c 100644
--- a/data-structure-algorithm/src/main/java/arithmetic/SelectSort.java
+++ b/data-structure-algorithm/src/main/java/arithmetic/SelectSort.java
@@ -3,7 +3,7 @@
import java.util.Arrays;
/**
- * Created by 李恒名 on 2017/6/15.
+ * Created by on 2017/6/15.
*/
public class SelectSort {
public static void sort(int[] arr) {
diff --git a/data-structure-algorithm/src/main/java/arithmetic/ShellSort.java b/data-structure-algorithm/src/main/java/arithmetic/ShellSort.java
index 3f4fd59..e86d4cb 100644
--- a/data-structure-algorithm/src/main/java/arithmetic/ShellSort.java
+++ b/data-structure-algorithm/src/main/java/arithmetic/ShellSort.java
@@ -3,7 +3,7 @@
import java.util.Arrays;
/**
- * Created by 李恒名 on 2017/6/15.
+ * Created by on 2017/6/15.
*/
public class ShellSort {
diff --git a/data-structure-algorithm/src/main/java/data/structure/queue/Queue.java b/data-structure-algorithm/src/main/java/data/structure/queue/Queue.java
index 14a6a9d..a872a5d 100644
--- a/data-structure-algorithm/src/main/java/data/structure/queue/Queue.java
+++ b/data-structure-algorithm/src/main/java/data/structure/queue/Queue.java
@@ -1,7 +1,7 @@
package data.structure.queue;
/**
- * Created by 李恒名 on 2017/6/15.
+ * Created by on 2017/6/15.
*
* 队列(Queue),是先进先出(FIFO, First-In-First-Out)的线性表
*/
diff --git a/data-structure-algorithm/src/main/java/data/structure/queue/QueueLinkedImpl.java b/data-structure-algorithm/src/main/java/data/structure/queue/QueueLinkedImpl.java
index c0c8e9c..a7f6b9a 100644
--- a/data-structure-algorithm/src/main/java/data/structure/queue/QueueLinkedImpl.java
+++ b/data-structure-algorithm/src/main/java/data/structure/queue/QueueLinkedImpl.java
@@ -1,7 +1,7 @@
package data.structure.queue;
/**
- * Created by 李恒名 on 2017/6/23.
+ * Created by on 2017/6/23.
*
* 保存指向首尾节点的指针,每次从链表尾插入,从链表头删除。
*/
diff --git a/data-structure-algorithm/src/main/java/data/structure/queue/Tester.java b/data-structure-algorithm/src/main/java/data/structure/queue/Tester.java
index 3a27a26..a1c1756 100644
--- a/data-structure-algorithm/src/main/java/data/structure/queue/Tester.java
+++ b/data-structure-algorithm/src/main/java/data/structure/queue/Tester.java
@@ -3,7 +3,7 @@
import org.junit.Test;
/**
- * Created by 李恒名 on 2017/6/8.
+ * Created by on 2017/6/8.
*/
public class Tester {
diff --git a/data-structure-algorithm/src/main/java/data/structure/stack/Stack.java b/data-structure-algorithm/src/main/java/data/structure/stack/Stack.java
index f1c8b51..543e22b 100644
--- a/data-structure-algorithm/src/main/java/data/structure/stack/Stack.java
+++ b/data-structure-algorithm/src/main/java/data/structure/stack/Stack.java
@@ -1,7 +1,7 @@
package data.structure.stack;
/**
- * Created by 李恒名 on 2017/6/8.
+ * Created by on 2017/6/8.
*
* 后进先出(LIFO, Last In First Out)
*/
diff --git a/data-structure-algorithm/src/main/java/data/structure/stack/StackArrayImpl.java b/data-structure-algorithm/src/main/java/data/structure/stack/StackArrayImpl.java
index 8010591..288e634 100644
--- a/data-structure-algorithm/src/main/java/data/structure/stack/StackArrayImpl.java
+++ b/data-structure-algorithm/src/main/java/data/structure/stack/StackArrayImpl.java
@@ -1,7 +1,7 @@
package data.structure.stack;
/**
- * Created by 李恒名 on 2017/6/8.
+ * Created by on 2017/6/8.
*/
public class StackArrayImpl implements Stack {
diff --git a/data-structure-algorithm/src/main/java/data/structure/stack/StackLinkedImpl.java b/data-structure-algorithm/src/main/java/data/structure/stack/StackLinkedImpl.java
index 0a059e3..bc86ff6 100644
--- a/data-structure-algorithm/src/main/java/data/structure/stack/StackLinkedImpl.java
+++ b/data-structure-algorithm/src/main/java/data/structure/stack/StackLinkedImpl.java
@@ -1,7 +1,7 @@
package data.structure.stack;
/**
- * Created by 李恒名 on 2017/6/8.
+ * Created by on 2017/6/8.
*
*/
public class StackLinkedImpl implements Stack {
diff --git a/data-structure-algorithm/src/main/java/data/structure/stack/Tester.java b/data-structure-algorithm/src/main/java/data/structure/stack/Tester.java
index 0053fe5..4150757 100644
--- a/data-structure-algorithm/src/main/java/data/structure/stack/Tester.java
+++ b/data-structure-algorithm/src/main/java/data/structure/stack/Tester.java
@@ -3,7 +3,7 @@
import org.junit.Test;
/**
- * Created by 李恒名 on 2017/6/8.
+ * Created by on 2017/6/8.
*/
public class Tester {
diff --git a/design-pattern/pom.xml b/design-pattern/pom.xml
index 80f1961..e7c8d6e 100644
--- a/design-pattern/pom.xml
+++ b/design-pattern/pom.xml
@@ -4,7 +4,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
* 抽象工厂模式,与简单工厂、工厂方法模式的区别在于,前者只有一个产品线只为创建一个
* 产品服务,而后者则拥有多个产品线。
diff --git a/design-pattern/src/main/java/creational/FactoryMethodPattern.java b/design-pattern/src/main/java/creational/FactoryMethodPattern.java
index eea01d1..c9e70a0 100644
--- a/design-pattern/src/main/java/creational/FactoryMethodPattern.java
+++ b/design-pattern/src/main/java/creational/FactoryMethodPattern.java
@@ -1,7 +1,7 @@
package creational;
/**
- * Created by 李恒名 on 2017/6/14.
+ * Created by on 2017/6/14.
*
* 工厂方法模式
*/
diff --git a/design-pattern/src/main/java/creational/PrototypePattern.java b/design-pattern/src/main/java/creational/PrototypePattern.java
index 33e1fd4..901cb8c 100644
--- a/design-pattern/src/main/java/creational/PrototypePattern.java
+++ b/design-pattern/src/main/java/creational/PrototypePattern.java
@@ -1,7 +1,7 @@
package creational;
/**
- * Created by 李恒名 on 2017/7/16.
+ * Created by on 2017/7/16.
*
* 原型模式,即通过一个实例的原型来复制(克隆)出类似的实例,而不是去重新创建,这有
* 点像克隆人。如果你使用过 Javascript ,你应该对 Prototype 很熟悉。
diff --git a/design-pattern/src/main/java/creational/SimpleFactoryPattern.java b/design-pattern/src/main/java/creational/SimpleFactoryPattern.java
index 3ae9457..dc67aee 100644
--- a/design-pattern/src/main/java/creational/SimpleFactoryPattern.java
+++ b/design-pattern/src/main/java/creational/SimpleFactoryPattern.java
@@ -1,7 +1,7 @@
package creational;
/**
- * Created by 李恒名 on 2017/6/14.
+ * Created by on 2017/6/14.
*
* 简单工厂模式,简单来说就是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(该模式并不属于GOF 23)
*/
diff --git a/design-pattern/src/main/java/creational/SingletonPattern.java b/design-pattern/src/main/java/creational/SingletonPattern.java
index f73fec5..f4956d4 100644
--- a/design-pattern/src/main/java/creational/SingletonPattern.java
+++ b/design-pattern/src/main/java/creational/SingletonPattern.java
@@ -5,7 +5,7 @@
import java.util.Objects;
/**
- * Created by 李恒名 on 2017/7/15.
+ * Created by on 2017/7/15.
*
* 单例模式,即一个类只允许存在一个实例。
*
diff --git a/design-pattern/src/main/java/creational/StaticFactoryMethodPattern.java b/design-pattern/src/main/java/creational/StaticFactoryMethodPattern.java
index 7045354..41b2443 100644
--- a/design-pattern/src/main/java/creational/StaticFactoryMethodPattern.java
+++ b/design-pattern/src/main/java/creational/StaticFactoryMethodPattern.java
@@ -1,7 +1,7 @@
package creational;
/**
- * Created by 李恒名 on 2017/6/14.
+ * Created by on 2017/6/14.
*
* 静态工厂方法模式,准确来讲这并不是一种设计模式,只是为了简化创建对象的过程。
* 这种创建对象形式很常见,比如 Guava 中的 Lists 、Maps 等。
diff --git a/design-pattern/src/main/java/structural/AdapterPattern.java b/design-pattern/src/main/java/structural/AdapterPattern.java
index f6db536..1675968 100644
--- a/design-pattern/src/main/java/structural/AdapterPattern.java
+++ b/design-pattern/src/main/java/structural/AdapterPattern.java
@@ -3,7 +3,7 @@
import org.junit.Test;
/**
- * Created by 李恒名 on 2017/7/27.
+ * Created by on 2017/7/27.
*
* 适配器模式,用于将一个类的接口转换成客户端所期待的另一种接口。
*/
diff --git a/design-pattern/src/main/java/structural/BridgePattern.java b/design-pattern/src/main/java/structural/BridgePattern.java
index 510baf9..c0690f7 100644
--- a/design-pattern/src/main/java/structural/BridgePattern.java
+++ b/design-pattern/src/main/java/structural/BridgePattern.java
@@ -1,7 +1,7 @@
package structural;
/**
- * Created by 李恒名 on 2017/10/06.
+ * Created by on 2017/10/06.
*
* 桥接模式的意图是将抽象类与抽象方法的实现相互分离来实现解耦,以便二者可以相互独立地变化。
*
diff --git a/design-pattern/src/main/java/structural/DecoratorPattern.java b/design-pattern/src/main/java/structural/DecoratorPattern.java
index 4d5d9f8..5e5de98 100644
--- a/design-pattern/src/main/java/structural/DecoratorPattern.java
+++ b/design-pattern/src/main/java/structural/DecoratorPattern.java
@@ -1,7 +1,7 @@
package structural;
/**
- * Created by 李恒名 on 2017/7/27.
+ * Created by on 2017/7/27.
*
* 装饰者模式
*
diff --git a/design-pattern/src/main/java/structural/FacadePattern.java b/design-pattern/src/main/java/structural/FacadePattern.java
index f491855..8d799fb 100644
--- a/design-pattern/src/main/java/structural/FacadePattern.java
+++ b/design-pattern/src/main/java/structural/FacadePattern.java
@@ -1,7 +1,7 @@
package structural;
/**
- * Created by 李恒名 on 2017/7/17.
+ * Created by on 2017/7/17.
*
* 外观模式,也称门面模式,用于为一个复杂的系统提供一个统一、简单的访问入口
*/
diff --git a/design-pattern/src/main/java/structural/ProxyPattern.java b/design-pattern/src/main/java/structural/ProxyPattern.java
index 6079a82..43fda5a 100644
--- a/design-pattern/src/main/java/structural/ProxyPattern.java
+++ b/design-pattern/src/main/java/structural/ProxyPattern.java
@@ -5,7 +5,7 @@
import java.util.List;
/**
- * Created by 李恒名 on 2017/7/19.
+ * Created by on 2017/7/19.
*
* 代理模式,为目标对象创建一个代理对象,其他对象可以通过代理对象来访问目标对象的方法,AOP、拦截器均为该模式的实践。
*
diff --git a/io/pom.xml b/io/pom.xml
index e7b3af7..b6a8502 100644
--- a/io/pom.xml
+++ b/io/pom.xml
@@ -4,7 +4,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">