Browse Source

upgrade log4j and some optimiz (#6983)

* optimiz

* update log version

Co-authored-by: longzhili <[email protected]>
longzl 3 years ago
parent
commit
2cc1821ed5

+ 1 - 6
frameworks/Java/isocket-nio/pom.xml

@@ -9,7 +9,7 @@
     <properties>
         <slf4j.version>1.7.7</slf4j.version>
         <log4j.version>1.2.17</log4j.version>
-        <log4j2.version>2.7</log4j2.version>
+        <log4j2.version>2.16.0</log4j2.version>
         <isocket.version>1.0.3-SNAPSHOT</isocket.version>
         <fastjson.version>1.2.44</fastjson.version>
     </properties>
@@ -45,11 +45,6 @@
             <version>${slf4j.version}</version>
         </dependency>
 
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
-        </dependency>
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-api</artifactId>

+ 4 - 0
frameworks/Java/isocket-nio/src/main/java/cn/ibaijia/tfb/Consts.java

@@ -5,4 +5,8 @@ public class Consts {
     public static final byte[] TEXT_TYPE = "text/plain".getBytes();
     public static final byte[] JSON_TYPE = "application/json".getBytes();
 
+    public static final String URL_TEXT_PLAIN = "/plaintext";
+    public static final String URL_JSON = "/json";
+    public static final String URL_STATE = "/state";
+
 }

+ 5 - 5
frameworks/Java/isocket-nio/src/main/java/cn/ibaijia/tfb/HttpBootstrap.java

@@ -8,6 +8,9 @@ import cn.ibaijia.tfb.protocol.SimpleHttpProtocol;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * @author longzl
+ */
 public class HttpBootstrap {
     private static final Logger logger = LoggerFactory.getLogger(HttpBootstrap.class);
 
@@ -22,14 +25,11 @@ public class HttpBootstrap {
                 logger.error("session on process error.", throwable);
             }
         });
-        int processorNumber = Runtime.getRuntime().availableProcessors();
-        server.setThreadNumber(processorNumber);
         server.setUseDirectBuffer(true);
-        server.setReadFirst(true);
         server.setUsePool(true);
-        server.setPoolPageSize(16 * 1024);
+        server.setPoolPageSize(32 * 1024);
         server.setBuffSize(1 * 1024);
-        server.setBacklog(1024 * 4);
+        server.setBacklog(16 * 1024);
         server.start();
     }
 

+ 19 - 4
frameworks/Java/isocket-nio/src/main/java/cn/ibaijia/tfb/http/HttpRequestEntity.java

