perf[server]: max packet length limit

This commit is contained in:
godotg
2023-12-10 22:04:20 +08:00
parent 3454805796
commit a406596898
6 changed files with 16 additions and 29 deletions
@@ -13,10 +13,8 @@
package com.zfoo.protocol.collection;
import com.zfoo.protocol.model.Pair;
import com.zfoo.protocol.util.AssertionUtils;
import com.zfoo.protocol.util.IOUtils;
import com.zfoo.protocol.util.MathSafeUtil;
import com.zfoo.protocol.util.MathSafeUtils;
import com.zfoo.protocol.util.StringUtils;
import java.util.*;
@@ -116,7 +114,7 @@ public abstract class CollectionUtils {
* CN: 计算HashMap初始化合适的大小,为了安全必须给初始化的集合一个最大上限,防止反序列化一个不合法的包导致内存突然升高
*/
public static int comfortableCapacity(int capacity) {
return MathSafeUtil.safeFindNextPositivePowerOfTwo(capacity);
return MathSafeUtils.safeFindNextPositivePowerOfTwo(capacity);
}
public static int capacity(int expectedSize) {
@@ -3,7 +3,12 @@ package com.zfoo.protocol.util;
/**
* @author Boone Jack
*/
public abstract class MathSafeUtil {
public abstract class MathSafeUtils {
public static long MAX_LENGTH = IOUtils.BYTES_PER_MB;
public static long MAX_LENGTH_SHORT_ARRAY = MAX_LENGTH / 2;
public static long MAX_LENGTH_INT_ARRAY = MAX_LENGTH / 4;
public static long MAX_LENGTH_LONG_ARRAY = MAX_LENGTH / 8;
public static int findNextPositivePowerOfTwo(int value) {
assert value > Integer.MIN_VALUE && value < IOUtils.BYTES_PER_MB;