InetAddress.getLocalHost() 执行很慢?
某次在 SpringBoot 2.2.0 项目中,引入了代码导致项目启动明显变慢,码h码并触发了相关警告信息。源代信息显示,码h码获取主机信息耗时超过阈值毫秒。源代安卓app源码一般放哪里如果为Mac系统,码h码则会提示在/etc/hosts文件中配置本地DNS。源代通过查看hosts文件,码h码发现添加了主机名后,源代警告信息消失。码h码这引发了对获取主机信息机制的源代探究。
为了解决问题,码h码首先尝试更改hosts文件内容,源代安卓 图库源码并使用sudo killall -HUP mDNSResponder 刷新DNS,码h码避免重启电脑。再次启动程序后,警告信息消失,表明主机信息获取耗时未超过毫秒。
接下来,通过Wireshark抓包观察网络行为。在本地回环网络中,选择了Loopback网络接口。在没有添加主机名时,发现主机信息获取耗时较长,经过三次请求后返回结果。添加主机名后,白蛇传 源码程序直接读取hosts文件获取主机名,无需网络交互。
为了深入了解过程,查看了对应的源码。在没有添加主机名时,时间主要耗在InetAddress.getAddressesFromNameService方法中。进一步跟踪发现,调用链路耗时主要集中在nameService.lookupAllHostAddr方法。深入到native方法后,查阅了jdk源码。发现实际的实现涉及与操作系统的交互。
通过在Java项目中直接输入主机名,对比hosts文件中添加或未添加主机名的魔方斗牛指标源码情况,发现未添加时无法找到网络地址,而添加后能返回本地IP地址.0.0.1。这说明系统对标准Linux代码进行了修改,加入了本地缓存、重试和超时机制,以优化主机名获取过程。
总结,本文通过使用多种技术手段研究了Java中获取主机名慢的问题,包括Wireshark抓包、Arthas工具定位性能瓶颈、查看jdk源码等,揭示了主机名获取的原理及优化机制。进一步研究时,android 来电秀 源码可能需要验证本地缓存、重试和超时等机制的详细实现。参考文章提供了一些查找和分析相关技术细节的途径,有助于深入理解问题。
SwitchHosts - 帮助我们本地电脑管理、切换多个 hosts 方案的免费开源软件
SwitchHosts 是一款帮助本地电脑管理与切换多个 hosts 方案的免费开源软件,感谢 @Hello China 的推荐。它基于 Electron、React、Jotai、Chakra UI、CodeMirror 等技术开发,是一个跨平台的工具,适用于 Mac、Windows 和 Linux 系统。
通常,在网页开发过程中,需要频繁修改 hosts 文件以测试网站。常规方法操作复杂,比如在 macOS 上,需先找到 hosts 文件位置,拷贝文件,修改后重新替换,过程中还需验证密码,步骤繁琐。
而 SwitchHosts 则简化了这一过程。软件界面简洁,操作直观。用户只需在软件中设置域名与 IP 地址的映射关系,即可轻松切换 hosts 文件,无需手动查找和修改文件,节省了大量时间。
下载 SwitchHosts 非常方便。只需访问项目主页的 releases 部分,选择适合您电脑系统的软件包进行下载。这款软件完全免费,并且开源,基于 Apache-2.0 协议发布。如有兴趣,可自行下载源码,根据需要进行构建。
修改Hosts文件解决网站访问问题
当遇到某些网站如GitHub、Coursera访问困难时,可以考虑通过修改Hosts文件来解决问题。Hosts文件是一个系统文件,位于C:\Windows\System\drivers\etc,它存储了域名与IP地址的对应关系,用于网站访问时查找。
首先,查询需要的IP地址,如访问GitHub的...和...,然后在记事本中打开Hosts文件,将这些IP地址添加到文件末尾。接着,通过命令提示符输入ipconfig/flushdns刷新DNS缓存,以应用新的IP设置。例如,当遇到B站下载Bootstrap源码问题时,通过这种方法,可顺利跳转并加速下载。
如果Coursera视频无法打开,同样可以尝试修改Hosts文件。对于网络问题,不妨更换网络环境,如使用手机热点,或者使用第三方工具如FastGithub,它能自动优化DNS设置,提升访问速度。
2024-12-22 22:30
2024-12-22 22:13
2024-12-22 21:50
2024-12-22 21:34
2024-12-22 21:02