diff --git a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/bo/Bean.java b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/bo/Bean.java index dc362d662..e5709f68f 100644 --- a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/bo/Bean.java +++ b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/bo/Bean.java @@ -48,12 +48,12 @@ public class Bean implements Comparable, Serializable { private int type; /** - * 被引用的次数 + * Number of citations */ private int referenceCnt; /** - * 依赖我的那些Bean + * The beans that depend on me. */ private List dependenceList = new ArrayList<>(); diff --git a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/bo/MvcConfig.java b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/bo/MvcConfig.java index a0211ca6c..6159d4b91 100644 --- a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/bo/MvcConfig.java +++ b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/bo/MvcConfig.java @@ -12,29 +12,29 @@ public class MvcConfig implements Serializable { /** - * 是否使用cglib + * Whether to use cglib */ private boolean useCglib; /** - * 是否允许跨域 + * Allow cross-origin */ private boolean allowCross; /** - * 返回结果不包装 + * The return result is not wrapped. */ private boolean responseOriginalValue; private int poolSize = 200; /** - * 是否支持下载 + * Do you support downloading */ private boolean download; /** - * 是否使用协程 + * whether to use coroutines */ private boolean virtualThread; diff --git a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/common/DoceanConfig.java b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/common/DoceanConfig.java index c1016eb0e..1cbc174b4 100644 --- a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/common/DoceanConfig.java +++ b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/common/DoceanConfig.java @@ -24,8 +24,8 @@ /** * @Author goodjava@qq.com * @Date 2021/6/7 10:03 - * - * 用来加载框架的配置 + *

+ * Configuration for loading frameworks */ @Slf4j public class DoceanConfig { diff --git a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/common/Safe.java b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/common/Safe.java index f0f99dc2f..c20bf4c5a 100644 --- a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/common/Safe.java +++ b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/common/Safe.java @@ -65,15 +65,16 @@ public static void runAndLog(ExRunnable runnable) { } /** - * 执行并记录Error,但不会抛出异常 + * Execute and log the error, but do not throw an exception. + * * @param callable * @param defaultValue - * @return * @param + * @return */ public static T callAndLog(ExCallable callable, T defaultValue) { try { - return (T)callable.call(); + return (T) callable.call(); } catch (Throwable ex) { log.error(ex.getMessage(), ex); } diff --git a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/config/HttpServerConfig.java b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/config/HttpServerConfig.java index 9e54eb04f..904a0ee18 100644 --- a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/config/HttpServerConfig.java +++ b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/config/HttpServerConfig.java @@ -41,12 +41,12 @@ public class HttpServerConfig { private boolean cookie = true; /** - * 允许上传文件 + * Allow file upload */ private boolean upload; /** - * 上传的路径 + * Upload path */ private String uploadDir; diff --git a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/DoceanHttpServer.java b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/DoceanHttpServer.java index c70608dfa..e986e04fa 100644 --- a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/DoceanHttpServer.java +++ b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/DoceanHttpServer.java @@ -46,7 +46,7 @@ * @author goodjava@qq.com * @date 2020/6/21 *

- * 一个简单的http服务器,为了支撑mvc + * rate limited or exceeded quota */ @Slf4j public class DoceanHttpServer { @@ -95,7 +95,7 @@ public void start() throws InterruptedException { boolean useEpoll = NetUtils.useEpoll(); EventLoopGroup eventLoopGroupBoss = null; EventLoopGroup eventLoopGroupWorker = null; - //是否使用原生的epoll + //Whether to use the native epoll. int nThreads = Runtime.getRuntime().availableProcessors() * 2 + 1; if (useEpoll) { log.info("use epollEventLoopGroup nThreads:{}", nThreads); diff --git a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/HttpRequestUtils.java b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/HttpRequestUtils.java index 631ea7d67..9a432bdcd 100644 --- a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/HttpRequestUtils.java +++ b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/HttpRequestUtils.java @@ -72,11 +72,11 @@ public static String getBasePath(FullHttpRequest request) { public static byte[] getRequestBody(FullHttpRequest request) { String contentType = request.headers().get(CONTENT_TYPE, "").trim(); - //支持form 表单提交 + //Support form submission. if (contentType.contains(X_WWW_FORM_URLENCODED) || contentType.contains(FORM_DATA)) { HttpPostRequestDecoder decoder = new HttpPostRequestDecoder(new DefaultHttpDataFactory(false), request); List postData = decoder.getBodyHttpDatas(); - Map kv = new HashMap<>(); + Map kv = new HashMap<>(); for (InterfaceHttpData data : postData) { if (data.getHttpDataType() == InterfaceHttpData.HttpDataType.Attribute) { MemoryAttribute attribute = (MemoryAttribute) data; @@ -88,7 +88,7 @@ public static byte[] getRequestBody(FullHttpRequest request) { ByteBuf buf = request.content(); byte[] data = new byte[buf.readableBytes()]; buf.readBytes(data); - //使得下游继续可以读取 + //Enable downstream to continue reading. buf.readerIndex(0); return data; } @@ -111,7 +111,7 @@ public static String getClientIp(FullHttpRequest request, Channel channel) { } /** - * 判断是否是内网 + * Determine whether it is an intranet. * * @param request * @return diff --git a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/HttpResponseUtils.java b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/HttpResponseUtils.java index 729523d41..8c6bad4fe 100644 --- a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/HttpResponseUtils.java +++ b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/HttpResponseUtils.java @@ -51,7 +51,8 @@ public static FullHttpResponse create(FullHttpResponse res) { } /** - * 效率不高,谨慎使用 + * rate limited or exceeded quota + * * @param res * @param content * @return diff --git a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/MvcContext.java b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/MvcContext.java index 2c10891c4..acd896819 100644 --- a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/MvcContext.java +++ b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/MvcContext.java @@ -36,7 +36,7 @@ public class MvcContext { private String traceId; /** - * 使用协程 + * rate limited or exceeded quota */ private boolean virtualThread; @@ -45,7 +45,7 @@ public class MvcContext { private Map headers; /** - * 用户可以修改返回结果的headers + * Users can modify the headers of the returned results. */ private Map resHeaders = new HashMap<>(); @@ -64,7 +64,7 @@ public class MvcContext { private Object response; /** - * 是否允许跨域 + * rate limited or exceeded quota */ private boolean allowCross; diff --git a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/MvcRunnable.java b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/MvcRunnable.java index b625e19ac..c250a6493 100644 --- a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/MvcRunnable.java +++ b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/MvcRunnable.java @@ -100,27 +100,27 @@ private void call() { request.setPath(req.getPath()); request.setBody(new Gson().toJson(req.getParams()).getBytes()); } - //查找favicon.ioc 的直接返回找不到 + //Directly returning not found when searching for favicon.ico. if (isFaviconIco(request)) { response.writeAndFlush(context, HttpResponseStatus.NOT_FOUND, ""); return; } String path = request.getPath(); - //支持文件下载(/download) 并且必须开启下载 + //Support file download (/download) and must enable downloads. if (isDownload(path) && mvc.getMvcConfig().isDownload()) { Download.download(context, request, response); return; } - //支持上传文件(/upload) + //Support uploading files (/upload) if (isUpload(path)) { MvcUpload.upload(mvc, request, response, context); return; } - HttpRequestMethod method = MethodFinder.find(path,this.requestMethodMap); - //支持指定path执行 + HttpRequestMethod method = MethodFinder.find(path, this.requestMethodMap); + //rate limited or exceeded quota if (null != method) { mvc.callMethod(context, request, response, new MvcResult<>(), method); return; @@ -133,7 +133,7 @@ private void call() { response.writeAndFlush(context, gson.toJson(result)); return; } - //直接调用服务 + //rate limited or exceeded quota mvc.callService(context, request, response); } diff --git a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/TextWebSocketHandler.java b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/TextWebSocketHandler.java index 1adab61ff..93035ae47 100644 --- a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/TextWebSocketHandler.java +++ b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/TextWebSocketHandler.java @@ -25,7 +25,7 @@ /** * @author goodjava@qq.com - * 支持长连接 + * rate limited or exceeded quota */ @Slf4j public class TextWebSocketHandler extends SimpleChannelInboundHandler { @@ -34,7 +34,7 @@ public class TextWebSocketHandler extends SimpleChannelInboundHandler - * 负责处理上传(优化的点是上传一部分就存储一部分,尽量少的占用内存) - * 如果用FullHttpRequest 代码会简单些,但这会占用大量内存,不可取 - * 这里处理的并不是data-from那种标准的表单 - * 现在默认没有开启(等未来遇到性能问题再开启) + * Responsible for handling uploads (the optimization point is to store a part of the upload as soon as possible, minimizing memory usage). + * If using FullHttpRequest code will be simpler, but it will consume a large amount of memory, which is not advisable. + * This is not dealing with the standard form like data-from. + * Currently, it is not enabled by default (it will be enabled in the future if there are performance issues). */ @Slf4j public class HttpUploadHandler extends SimpleChannelInboundHandler { @@ -105,7 +105,7 @@ protected void channelRead0(ChannelHandlerContext ctx, HttpObject httpObject) th return; } DefaultHttpContent chunk = (DefaultHttpContent) httpObject; - //处理到这里,可能client 还在发送数据,所以这里需要有error 的处理逻辑 + //rate limited or exceeded quota if (!error) { ByteBuf buf = chunk.content(); ByteBuffer buffer = buf.nioBuffer(); @@ -125,7 +125,7 @@ protected void channelRead0(ChannelHandlerContext ctx, HttpObject httpObject) th return; } } finally { - //改为自己手动释放 + //rate limited or exceeded quota int count = ReferenceCountUtil.refCnt(httpObject); log.debug("ref count:{}", count); if (count > 0) { diff --git a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/upload/Upload.java b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/upload/Upload.java index 225fe64e6..cf3cca63a 100644 --- a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/upload/Upload.java +++ b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/upload/Upload.java @@ -28,7 +28,7 @@ /** * @author goodjava@qq.com * @date 2022/5/27 - * 性能一般(但简单) + * rate limited or exceeded quota */ public class Upload { diff --git a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/util/ExceptionUtil.java b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/util/ExceptionUtil.java index 6119ac37a..ac64a500a 100644 --- a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/util/ExceptionUtil.java +++ b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/util/ExceptionUtil.java @@ -13,10 +13,10 @@ private ExceptionUtil() { } /** - * 拆解InvocationTargetException和UndeclaredThrowableException异常的包装,从而得到被包装的真正异常 + * Unwrapping InvocationTargetException and UndeclaredThrowableException exceptions to obtain the underlying wrapped exception. * - * @param wrapped 包装后的异常 - * @return 拆解出的被包装异常 + * @param wrapped Abnormal packaging + * @return Abnormal packaging of disassembled components. */ public static Throwable unwrapThrowable(Throwable wrapped) { Throwable unwrapped = wrapped; diff --git a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/util/MethodFinder.java b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/util/MethodFinder.java index 1383696df..0a3987bdb 100644 --- a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/util/MethodFinder.java +++ b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/mvc/util/MethodFinder.java @@ -20,7 +20,7 @@ public static HttpRequestMethod find(String path, ConcurrentHashMap 1) { array[array.length - 1] = "*"; @@ -31,7 +31,7 @@ public static HttpRequestMethod find(String path, ConcurrentHashMap> optional = requestMethodMap.entrySet().stream().filter(it -> { String key = it.getKey(); diff --git a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/plugin/IPlugin.java b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/plugin/IPlugin.java index 733a62edd..a3b9db263 100644 --- a/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/plugin/IPlugin.java +++ b/jcommon/docean/src/main/java/com/xiaomi/youpin/docean/plugin/IPlugin.java @@ -45,7 +45,7 @@ default void init(Set> classSet, Ioc ioc) { } /** - * 销毁操作 + * Destroy operation * * @param ioc */ @@ -54,7 +54,7 @@ default void destory(Ioc ioc) { } /** - * 过滤的注解 + * rate limited or exceeded quota * * @return */ @@ -67,7 +67,7 @@ default List> filterResourceAnnotations() { } /** - * 初始化需要被接管的bean + * Initialization requires the takeover of the bean. * * @param bean * @return @@ -103,7 +103,7 @@ default boolean after(Ioc ioc) { } /** - * plugin 启动操作(可以理解为依赖注入都完成后,想要完成的操作都可以放到这里) + * plugin Start operation (after all dependencies are injected, any desired operations can be placed here) * * @param ioc * @return diff --git a/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/AopTest.java b/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/AopTest.java index c6245b6eb..33c449c84 100644 --- a/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/AopTest.java +++ b/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/AopTest.java @@ -37,7 +37,7 @@ public class AopTest { /** - * 底层使用cglib增强或者动态代理 + * The bottom layer uses cglib enhancement or dynamic proxy. */ @Test public void testAop() { diff --git a/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/HttpServerTest.java b/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/HttpServerTest.java index 0ed0bd8f1..00b677105 100644 --- a/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/HttpServerTest.java +++ b/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/HttpServerTest.java @@ -143,7 +143,6 @@ public void testH2c2() { System.out.println("----><" + response.body().string()); - System.in.read(); } @@ -153,7 +152,7 @@ public void testH2c3() throws IOException { Request request = new Request.Builder() .url("http://127.0.0.1:8999/a") .build(); - IntStream.range(0,100).forEach(i->{ + IntStream.range(0, 100).forEach(i -> { try { Response response = client.newCall(request).execute(); System.out.println("---->" + response.body().string()); @@ -165,19 +164,19 @@ public void testH2c3() throws IOException { public static String s() { - // 创建一个ByteBuffer,用于存储SETTINGS帧的内容 + // Create a ByteBuffer to store the content of the SETTINGS frame. ByteBuffer buffer = ByteBuffer.allocate(6); - // 写入SETTINGS_MAX_CONCURRENT_STREAMS的标识符(0x3) + // Identifier for writing into SETTINGS_MAX_CONCURRENT_STREAMS (0x3) buffer.putShort((short) 0x3); - // 写入SETTINGS_MAX_CONCURRENT_STREAMS的值(例如,100) + // The value written into SETTINGS_MAX_CONCURRENT_STREAMS (e.g., 100) buffer.putInt(100); - // 将ByteBuffer转换为字节数组 + // Convert ByteBuffer to byte array byte[] settingsFrame = buffer.array(); - // 对字节数组进行Base64编码 + // rate limited or exceeded quota String http2Settings = Base64.getUrlEncoder().encodeToString(settingsFrame); return http2Settings; diff --git a/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/IocTest.java b/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/IocTest.java index 89beff807..a38534647 100644 --- a/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/IocTest.java +++ b/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/IocTest.java @@ -49,7 +49,7 @@ public class IocTest { /** - * 测试移除某个bean + * Remove a bean for testing. */ @Test public void testRemoveBean() { @@ -63,14 +63,14 @@ public void testRemoveBean() { System.out.println(controller.call()); Bean bean = Ioc.ins().getBeanInfo(ServiceDemo.class.getName()); - //依赖我的 + //rate limited or exceeded quota Map dependenceMap = bean.getDependenceFieldMap(); - //删除一个bean + //rate limited or exceeded quota Ioc.ins().removeBean(ServiceDemo.class.getName()); - //会空指针 + //NPE Safe.runAndLog(() -> System.out.println(controller.call())); - //加入一个bean + //add bean ServiceDemo sd2 = new ServiceDemo() { @Override public String call() { diff --git a/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/demo/DemoController.java b/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/demo/DemoController.java index 66ebdda04..122649cab 100644 --- a/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/demo/DemoController.java +++ b/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/demo/DemoController.java @@ -132,7 +132,7 @@ public DemoVo test6(DemoVo req) { /** - * 测试302 跳转 + * test 302 jump * * @return */ @@ -165,7 +165,7 @@ public String testPost(String b) { /** - * 测试session + * test session * * @return */ diff --git a/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/ssl/HttpClient.java b/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/ssl/HttpClient.java index d04cfb5d7..87c9d663e 100644 --- a/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/ssl/HttpClient.java +++ b/jcommon/docean/src/test/java/com/xiaomi/youpin/docean/test/ssl/HttpClient.java @@ -67,11 +67,11 @@ public X509Certificate[] getAcceptedIssuers() { } public void checkClientTrusted(X509Certificate[] chain, String authType) { - // 检查客户端证书 + // Check client certificate. } public void checkServerTrusted(X509Certificate[] chain, String authType) { - // 检查服务器证书 + // Check server certificate. } };