From d7d169917b5cff76564f78a1a6691737826ffb82 Mon Sep 17 00:00:00 2001 From: cong Date: Thu, 27 Jul 2017 15:24:20 +0800 Subject: [PATCH 1/6] Update README.md add algorithm link --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8d6bb47..8e7f72c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ ## learn-java example of learn java +algorithm has moved to [learn-algorithm](https://github.com/wcong/learn-algorithm) From e8be31ec838d5ecf0adbbe421c73571eb0287a3a Mon Sep 17 00:00:00 2001 From: cong Date: Thu, 27 Jul 2017 15:25:00 +0800 Subject: [PATCH 2/6] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8e7f72c..916e80b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ ## learn-java example of learn java + algorithm has moved to [learn-algorithm](https://github.com/wcong/learn-algorithm) From e33b88e113f3fc5755e3aa16d425fee16055dad9 Mon Sep 17 00:00:00 2001 From: wcong Date: Tue, 30 Jan 2018 20:46:22 +0800 Subject: [PATCH 3/6] MyPublisher --- pom.xml | 5 + .../org/wcong/test/rxjava/MyPublisher.java | 116 ++++++++++++++++++ .../org/wcong/test/rxjava/package-info.java | 3 + 3 files changed, 124 insertions(+) create mode 100644 src/main/java/org/wcong/test/rxjava/MyPublisher.java create mode 100644 src/main/java/org/wcong/test/rxjava/package-info.java diff --git a/pom.xml b/pom.xml index b4466ad..2cf092f 100644 --- a/pom.xml +++ b/pom.xml @@ -206,6 +206,11 @@ jackson-annotations 2.3.3 + + io.reactivex.rxjava2 + rxjava + 2.1.6 + org.freemarker freemarker diff --git a/src/main/java/org/wcong/test/rxjava/MyPublisher.java b/src/main/java/org/wcong/test/rxjava/MyPublisher.java new file mode 100644 index 0000000..c2b58b0 --- /dev/null +++ b/src/main/java/org/wcong/test/rxjava/MyPublisher.java @@ -0,0 +1,116 @@ +package org.wcong.test.rxjava; + +import io.reactivex.Flowable; +import io.reactivex.FlowableSubscriber; +import io.reactivex.Scheduler; +import io.reactivex.schedulers.Schedulers; +import org.reactivestreams.Subscriber; +import org.reactivestreams.Subscription; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.atomic.AtomicInteger; + +public class MyPublisher { + + private static CountDownLatch countDownLatch = new CountDownLatch(4); + + public static void main(String[] args) throws InterruptedException { + new ParallelFlowableRange(1, 100, Schedulers.computation()).subscribe(i -> { + System.out.println(Thread.currentThread().getName() + ":" + i); + }, e -> System.out.println(Thread.currentThread().getName() + ":" + e), () -> System.out.println(Thread.currentThread().getName() + ":complete")); + countDownLatch.await(); + } + + + public static class ParallelFlowableRange extends Flowable { + + private Scheduler scheduler; + + private int start; + private int end; + + public ParallelFlowableRange(int start, int end, Scheduler scheduler) { + this.scheduler = scheduler; + this.start = start; + this.end = end; + } + + @Override + protected void subscribeActual(Subscriber subscriber) { + AtomicInteger atomicInteger = new AtomicInteger(start); + for (int i = 0; i < 4; i++) { + MySubscriber mySubscriber = new MySubscriber(subscriber, Integer.MAX_VALUE, scheduler.createWorker(), atomicInteger, end); + mySubscriber.onSubscribe(mySubscriber); + } + } + } + + public static class MySubscriber extends AtomicInteger implements FlowableSubscriber, Subscription, Runnable { + + private int prefetch; + private Scheduler.Worker worker; + private Subscriber actual; + private boolean cancel; + private AtomicInteger atomicInteger; + private int end; + + public MySubscriber(Subscriber actual, int prefetch, Scheduler.Worker worker, AtomicInteger atomicInteger, int end) { + this.actual = actual; + this.prefetch = prefetch; + this.worker = worker; + this.atomicInteger = atomicInteger; + this.end = end; + } + + @Override + public void onSubscribe(Subscription subscription) { + subscription.request(prefetch); + } + + @Override + public void onNext(Integer integer) { + actual.onNext(integer); + } + + @Override + public void onError(Throwable throwable) { + actual.onError(throwable); + } + + @Override + public void onComplete() { + countDownLatch.countDown(); + actual.onComplete(); + } + + @Override + public void request(long l) { + worker.schedule(this); + } + + @Override + public void cancel() { + cancel = true; + } + + @Override + public void run() { + while (true) { + if (cancel) { + break; + } + int num = atomicInteger.getAndIncrement(); + if (num < end) { + try { + onNext(num); + } catch (Exception e) { + onError(e); + } + } else { + onComplete(); + break; + } + } + } + } +} diff --git a/src/main/java/org/wcong/test/rxjava/package-info.java b/src/main/java/org/wcong/test/rxjava/package-info.java new file mode 100644 index 0000000..7b13049 --- /dev/null +++ b/src/main/java/org/wcong/test/rxjava/package-info.java @@ -0,0 +1,3 @@ +package org.wcong.test.rxjava; + +// about rxjava \ No newline at end of file From 640cf30ecaf59c761d34232d605cea66842fddc2 Mon Sep 17 00:00:00 2001 From: wcong Date: Tue, 30 Jan 2018 21:03:23 +0800 Subject: [PATCH 4/6] 1.7 --- src/main/java/org/wcong/test/rxjava/MyPublisher.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/wcong/test/rxjava/MyPublisher.java b/src/main/java/org/wcong/test/rxjava/MyPublisher.java index c2b58b0..307c6cd 100644 --- a/src/main/java/org/wcong/test/rxjava/MyPublisher.java +++ b/src/main/java/org/wcong/test/rxjava/MyPublisher.java @@ -3,6 +3,7 @@ import io.reactivex.Flowable; import io.reactivex.FlowableSubscriber; import io.reactivex.Scheduler; +import io.reactivex.functions.Consumer; import io.reactivex.schedulers.Schedulers; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; @@ -15,9 +16,12 @@ public class MyPublisher { private static CountDownLatch countDownLatch = new CountDownLatch(4); public static void main(String[] args) throws InterruptedException { - new ParallelFlowableRange(1, 100, Schedulers.computation()).subscribe(i -> { - System.out.println(Thread.currentThread().getName() + ":" + i); - }, e -> System.out.println(Thread.currentThread().getName() + ":" + e), () -> System.out.println(Thread.currentThread().getName() + ":complete")); + new ParallelFlowableRange(1, 100, Schedulers.computation()).subscribe(new Consumer() { + @Override + public void accept(Integer integer) throws Exception { + System.out.println(Thread.currentThread().getName() + ":" + integer); + } + }); countDownLatch.await(); } From 2361876d5edf1ec9670ecb9706446ed735291920 Mon Sep 17 00:00:00 2001 From: conwan Date: Fri, 7 Jun 2019 17:52:27 +0800 Subject: [PATCH 5/6] #1 rename file --- ...ongestCommonSubsequence.java => LongestCommonSubSequence.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/java/org/wcong/test/algorithm/dp/{LongestCommonSubsequence.java => LongestCommonSubSequence.java} (100%) diff --git a/src/main/java/org/wcong/test/algorithm/dp/LongestCommonSubsequence.java b/src/main/java/org/wcong/test/algorithm/dp/LongestCommonSubSequence.java similarity index 100% rename from src/main/java/org/wcong/test/algorithm/dp/LongestCommonSubsequence.java rename to src/main/java/org/wcong/test/algorithm/dp/LongestCommonSubSequence.java From 9a7899ec8407f6545a71a426fd43ec046590d2e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Oct 2020 01:11:55 +0000 Subject: [PATCH 6/6] Bump junit from 4.12 to 4.13.1 Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cc06de3..5f4edf1 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ junit junit - 4.12 + 4.13.1 test