- 博客(12)
- 收藏
- 关注
原创 IDEA 插件推荐:源码阅读神器 SourceHelper
目前越来越卷的大环境下,校招生都会被问源码了。在阅读源代码时,我习惯将学习记录成 markdown 文档,方便进行复习。然而在这个整理文档过程中,码字、排版、复制源代码却占据了绝大部分时间,而专注于阅读代码的时间变少了。因此我开发了这样一款插件,一键将源代码文件导出至 markdown 笔记中。插件名:SourceHelper在 IDEA 插件市场中搜索并安装即可。
2024-10-27 22:18:35
791
原创 Java 集合源码剖析(七):Vector 类
从最初的迭代器,到接口、到抽象类、到 ArrayList 实现类,我们已经完整阅读过一个实现类的来龙去脉了。相信大家已经拥有了自己阅读源代码的能力。今天我们继续来学习另一个实现类 VectorVector 类是一个古老版本的数组,是一个线程安全的数组,在方法上加上了同步关键字。同时,由于 Vector 出在 1.0 版本,没有集合框架,因此内部设计、方法名、属性名都与集合框架有些许差别,但是不用担心,Vector 后续实现了 List 接口,也就意味着你可以像用 ArrayList 一样去使用他。
2024-10-22 12:02:29
961
原创 Java 集合源码剖析(六):ArrayList
终于等到你,我们最熟悉的 ArrayList类定义如下。此类实现了 RandomAccess, Cloneable 接口。这两个接口都是标记接口,就是一个空的接口,实现标记接口就是标记说明这个类是支持随机访问、支持克隆的。// xxx....可以看到,ArrayList 相比于之前的接口和抽象类,在满足接口规范的同时,比抽象类更加具体,且做出了针对于数组的独特实现和优化。
2024-10-17 21:47:53
556
原创 Java 集合源码剖析(五):AbstractList 抽象类
再次回顾那张集合关系图。通过前面的学习,不难发现集合的设计逻辑。首先使用一个 Collection 接口来规范一切集合的行为,然后细分出 List 、Set、 Queue 接口进一步规范实现类的行为,提出更具体的要求。然后,由于 1.8 之前没有接口的默认方法,于是要使用抽象类给出方法的默认实现,相当于官方给出了一套实现模版。总结一下就是,接口用来规范行为,并且由上至下一步步细化,抽象类用来给出默认实现,也由上至下一步步细分。
2024-10-15 19:48:02
1040
原创 IDEA 从根源上解决 maven 下载失败、gradle 超时等一切网络问题
并且奇怪的是,本机已经施加魔法,依然会出现网络问题,这是因为 IDEA 软件不会走魔法的路线。每当从 maven 仓库下载、导入、搜索等操作,总会遇到各种各样的网络问题。以 clash 为例,走的是7890端口,配置为本机的 7890 端口即可。我们不得不配置各种的 阿里镜像源、清华镜像源,而根源是网络问题。只需要简单的配置,即可让 IDEA 附魔。现在你可以随意下载仓库的代码了。这步不会的话神仙难救!
2024-10-15 19:35:53
286
原创 Java 集合源码剖析(四):AbstractCollection 抽象集合类
这是我们第一次接触实现类,不过别担心它很简单,因为里面与接口一样只有方法。为什么呢?在 Java 1.8 之前,接口不允许有默认实现,只可以有抽象方法。因此,对于一些重复的代码,不得不抽一个抽象类出来,减轻代码量。举个例子,在 Collection 接口中,isEmpty 方法是用来判断集合是否为空的,size 方法是判断集合内部元素个数的。当 size() == 0 时,我们就认为集合为空。int size();// 其他方法...但是!
2024-10-15 01:34:13
1083
原创 Java 集合源码剖析(三):List 接口
有了前两期源码阅读,现在对源码已经不那么恐惧了吧?话不多说,直接开干 List 接口。List 接口的内容到此就结束啦,是不是感觉很简单呢?不要掉以轻心,因为这些是接口,只有方法、方法的规范,没有方法的具体实现。整个一共 700 行代码,并且有大量注释。总结一下,和 Collection 类似的结构,并且很多继承自 Collection,注释中将操作分为查询操作修改操作批量修改比较和哈希索引访问搜索操作这几个方面。
2024-10-15 01:29:26
839
原创 Java集合框架源码剖析(二):Collection 接口
因为数组实现的 remove 操作,不允许在迭代过程中进行修改集合,如果你不嫌麻烦,你可以使用迭代器的next() 方法配合 迭代器的 remove() 方法进行删除操作。一切 Collection 的实现类(间接实现此接口)都应提供两个标准的构造函数,一个是没有传入参数的函数用于构造空集合,一个是包含一个传入参数为 Collection 的函数,用于构造一个与传入参数包含相同元素的集合。这是一切集合实现类的根接口,再次回想接口的定义,规范了实现类的行为,这就是作为一个容器、一个集合,应该要有的方法。
2024-10-14 17:05:36
1072
原创 Java 集合框架源码剖析(一):从 Iterator 迭代器窥探源码
什么是类?什么是接口?初学者一定会被此类抽象问题搞得头晕目眩,别担心,我将会为你通俗地解释这些。
2024-10-12 04:11:46
604
1
原创 怎么学计算机?初学者学习路线推荐!
笔者在计算机这条路上走过不少弯路,诚然现代网络使得信息唾手可得,但是带来的负面影响也不能忽视,那就是全都是过时、或错误的信息!文章可能比较长,但皆为肺腑之言,至少比绝大多数文章更据说服力,希望各位考虑好再去学习。过时和错误这些因何而起呢?这里只简要说明一下。去 B 站、淘宝等渠道搜索学习资料,你会发现所有的东西标题都是 2024 最新xxx,点进去就发现,作者故意去掉时间相关信息混淆视听。没有人分享出最新的知识,因为一线的开发人员本身也没有时间跟你分享。
2024-07-13 04:53:29
1812
原创 grpc的安装(最新可用)
本教程测试于2023.10.05,可以安装最新版本的grpc折腾了半天,网上的各种教程完全不靠谱,有的用的老版本,有的用的gittee,b站视频更是抄来抄去的老古董视频,完全不适合现在。因为最近忙找工作,就简要阐述一下步骤,附带一些其他的博客或者官方文档,稍微有点基础都可以安装。
2023-10-05 13:44:12
712
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人