关于调试HashMap源码的小心得(这篇是我耗费了断断续续两天才得出来的)

先说说大体的情况:

我用的idea,在阅读HashMap的源码时候,我大体看懂了。但整体的一个数据具体储和流程我想用idea去走下断点,然后我就在自己的springboot项目里写了个测试类,然后简简单单、板板正正的new HashMap,然后put一下,get一下。然后我就点debug按钮开始执行了。然后很顺利的渗透到HashMap的内部,但TM遇到了一个骚问题(请允许我用一个艹),如下:

传进去的对象是这么个玩意,然后我以为是idea设置的有问题吧。我就百度了下,基本就几种情况:

1、

就是把这两个勾选去掉。

2、或者是因为jdk不支持在源码debug,需要解压rt,然后再重新替换

3、还有说需要额外下一个外国 大佬版本的jdk

4、在断点那里右键可以加condition(也就是例如一个for循环,你可以在当i等于某个值的时候暂停吧)

5、还有说什么重新安装jdk、idea、重启电脑(你咋不再买台新电脑呢)

大体就这些,然后我就各种尝试,还是那样。最后我也重启电脑,然而卵用没有。

第二天,我找了个群,有个大佬回复说可能因为不只你自己调用HashMap,例如jdk啊,很多的jar里面的问题也会调用的。我当时就有点明白了,但他也没说咋解决。我就先阅读源码去了,我看到链表转红黑树那段代码的时候,回去比较两个key的class类型。然后我就去跟了一下String的compareTo方法,我再一次在源码打了断点。然后瞎几把点了两下,我发现传入的参数有我自定义的参数,我灵光一闪。是不是我调用的方式不对呢?

重点来了!!!!!!!!!!!!!!!!!

然后我就启动了我的springboot项目,在HashMap的内部打了断点,启动的时候就触发了。然后我先干掉,启动好了。我再次打上,调用了一个方法。在请求前,还会由别的类调用。先去掉HashMap里面的断点,等真正走到你接口那个方法(这里面最好打上一个断点,就get方法那)的时候再在源码里面打上就可以了。

这个东西怎么说呢,也算是个小心得吧。反正静下心来多想想,解决了的感觉还是很不错的。如果同样遇到这个问题困扰你很久的老铁,希望能给到你帮助哈。大佬们就当看个笑话吧,哈哈

对了,还有就是阅读这个HashMap的源码前,最好是理解一下 数组、链表、二叉树、二叉搜索树、红黑树这些东西,这样看起来还可以。讲道理,看看这些骚东西比TM成天写那些crud有意思多了,但就是看的脑子疼,可能是比较菜的缘故。。。。。。。。。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值