Java常见问题汇总

简介: 来源: StackOverflow, 自己使用中总结集合并发网络获取本机IPInetAddress inetAddress = InetAddress.getLocalHost();String host = inetAddress.getHostAddress();System.out.print("host is " + host +

来源: StackOverflow, 自己使用中总结

集合

并发

网络

获取本机IP

InetAddress inetAddress = InetAddress.getLocalHost();
String host = inetAddress.getHostAddress();
System.out.print("host is " + host + "\n");

结果: host is 127.0.0.1

在linux环境下,没法获取正确的ip地址,当然也有一部分人碰巧获取了正确的结果。实际上这个函数是按照host来查找ip地址的,在linux中这些地址在/etc/hosts文件中:

127.0.0.1 localhost
127.0.0.1 ubuntu
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

因此程序里也只是读取了该文件下的ip地址,用户的网络如果是静态ip的话,自己手动设置一下,也能返回正确的IP地址,但是这么做的确是很麻烦。还有一个方法就是,执行ifconfig,解析对应的结果。

或者使用NetworkInterface接口来获取:

public static String getHostIp() {
        Enumeration<NetworkInterface> netInterfaces = null;
        String host = "";
        try {
            netInterfaces = NetworkInterface.getNetworkInterfaces();
            while (netInterfaces.hasMoreElements()) {
                NetworkInterface ni = netInterfaces.nextElement();
                if(!ni.getName().isEmpty()) {
                    Enumeration<InetAddress> ips = ni.getInetAddresses();
                    while (ips.hasMoreElements()) {
                        InetAddress inetAddress = ips.nextElement();
                        host = inetAddress.getHostAddress();
                        log.info("IP:" + host);
                        if(inetAddress.getHostAddress().matches("\\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}\\b")) {
                            return host;
                        }

                    }
                }
            }
        } catch (Exception e) {
            if(log.isInfoEnabled()) {
                log.info(e.getMessage());
            }
        }
        return host;
    }

其他

package-info.java作用

为标注在包上Annotation提供便利;
声明友好类和包常量;
提供包的整体注释说明。

示例说明:

目录
相关文章
|
Java 数据处理 调度
Dataphin常见问题之离线管道同步数据datax就报连接超时如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
存储 安全 算法
详解Java中HashMap、HashTable、ConcurrentHashMap常见问题
详解Java中HashMap、HashTable、ConcurrentHashMap常见问题
327 0
|
Java 程序员
java常见问题(一)
java常见问题(一)
146 0
|
安全 Java 开发者
Java多线程编程中的常见问题与解决方案
本文深入探讨了Java多线程编程中常见的问题,包括线程安全问题、死锁、竞态条件等,并提供了相应的解决策略。文章首先介绍了多线程的基础知识,随后详细分析了每个问题的产生原因和典型场景,最后提出了实用的解决方案,旨在帮助开发者提高多线程程序的稳定性和性能。
|
算法 Java 数据中心
探讨面试常见问题雪花算法、时钟回拨问题,java中优雅的实现方式
【10月更文挑战第2天】在大数据量系统中,分布式ID生成是一个关键问题。为了保证在分布式环境下生成的ID唯一、有序且高效,业界提出了多种解决方案,其中雪花算法(Snowflake Algorithm)是一种广泛应用的分布式ID生成算法。本文将详细介绍雪花算法的原理、实现及其处理时钟回拨问题的方法,并提供Java代码示例。
2656 2
|
安全 Java
Java多线程编程实践中的常见问题与解决方案
Java多线程编程实践中的常见问题与解决方案
|
安全 Java 开发者
Java多线程编程实践中的常见问题与解决方案
Java多线程编程实践中的常见问题与解决方案
|
Java 测试技术 持续交付
云效产品使用常见问题之通过流水线构建的java代码,在docker文件里拿到失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
WXM
|
前端开发 JavaScript 小程序
Java人事面常见问题及方法论
Java人事面常见问题及方法论
WXM
282 0
|
安全 Java
掌握 Java IO 流:常见问题与解决方案
【4月更文挑战第4天】Java IO 流问题详解:文件读写失败(检查路径与权限)、字符编码错误(指定正确编码)、缓冲区使用不当(优化性能)、异常处理缺失(捕获并处理异常)、资源未释放(及时关闭流或用try-with-resources)、并发访问冲突(使用同步机制)和文件锁定(处理锁文件异常)。解决这些问题可提升程序稳定性与性能。
506 1