package cn.com.bluemoon.utils;
import java.beans.XMLDecoder;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
/**
* 字符串处理及转换工具类
*
* @author Guoqing
*/
public class StringUtil {
private static Pattern mobliePattern = Pattern
.compile("^((13[\\d])|(14[5,7,9])|(15[^4,\\D])|(17[^2,4,9,\\D])|(18[\\d]))\\d{8}$");
private static Pattern emailPattern = Pattern
.compile("^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$");
private static Pattern numericPattern = Pattern.compile("^[0-9\\-]+$");
private static Pattern numericStringPattern = Pattern
.compile("^[0-9\\-\\-]+$");
private static Pattern floatNumericPattern = Pattern
.compile("^[0-9\\-\\.]+$");
private static Pattern abcPattern = Pattern.compile("^[a-z|A-Z]+$");
public static final String splitStrPattern = ",|,|;|;|、|\\.|。|-|_|\\(|\\)|\\[|\\]|\\{|\\}|\\\\|/| | |\"";
private static Pattern nickNamePattern = Pattern
.compile("^[\u4E00-\u9FFFA-Za-z0-9_-]+$");
// 收货地址校验 -_()@??【】[](){}#
private static Pattern addressPattern = Pattern
.compile("^[\u4E00-\u9FFFA-Za-z0-9/-_[ | |,|,|;|;|:|:|*|、|\\.|。|\\-|_|\\(|\\)|\\(|\\)|\\?|?|\\[|\\]|【|】|\\{|\\}|\\#]]+$");
// |\\?|?|\\[|\\]|【|】|\\{|\\}|\\#
public static void main(String[] args) {
// System.out.println(isValidAddress("斯蒂芬森1212|-_()@????????【【@@@@@】【】】】[](){{}{}{}{}}#"));
System.out.println(isEmail("thj-1990@qq.com"));
}
/**
* 判断是否昵称
*
* @param src
* 源字符串
* @return 是否昵称的标志
*/
public static boolean isNickName(String src) {
boolean return_value = false;
if (src != null && src.length() > 0) {
Matcher m = nickNamePattern.matcher(src);
if (m.find()) {
return_value = true;
}
}
return return_value;
}
public static boolean isValidAddress(String src) {
boolean return_value = false;
if (src != null && src.length() > 0) {
Matcher m = addressPattern.matcher(src);
if (m.find()) {
return_value = true;
}
}
return return_value;
}
/**
* 判断是否数字表示
*
* @param src
* 源字符串
* @return 是否数字的标志
*/
public static boolean isNumeric(String src) {
boolean return_value = false;
if (src != null && src.length() > 0) {
Matcher m = numericPattern.matcher(src);
if (m.find()) {
return_value = true;
}
}
return return_value;
}
/**
* 判断是否数字表示
*
* @param src
* 源字符串
* @return 是否数字的标志
*/
public static boolean isNumericString(String src) {
boolean return_value = false;
if (src != null && src.length() > 0) {
Matcher m = numericStringPattern.matcher(src);
if (m.find()) {
return_value = true;
}
}
return return_value;
}
public static boolean isLongString(String src) {
boolean return_value = false;
try {
Long l = Long.parseLong(src);
if (null != l && l > 0) {
return_value = true;
}
} catch (NumberFormatException e) {
}
return return_value;
}
/**
* 判断是否纯字母组合
*
* @param src
* 源字符串
* @return 是否纯字母组合的标志
*/
public static boolean isABC(String src) {
boolean return_value = false;
if (src != null && src.length() > 0) {
Matcher m = abcPattern.matcher(src);
if (m.find()) {
return_value = true;
}
}
return return_value;
}
/**
* 判断是否浮点数字表示
*
* @param src
* 源字符串
* @return 是否数字的标志
*/
public static boolean isFloatNumeric(String src) {
boolean return_value = false;
if (src != null && src.length() > 0) {
Matcher m = floatNumericPattern.matcher(src);
if (m.find()) {
return_value = true;
}
}
return return_value;
}
/**
* 把string array or list用给定的符号symbol连接成一个字符串
*
* @param array
* @param symbol
* @return
*/
public static String joinString(List array, String symbol) {
String result = "";
if (array != null) {
for (int i = 0; i < array.size(); i++) {
String temp = array.get(i).toString();
if (temp != null && temp.trim().length() > 0)
result += (temp + symbol);
}
if (result.length() > 1)
result = result.substring(0, result.length() - 1);
}
return result;
}
public static String subStringNotEncode(String subject, int size) {
if (subject != null && subject.length() > size) {
subject = subject.substring(0, size) + "...";
}
return subject;
}
/**
* 截取字符串 超出的字符用symbol代替
*
* @param len
* 字符串长度 长度计量单位为一个GBK汉字 两个英文字母计算为一个单位长度
* @param str
* @param symbol
* @return
*/
public static String getLimitLengthString(String str, int len, String symbol) {
int iLen = len * 2;
int counterOfDoubleByte = 0;
String strRet = "";
try {
if (str != null) {
byte[] b = str.getBytes("GBK");
if (b.length <= iLen) {
return str;
}
for (int i = 0; i < iLen; i++) {
if (b[i] < 0) {
counterOfDoubleByte++;
}
}
if (counterOfDoubleByte % 2 == 0) {
strRet = new String(b, 0, iLen, "GBK") + symbol;
return strRet;
} else {
strRet = new String(b, 0, iLen - 1, "GBK") + symbol;
return strRet;
}
} else {
return "";
}
} catch (Exception ex) {
return str.substring(0, len);
} finally {
strRet = null;
}
}
/**
* 截取字符串 超出的字符用symbol代替
*
* @param len
* 字符串长度 长度计量单位为一个GBK汉字 两个英文字母计算为一个单位长度
* @param str
* @param symbol
* @return12
*/
public static String getLimitLengthString(String str, int len) {
return getLimitLengthString(str, len, "...");
}
/**
*
* 截取字符,不转码
*
* @param subject
* @param size
* @return
*/
public static String subStrNotEncode(String subject, int size) {
if (subject.length() > size) {
subject = subject.substring(0, size);
}
return subject;
}
/**
* 把string array or list用给定的符号symbol连接成一个字符串
*
* @param array
* @param symbol
* @return
*/
public static String joinString(String[] array, String symbol) {
String result = "";
if (array != null) {
for (int i = 0; i < array.length; i++) {
String temp = array[i];
if (temp != null && temp.trim().length() > 0)
result += (temp + symbol);
}
if (result.length() > 1)
result = result.substring(0, result.length() - 1);
}
return result;
}
/**
* 取得字符串的实际长度(考虑了汉字的情况)
*
* @param SrcStr
* 源字符串
* @return 字符串的实际长度
*/
public static int getStringLen(String SrcStr) {
int return_value = 0;
if (SrcStr != null) {
char[] theChars = SrcStr.toCharArray();
for (int i = 0; i < theChars.length; i++) {
return_value += (theChars[i] <= 255) ? 1 : 2;
}
}
return return_value;
}
/**
* 检查数据串中是否包含非法字符集
*
* @param str
* @return [true]|[false] 包含|不包含
*/
public static boolean check(S
没有合适的资源?快使用搜索试试~ 我知道了~
distributed-seckill-master.zip
共61个文件
java:42个
prefs:6个
xml:4个
0 下载量 96 浏览量
2022-12-04
13:45:17
上传
评论
收藏 356KB ZIP 举报
温馨提示
我们都知道,正常去实现一个WEB端的秒杀系统,前端的处理和后端的处理一样重要;前端一般会做CDN,后端一般会做分布式部署,限流,性能优化等等一系列的操作,并完成一些网络的优化,比如IDC多线路(电信、联通、移动)的接入,带宽的升级等等。而由于目前系统前端是基于微信小程序,所以关于前端部分的优化就尽可能都是在代码中完成,CDN这一步就可以免了
资源推荐
资源详情
资源评论
收起资源包目录
distributed-seckill-master.zip (61个子文件)
distributed-seckill-master
pom.xml 5KB
.factorypath 30KB
.settings
org.eclipse.m2e.core.prefs 86B
org.eclipse.wst.common.project.facet.core.xml 141B
org.springframework.ide.eclipse.boot.properties.editor.prefs 157B
org.springframework.ide.eclipse.prefs 63B
org.eclipse.core.resources.prefs 150B
org.eclipse.jdt.apt.core.prefs 66B
org.eclipse.jdt.core.prefs 295B
src
main
webapp
css
index.css 194KB
js
index.js 530KB
vue.js 304KB
jquery-1.9.1.min.js 90KB
views
index.html 7KB
resources
mybatis-config.xml 4KB
META-INF
spring.factories 228B
application.yml 3KB
logback-spring.xml 4KB
java
cn
com
bluemoon
ServiceSeckillApplication.java 762B
common
interceptor
LimitInterceptor.java 2KB
response
StockNumResponse.java 480B
BaseResponse.java 981B
ResponseBean.java 1KB
SeckillInfoResponse.java 1KB
exception
WebExceptionEnum.java 1KB
AssertException.java 1015B
WebException.java 991B
ServiceExceptionEnum.java 401B
GlobalExceptionHandler.java 2KB
IllegalReentrantException.java 595B
config
SwaggerConfig.java 1KB
DatasourceConfig.java 3KB
WebConfig.java 638B
logs
LogAspect.java 3KB
threads
UserRejectHandler.java 613B
CallableAndFuture.java 1KB
CallableAndFuture2.java 2KB
UserThreadPool.java 2KB
UserThreadFactory.java 727B
Totp.java 10KB
kafka
KafkaConsumer.java 5KB
KafkaSender.java 542B
controller
SeckillController.java 15KB
redis
lock
RedissonDistributedLocker.java 6KB
DistributedExclusiveRedisLock.java 4KB
repository
RedisCacheConfig.java 2KB
RedissonAutoConfiguration.java 4KB
RedissonProperties.java 3KB
RedisRepository.java 17KB
service
ISeckillService.java 1019B
impl
SeckillServiceImpl.java 6KB
utils
StringUtil.java 64KB
AssertUtil.java 2KB
DateUtil.java 26KB
SerialNo.java 4KB
mybatis
datasource
DynamicDataSourceTransactionManager.java 1KB
DynamicPlugin.java 4KB
DynamicDataSourceGlobal.java 176B
DynamicDataSource.java 2KB
DynamicDataSourceHolder.java 956B
.gitignore 247B
共 61 条
- 1
资源评论
m0_72731342
- 粉丝: 2
- 资源: 1832
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功