开发问题集

开发问题集

泛型

编译时泛型擦除

    public static void method1(ArrayList<String> list1) {
        System.out.println("Arraylist<String> list1");
    }
    public static void method1(ArrayList<Date> list1) {
        System.out.println("Arraylist<Date> list1");
    }

以上代码编译器报错:‘method1(ArrayList)’ clashes with ‘method1(ArrayList)’; both methods have same erasure

原因是这两个方法在编译后,由于“泛型擦除”,导致编译后两个方法变得一致。

jdk 版本问题

接口调用异常:javax.net.ssl.SSLException: Received fatal alert protoocol_version

此问题,是由于接口调用时,调用方和被调用方使用的 jdk 版本不一致导致的,具体情况如下:
接口调用方:jdk1.6 ----------------> 接口提供方:jdk1.8
经查资料发现,当接口的协议使用的是 https 时,需要进行 SSL 的验证。而 jdk1.8 默认的TLS 的版本是 TLSv1.2, jdk1.6 默认的 TLS 的版本是 TLSv1.1 且 jdk 最高只支持 TLSv1.1,因此接口调用时会抛异常。

关于TLS协议和SSL的区别及介绍,可以看此文章:https://kb.cnblogs.com/page/197396/

解决方案:

  1. 接口提供方修改接口协议,将 https 改为 http,从而跳过 SSL 验证。
  2. 接口提供方修改 TLS 协议,将 TLS 协议版本从默认的 TLSv1.2 改为 TLSv1.1。
  3. 接口调用方将 jdk 升级为 1.8,考虑本项目升级较为困难,可以在中间加一层系统进行接口转发。

NoClassDefFoundError

ClassNotFoundExceptionNoClassDefFoundError
从java.lang.Exception继承,是一个Exception类型从java.lang.Error继承,是一个Error类型
当动态加载Class的时候找不到类会抛出该异常当编译成功以后执行过程中Class找不到导致抛出该错误
一般在执行Class.forName()、ClassLoader.loadClass()或ClassLoader.findSystemClass()的时候抛出由JVM的运行时系统抛出

具体请参阅:ClassNotFoundException和NoClassDefFoundError的区别

生产问题

cpu 飙升问题定位

引发 cpu 飙升的原因

java 进程
  • 原因

    • 循环过久甚至死循环
    • GC 频繁
  • 问题定位

    1. 使用 top 命令查看进程的 cpu 使用情况,获取需要分析的进程 PID
    2. 在使用 top -Hp PID 分析进程中线程的 cpu 使用情况,获取道需要分析的线程号
      注意:线程号为十进制的数值,需要将其转换为十六进制 printf "%x\n" 30309
    3. 使用jstack -l 命令将快照信息输入到指定文件中,再进一步分析
      jstack -l xxxx > ./jstack_result.txt
  • 资料

    • top 命令
      • https://blog.csdn.net/langzi6/article/details/124805024?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168353642416800211554221%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=168353642416800211554221&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-124805024-null-null.142v86insert_down1,239v2insert_chatgpt&utm_term=top&spm=1018.2226.3001.4187
      • https://blog.csdn.net/yangjnsjbad/article/details/125757084?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168353653716800227449292%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=168353653716800227449292&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-125757084-null-null.142v86insert_down1,239v2insert_chatgpt&utm_term=top%20-Hp&spm=1018.2226.3001.4187
    • cpu 飙升场景
      • https://blog.csdn.net/u012756916/article/details/129907139?ops_request_misc=&request_id=&biz_id=102&utm_term=cpu%E9%A3%99%E5%8D%87%E7%9A%84%E5%87%A0%E7%A7%8D%E5%9C%BA%E6%99%AF&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-129907139.142v86insert_down1,239v2insert_chatgpt&spm=1018.2226.3001.4187
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值