diff --git a/03concurrency/0301/src/main/java/META-INF/MANIFEST.MF b/03concurrency/0301/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 00000000..ef62bb7b --- /dev/null +++ b/03concurrency/0301/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: + diff --git a/03concurrency/0301/src/main/java/java0/conc0303/future/FutureTask1.java b/03concurrency/0301/src/main/java/java0/conc0303/future/FutureTask1.java index 69499819..d799563c 100644 --- a/03concurrency/0301/src/main/java/java0/conc0303/future/FutureTask1.java +++ b/03concurrency/0301/src/main/java/java0/conc0303/future/FutureTask1.java @@ -13,16 +13,16 @@ public Integer call() throws Exception { } }); new Thread(task).start(); - //第二种方方式 -// ExecutorService executor = Executors.newSingleThreadExecutor(); -// FutureTask task = new FutureTask(new Callable() { -// @Override -// public Integer call() throws Exception { -// return new Random().nextInt(); -// } -// }); -// executor.submit(task); - + //第二种方方式// ExecutorService executor = Executors.newSingleThreadExecutor(); + //// FutureTask task = new FutureTask(new Callable() { + //// @Override + //// public Integer call() throws Exception { + //// return new Random().nextInt(); + //// } + //// }); + //// executor.submit(task); + // + try { System.out.println("result: " + task.get()); } catch (InterruptedException e) { diff --git a/03concurrency/0301/src/main/java/java0/conc0303/homework3/Homework03.java b/03concurrency/0301/src/main/java/java0/conc0303/homework3/Homework03.java new file mode 100644 index 00000000..50075bce --- /dev/null +++ b/03concurrency/0301/src/main/java/java0/conc0303/homework3/Homework03.java @@ -0,0 +1,37 @@ +package java0.conc0303.homework3; + +/** + * 本周作业:(必做)思考有多少种方式,在main函数启动一个新线程或线程池, + * 异步运行一个方法,拿到这个方法的返回值后,退出主线程? + * 写出你的方法,越多越好,提交到github。 + * + * 一个简单的代码参考: + */ +public class Homework03 { + + public static void main(String[] args) { + + long start=System.currentTimeMillis(); + // 在这里创建一个线程或线程池, + // 异步执行 下面方法 + + int result = sum(); //这是得到的返回值 + + // 确保 拿到result 并输出 + System.out.println("异步计算结果为:"+result); + + System.out.println("使用时间:"+ (System.currentTimeMillis()-start) + " ms"); + + // 然后退出main线程 + } + + private static int sum() { + return fibo(36); + } + + private static int fibo(int a) { + if ( a < 2) + return 1; + return fibo(a-1) + fibo(a-2); + } +} diff --git a/03concurrency/0301/src/main/java/java0/conc0303/homework3/byFuture/FutureTaskExample.java b/03concurrency/0301/src/main/java/java0/conc0303/homework3/byFuture/FutureTaskExample.java new file mode 100644 index 00000000..ede0f658 --- /dev/null +++ b/03concurrency/0301/src/main/java/java0/conc0303/homework3/byFuture/FutureTaskExample.java @@ -0,0 +1,36 @@ +package java0.conc0303.homework3.byFuture; + + + +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.FutureTask; + +/** + * @author tangtian + * @version 1.0 + * @className FutureExample + * @description + * @date 2020/11/9 8:48 AM + **/ +public class FutureTaskExample { + public static void main(String[] args) throws ExecutionException, InterruptedException { + FutureTask task = new FutureTask(new Callable() { + @Override + public Integer call() throws Exception { + return sum(); + } + }); + new Thread(task).start(); + System.out.println(task.get()); + } + private static int sum(){ + return fibo(39); + } + private static int fibo(int a){ + if (a < 2){ + return 1; + } + return fibo(a-1) + fibo(a - 2); + } +} diff --git a/03concurrency/0301/src/main/java/java0/conc0303/homework3/byFuture/byThreadpool/FutureTaskExample.java b/03concurrency/0301/src/main/java/java0/conc0303/homework3/byFuture/byThreadpool/FutureTaskExample.java new file mode 100644 index 00000000..74e741ae --- /dev/null +++ b/03concurrency/0301/src/main/java/java0/conc0303/homework3/byFuture/byThreadpool/FutureTaskExample.java @@ -0,0 +1,44 @@ +package java0.conc0303.homework3.byFuture.byThreadpool; + + + +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +/** + * @author tangtian + * @version 1.0 + * @className FutureExample + * @description + * @date 2020/11/9 8:48 AM + **/ +public class FutureTaskExample { + public static void main(String[] args) throws ExecutionException, InterruptedException { + ExecutorService executor = Executors.newCachedThreadPool(); + Future result = executor.submit(new Callable() { + public Integer call() throws Exception { + return sum(); + } + }); + executor.shutdown(); + try { + System.out.println("result:" + result.get()); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + } + private static int sum(){ + return fibo(39); + } + private static int fibo(int a){ + if (a < 2){ + return 1; + } + return fibo(a-1) + fibo(a - 2); + } +} diff --git a/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/CountDownLatchExample.java b/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/CountDownLatchExample.java new file mode 100644 index 00000000..df87e311 --- /dev/null +++ b/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/CountDownLatchExample.java @@ -0,0 +1,39 @@ +package java0.conc0303.homework3.byconcurrentTool; + + +import java.util.concurrent.CountDownLatch; + +/** + * @author tangtian + * @version 1.0 + * @className text1 + * @description countDownLatch + * @date 2020/11/9 6:26 AM + **/ +public class CountDownLatchExample { + private final static int threadCount = 20; + public static void main(String[] args) throws InterruptedException { + final CountDownLatch countDownLatch = new CountDownLatch(threadCount); + long start=System.currentTimeMillis(); + for (int i = 0; i< threadCount; i++){ + new Thread(new Runnable() { + @Override + public void run() { + System.out.println(sum());//开始执行任务 + countDownLatch.countDown(); + } + }).start(); + } + countDownLatch.await(); + System.out.println("使用时间:"+ (System.currentTimeMillis()-start) + " ms"); + } + private static int sum(){ + return fibo(39); + } + private static int fibo(int a){ + if (a < 2){ + return 1; + } + return fibo(a-1) + fibo(a - 2); + } +} diff --git a/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/CyclicBarrierExample.java b/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/CyclicBarrierExample.java new file mode 100644 index 00000000..33319194 --- /dev/null +++ b/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/CyclicBarrierExample.java @@ -0,0 +1,48 @@ +package java0.conc0303.homework3.byconcurrentTool; + + +import java.util.concurrent.BrokenBarrierException; +import java.util.concurrent.CyclicBarrier; + +/** + * @author tangtian + * @version 1.0 + * @className text1 + * @description CyclicBarrier + * @date 2020/11/9 6:26 AM + **/ +public class CyclicBarrierExample { + private static CyclicBarrier barrier=new CyclicBarrier(2,()-> System.out.println("currentResult")); + public static void main(String[] args) throws InterruptedException { + for (int i = 0; i< 10; i++){ + new Thread(new Runnable() { + @Override + public void run() { + try { + //等待线程准备好 + System.out.println(Thread.currentThread().getName() + ":ready"); + //开始执行任务 + System.out.println(Thread.currentThread().getName() + "--result:" + sum()); + //等待处理结果 + barrier.await(); + System.out.println("continue"); + } catch (BrokenBarrierException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + } + }).start(); + } + } + private static int sum() throws BrokenBarrierException, InterruptedException { + return fibo(39); + } + private static int fibo(int a){ + if (a < 2){ + return 1; + } + return fibo(a-1) + fibo(a - 2); + } +} diff --git a/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/SemaphoreExample.java b/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/SemaphoreExample.java new file mode 100644 index 00000000..b1c1849d --- /dev/null +++ b/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/SemaphoreExample.java @@ -0,0 +1,40 @@ +package java0.conc0303.homework3.byconcurrentTool; + + +import java.util.concurrent.Semaphore; + +/** + * @author tangtian + * @version 1.0 + * @className Semaphore + * @description + * @date 2020/11/9 8:27 AM + **/ +public class SemaphoreExample { + private final static int threadCount = 20; + + public static void main(String[] args) { + final Semaphore semaphore = new Semaphore(10); + for (int i = 0; i < threadCount; i++){ + new Thread(() -> { + try { + semaphore.acquire();//获取许可 + System.out.println(sum());//开始执行任务 + semaphore.release();//释放个许可 + } catch (InterruptedException e) { + e.printStackTrace(); + } + }).start(); + } + + } + private static int sum(){ + return fibo(39); + } + private static int fibo(int a){ + if (a < 2){ + return 1; + } + return fibo(a-1) + fibo(a - 2); + } +} diff --git a/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/byThreadpool/CountDownLatchExample.java b/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/byThreadpool/CountDownLatchExample.java new file mode 100644 index 00000000..46d6300c --- /dev/null +++ b/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/byThreadpool/CountDownLatchExample.java @@ -0,0 +1,49 @@ +package java0.conc0303.homework3.byconcurrentTool.byThreadpool; + + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * @author tangtian + * @version 1.0 + * @className text1 + * @description countDownLatch + * @date 2020/11/9 6:26 AM + **/ +public class CountDownLatchExample { + private final static int threadCount = 200; + + public static void main(String[] args) throws Exception { + + ExecutorService exec = Executors.newCachedThreadPool(); + + final CountDownLatch countDownLatch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; i++) { + final int threadNum = i; + exec.execute(() -> { + try { + sum(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + countDownLatch.countDown(); + } + }); + } + countDownLatch.await(); + System.out.println("程序执行完毕"); + exec.shutdown(); + } + private static int sum(){ + return fibo(39); + } + private static int fibo(int a){ + if (a < 2){ + return 1; + } + return fibo(a-1) + fibo(a - 2); + } +} diff --git a/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/byThreadpool/CyclicBarrierExample.java b/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/byThreadpool/CyclicBarrierExample.java new file mode 100644 index 00000000..ba1fb6e9 --- /dev/null +++ b/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/byThreadpool/CyclicBarrierExample.java @@ -0,0 +1,48 @@ +package java0.conc0303.homework3.byconcurrentTool.byThreadpool; + + +import java.util.concurrent.BrokenBarrierException; +import java.util.concurrent.CyclicBarrier; + +/** + * @author tangtian + * @version 1.0 + * @className text1 + * @description CyclicBarrier + * @date 2020/11/9 6:26 AM + **/ +public class CyclicBarrierExample { + private static CyclicBarrier barrier=new CyclicBarrier(2,()-> System.out.println("currentResult")); + public static void main(String[] args) throws InterruptedException { + for (int i = 0; i< 10; i++){ + new Thread(new Runnable() { + @Override + public void run() { + try { + //等待线程准备好 + System.out.println(Thread.currentThread().getName() + ":ready"); + //开始执行任务 + System.out.println(Thread.currentThread().getName() + "--result:" + sum()); + //等待处理结果 + barrier.await(); + System.out.println("continue"); + } catch (BrokenBarrierException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + } + }).start(); + } + } + private static int sum() throws BrokenBarrierException, InterruptedException { + return fibo(39); + } + private static int fibo(int a){ + if (a < 2){ + return 1; + } + return fibo(a-1) + fibo(a - 2); + } +} diff --git a/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/byThreadpool/SemaphoreExample.java b/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/byThreadpool/SemaphoreExample.java new file mode 100644 index 00000000..e6da66f9 --- /dev/null +++ b/03concurrency/0301/src/main/java/java0/conc0303/homework3/byconcurrentTool/byThreadpool/SemaphoreExample.java @@ -0,0 +1,47 @@ +package java0.conc0303.homework3.byconcurrentTool.byThreadpool; + + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Semaphore; + +/** + * @author tangtian + * @version 1.0 + * @className Semaphore + * @description + * @date 2020/11/9 8:27 AM + **/ +public class SemaphoreExample { + private final static int threadCount = 20; + + public static void main(String[] args) throws Exception { + + ExecutorService exec = Executors.newCachedThreadPool(); + + final Semaphore semaphore = new Semaphore(3); + + for (int i = 0; i < threadCount; i++) { + final int threadNum = i; + exec.execute(() -> { + try { + semaphore.acquire(3); // 获取全部许可,退化成串行执行 + sum(); + semaphore.release(3); // 释放多个许可 + } catch (Exception e) { + e.printStackTrace(); + } + }); + } + exec.shutdown(); + } + private static int sum(){ + return fibo(39); + } + private static int fibo(int a){ + if (a < 2){ + return 1; + } + return fibo(a-1) + fibo(a - 2); + } +} diff --git a/03concurrency/0301/src/main/java/java0/conc0303/tool/SemaphoreDemo.java b/03concurrency/0301/src/main/java/java0/conc0303/tool/SemaphoreDemo.java index 542ae10b..8eedd350 100644 --- a/03concurrency/0301/src/main/java/java0/conc0303/tool/SemaphoreDemo.java +++ b/03concurrency/0301/src/main/java/java0/conc0303/tool/SemaphoreDemo.java @@ -1,14 +1,17 @@ package java0.conc0303.tool; import java.util.concurrent.Semaphore; +import java.util.stream.IntStream; public class SemaphoreDemo { public static void main(String[] args) { int N = 8; //工人数 - Semaphore semaphore = new Semaphore(1); //机器数目 - for (int i = 0; i < N; i++) - new Worker(i, semaphore).start(); + Semaphore semaphore = new Semaphore(3); //机器数目 + IntStream.range(0, N).forEach(i -> new Worker(i, semaphore).start()); +// Semaphore semaphore = new Semaphore(1); //机器数目 +// for (int i = 0; i < N; i++) +// new Worker(i, semaphore).start(); } static class Worker extends Thread { diff --git a/04fx/spring01/pom.xml b/04fx/spring01/pom.xml index 52e59f6d..d90e61f8 100644 --- a/04fx/spring01/pom.xml +++ b/04fx/spring01/pom.xml @@ -118,11 +118,11 @@ log4j 1.2.17 - - log4j - log4j - 1.2.17 - + + + + + org.slf4j slf4j-api diff --git a/04fx/spring01/src/main/java/io/kimmking/spring01/GuavaDemo.java b/04fx/spring01/src/main/java/io/kimmking/spring01/GuavaDemo.java index 98ef1c51..ca15f55a 100644 --- a/04fx/spring01/src/main/java/io/kimmking/spring01/GuavaDemo.java +++ b/04fx/spring01/src/main/java/io/kimmking/spring01/GuavaDemo.java @@ -16,13 +16,8 @@ import lombok.SneakyThrows; import java.io.IOException; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; public class GuavaDemo { diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean01/Config1.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean01/Config1.java new file mode 100644 index 00000000..5785c562 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean01/Config1.java @@ -0,0 +1,21 @@ +package io.tangtian.springbean.springbean01; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +/** + * @author tangtian + * @version 1.0 + * @className IocCnfig + * @description + * @Configuration注解表示这是一个配置类,@ComponentScan注解表示配置类会扫描该配置类所在的包以及所有子包,寻找所有带@Component注解的类。 + * @ComponentScan后面并没有配置属性,就表示扫描配置类所在的包以及子包,还可以手动配置从哪个包开始扫描 + * @date 2020/11/16 7:13 AM + **/ +@Configuration +@ComponentScan +public class Config1 { + private static final Logger LOG = LoggerFactory.getLogger(Config1.class); +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean01/Text1.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean01/Text1.java new file mode 100644 index 00000000..afd18f52 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean01/Text1.java @@ -0,0 +1,23 @@ +package io.tangtian.springbean.springbean01; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + +/** + * @author tangtian + * @version 1.0 + * @className Text1 + * @description + * @date 2020/11/16 7:16 AM + **/ +public class Text1 { + private static final Logger LOG = LoggerFactory.getLogger(Text1.class); + + public static void main(String[] args) { + AnnotationConfigApplicationContext annotationConfigApplicationContext = new + AnnotationConfigApplicationContext(Config1.class); + User1 user1 = annotationConfigApplicationContext.getBean(User1.class); + LOG.info("获取到bean:{}",user1.getName()); + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean01/User1.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean01/User1.java new file mode 100644 index 00000000..07e31d17 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean01/User1.java @@ -0,0 +1,38 @@ +package io.tangtian.springbean.springbean01; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +/** + * @author tangtian + * @version 1.0 + * @className User + * @description @Component注解表示该类会作为一个组件类,并告知Spring要为这个类创建bean。 + * 自动化装配,其从两个角度实现自动化装配: + * 组件扫描:Spring会自动发现应用上下文中的bean + * 自动装配:Spring自动满足bean之间的依赖 + * @date 2020/11/16 7:08 AM + **/ +@Component +public class User1 { + private static final Logger LOG = LoggerFactory.getLogger(User1.class); + private String name = "张三"; + private int id = 1; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean02/Text2.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean02/Text2.java new file mode 100644 index 00000000..4775965e --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean02/Text2.java @@ -0,0 +1,23 @@ +package io.tangtian.springbean.springbean02; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +/** + * @author tangtian + * @version 1.0 + * @className Text1 + * @description + * @date 2020/11/16 7:16 AM + **/ +public class Text2 { + private static final Logger LOG = LoggerFactory.getLogger(Text2.class); + + public static void main(String[] args) { + ClassPathXmlApplicationContext annotationConfigApplicationContext = new + ClassPathXmlApplicationContext("springbean02.xml"); + User2 user1 = annotationConfigApplicationContext.getBean(User2.class); + LOG.info("获取到bean:{}",user1.getName()); + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean02/User2.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean02/User2.java new file mode 100644 index 00000000..e8d10439 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean02/User2.java @@ -0,0 +1,38 @@ +package io.tangtian.springbean.springbean02; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +/** + * @author tangtian + * @version 1.0 + * @className User + * @description @Component注解表示该类会作为一个组件类,并告知Spring要为这个类创建bean。 + * 自动化装配,其从两个角度实现自动化装配: + * 组件扫描:Spring会自动发现应用上下文中的bean + * 自动装配:Spring自动满足bean之间的依赖 + * @date 2020/11/16 7:08 AM + **/ +@Component +public class User2 { + private static final Logger LOG = LoggerFactory.getLogger(User2.class); + private String name = "张三"; + private int id = 1; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean03/Config3.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean03/Config3.java new file mode 100644 index 00000000..ecc1f5f7 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean03/Config3.java @@ -0,0 +1,19 @@ +package io.tangtian.springbean.springbean03; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +/** + * @author tangtian + * @version 1.0 + * @className Config + * @description + * @date 2020/11/16 7:40 AM + **/ +@Configuration +@ComponentScan +public class Config3 { + private static final Logger LOG = LoggerFactory.getLogger(Config3.class); +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean03/User3.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean03/User3.java new file mode 100644 index 00000000..393e0484 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean03/User3.java @@ -0,0 +1,37 @@ +package io.tangtian.springbean.springbean03; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +/** + * @author tangtian + * @version 1.0 + * @className User + * @description @Component注解表示该类会作为一个组件类,并告知Spring要为这个类创建bean。 + * 自动化装配,其从两个角度实现自动化装配: + * 组件扫描:Spring会自动发现应用上下文中的bean + * 自动装配:Spring自动满足bean之间的依赖 + * @date 2020/11/16 7:08 AM + **/ +@Component +public class User3 { + private static final Logger LOG = LoggerFactory.getLogger(User3.class); + private String name = "张三"; + private int id = 1; + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean04/User4.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean04/User4.java new file mode 100644 index 00000000..9da5b2fe --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean04/User4.java @@ -0,0 +1,35 @@ +package io.tangtian.springbean.springbean04; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +/** + * @author tangtian + * @version 1.0 + * @className User + * @description + * @date 2020/11/16 7:08 AM + **/ +@Component +public class User4 { + private static final Logger LOG = LoggerFactory.getLogger(User4.class); + private String name = "张三"; + private int id = 1; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean05/Config5.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean05/Config5.java new file mode 100644 index 00000000..23f4d4e8 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean05/Config5.java @@ -0,0 +1,19 @@ +package io.tangtian.springbean.springbean05; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +/** + * @author tangtian + * @version 1.0 + * @className Config5 + * @description + * @date 2020/11/16 8:37 AM + **/ +@Configuration +@ComponentScan +public class Config5 { + private static final Logger LOG = LoggerFactory.getLogger(Config5.class); +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean05/Role5_1.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean05/Role5_1.java new file mode 100644 index 00000000..0e390504 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean05/Role5_1.java @@ -0,0 +1,20 @@ +package io.tangtian.springbean.springbean05; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author tangtian + * @version 1.0 + * @className Role5_1 + * @description + * @date 2020/11/16 8:40 AM + **/ +@Component +public class Role5_1 { + private static final Logger LOG = LoggerFactory.getLogger(Role5_1.class); + @Autowired(required = false) + private User5 user5; +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean05/Role5_2.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean05/Role5_2.java new file mode 100644 index 00000000..074a9540 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean05/Role5_2.java @@ -0,0 +1,23 @@ +package io.tangtian.springbean.springbean05; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author tangtian + * @version 1.0 + * @className Role5_2 + * @description + * @date 2020/11/16 8:42 AM + **/ +@Component +public class Role5_2 { + private static final Logger LOG = LoggerFactory.getLogger(Role5_2.class); + private User5 user5; + @Autowired + public Role5_2(User5 user5){ + this.user5 = user5; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean05/Role6_3.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean05/Role6_3.java new file mode 100644 index 00000000..89aafcdc --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean05/Role6_3.java @@ -0,0 +1,23 @@ +package io.tangtian.springbean.springbean05; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author tangtian + * @version 1.0 + * @className Role6_3 + * @description + * @date 2020/11/16 8:43 AM + **/ +@Component +public class Role6_3 { + private static final Logger LOG = LoggerFactory.getLogger(Role6_3.class); + private User5 user5; + @Autowired + public void setUser5(User5 user5){ + this.user5 = user5; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean05/User5.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean05/User5.java new file mode 100644 index 00000000..16187c7e --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean05/User5.java @@ -0,0 +1,35 @@ +package io.tangtian.springbean.springbean05; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +/** + * @author tangtian + * @version 1.0 + * @className User5 + * @description + * @date 2020/11/16 8:37 AM + **/ +@Component("user5") +public class User5 { + private static final Logger LOG = LoggerFactory.getLogger(User5.class); + private int id = 5; + private String name = "张三5"; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/Config6.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/Config6.java new file mode 100644 index 00000000..fe7772b0 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/Config6.java @@ -0,0 +1,45 @@ +package io.tangtian.springbean.springbean06; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author tangtian + * @version 1.0 + * @className Config6 + * @description + * @date 2020/11/16 8:46 AM + **/ +@Configuration +public class Config6 { + private static final Logger LOG = LoggerFactory.getLogger(Config6.class); + + @Bean + public User6_1 user6_1() { + return new User6_1(); + } + + @Bean(name = "user6_2") + public User6_2 user6_2() { + return new User6_2(); + } + + @Bean + Role6_1 role6_1() { + return new Role6_1(user6_1()); + } + + @Bean + Role6_2 role6_2(User6_1 user6_1) { + return new Role6_2(user6_1); + } + + @Bean + Role6_3 role6_3(User6_1 user6_1) { + Role6_3 role6_3 = new Role6_3(); + role6_3.setUser6_1(user6_1); + return role6_3; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/Role6_1.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/Role6_1.java new file mode 100644 index 00000000..3edf407c --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/Role6_1.java @@ -0,0 +1,19 @@ +package io.tangtian.springbean.springbean06; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className Role6_1 + * @description + * @date 2020/11/16 8:51 AM + **/ +public class Role6_1 { + private static final Logger LOG = LoggerFactory.getLogger(Role6_1.class); + private User6_1 user6_1; + public Role6_1(User6_1 user6_1){ + this.user6_1 = user6_1; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/Role6_2.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/Role6_2.java new file mode 100644 index 00000000..bf65f5c5 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/Role6_2.java @@ -0,0 +1,19 @@ +package io.tangtian.springbean.springbean06; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className Role6_1 + * @description + * @date 2020/11/16 8:51 AM + **/ +public class Role6_2 { + private static final Logger LOG = LoggerFactory.getLogger(Role6_2.class); + private User6_1 user6_1; + public Role6_2(User6_1 user6_1){ + this.user6_1 = user6_1; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/Role6_3.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/Role6_3.java new file mode 100644 index 00000000..a51128d4 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/Role6_3.java @@ -0,0 +1,19 @@ +package io.tangtian.springbean.springbean06; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className Role6_3 + * @description + * @date 2020/11/16 8:53 AM + **/ +public class Role6_3 { + private static final Logger LOG = LoggerFactory.getLogger(Role6_3.class); + private User6_1 user6_1; + public void setUser6_1(User6_1 user6_1){ + this.user6_1 = user6_1; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/User6_1.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/User6_1.java new file mode 100644 index 00000000..49cbf225 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/User6_1.java @@ -0,0 +1,33 @@ +package io.tangtian.springbean.springbean06; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className User6_1 + * @description + * @date 2020/11/16 8:47 AM + **/ +public class User6_1 { + private static final Logger LOG = LoggerFactory.getLogger(User6_1.class); + private int id = 6; + private String name = "张三6"; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/User6_2.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/User6_2.java new file mode 100644 index 00000000..25256eea --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean06/User6_2.java @@ -0,0 +1,33 @@ +package io.tangtian.springbean.springbean06; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className User6_1 + * @description + * @date 2020/11/16 8:47 AM + **/ +public class User6_2 { + private static final Logger LOG = LoggerFactory.getLogger(User6_2.class); + private int id = 6; + private String name = "李四6"; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_1.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_1.java new file mode 100644 index 00000000..42fb1457 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_1.java @@ -0,0 +1,30 @@ +package io.tangtian.springbean.springbean07; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className User7_1 + * @description + * @date 2020/11/16 9:00 AM + **/ +public class User7_1 { + private static final Logger LOG = LoggerFactory.getLogger(User7_1.class); + private int id = 7; + private String name = "张三71"; + public int getId(){ + return id; + } + public void setId(int id){ + this.id = id; + } + public String getName(){ + return name; + } + + public void setName(String name){ + this.name = name; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_2.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_2.java new file mode 100644 index 00000000..5532bbe6 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_2.java @@ -0,0 +1,33 @@ +package io.tangtian.springbean.springbean07; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className User7_1 + * @description + * @date 2020/11/16 9:00 AM + **/ +public class User7_2 { + private static final Logger LOG = LoggerFactory.getLogger(User7_2.class); + private int id = 7; + private String name = "张三72"; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_3.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_3.java new file mode 100644 index 00000000..f7921fe0 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_3.java @@ -0,0 +1,38 @@ +package io.tangtian.springbean.springbean07; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className User7_1 + * @description + * @date 2020/11/16 9:00 AM + **/ +public class User7_3 { + private static final Logger LOG = LoggerFactory.getLogger(User7_3.class); + private int id; + private String name; + + public User7_3(int id, String name) { + this.id = id; + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_4.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_4.java new file mode 100644 index 00000000..67e0b50f --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_4.java @@ -0,0 +1,38 @@ +package io.tangtian.springbean.springbean07; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className User7_1 + * @description + * @date 2020/11/16 9:00 AM + **/ +public class User7_4 { + private static final Logger LOG = LoggerFactory.getLogger(User7_4.class); + private int id; + private String name; + + public User7_4(int id, String name) { + this.id = id; + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_5.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_5.java new file mode 100644 index 00000000..a207398e --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_5.java @@ -0,0 +1,38 @@ +package io.tangtian.springbean.springbean07; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className User7_1 + * @description + * @date 2020/11/16 9:00 AM + **/ +public class User7_5 { + private static final Logger LOG = LoggerFactory.getLogger(User7_5.class); + private int id; + private String name; + + public User7_5(int id, String name) { + this.id = id; + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_6.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_6.java new file mode 100644 index 00000000..685c56ef --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_6.java @@ -0,0 +1,50 @@ +package io.tangtian.springbean.springbean07; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +/** + * @author tangtian + * @version 1.0 + * @className User7_1 + * @description + * @date 2020/11/16 9:00 AM + **/ +public class User7_6 { + private static final Logger LOG = LoggerFactory.getLogger(User7_6.class); + private int id; + private String name; + private List titles; + + public User7_6(int id, String name,List titles) { + this.id = id; + this.name = name; + this.titles = titles; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getTitles() { + return titles; + } + + public void setTitles(List titles) { + this.titles = titles; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_7.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_7.java new file mode 100644 index 00000000..338ddae5 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_7.java @@ -0,0 +1,50 @@ +package io.tangtian.springbean.springbean07; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +/** + * @author tangtian + * @version 1.0 + * @className User7_1 + * @description + * @date 2020/11/16 9:00 AM + **/ +public class User7_7 { + private static final Logger LOG = LoggerFactory.getLogger(User7_7.class); + private int id; + private String name; + private List titles; + + public User7_7(int id, String name, List titles) { + this.id = id; + this.name = name; + this.titles = titles; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getTitles() { + return titles; + } + + public void setTitles(List titles) { + this.titles = titles; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_8.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_8.java new file mode 100644 index 00000000..0245a039 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_8.java @@ -0,0 +1,50 @@ +package io.tangtian.springbean.springbean07; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +/** + * @author tangtian + * @version 1.0 + * @className User7_1 + * @description + * @date 2020/11/16 9:00 AM + **/ +public class User7_8 { + private static final Logger LOG = LoggerFactory.getLogger(User7_8.class); + private int id; + private String name; + private List titles; + + public User7_8(int id, String name, List titles) { + this.id = id; + this.name = name; + this.titles = titles; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getTitles() { + return titles; + } + + public void setTitles(List titles) { + this.titles = titles; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_9.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_9.java new file mode 100644 index 00000000..ab789166 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean07/User7_9.java @@ -0,0 +1,50 @@ +package io.tangtian.springbean.springbean07; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Set; + +/** + * @author tangtian + * @version 1.0 + * @className User7_1 + * @description + * @date 2020/11/16 9:00 AM + **/ +public class User7_9 { + private static final Logger LOG = LoggerFactory.getLogger(User7_9.class); + private int id; + private String name; + private Set titles; + + public User7_9(int id, String name, Set titles) { + this.id = id; + this.name = name; + this.titles = titles; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Set getTitles() { + return titles; + } + + public void setTitles(Set titles) { + this.titles = titles; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_1/Config8_1.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_1/Config8_1.java new file mode 100644 index 00000000..27de98b4 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_1/Config8_1.java @@ -0,0 +1,22 @@ +package io.tangtian.springbean.springbean08.bean8_1; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author tangtian + * @version 1.0 + * @className Config + * @description + * @date 2020/11/16 7:38 PM + **/ +@Configuration +public class Config8_1 { + private static final Logger LOG = LoggerFactory.getLogger(Config8_1.class); + @Bean + public User8_1 user9_1(){ + return new User8_1("9_1","张三09"); + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_1/User8_1.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_1/User8_1.java new file mode 100644 index 00000000..f90e8d06 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_1/User8_1.java @@ -0,0 +1,37 @@ +package io.tangtian.springbean.springbean08.bean8_1; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className User9_1 + * @description + * @date 2020/11/16 7:39 PM + **/ +public class User8_1 { + private static final Logger LOG = LoggerFactory.getLogger(User8_1.class); + private String id; + private String name; + public User8_1(String id, String name){ + this.id = id; + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_2/Config8_2.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_2/Config8_2.java new file mode 100644 index 00000000..2050f83d --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_2/Config8_2.java @@ -0,0 +1,22 @@ +package io.tangtian.springbean.springbean08.bean8_2; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author tangtian + * @version 1.0 + * @className Config + * @description + * @date 2020/11/16 7:38 PM + **/ +@Configuration +public class Config8_2 { + private static final Logger LOG = LoggerFactory.getLogger(Config8_2.class); + @Bean + public User8_2 user9_1(){ + return new User8_2("9_2","张三09"); + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_2/User8_2.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_2/User8_2.java new file mode 100644 index 00000000..d83937d3 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_2/User8_2.java @@ -0,0 +1,37 @@ +package io.tangtian.springbean.springbean08.bean8_2; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className User9_1 + * @description + * @date 2020/11/16 7:39 PM + **/ +public class User8_2 { + private static final Logger LOG = LoggerFactory.getLogger(User8_2.class); + private String id; + private String name; + public User8_2(String id, String name){ + this.id = id; + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_3/Config.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_3/Config.java new file mode 100644 index 00000000..9ca60f2e --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_3/Config.java @@ -0,0 +1,35 @@ +package io.tangtian.springbean.springbean08.bean8_3; + +import io.tangtian.springbean.springbean08.bean8_1.Config8_1; +import io.tangtian.springbean.springbean08.bean8_1.User8_1; +import io.tangtian.springbean.springbean08.bean8_2.Config8_2; +import io.tangtian.springbean.springbean08.bean8_2.User8_2; +import io.tangtian.springbean.springbean08.bean8_4.User8_4; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.ImportResource; + +/** + * @author tangtian + * @version 1.0 + * @className Config + * @description + * @date 2020/11/16 7:47 PM + **/ +@Configuration +@Import({Config8_1.class, Config8_2.class}) +@ImportResource("classpath:springbean08.xml") +public class Config { + private static final Logger LOG = LoggerFactory.getLogger(Config.class); + @Bean + public Role3 role3(User8_1 user8_1, User8_2 user8_2, User8_4 user8_4){ + Role3 role3 = new Role3(); + role3.setUser8_1(user8_1); + role3.setUser8_2(user8_2); + role3.setUser8_4(user8_4); + return role3; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_3/Role3.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_3/Role3.java new file mode 100644 index 00000000..c5170dc4 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_3/Role3.java @@ -0,0 +1,45 @@ +package io.tangtian.springbean.springbean08.bean8_3; + +import io.tangtian.springbean.springbean08.bean8_1.User8_1; +import io.tangtian.springbean.springbean08.bean8_2.User8_2; +import io.tangtian.springbean.springbean08.bean8_4.User8_4; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className Role3 + * @description + * @date 2020/11/16 7:47 PM + **/ +public class Role3 { + private static final Logger LOG = LoggerFactory.getLogger(Role3.class); + private User8_1 user8_1; + private User8_2 user8_2; + private User8_4 user8_4; + + public User8_1 getUser8_1() { + return user8_1; + } + + public void setUser8_1(User8_1 user8_1) { + this.user8_1 = user8_1; + } + + public User8_2 getUser8_2() { + return user8_2; + } + + public void setUser8_2(User8_2 user8_2) { + this.user8_2 = user8_2; + } + + public User8_4 getUser8_4() { + return user8_4; + } + + public void setUser8_4(User8_4 user8_4) { + this.user8_4 = user8_4; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_4/User8_4.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_4/User8_4.java new file mode 100644 index 00000000..6153f043 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean08/bean8_4/User8_4.java @@ -0,0 +1,37 @@ +package io.tangtian.springbean.springbean08.bean8_4; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className User8_4 + * @description + * @date 2020/11/16 7:50 PM + **/ +public class User8_4 { + private static final Logger LOG = LoggerFactory.getLogger(User8_4.class); + private String id; + private String name; + public User8_4(String id,String name){ + this.id = id; + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean09/bean2/User9_2.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean09/bean2/User9_2.java new file mode 100644 index 00000000..fc53a81c --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean09/bean2/User9_2.java @@ -0,0 +1,38 @@ +package io.tangtian.springbean.springbean09.bean2; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className User9_2 + * @description + * @date 2020/11/17 7:07 AM + **/ +public class User9_2 { + private static final Logger LOG = LoggerFactory.getLogger(User9_2.class); + private String id; + private String name; + + public User9_2(String id, String name) { + this.id = id; + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean09/bean3/Role9_3.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean09/bean3/Role9_3.java new file mode 100644 index 00000000..af19da8c --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean09/bean3/Role9_3.java @@ -0,0 +1,41 @@ +package io.tangtian.springbean.springbean09.bean3; + +import io.tangtian.springbean.springbean09.bean2.User9_2; +import io.tangtian.springbean.springbean09.bean9_1.User9_1; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className Role9_3 + * @description + * @date 2020/11/17 7:08 AM + **/ +public class Role9_3 { + private static final Logger LOG = LoggerFactory.getLogger(Role9_3.class); + + private User9_1 user9_1; + private User9_2 user9_2; + + public Role9_3(User9_1 user9_1, User9_2 user9_2) { + this.user9_1 = user9_1; + this.user9_2 = user9_2; + } + + public User9_1 getUser9_1() { + return user9_1; + } + + public void setUser9_1(User9_1 user9_1) { + this.user9_1 = user9_1; + } + + public User9_2 getUser9_2() { + return user9_2; + } + + public void setUser9_2(User9_2 user9_2) { + this.user9_2 = user9_2; + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean09/bean9_1/Config9_1.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean09/bean9_1/Config9_1.java new file mode 100644 index 00000000..123840d7 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean09/bean9_1/Config9_1.java @@ -0,0 +1,22 @@ +package io.tangtian.springbean.springbean09.bean9_1; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author tangtian + * @version 1.0 + * @className Config + * @description + * @date 2020/11/17 7:06 AM + **/ +@Configuration +public class Config9_1 { + private static final Logger LOG = LoggerFactory.getLogger(Config9_1.class); + @Bean + public User9_1 user9_1(){ + return new User9_1("9_1","zhangsan9_1"); + } +} diff --git a/04fx/spring01/src/main/java/io/tangtian/springbean/springbean09/bean9_1/User9_1.java b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean09/bean9_1/User9_1.java new file mode 100644 index 00000000..446ea654 --- /dev/null +++ b/04fx/spring01/src/main/java/io/tangtian/springbean/springbean09/bean9_1/User9_1.java @@ -0,0 +1,38 @@ +package io.tangtian.springbean.springbean09.bean9_1; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author tangtian + * @version 1.0 + * @className User9_1 + * @description + * @date 2020/11/17 7:05 AM + **/ +public class User9_1 { + private static final Logger LOG = LoggerFactory.getLogger(User9_1.class); + private String id; + private String name; + + public User9_1(String id, String name) { + this.id = id; + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/04fx/spring01/src/main/resources/springbean02.xml b/04fx/spring01/src/main/resources/springbean02.xml new file mode 100644 index 00000000..52437e31 --- /dev/null +++ b/04fx/spring01/src/main/resources/springbean02.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/04fx/spring01/src/main/resources/springbean04.xml b/04fx/spring01/src/main/resources/springbean04.xml new file mode 100644 index 00000000..c2f19ca5 --- /dev/null +++ b/04fx/spring01/src/main/resources/springbean04.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/04fx/spring01/src/main/resources/springbean08.xml b/04fx/spring01/src/main/resources/springbean08.xml new file mode 100644 index 00000000..09883c04 --- /dev/null +++ b/04fx/spring01/src/main/resources/springbean08.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/04fx/spring01/src/main/resources/springbean09_1.xml b/04fx/spring01/src/main/resources/springbean09_1.xml new file mode 100644 index 00000000..1592a4a9 --- /dev/null +++ b/04fx/spring01/src/main/resources/springbean09_1.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/04fx/spring01/src/main/resources/springbean09_2.xml b/04fx/spring01/src/main/resources/springbean09_2.xml new file mode 100644 index 00000000..971ff2e2 --- /dev/null +++ b/04fx/spring01/src/main/resources/springbean09_2.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/04fx/spring01/src/test/java/UserTest03.java b/04fx/spring01/src/test/java/UserTest03.java new file mode 100644 index 00000000..c763b209 --- /dev/null +++ b/04fx/spring01/src/test/java/UserTest03.java @@ -0,0 +1,29 @@ +import io.tangtian.springbean.springbean03.Config3; +import io.tangtian.springbean.springbean03.User3; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @author tangtian + * @version 1.0 + * @className UserTest + * @description + * @date 2020/11/16 8:24 AM + **/ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = {Config3.class}) +public class UserTest03 { + private static final Logger LOG = LoggerFactory.getLogger(UserTest03.class); + @Autowired + private User3 user3; + + @Test + public void testUser(){ + System.out.println(user3.getName()); + } +} diff --git a/04fx/spring01/src/test/java/UserTest04.java b/04fx/spring01/src/test/java/UserTest04.java new file mode 100644 index 00000000..037eb473 --- /dev/null +++ b/04fx/spring01/src/test/java/UserTest04.java @@ -0,0 +1,28 @@ +import io.tangtian.springbean.springbean04.User4; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @author tangtian + * @version 1.0 + * @className UserTest + * @description + * @date 2020/11/16 8:24 AM + **/ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = {"classpath:springbean04.xml"}) +public class UserTest04 { + private static final Logger LOG = LoggerFactory.getLogger(UserTest04.class); + @Autowired + private User4 user4; + + @Test + public void testUser(){ + System.out.println(user4.getName()); + } +} diff --git a/04fx/spring01/target/classes/applicationContext.xml b/04fx/spring01/target/classes/applicationContext.xml new file mode 100644 index 00000000..681cf409 --- /dev/null +++ b/04fx/spring01/target/classes/applicationContext.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/04fx/spring01/target/classes/log4j.xml b/04fx/spring01/target/classes/log4j.xml new file mode 100644 index 00000000..efc1f4f6 --- /dev/null +++ b/04fx/spring01/target/classes/log4j.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/04fx/spring01/target/classes/springjms-receiver.xml b/04fx/spring01/target/classes/springjms-receiver.xml new file mode 100644 index 00000000..e0d9fbc6 --- /dev/null +++ b/04fx/spring01/target/classes/springjms-receiver.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/04fx/spring01/target/classes/springjms-sender.xml b/04fx/spring01/target/classes/springjms-sender.xml new file mode 100644 index 00000000..119ec07a --- /dev/null +++ b/04fx/spring01/target/classes/springjms-sender.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/04fx/spring01/target/maven-archiver/pom.properties b/04fx/spring01/target/maven-archiver/pom.properties new file mode 100644 index 00000000..f11cf9b0 --- /dev/null +++ b/04fx/spring01/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Thu Nov 12 21:52:50 CST 2020 +version=1.0 +groupId=io.kimmking +artifactId=spring01 diff --git a/04fx/spring01/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/04fx/spring01/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 00000000..9f6a5c54 --- /dev/null +++ b/04fx/spring01/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,21 @@ +io/kimmking/spring01/GuavaDemo$AEvent.class +io/kimmking/spring02/SpringDemo01.class +io/kimmking/springjms/JmsSender.class +io/kimmking/spring01/CollectionDemo.class +io/kimmking/springjms/SendService.class +io/kimmking/spring01/http/HttpServer03.class +io/kimmking/spring01/GuavaDemo.class +io/kimmking/spring02/Aop2.class +io/kimmking/spring01/http/HttpServer02.class +io/kimmking/spring02/Klass.class +io/kimmking/spring01/A.class +io/kimmking/spring01/LombokDemo.class +io/kimmking/spring02/School.class +io/kimmking/springjms/JmsListener.class +io/kimmking/springjms/JmsReceiver.class +io/kimmking/spring01/Student.class +io/kimmking/aop/ISchool.class +io/kimmking/spring01/http/HttpServer01.class +io/kimmking/spring01/StreamDemo.class +io/kimmking/spring02/Aop1.class +io/kimmking/springjms/SendService$1.class diff --git a/04fx/spring01/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/04fx/spring01/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 00000000..928a0808 --- /dev/null +++ b/04fx/spring01/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,19 @@ +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/spring01/http/HttpServer02.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/spring01/LombokDemo.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/spring02/Aop1.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/spring01/http/HttpServer03.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/spring01/StreamDemo.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/springjms/JmsListener.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/spring01/GuavaDemo.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/springjms/SendService.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/spring01/Student.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/aop/ISchool.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/spring01/CollectionDemo.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/spring02/School.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/spring02/SpringDemo01.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/spring02/Aop2.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/spring02/Klass.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/spring01/http/HttpServer01.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/spring01/A.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/springjms/JmsReceiver.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/main/java/io/kimmking/springjms/JmsSender.java diff --git a/04fx/spring01/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/04fx/spring01/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 00000000..13d7192c --- /dev/null +++ b/04fx/spring01/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst @@ -0,0 +1,2 @@ +Spring02Test.class +Sprint01Test.class diff --git a/04fx/spring01/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/04fx/spring01/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 00000000..76226bc0 --- /dev/null +++ b/04fx/spring01/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -0,0 +1,2 @@ +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/test/java/Sprint01Test.java +/Users/tangtian/personalCode/JavaCourseCodes/04fx/spring01/src/test/java/Spring02Test.java diff --git a/04fx/spring01/target/surefire-reports/Spring02Test.txt b/04fx/spring01/target/surefire-reports/Spring02Test.txt new file mode 100644 index 00000000..351edf69 --- /dev/null +++ b/04fx/spring01/target/surefire-reports/Spring02Test.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: Spring02Test +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.119 sec diff --git a/04fx/spring01/target/surefire-reports/Sprint01Test.txt b/04fx/spring01/target/surefire-reports/Sprint01Test.txt new file mode 100644 index 00000000..2fc5bfb2 --- /dev/null +++ b/04fx/spring01/target/surefire-reports/Sprint01Test.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: Sprint01Test +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.136 sec diff --git a/04fx/spring01/target/surefire-reports/TEST-Spring02Test.xml b/04fx/spring01/target/surefire-reports/TEST-Spring02Test.xml new file mode 100644 index 00000000..e005caf5 --- /dev/null +++ b/04fx/spring01/target/surefire-reports/TEST-Spring02Test.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/04fx/spring01/target/surefire-reports/TEST-Sprint01Test.xml b/04fx/spring01/target/surefire-reports/TEST-Sprint01Test.xml new file mode 100644 index 00000000..5da4d11a --- /dev/null +++ b/04fx/spring01/target/surefire-reports/TEST-Sprint01Test.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/07rpc/rpc01/rpcfx-core/pom.xml b/07rpc/rpc01/rpcfx-core/pom.xml index 4570a59d..0b7c1f81 100644 --- a/07rpc/rpc01/rpcfx-core/pom.xml +++ b/07rpc/rpc01/rpcfx-core/pom.xml @@ -23,7 +23,15 @@ fastjson 1.2.70 - + + org.apache.httpcomponents + httpclient + 4.5.2 + + + net.bytebuddy + byte-buddy + org.projectlombok lombok diff --git a/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/annotation/RpcfxService.java b/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/annotation/RpcfxService.java new file mode 100644 index 00000000..d6add928 --- /dev/null +++ b/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/annotation/RpcfxService.java @@ -0,0 +1,17 @@ +package io.kimmking.rpcfx.annotation; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE}) +@Inherited +public @interface RpcfxService { + Class interfaceClass() default void.class; + String interfaceName() default ""; +} diff --git a/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/api/RpcfxResolver.java b/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/api/RpcfxResolver.java index f7c48068..df40e78b 100644 --- a/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/api/RpcfxResolver.java +++ b/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/api/RpcfxResolver.java @@ -4,4 +4,6 @@ public interface RpcfxResolver { Object resolve(String serviceClass); + void initService(String servicePath); + } diff --git a/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/client/Rpcfx.java b/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/client/Rpcfx.java index 74adbcc6..f91fa9f8 100644 --- a/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/client/Rpcfx.java +++ b/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/client/Rpcfx.java @@ -3,26 +3,34 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.parser.ParserConfig; +import io.kimmking.rpcfx.utils.HttpUtils; +import io.kimmking.rpcfx.exception.RpcException; +import io.kimmking.rpcfx.api.RpcfxRequest; +import io.kimmking.rpcfx.api.RpcfxResponse; +import net.bytebuddy.ByteBuddy; +import net.bytebuddy.implementation.InvocationHandlerAdapter; +import net.bytebuddy.matcher.ElementMatchers; import io.kimmking.rpcfx.api.*; import okhttp3.MediaType; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; +import okhttp3.internal.http2.ErrorCode; import java.io.IOException; import java.lang.reflect.InvocationHandler; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Proxy; + import java.util.ArrayList; import java.util.List; + public final class Rpcfx { static { ParserConfig.getGlobalInstance().addAccept("io.kimmking"); } - public static T createFromRegistry(final Class serviceClass, final String zkUrl, Router router, LoadBalancer loadBalance, Filter filter) { + public static T createFromRegistry(final Class serviceClass, final String zkUrl, Router router, LoadBalancer loadBalance, Filter filter) throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException { // 加filte之一 @@ -43,7 +51,20 @@ public static T create(final Class serviceClass, final String url, Filter // 0. 替换动态代理 -> AOP return (T) Proxy.newProxyInstance(Rpcfx.class.getClassLoader(), new Class[]{serviceClass}, new RpcfxInvocationHandler(serviceClass, url, filters)); - + } + private static Object getByteBuddyProxy(Class serviceClass, String url) + throws InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { + return new ByteBuddy() + .subclass(Object.class) + .name(serviceClass.getCanonicalName() + "$ByteBuddyProxy") + .implement(serviceClass) + .method(ElementMatchers.any()) + .intercept(InvocationHandlerAdapter.of(new RpcfxInvocationHandler(serviceClass, url))) + .make() + .load(Rpcfx.class.getClassLoader()) + .getLoaded() + .getDeclaredConstructor() + .newInstance(); } public static class RpcfxInvocationHandler implements InvocationHandler { @@ -60,10 +81,9 @@ public RpcfxInvocationHandler(Class serviceClass, String url, Filter... f this.filters = filters; } - // 可以尝试,自己去写对象序列化,二进制还是文本的,,,rpcfx是xml自定义序列化、反序列化,json: code.google.com/p/rpcfx - // int byte char float double long bool + // TODO: 2020/12/17 可以尝试,自己去写对象序列化,二进制还是文本的,,,rpcfx是xml自定义序列化、反序列化,json: code.google.com/p/rpcfx + // int byte char float double long bool // [], data class - @Override public Object invoke(Object proxy, Method method, Object[] params) throws Throwable { @@ -85,12 +105,16 @@ public Object invoke(Object proxy, Method method, Object[] params) throws Throwa RpcfxResponse response = post(request, url); + // 加filter地方之三 // Student.setTeacher("cuijing"); // 这里判断response.status,处理异常 // 考虑封装一个全局的RpcfxException - + if(!response.isStatus()){ + System.out.println("error" + response); + throw new RpcException(ErrorCode.CONNECT_ERROR); + } return JSON.parse(response.getResult().toString()); } @@ -100,12 +124,7 @@ private RpcfxResponse post(RpcfxRequest req, String url) throws IOException { // 1.可以复用client // 2.尝试使用httpclient或者netty client - OkHttpClient client = new OkHttpClient(); - final Request request = new Request.Builder() - .url(url) - .post(RequestBody.create(JSONTYPE, reqJson)) - .build(); - String respJson = client.newCall(request).execute().body().string(); + String respJson = HttpUtils.httpPostJson(reqJson,url); System.out.println("resp json: "+respJson); return JSON.parseObject(respJson, RpcfxResponse.class); } diff --git a/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/exception/RpcException.java b/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/exception/RpcException.java new file mode 100644 index 00000000..62db1452 --- /dev/null +++ b/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/exception/RpcException.java @@ -0,0 +1,78 @@ +package io.kimmking.rpcfx.exception; + +import okhttp3.internal.http2.ErrorCode; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static okhttp3.internal.http2.ErrorCode.PROTOCOL_ERROR; + +/** + * @author tangtian + * @version 1.0 + * @className RpcException + * @description + * @date 2020/12/16 8:21 PM + **/ +public class RpcException extends RuntimeException { + private static final Logger LOG = LoggerFactory.getLogger(RpcException.class); + private static final long serialVersionUID = -7864604160297181941L; + + /** 错误码 */ + protected final ErrorCode errorCode; +// NO_ERROR(0), +// PROTOCOL_ERROR(1), +// INTERNAL_ERROR(2), +// FLOW_CONTROL_ERROR(3), +// REFUSED_STREAM(7), +// CANCEL(8), +// COMPRESSION_ERROR(9), +// CONNECT_ERROR(10), +// ENHANCE_YOUR_CALM(11), +// INADEQUATE_SECURITY(12), +// HTTP_1_1_REQUIRED(13); + + /** + * 这个是和谐一些不必要的地方,冗余的字段 + * 尽量不要用 + */ + private String code; + + /** + * 无参默认构造UNSPECIFIED + */ + public RpcException() { + super(""); + this.errorCode = PROTOCOL_ERROR; + } + + /** + * 指定错误码构造通用异常 + * @param errorCode 错误码 + */ + public RpcException(final ErrorCode errorCode) { + super(""); + this.errorCode = errorCode; + } + + /** + * 构造通用异常 + * @param errorCode 错误码 + * @param detailedMessage 详细描述 + * @param t 导火索 + */ + public RpcException(final ErrorCode errorCode, final String detailedMessage, + final Throwable t) { + super(detailedMessage, t); + this.errorCode = errorCode; + } + + /** + * Getter method for property errorCode. + * + * @return property value of errorCode + */ + public ErrorCode getErrorCode() { + return errorCode; + } + +} diff --git a/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/server/RpcfxInvoker.java b/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/server/RpcfxInvoker.java index a6f77dac..54bffdef 100644 --- a/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/server/RpcfxInvoker.java +++ b/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/server/RpcfxInvoker.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; +import io.kimmking.rpcfx.exception.RpcException; import io.kimmking.rpcfx.api.RpcfxRequest; import io.kimmking.rpcfx.api.RpcfxResolver; import io.kimmking.rpcfx.api.RpcfxResponse; @@ -13,9 +14,10 @@ public class RpcfxInvoker { private RpcfxResolver resolver; - - public RpcfxInvoker(RpcfxResolver resolver){ + public RpcfxInvoker(RpcfxResolver resolver, String servicePath){ this.resolver = resolver; + // 初始化服务 + resolver.initService(servicePath); } public RpcfxResponse invoke(RpcfxRequest request) { @@ -24,25 +26,21 @@ public RpcfxResponse invoke(RpcfxRequest request) { // 作业1:改成泛型和反射 Object service = resolver.resolve(serviceClass);//this.applicationContext.getBean(serviceClass); - try { Method method = resolveMethodFromClass(service.getClass(), request.getMethod()); - Object result = method.invoke(service, request.getParams()); // dubbo, fastjson, - // 两次json序列化能否合并成一个 - response.setResult(JSON.toJSONString(result, SerializerFeature.WriteClassName)); + Object result = method.invoke(service, request.getParams()); + // 两次json序列化合并成一个 + response.setResult(result); response.setStatus(true); - return response; - } catch ( IllegalAccessException | InvocationTargetException e) { - + } catch (IllegalAccessException | InvocationTargetException e) { // 3.Xstream - // 2.封装一个统一的RpcfxException // 客户端也需要判断异常 e.printStackTrace(); - response.setException(e); + response.setException(new RpcException()); response.setStatus(false); - return response; } + return response; } private Method resolveMethodFromClass(Class klass, String methodName) { diff --git a/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/utils/HttpUtils.java b/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/utils/HttpUtils.java new file mode 100644 index 00000000..85dcdb84 --- /dev/null +++ b/07rpc/rpc01/rpcfx-core/src/main/java/io/kimmking/rpcfx/utils/HttpUtils.java @@ -0,0 +1,68 @@ +package io.kimmking.rpcfx.utils; + +import org.apache.http.NameValuePair; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.protocol.HTTP; +import org.apache.http.util.EntityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.net.URI; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author tangtian + * @version 1.0 + * @className HttpUtils + * @description + * @date 2020/12/16 8:06 PM + **/ +public class HttpUtils { + private final static CloseableHttpClient httpClient; + private final static int CONNECT_TIMEOUT = 5000; + private final static RequestConfig requestConfig; + + static { + PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(); + connectionManager.setMaxTotal(500); + connectionManager.setDefaultMaxPerRoute(50); + requestConfig = RequestConfig.custom() + .setConnectionRequestTimeout(CONNECT_TIMEOUT) + .setConnectTimeout(CONNECT_TIMEOUT) + .setSocketTimeout(CONNECT_TIMEOUT).build(); + + httpClient = HttpClients.custom() + .setConnectionManager(connectionManager) + .setDefaultRequestConfig(requestConfig) + .build(); + } + + public static String httpPostJson(final String json, final String url) { + final HttpPost httpPost = new HttpPost(url); + httpPost.setHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_KEEP_ALIVE); + httpPost.setHeader(HTTP.CONTENT_TYPE, "application/json;charset=utf-8"); + StringEntity requestEntity = new StringEntity(json, StandardCharsets.UTF_8); + httpPost.setEntity(requestEntity); + try { + CloseableHttpResponse response = httpClient.execute(httpPost); + return EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8); + } catch (Exception e) { + throw new RuntimeException("httpclient请求失败!"); + } + } +} diff --git a/07rpc/rpc01/rpcfx-demo-consumer/src/main/java/io/kimmking/rpcfx/demo/consumer/RpcfxClientApplication.java b/07rpc/rpc01/rpcfx-demo-consumer/src/main/java/io/kimmking/rpcfx/demo/consumer/RpcfxClientApplication.java index b6371f0d..d467f2f4 100644 --- a/07rpc/rpc01/rpcfx-demo-consumer/src/main/java/io/kimmking/rpcfx/demo/consumer/RpcfxClientApplication.java +++ b/07rpc/rpc01/rpcfx-demo-consumer/src/main/java/io/kimmking/rpcfx/demo/consumer/RpcfxClientApplication.java @@ -9,11 +9,10 @@ import io.kimmking.rpcfx.demo.api.OrderService; import io.kimmking.rpcfx.demo.api.User; import io.kimmking.rpcfx.demo.api.UserService; -import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.SpringBootApplication; +import java.lang.reflect.InvocationTargetException; import java.util.List; -import java.util.Random; @SpringBootApplication public class RpcfxClientApplication { @@ -23,7 +22,7 @@ public class RpcfxClientApplication { // nexus, userserivce -> userdao -> user // - public static void main(String[] args) { + public static void main(String[] args) throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException { // UserService service = new xxx(); // service.findById @@ -56,11 +55,12 @@ public String select(List urls) { } } - @Slf4j + private static class CuicuiFilter implements Filter { @Override public boolean filter(RpcfxRequest request) { - log.info("filter {} -> {}", this.getClass().getName(), request.toString()); + System.out.println(this.getClass().getName()); + System.out.println(request.toString()); return true; } } diff --git a/07rpc/rpc01/rpcfx-demo-provider/pom.xml b/07rpc/rpc01/rpcfx-demo-provider/pom.xml index c0f9b5c9..14b7715d 100644 --- a/07rpc/rpc01/rpcfx-demo-provider/pom.xml +++ b/07rpc/rpc01/rpcfx-demo-provider/pom.xml @@ -37,7 +37,12 @@ org.springframework.boot spring-boot-starter-web - + + + org.reflections + reflections + 0.9.12 + org.springframework.boot spring-boot-starter-test diff --git a/07rpc/rpc01/rpcfx-demo-provider/src/main/java/io/kimmking/rpcfx/demo/provider/DemoResolver.java b/07rpc/rpc01/rpcfx-demo-provider/src/main/java/io/kimmking/rpcfx/demo/provider/DemoResolver.java index 65cffbd2..1625bbb7 100644 --- a/07rpc/rpc01/rpcfx-demo-provider/src/main/java/io/kimmking/rpcfx/demo/provider/DemoResolver.java +++ b/07rpc/rpc01/rpcfx-demo-provider/src/main/java/io/kimmking/rpcfx/demo/provider/DemoResolver.java @@ -1,20 +1,32 @@ package io.kimmking.rpcfx.demo.provider; +import io.kimmking.rpcfx.annotation.RpcfxService; import io.kimmking.rpcfx.api.RpcfxResolver; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; +import org.reflections.Reflections; -public class DemoResolver implements RpcfxResolver, ApplicationContextAware { +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; - private ApplicationContext applicationContext; +public class DemoResolver implements RpcfxResolver { + + private final static Map SERVICE_CACHE = new ConcurrentHashMap<>(); @Override - public void setApplicationContext(ApplicationContext applicationContext) { - this.applicationContext = applicationContext; + public Object resolve(String serviceClass) { + return SERVICE_CACHE.get(serviceClass); } @Override - public Object resolve(String serviceClass) { - return this.applicationContext.getBean(serviceClass); + public void initService(String servicePath) { + Reflections reflections = new Reflections(servicePath); + Set> classes = reflections.getTypesAnnotatedWith(RpcfxService.class); + classes.forEach(c -> { + try { + SERVICE_CACHE.put(c.getInterfaces()[0].getName(), c.newInstance()); + } catch (InstantiationException | IllegalAccessException e) { + e.printStackTrace(); + } + }); } } diff --git a/07rpc/rpc01/rpcfx-demo-provider/src/main/java/io/kimmking/rpcfx/demo/provider/HttpMessageConverterConfig.java b/07rpc/rpc01/rpcfx-demo-provider/src/main/java/io/kimmking/rpcfx/demo/provider/HttpMessageConverterConfig.java new file mode 100644 index 00000000..51ac44b4 --- /dev/null +++ b/07rpc/rpc01/rpcfx-demo-provider/src/main/java/io/kimmking/rpcfx/demo/provider/HttpMessageConverterConfig.java @@ -0,0 +1,37 @@ +package io.kimmking.rpcfx.demo.provider; + +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.alibaba.fastjson.support.config.FastJsonConfig; +import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.autoconfigure.http.HttpMessageConverters; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.nio.charset.StandardCharsets; + +/** + * @author tangtian + * @version 1.0 + * @className HttpMessageConverterConfig + * @description + * @date 2020/12/17 7:23 AM + **/ +@Configuration +public class HttpMessageConverterConfig { + private static final Logger LOG = LoggerFactory.getLogger(HttpMessageConverterConfig.class); + @Bean + public HttpMessageConverters fastJsonHttpMessageConverters() { + FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); + FastJsonConfig fastJsonConfig = new FastJsonConfig(); + SerializerFeature[] serializerFeatures = new SerializerFeature[] { + SerializerFeature.DisableCircularReferenceDetect, + SerializerFeature.WriteClassName + }; + fastJsonConfig.setSerializerFeatures(serializerFeatures); + fastJsonConfig.setCharset(StandardCharsets.UTF_8); + fastConverter.setFastJsonConfig(fastJsonConfig); + return new HttpMessageConverters(fastConverter); + } +} diff --git a/07rpc/rpc01/rpcfx-demo-provider/src/main/java/io/kimmking/rpcfx/demo/provider/RpcfxServerApplication.java b/07rpc/rpc01/rpcfx-demo-provider/src/main/java/io/kimmking/rpcfx/demo/provider/RpcfxServerApplication.java index f29a6d9d..ace32904 100644 --- a/07rpc/rpc01/rpcfx-demo-provider/src/main/java/io/kimmking/rpcfx/demo/provider/RpcfxServerApplication.java +++ b/07rpc/rpc01/rpcfx-demo-provider/src/main/java/io/kimmking/rpcfx/demo/provider/RpcfxServerApplication.java @@ -1,6 +1,6 @@ package io.kimmking.rpcfx.demo.provider; -import com.alibaba.fastjson.JSON; + import io.kimmking.rpcfx.api.RpcfxRequest; import io.kimmking.rpcfx.api.RpcfxResolver; import io.kimmking.rpcfx.api.RpcfxResponse; @@ -22,8 +22,7 @@ import org.springframework.web.bind.annotation.RestController; import java.net.InetAddress; -import java.net.InterfaceAddress; -import java.net.UnknownHostException; + @SpringBootApplication @RestController @@ -79,7 +78,7 @@ public RpcfxResponse invoke(@RequestBody RpcfxRequest request) { @Bean public RpcfxInvoker createInvoker(@Autowired RpcfxResolver resolver){ - return new RpcfxInvoker(resolver); + return new RpcfxInvoker(resolver,"io.kimmking.rpcfx.demo.provider"); } @Bean @@ -87,6 +86,19 @@ public RpcfxResolver createResolver(){ return new DemoResolver(); } +//<<<<<<< HEAD +//// // 能否去掉name +//// // +//// @Bean(name = "io.kimmking.rpcfx.demo.api.UserService") +//// public UserService createUserService(){ +//// return new UserServiceImpl(); +//// } +//// +//// @Bean(name = "io.kimmking.rpcfx.demo.api.OrderService") +//// public OrderService createOrderService(){ +//// return new OrderServiceImpl(); +//// } +//======= // 能否去掉name // diff --git a/09mq/activemq-demo/pom.xml b/09mq/activemq-demo/pom.xml index c3352476..f8556e6c 100644 --- a/09mq/activemq-demo/pom.xml +++ b/09mq/activemq-demo/pom.xml @@ -27,7 +27,7 @@ org.apache.activemq activemq-all - 5.16.0 + 5.15.6 diff --git a/09mq/activemq-demo/src/main/java/io/kimmking/javacourse/mq/activemq/ActivemqApplication.java b/09mq/activemq-demo/src/main/java/io/kimmking/javacourse/mq/activemq/ActivemqApplication.java index 75e13283..f6b64332 100644 --- a/09mq/activemq-demo/src/main/java/io/kimmking/javacourse/mq/activemq/ActivemqApplication.java +++ b/09mq/activemq-demo/src/main/java/io/kimmking/javacourse/mq/activemq/ActivemqApplication.java @@ -7,7 +7,13 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import javax.jms.*; +import javax.jms.Destination; +import javax.jms.Message; +import javax.jms.MessageConsumer; +import javax.jms.MessageListener; +import javax.jms.MessageProducer; +import javax.jms.Session; +import javax.jms.TextMessage; import java.util.concurrent.atomic.AtomicInteger; @@ -18,7 +24,7 @@ public static void main(String[] args) { // 定义Destination Destination destination = new ActiveMQTopic("test.topic"); - // Destination destination = new ActiveMQQueue("test.queue"); + // Destination destination = new ActiveMQQueue("test.queue"); testDestination(destination); @@ -28,7 +34,7 @@ public static void main(String[] args) { public static void testDestination(Destination destination) { try { // 创建连接和会话 - ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616"); + ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://120.79.218.62:61616"); ActiveMQConnection conn = (ActiveMQConnection) factory.createConnection(); conn.start(); Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); @@ -37,6 +43,7 @@ public static void testDestination(Destination destination) { MessageConsumer consumer = session.createConsumer( destination ); final AtomicInteger count = new AtomicInteger(0); MessageListener listener = new MessageListener() { + @Override public void onMessage(Message message) { try { // 打印所有的消息内容 @@ -62,9 +69,9 @@ public void onMessage(Message message) { producer.send(message); } - Thread.sleep(2000); - session.close(); - conn.close(); +// Thread.sleep(2000); +// session.close(); +// conn.close(); } catch (Exception e) { diff --git a/out/production/JavaCourseCodes/META-INF/JavaCourseCodes.kotlin_module b/out/production/JavaCourseCodes/META-INF/JavaCourseCodes.kotlin_module new file mode 100644 index 00000000..a49347af Binary files /dev/null and b/out/production/JavaCourseCodes/META-INF/JavaCourseCodes.kotlin_module differ diff --git a/out/production/JavaCourseCodes/META-INF/MANIFEST.MF b/out/production/JavaCourseCodes/META-INF/MANIFEST.MF new file mode 100644 index 00000000..ef62bb7b --- /dev/null +++ b/out/production/JavaCourseCodes/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: + diff --git "a/out/production/JavaCourseCodes/\347\216\257\345\242\203\345\207\206\345\244\207.txt" "b/out/production/JavaCourseCodes/\347\216\257\345\242\203\345\207\206\345\244\207.txt" new file mode 100644 index 00000000..a1458b85 --- /dev/null +++ "b/out/production/JavaCourseCodes/\347\216\257\345\242\203\345\207\206\345\244\207.txt" @@ -0,0 +1,38 @@ + + +## Windows + +1.管理员身份打开powershell + +2.运行 +Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) + +3.执行choco install superbenchmarker + +4.输入 sb + +执行 sb -u http://localhost:8088/api/hello -c 20 -N 60 + +## Mac + +1.执行brew install wrk +如果显式brew update很慢,可以ctrl+C打断更新 + +2.输入 wrk + +执行 wrk -t8 -c40 -d60s http://localhost:8088/api/hello + +## 压测程序 + +1.可以从github获取 +git clone https://github.com/kimmking/atlantis +cd atlantis\gateway-server +mvn clean package +然后在target目录可以找到gateway-server-0.0.1-SNAPSHOT.jar + +2.也可以从此处下载已经编译好的: +链接:https://pan.baidu.com/s/1NbpYX4M3YKLYM1JJeIzgSQ +提取码:sp85 + +java -jar -Xmx512m -Xms512 gateway-server-0.0.1-SNAPSHOT.jar +