java 获取uuid 获取ip 获取工具

简介: java 获取uuid 获取ip 获取工具

public class BaseUtils {

private static final String[] HAN_ARR = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
private static final String[] UNIT_ARR = {"十", "百", "千", "万", "十", "白", "千", "亿", "十", "百", "千"};
private static final char[] DEFAULT_ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyz".toCharArray();
private static Map<String, ScheduledFuture<?>> timedMap = new HashMap<>(1);

public static String generate32Id() {
    return UUID.randomUUID().toString().replace("-", "").toLowerCase();
}

/**
 * NanoId 32位
 *
 * @return
 */
public static String generate32IdNanoId() {
    return NanoId.randomNanoId(null, DEFAULT_ALPHABET, 32);
}

/**
 * 获取真实ip地址,避免获取代理ip
 */
public static String getIpAddress(HttpServletRequest request) {
    String ip = null;
    String ipAddresses = request.getHeader("X-Forwarded-For");
    String unknown = "unknown";
    if (ipAddresses == null || ipAddresses.length() == 0 || unknown.equalsIgnoreCase(ipAddresses)) {
        ipAddresses = request.getHeader("Proxy-Client-IP");
    }
    if (ipAddresses == null || ipAddresses.length() == 0 || unknown.equalsIgnoreCase(ipAddresses)) {
        ipAddresses = request.getHeader("WL-Proxy-Client-IP");
    }
    if (ipAddresses == null || ipAddresses.length() == 0 || unknown.equalsIgnoreCase(ipAddresses)) {
        ipAddresses = request.getHeader("HTTP_CLIENT_IP");
    }
    if (ipAddresses == null || ipAddresses.length() == 0 || unknown.equalsIgnoreCase(ipAddresses)) {
        ipAddresses = request.getHeader("X-Real-IP");
    }
    if (ipAddresses != null && ipAddresses.length() != 0) {
        ip = ipAddresses.split(",")[0];
    }
    if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ipAddresses)) {
        ip = request.getRemoteAddr();
    }
    return ip;
}

public static String toHanStr(Integer number) {
    String numStr = number + "";
    StringBuilder result = new StringBuilder();
    int numLen = numStr.length();

    for (int i = 0; i < numLen; i++) {
        int num = numStr.charAt(i) - 48;
        if (i != numLen - 1 && num != 0) {
            result.append(HAN_ARR[num]).append(UNIT_ARR[numLen - 2 - i]);
            if (number >= 10 && number < 20) {
                result = new StringBuilder(result.substring(1));
            }
        } else {
            if (!(number >= 10 && number % 10 == 0)) {
                result.append(HAN_ARR[num]);
            }
        }
    }

    return result.toString();

}

public static Map<String, ScheduledFuture<?>> getTimedMap() {
    return timedMap;
}

public static void setTimedMap(Map<String, ScheduledFuture<?>> timedMap) {
    BaseUtils.timedMap = timedMap;
}

/**
 * 允许的文件类型
 */
public static final String[] ALLOWED_EXTENSIONS = {
        "jpg", "jpeg", "img", "png", "gif"
};


/**
 * 验证文件类型是否正确
 */
public static boolean isValidExtension(String extension) {
    for (String allowedExtension : ALLOWED_EXTENSIONS) {
        if (extension.equalsIgnoreCase(allowedExtension)) {
            return true;
        }
    }
    return false;
}


/**
 * 获取扩展名
 */
public static String getExtension(MultipartFile file) {
    String originalFilename = file.getOriginalFilename();
    return originalFilename.substring(originalFilename.lastIndexOf('.') + 1);
}

/**
 * @return
 */
public static String getIp() {
    //防止线程内调用 报错
    try {
        RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes();
        HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
        return getIpAddress(request);
    } catch (Exception e) {

    }
    return "";
}

}

相关文章
|
2月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
84 9
|
2月前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
146 83
|
5天前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
51 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
1月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
58 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
2月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
60 26
|
2月前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
56 24
|
2月前
|
数据采集 存储 监控
Java爬虫:数据采集的强大工具
在数据驱动的时代,Java爬虫技术凭借其强大的功能和灵活性,成为企业获取市场信息、用户行为及竞争情报的关键工具。本文详细介绍了Java爬虫的工作原理、应用场景、构建方法及其重要性,强调了在合法合规的前提下,如何有效利用Java爬虫技术为企业决策提供支持。
|
2月前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
56 5
|
2月前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
117 5
|
3月前
|
Web App开发 Java
使用java操作浏览器的工具selenium-java和webdriver下载地址
【10月更文挑战第12天】Selenium-java依赖包用于自动化Web测试,版本为3.141.59。ChromeDriver和EdgeDriver分别用于控制Chrome和Edge浏览器,需确保版本与浏览器匹配。示例代码展示了如何使用Selenium-java模拟登录CSDN,包括设置驱动路径、添加Cookies和获取页面源码。
177 6