diff --git a/02nio/nio01/pom.xml b/02nio/nio01/pom.xml index e42a62f2..8752cf77 100644 --- a/02nio/nio01/pom.xml +++ b/02nio/nio01/pom.xml @@ -19,12 +19,12 @@ org.apache.maven.plugins maven-compiler-plugin + 3.1 ${maven.compile.source} ${maven.compile.target} - org.apache.maven.plugins maven-shade-plugin @@ -59,7 +59,14 @@ netty-all 4.1.51.Final + + com.squareup.okhttp3 + okhttp + 3.3.0 + + + \ No newline at end of file diff --git a/02nio/nio01/src/main/java/java0/nio01/netty/HttpHandler.java b/02nio/nio01/src/main/java/java0/nio01/netty/HttpHandler.java index 81f31d2e..ab050170 100644 --- a/02nio/nio01/src/main/java/java0/nio01/netty/HttpHandler.java +++ b/02nio/nio01/src/main/java/java0/nio01/netty/HttpHandler.java @@ -46,7 +46,12 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) { private void handlerTest(FullHttpRequest fullRequest, ChannelHandlerContext ctx, String body) { FullHttpResponse response = null; try { - String value = body; // 对接上次作业的httpclient或者okhttp请求另一个url的响应数据 + + String httpResult = java0.nio01.netty.HttpUtil.get("http://localhost:8801",null); + String value = httpResult; + + + // 对接上次作业的httpclient或者okhttp请求另一个url的响应数据 // httpGet ... http://localhost:8801 // 返回的响应,"hello,nio"; diff --git a/02nio/nio01/src/main/java/java0/nio01/netty/HttpUtil.java b/02nio/nio01/src/main/java/java0/nio01/netty/HttpUtil.java new file mode 100644 index 00000000..db7f9049 --- /dev/null +++ b/02nio/nio01/src/main/java/java0/nio01/netty/HttpUtil.java @@ -0,0 +1,32 @@ +package java0.nio01.netty; + +import okhttp3.*; + +import java.util.Map; +import java.util.concurrent.TimeUnit; + +public class HttpUtil { + private static final OkHttpClient client = new OkHttpClient.Builder() + .connectTimeout(5, TimeUnit.SECONDS) + .writeTimeout(5, TimeUnit.SECONDS) + .readTimeout(5, TimeUnit.SECONDS) + .build(); + + public static String get(String url, Map header) { + Request.Builder request = new Request.Builder().url(url).get(); + if (header != null && !header.isEmpty()) { + for (Map.Entry entry : header.entrySet()) { + request.addHeader(entry.getKey(),entry.getValue()); + } + } + try (Response response = client.newCall(request.build()).execute()) { + ResponseBody res = response.body(); + return res.string(); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + +} diff --git a/02nio/nio02/pom.xml b/02nio/nio02/pom.xml index 005de90a..c19b329c 100644 --- a/02nio/nio02/pom.xml +++ b/02nio/nio02/pom.xml @@ -78,6 +78,7 @@ org.springframework.boot spring-boot-maven-plugin + 2.3.0.RELEASE diff --git a/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/HeaderHttpRequestFilter.java b/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/HeaderHttpRequestFilter.java index af5c37fb..deb7c0cb 100644 --- a/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/HeaderHttpRequestFilter.java +++ b/02nio/nio02/src/main/java/io/github/kimmking/gateway/filter/HeaderHttpRequestFilter.java @@ -8,5 +8,7 @@ public class HeaderHttpRequestFilter implements HttpRequestFilter { @Override public void filter(FullHttpRequest fullRequest, ChannelHandlerContext ctx) { fullRequest.headers().set("mao", "soul"); + fullRequest.headers().set("platform", "geekTimeHomework"); + } } diff --git "a/02nio/\344\270\215\345\220\214 GC \345\222\214\345\240\206\345\206\205\345\255\230\347\232\204\346\200\273\347\273\223" "b/02nio/\344\270\215\345\220\214 GC \345\222\214\345\240\206\345\206\205\345\255\230\347\232\204\346\200\273\347\273\223" new file mode 100644 index 00000000..3f011333 --- /dev/null +++ "b/02nio/\344\270\215\345\220\214 GC \345\222\214\345\240\206\345\206\205\345\255\230\347\232\204\346\200\273\347\273\223" @@ -0,0 +1,13 @@ +串行 + 最简单的一种,主要是为单线程环境和较小的堆内存环境设计。 + -XX:+UseSerialGC 配置串行 GC +并行 + 并行垃圾收集器适用于多核服务器,主要目标是增加吞吐量。 + -XX:+UseParallelGC 配置并行GC +CMS + CMS GC 的设计目标是避免在老年代垃圾收集时出现长时间的卡顿 + 主要调优目标是降低 GC 停顿导致的系统延迟 + -XX:+UseConcMarkSweepGC 配置CMS GC +G1 + GC 最主要的设计目标是:将 STW 停顿的时间和分布,变成 可预期且可配置的。 + -XX:+UseG1GC 配置G1 GC diff --git a/03concurrency/0301/src/main/java/java0/conc0303/homework03/Homework1.java b/03concurrency/0301/src/main/java/java0/conc0303/homework03/Homework1.java new file mode 100644 index 00000000..bb28b295 --- /dev/null +++ b/03concurrency/0301/src/main/java/java0/conc0303/homework03/Homework1.java @@ -0,0 +1,28 @@ +package java0.conc0303.homework03; + + +import java.util.concurrent.ExecutionException; +import java.util.concurrent.FutureTask; + +public class Homework1 { + + public static void main(String[] args) throws InterruptedException, ExecutionException { + long start = System.currentTimeMillis(); + + + FutureTask task = new FutureTask<>(() -> sum()); + new Thread(task).start(); + System.out.println(Thread.currentThread().getName() + "异步计算的结果为:" + task.get()); + System.out.println(Thread.currentThread().getName() + "使用时间:" + (System.currentTimeMillis() - start) + " ms"); + } + + 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/sql b/sql new file mode 100644 index 00000000..417f9474 --- /dev/null +++ b/sql @@ -0,0 +1,44 @@ +CREATE TABLE `t_order` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `order_no` varchar(40) NOT NULL COMMENT '订单号', + `product_id` int(11) NOT NULL COMMENT '产品id', + `product_name` varchar(255) DEFAULT NULL COMMENT '产品名', + `price` decimal(10,2) DEFAULT NULL COMMENT '价格', + `username` varchar(64) DEFAULT NULL COMMENT '用户名', + `mobile` varchar(64) DEFAULT NULL COMMENT '手机号', + `pay_time` datetime DEFAULT NULL COMMENT '支付时间', + `create_time` timestamp(3) NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `update_time` timestamp(3) NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `idx_order_no` (`order_no`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='订单表’; + +CREATE TABLE `t_product` ( + `product_no` varchar(64) NOT NULL DEFAULT '0' COMMENT '商品编号', + `name` varchar(512) DEFAULT NULL COMMENT '商品名称', + `bref` varchar(2048) DEFAULT NULL COMMENT '简介', + `detail` varchar(2048) DEFAULT NULL COMMENT '商品详情', + `cover_image` varchar(512) DEFAULT NULL COMMENT '封面图', + `list_image` varchar(512) DEFAULT NULL COMMENT '列表图', + `price` double(11,2) DEFAULT NULL COMMENT '价格', + `status` int(11) DEFAULT NULL COMMENT '0:下架 1:上架', + `create_time` timestamp(3) NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `update_time` timestamp(3) NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + PRIMARY KEY (`courseNo`) USING BTREE, + KEY `idx_product_no` (`courseNo`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品’; + +CREATE TABLE `t_user` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `username` varchar(64) CHARACTER SET utf8 DEFAULT NULL COMMENT '用户名', + `head_image` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '头像', + `gender` int(11) DEFAULT '1' COMMENT '性别', + `email` varchar(40) COLLATE utf8_bin DEFAULT NULL, + `country` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '国家', + `province` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '省', + `city` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '市', + `create_time` timestamp(3) NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + `update_time` timestamp(3) NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + `phone` varchar(64) CHARACTER SET utf8 DEFAULT NULL COMMENT '手机号', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='用户表';