From 45d4c2604f919f722364a8b3bde98aea8aa3651d Mon Sep 17 00:00:00 2001
From: wyl <959814898@qq.com>
Date: Sat, 14 May 2022 21:34:41 +0800
Subject: [PATCH] test
---
chain-of-responsibility/pom.xml | 19 +++++++++++++
.../src/main/java/com/wyl/chain/Handler.java | 20 ++++++++++++++
.../main/java/com/wyl/chain/HandlerChain.java | 23 ++++++++++++++++
.../com/wyl/chain/handler/FirstHandler.java | 27 +++++++++++++++++++
.../com/wyl/chain/handler/SecondHandler.java | 27 +++++++++++++++++++
.../test/java/com/wyl/chain/ChainTest.java | 17 ++++++++++++
.../queue/{Order.java => DelayedQueue.java} | 18 +++++++++----
.../java/concurrent/queue/DelayQueueTest.java | 19 ++++++++-----
pom.xml | 1 +
9 files changed, 160 insertions(+), 11 deletions(-)
create mode 100644 chain-of-responsibility/pom.xml
create mode 100644 chain-of-responsibility/src/main/java/com/wyl/chain/Handler.java
create mode 100644 chain-of-responsibility/src/main/java/com/wyl/chain/HandlerChain.java
create mode 100644 chain-of-responsibility/src/main/java/com/wyl/chain/handler/FirstHandler.java
create mode 100644 chain-of-responsibility/src/main/java/com/wyl/chain/handler/SecondHandler.java
create mode 100644 chain-of-responsibility/src/test/java/com/wyl/chain/ChainTest.java
rename concurrent/src/main/java/concurrent/queue/{Order.java => DelayedQueue.java} (62%)
diff --git a/chain-of-responsibility/pom.xml b/chain-of-responsibility/pom.xml
new file mode 100644
index 0000000..d485540
--- /dev/null
+++ b/chain-of-responsibility/pom.xml
@@ -0,0 +1,19 @@
+
+
+
+ JavaBasiceDemo
+ com.wyl.example
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ chain-of-responsibility
+
+
+ 8
+ 8
+
+
+
\ No newline at end of file
diff --git a/chain-of-responsibility/src/main/java/com/wyl/chain/Handler.java b/chain-of-responsibility/src/main/java/com/wyl/chain/Handler.java
new file mode 100644
index 0000000..4ba136c
--- /dev/null
+++ b/chain-of-responsibility/src/main/java/com/wyl/chain/Handler.java
@@ -0,0 +1,20 @@
+package com.wyl.chain;
+
+/**
+ * 责任链设计模式
+ * @ClassName: Handler
+ * @Date: 2022/4/24 9:43 下午
+ * @author wangyl
+ * @version V1.0
+ */
+public interface Handler {
+ /**
+ * 处理数据的借口
+ * @param date
+ * @return java.lang.Boolean
+ * @Date 2022/4/24 9:43 下午
+ * @Author wangyl
+ * @Version V1.0
+ */
+ Boolean handleData(String date);
+}
diff --git a/chain-of-responsibility/src/main/java/com/wyl/chain/HandlerChain.java b/chain-of-responsibility/src/main/java/com/wyl/chain/HandlerChain.java
new file mode 100644
index 0000000..e4eba53
--- /dev/null
+++ b/chain-of-responsibility/src/main/java/com/wyl/chain/HandlerChain.java
@@ -0,0 +1,23 @@
+package com.wyl.chain;
+
+import java.util.LinkedList;
+import java.util.List;
+
+public class HandlerChain {
+ private List handlers = new LinkedList<>();
+
+ public void add(Handler handler) {
+ handlers.add(handler);
+ }
+
+ public void handle(String data) {
+ for (Handler handler : handlers){
+ Boolean aBoolean = handler.handleData(data);
+ if (!aBoolean){
+ System.out.println("数据处理失败结束");
+ break;
+ }
+
+ }
+ }
+}
diff --git a/chain-of-responsibility/src/main/java/com/wyl/chain/handler/FirstHandler.java b/chain-of-responsibility/src/main/java/com/wyl/chain/handler/FirstHandler.java
new file mode 100644
index 0000000..8eae952
--- /dev/null
+++ b/chain-of-responsibility/src/main/java/com/wyl/chain/handler/FirstHandler.java
@@ -0,0 +1,27 @@
+package com.wyl.chain.handler;
+
+import com.wyl.chain.Handler;
+
+/**
+ * 第一个处理
+ * @ClassName: FirstHandler
+ * @Date: 2022/4/24 9:59 下午
+ * @author wangyl
+ * @version V1.0
+ */
+public class FirstHandler implements Handler {
+ @Override
+ public Boolean handleData(String date) {
+ if (date.startsWith("First")) {
+ System.out.println("第一处理器开始处理。。。");
+ if (date.length() < 6) {
+ throw new RuntimeException("数据长度不够");
+ }
+ System.out.println("第一处理器处理完毕。。。");
+ return true;
+ }
+ System.out.println("无需第一处理");
+ return false;
+ }
+}
+
diff --git a/chain-of-responsibility/src/main/java/com/wyl/chain/handler/SecondHandler.java b/chain-of-responsibility/src/main/java/com/wyl/chain/handler/SecondHandler.java
new file mode 100644
index 0000000..a3d88d3
--- /dev/null
+++ b/chain-of-responsibility/src/main/java/com/wyl/chain/handler/SecondHandler.java
@@ -0,0 +1,27 @@
+package com.wyl.chain.handler;
+
+import com.wyl.chain.Handler;
+
+/**
+ * 第二处理器
+ * @ClassName: SecondHandler
+ * @Date: 2022/4/24 10:03 下午
+ * @author wangyl
+ * @version V1.0
+ */
+public class SecondHandler implements Handler {
+ @Override
+ public Boolean handleData(String date) {
+ if (date.endsWith("Second")) {
+ System.out.println("第二处理器开始处理。。。");
+ if (date.length() < 10) {
+ throw new RuntimeException("第二处理数据长度不够");
+ }
+ System.out.println("第二处理器处理完成。。。");
+ return true;
+ }
+ System.out.println("无需第二处理");
+ return false;
+ }
+}
+
diff --git a/chain-of-responsibility/src/test/java/com/wyl/chain/ChainTest.java b/chain-of-responsibility/src/test/java/com/wyl/chain/ChainTest.java
new file mode 100644
index 0000000..d6f3bc1
--- /dev/null
+++ b/chain-of-responsibility/src/test/java/com/wyl/chain/ChainTest.java
@@ -0,0 +1,17 @@
+package com.wyl.chain;
+
+import com.wyl.chain.handler.FirstHandler;
+import com.wyl.chain.handler.SecondHandler;
+
+public class ChainTest {
+ public static void main(String[] args) {
+ HandlerChain chain = new HandlerChain();
+ chain.add(new FirstHandler());
+ chain.add(new SecondHandler());
+// chain.handle("First");
+// chain.handle("First123123");
+// chain.handle("First123123Second");
+ chain.handle("123123Second");
+
+ }
+}
diff --git a/concurrent/src/main/java/concurrent/queue/Order.java b/concurrent/src/main/java/concurrent/queue/DelayedQueue.java
similarity index 62%
rename from concurrent/src/main/java/concurrent/queue/Order.java
rename to concurrent/src/main/java/concurrent/queue/DelayedQueue.java
index 4e6dd76..994e21f 100644
--- a/concurrent/src/main/java/concurrent/queue/Order.java
+++ b/concurrent/src/main/java/concurrent/queue/DelayedQueue.java
@@ -2,27 +2,35 @@ package concurrent.queue;
import lombok.Data;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
import java.util.concurrent.Delayed;
import java.util.concurrent.TimeUnit;
/**
- * 订单信息
+ * 延迟队列
* @ClassName: Order
* @Date: 2022/4/8 13:57
* @author wangyl
* @version V1.0
*/
@Data
-public class Order implements Delayed {
+public class DelayedQueue implements Delayed {
/**
* 延迟时间
*/
private long time;
+ /**
+ * 延迟任务名称
+ */
private String name;
- private String timestamp = System.currentTimeMillis() + "";
+ /**
+ * 延迟任务创建时间
+ */
+ private String timestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
- public Order(String name, long time, TimeUnit unit) {
+ public DelayedQueue(String name, long time, TimeUnit unit) {
this.name = name;
this.time = System.currentTimeMillis() + (time > 0 ? unit.toMillis(time) : 0);
}
@@ -34,7 +42,7 @@ public class Order implements Delayed {
@Override
public int compareTo(Delayed o) {
- Order Order = (Order) o;
+ DelayedQueue Order = (DelayedQueue) o;
long diff = this.time - Order.time;
if (diff <= 0) {
return -1;
diff --git a/concurrent/src/test/java/concurrent/queue/DelayQueueTest.java b/concurrent/src/test/java/concurrent/queue/DelayQueueTest.java
index d7be6e7..e13080b 100644
--- a/concurrent/src/test/java/concurrent/queue/DelayQueueTest.java
+++ b/concurrent/src/test/java/concurrent/queue/DelayQueueTest.java
@@ -8,12 +8,20 @@ import java.util.concurrent.DelayQueue;
import java.util.concurrent.TimeUnit;
public class DelayQueueTest {
+ /**
+ * 系统自带延时队列测试
+ * @param
+ * @return void
+ * @Date 2022/4/9 11:40 下午
+ * @Author wangyl
+ * @Version V1.0
+ */
@Test
public void delayQueueTest() throws InterruptedException {
- Order Order1 = new Order("Order1", 5, TimeUnit.SECONDS);
- Order Order2 = new Order("Order2", 10, TimeUnit.SECONDS);
- Order Order3 = new Order("Order3", 15, TimeUnit.SECONDS);
- DelayQueue delayQueue = new DelayQueue<>();
+ DelayedQueue Order1 = new DelayedQueue("Order1", 5, TimeUnit.SECONDS);
+ DelayedQueue Order2 = new DelayedQueue("Order2", 10, TimeUnit.SECONDS);
+ DelayedQueue Order3 = new DelayedQueue("Order3", 15, TimeUnit.SECONDS);
+ DelayQueue delayQueue = new DelayQueue<>();
delayQueue.put(Order1);
delayQueue.put(Order2);
delayQueue.put(Order3);
@@ -24,8 +32,7 @@ public class DelayQueueTest {
/**
* 取队列头部元素是否过期
*/
-// Order task = delayQueue.poll();
- Order task = delayQueue.take();
+ DelayedQueue task = delayQueue.take();
delayQueue.peek();
if (task != null) {
System.out.format("订单:{%s}被取消, 放入时间{%s},取消时间:{%s}\n", task.getName(), task.getTimestamp(), LocalDateTime.now()
diff --git a/pom.xml b/pom.xml
index a691a25..205319e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,6 +13,7 @@
concurrent
file-read
kafka
+ chain-of-responsibility
pom