From 7116177225b6f3261cc0fd72fda9af1663e31e0a Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 10 Feb 2022 00:17:25 +0800 Subject: [PATCH 1/2] fix bug --- CHANGELOG.md | 3 ++- .../java/cn/hutool/http/server/HttpServerBase.java | 11 ++++++++++- .../cn/hutool/http/server/handler/ActionHandler.java | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6686d2456..58601987e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.7.21 (2022-02-07) +# 5.7.21 (2022-02-10) ### 🐣新特性 * 【extra 】 增加jetbrick模板支持 @@ -24,6 +24,7 @@ * 【extra 】 修复EmojiUtil.toHtmlHex()方法(pr#519@Gitee) * 【system 】 修复CpuInfo.getUsed()方法(issue#2116@Github) * 【dfa 】 修复密集匹配和贪婪匹配冲突问题(issue#2126@Github) +* 【http 】 修复Action中HttpExchange没有关闭问题 ------------------------------------------------------------------------------------------------------------- # 5.7.20 (2022-01-20) diff --git a/hutool-http/src/main/java/cn/hutool/http/server/HttpServerBase.java b/hutool-http/src/main/java/cn/hutool/http/server/HttpServerBase.java index 3c2b62fc5..ab0ba5920 100644 --- a/hutool-http/src/main/java/cn/hutool/http/server/HttpServerBase.java +++ b/hutool-http/src/main/java/cn/hutool/http/server/HttpServerBase.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.CharsetUtil; import com.sun.net.httpserver.HttpContext; import com.sun.net.httpserver.HttpExchange; +import java.io.Closeable; import java.nio.charset.Charset; /** @@ -12,7 +13,7 @@ import java.nio.charset.Charset; * @author looly * @since 5.2.6 */ -public class HttpServerBase { +public class HttpServerBase implements Closeable { final static Charset DEFAULT_CHARSET = CharsetUtil.CHARSET_UTF_8; @@ -45,4 +46,12 @@ public class HttpServerBase { public HttpContext getHttpContext() { return getHttpExchange().getHttpContext(); } + + /** + * 调用{@link HttpExchange#close()},关闭请求流和响应流 + */ + @Override + public void close() { + this.httpExchange.close(); + } } diff --git a/hutool-http/src/main/java/cn/hutool/http/server/handler/ActionHandler.java b/hutool-http/src/main/java/cn/hutool/http/server/handler/ActionHandler.java index 940a2c980..42f88c548 100644 --- a/hutool-http/src/main/java/cn/hutool/http/server/handler/ActionHandler.java +++ b/hutool-http/src/main/java/cn/hutool/http/server/handler/ActionHandler.java @@ -33,5 +33,6 @@ public class ActionHandler implements HttpHandler { new HttpServerRequest(httpExchange), new HttpServerResponse(httpExchange) ); + httpExchange.close(); } } From b5dfc8b6397daeb193633a8305df602a32edd157 Mon Sep 17 00:00:00 2001 From: VampireAchao Date: Thu, 10 Feb 2022 21:09:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4NumberChineseFormatter.fo?= =?UTF-8?q?rmatSimple=EF=BC=8C=E7=94=A8=E4=BA=8E=E5=B0=86=E9=98=BF?= =?UTF-8?q?=E6=8B=89=E4=BC=AF=E6=95=B0=E5=AD=97=EF=BC=88=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=AD=A3=E8=B4=9F=E6=95=B4=E6=95=B0=EF=BC=89=E5=9B=9B=E8=88=8D?= =?UTF-8?q?=E4=BA=94=E5=85=A5=E5=90=8E=E8=BD=AC=E6=8D=A2=E6=88=90=E4=B8=AD?= =?UTF-8?q?=E6=96=87=E8=8A=82=E6=9D=83=E4=BD=8D=E7=AE=80=E6=B4=81=E8=AE=A1?= =?UTF-8?q?=E6=95=B0=E5=8D=95=E4=BD=8D=EF=BC=8C=E4=BE=8B=E5=A6=82=20-5=5F5?= =?UTF-8?q?555=20=3D=E3=80=8B=20-5.56=E4=B8=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/convert/NumberChineseFormatter.java | 22 +++++++++++++++++++ .../convert/NumberChineseFormatterTest.java | 20 +++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/NumberChineseFormatter.java b/hutool-core/src/main/java/cn/hutool/core/convert/NumberChineseFormatter.java index 29c2405e1..d6da1d22b 100644 --- a/hutool-core/src/main/java/cn/hutool/core/convert/NumberChineseFormatter.java +++ b/hutool-core/src/main/java/cn/hutool/core/convert/NumberChineseFormatter.java @@ -2,6 +2,7 @@ package cn.hutool.core.convert; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; /** @@ -153,6 +154,27 @@ public class NumberChineseFormatter { return chineseStr.toString(); } + /** + * 阿拉伯数字(支持正负整数)四舍五入后转换成中文节权位简洁计数单位,例如 -5_5555 =》 -5.56万 + * + * @param amount 数字 + * @return 中文 + */ + public static String formatSimple(long amount) { + if (amount < 1_0000 && amount > -1_0000) { + return String.valueOf(amount); + } + String res; + if (amount < 1_0000_0000 && amount > -1_0000_0000) { + res = NumberUtil.div(amount, 1_0000, 2) + "万"; + } else if (amount < 1_0000_0000_0000L && amount > -1_0000_0000_0000L) { + res = NumberUtil.div(amount, 1_0000_0000, 2) + "亿"; + } else { + res = NumberUtil.div(amount, 1_0000_0000_0000L, 2) + "万亿"; + } + return res; + } + /** * 格式化-999~999之间的数字
* 这个方法显示10~19以下的数字时使用"十一"而非"一十一"。 diff --git a/hutool-core/src/test/java/cn/hutool/core/convert/NumberChineseFormatterTest.java b/hutool-core/src/test/java/cn/hutool/core/convert/NumberChineseFormatterTest.java index f9bec8251..5dc83a714 100644 --- a/hutool-core/src/test/java/cn/hutool/core/convert/NumberChineseFormatterTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/convert/NumberChineseFormatterTest.java @@ -175,6 +175,26 @@ public class NumberChineseFormatterTest { Assert.assertEquals("零点零伍", f1); } + @Test + public void formatSimpleTest() { + String f1 = NumberChineseFormatter.formatSimple(1_2345); + Assert.assertEquals("1.23万", f1); + f1 = NumberChineseFormatter.formatSimple(-5_5555); + Assert.assertEquals("-5.56万", f1); + f1 = NumberChineseFormatter.formatSimple(1_2345_6789); + Assert.assertEquals("1.23亿", f1); + f1 = NumberChineseFormatter.formatSimple(-5_5555_5555); + Assert.assertEquals("-5.56亿", f1); + f1 = NumberChineseFormatter.formatSimple(1_2345_6789_1011L); + Assert.assertEquals("1.23万亿", f1); + f1 = NumberChineseFormatter.formatSimple(-5_5555_5555_5555L); + Assert.assertEquals("-5.56万亿", f1); + f1 = NumberChineseFormatter.formatSimple(123); + Assert.assertEquals("123", f1); + f1 = NumberChineseFormatter.formatSimple(-123); + Assert.assertEquals("-123", f1); + } + @Test public void digitToChineseTest() { String digitToChinese = Convert.digitToChinese(12_4124_1241_2421.12);