
笔记
wondering24
这个作者很懒,什么都没留下…
展开
-
d 111
将以下操作保存为bat文件(新建txt,然后将后缀改为bat),然后双击运行即可。reg delete "HKEY_CURRENT_USER\Software\Scooter Software\Beyond Compare 4" /v CacheID /f这个操作是删除BeyondCompare4注册表里CacheID的值;如果你不嫌麻烦的话,可以等到试用期到了之后自己手动执行该操作,重新打开之后试用期就又是30天了;另外你可以添加定时任务,比如每隔3周自动执行该操作,这样试用期就会自己刷新了原创 2021-12-10 13:53:05 · 221 阅读 · 1 评论 -
HashMap源码之keyset
HashMap遍历的时候,推荐使用entrySet,不建议使用keySet。因为使用keySet相当于对hashmap遍历了两次,一次对key的遍历,一次对整个map的遍历。研究了一下keyset发现与我想象中的不太一样。原本以为hashmap会在put和remove中操作keyset,但是并没在put方法中找到任何关于keyset的操作。但是idea调试时候,能看到hashmap调用put后,keyset对应的容量变化了,并且key也能在keyset找到。一头雾水还是没能找到答案。度娘告诉我,ide原创 2021-03-30 11:12:39 · 375 阅读 · 0 评论 -
循环体break、continue的另类语法
研究ThreadPoolExecutor源码中发现,addWorker方法有一个retry:的写法,第一次见,所以鼓捣了一下。retry并非关键字,这里类似goto语法中的标记位置。这里主要是为了跳出多层循环使用的,单层循环break和continue本身就可以实现。多层循环就需要在跳出的循环体之前做上标记flag:,然后内层循环跳出用break flag;或者continue flag即可...原创 2021-03-05 17:01:00 · 313 阅读 · 0 评论 -
聊聊ThreadLocal
重点理清楚Thread ThreadLocalMap ThreadLocal的关系。同时,ThreadLocalMap存在内存泄露问题。1.key是弱引用,存放的ThreadLocal对象,当其设置为null时,gc可以回收它。但是value是强引用。因此ThreadLocal的set方法会遍历Entry数组,所有key为null的,也会清除value。但是虽然这样设计能降低内存泄露的风险,但是依然存在泄露的可能。a.使用了Thread,但是没有调用set方法。b.使用了Thread,然后没原创 2021-03-04 16:36:32 · 138 阅读 · 1 评论