@@ -7,6 +7,9 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 
+/**
+ * @author longzl
+ */
 public class HttpRequestEntity extends HttpEntity {
 
 
@@ -18,15 +21,19 @@ public class HttpRequestEntity extends HttpEntity {
     public byte[] tmp;
 
 
-    //请求行
     public String method;
     public String url;
     public String protocol;
 
-    //请求体
+    /**
+     * 请求体
+     */
     public String body;
-    //第一次 请求header时解析 第一行不要
-    private Map<byte[], byte[]> headers = new HashMap<>();
+    private int count = 0;
+    /**
+     * 第一次 请求header时解析 第一行不要
+     */
+    private Map<byte[], byte[]> headers = new HashMap<>(8);
     private byte[] contentType = Consts.TEXT_TYPE;
 
     @Override
@@ -46,9 +53,17 @@ public class HttpRequestEntity extends HttpEntity {
 
     @Override
     public void setHeader(byte[] name, byte[] value) {
+        count ++;
         this.headers.put(name, value);
     }
 
+    public void printAllHeaders() {
+        for (Map.Entry<byte[], byte[]> entry : headers.entrySet()) {
+            System.out.println(count);
+            System.out.println(new String(entry.getKey()) + ":" + new String(entry.getValue()));
+        }
+    }
+
     @Override
     public void setContentType(String contentType) {
         this.contentType = contentType.getBytes();

+ 15 - 4
frameworks/Java/isocket-nio/src/main/java/cn/ibaijia/tfb/http/HttpResponseEntity.java

@@ -9,6 +9,9 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
 
+/**
+ * @author longzl
+ */
 public class HttpResponseEntity extends HttpEntity {
     private static final byte[] PROTOCOL = "HTTP/1.1 ".getBytes();
     private static final byte[] STATUS_200 = "200 OK".getBytes();
@@ -19,10 +22,14 @@ public class HttpResponseEntity extends HttpEntity {
     private static final byte[] CONTENT_TYPE_HEAD = "\r\nContent-Type:".getBytes();
 
     private byte[] contentType = Consts.TEXT_TYPE;
-    //响应体
+    /**
+     * 响应体
+     */
     public String body;
 
-    //请求头 或者 响应头
+    /**
+     * 请求头 或者 响应头
+     */
     public Map<byte[], byte[]> headers = new HashMap<>();
 
     @Override
@@ -78,8 +85,12 @@ public class HttpResponseEntity extends HttpEntity {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
         HttpResponseEntity that = (HttpResponseEntity) o;
         return Objects.equals(body, that.body) &&
                 Objects.equals(headers, that.headers);

+ 6 - 3
frameworks/Java/isocket-nio/src/main/java/cn/ibaijia/tfb/processor/PlanTextProcessor.java

@@ -10,6 +10,9 @@ import com.alibaba.fastjson.JSON;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * @author longzl
+ */
 public class PlanTextProcessor implements Processor<HttpEntity> {
     private static final Logger logger = LoggerFactory.getLogger(PlanTextProcessor.class);
 
@@ -18,17 +21,17 @@ public class PlanTextProcessor implements Processor<HttpEntity> {
         HttpRequestEntity httpRequestEntity = (HttpRequestEntity) httpEntity;
         String url = httpRequestEntity.url;
         logger.trace("url:{}", url);
-        if ("/plaintext".equals(url)) {
+        if (Consts.URL_TEXT_PLAIN.equals(url)) {
             HttpResponseEntity httpResponseEntity = new HttpResponseEntity();
             httpResponseEntity.setContentType(Consts.TEXT_TYPE);
             httpResponseEntity.body = "Hello, World!";
             session.write(httpResponseEntity);
-        } else if ("/json".equals(url)) {
+        } else if (Consts.URL_JSON.equals(url)) {
             HttpResponseEntity httpResponseEntity = new HttpResponseEntity();
             httpResponseEntity.setContentType(Consts.JSON_TYPE);
             httpResponseEntity.body = JSON.toJSONString(new Message("Hello, World!"));
             session.write(httpResponseEntity);
-        } else if ("/state".equals(url)) {
+        } else if (Consts.URL_STATE.equals(url)) {
             HttpResponseEntity httpResponseEntity = new HttpResponseEntity();
             httpResponseEntity.setContentType(Consts.JSON_TYPE);
             State state = new State();

+ 17 - 8
frameworks/Java/isocket-nio/src/main/java/cn/ibaijia/tfb/protocol/SimpleHttpProtocol.java

@@ -11,14 +11,22 @@ import org.slf4j.LoggerFactory;
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 
+/**
+ * @author longzl
+ */
 public class SimpleHttpProtocol implements Protocol<ByteBuffer, HttpEntity> {
 
     private static final Logger logger = LoggerFactory.getLogger(SimpleHttpProtocol.class);
-
-    private static final byte CR13 = (byte) 13; // \CR \r
-    private static final byte LF10 = (byte) 10; // \LF \n
-    private static final byte SPACE0 = (byte) 32; // \SP
-    private static final byte COLON = (byte) 58; // \:
+    /**
+     * CR13 \r
+     * LF10 \n
+     * SPACE0 \SP
+     * COLON :
+     */
+    private static final byte CR13 = (byte) 13;
+    private static final byte LF10 = (byte) 10;
+    private static final byte SPACE0 = (byte) 32;
+    private static final byte COLON = (byte) 58;
 
     private static final String httpEntityKey = "httpEntity";
 
@@ -36,8 +44,8 @@ public class SimpleHttpProtocol implements Protocol<ByteBuffer, HttpEntity> {
             httpEntity = new HttpRequestEntity();
             session.setAttribute(httpEntityKey, httpEntity);
         }
-
-        if (!httpEntity.headerComplete() && byteBuffer.hasRemaining()) { //解析header
+        //解析header
+        if (!httpEntity.headerComplete() && byteBuffer.hasRemaining()) {
             readHeader(byteBuffer, httpEntity);
         }
 
@@ -46,7 +54,8 @@ public class SimpleHttpProtocol implements Protocol<ByteBuffer, HttpEntity> {
                 session.setAttribute(httpEntityKey, null);
                 return httpEntity;
             }
-            if (httpEntity.bodyBuffer != null && byteBuffer.hasRemaining()) { // 解析request body
+            // 解析request body
+            if (httpEntity.bodyBuffer != null && byteBuffer.hasRemaining()) {
                 readBody(byteBuffer, httpEntity);
             }
         }