首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我是如何阅读JDK源码的?

前言 之前断断续续读过一部分 JDK 常用类的源码,这里想把过程中的一些心得和方法记录下来,如果能帮到需要的小伙伴就再好不过了! 本文主要分享一下我的阅读工具和阅读顺序。...JDK 1.8 官方文档链接:https://docs.oracle.com/javase/8/docs/api/ 当然,阅读的先后顺序也很重要,下面介绍下我的阅读顺序。 3....阅读顺序 3.1 整体顺序 JDK 中的代码非常多,不可能、也没必要全部读完,因此要有的放矢。...具体到某一个类,如何去阅读它的源码实现呢?下面继续介绍。 3.2 具体顺序 3.2.1 类和接口 如何阅读一个类的源码呢?主要步骤大概是: 先读接口代码。包括接口说明文档、各个方法的定义和说明文档。...一个接口可以有多个实现类,它们都会按照接口的这种标准来实现接口的各个方法。因此,理解了一个方法的定义,再去看它的实现会更容易理解。 下面以常用的 ArrayList 为例,分析如何去阅读它的源码。

1.5K21

如何快速抓到 Pokémon GO 中的所有精灵

首先,我们来熟悉下已经入侵我们现实世界的 151 个第一代 Pokémon,然后再告诉你如何找到去附近道馆的最短路径。 ?...Pokémon GO 继承了蓝版和红版中的 Pokémon,但是游戏范围却大不相同。不能再坐在沙发上把它们都"抓住",你得做些运动来帮助 Willow 博士研究这些生活在增强现实中的精灵。...蓝色的点是进化成第一代 Pokémon(目前已有)的较新一代的 Pokémon(在增强现实游戏中还没有)。我猜将来获得它们的可能方式是喂养它们的进化形式。下面是偷窥一下这些可爱精灵的方法: ?...为了把这些精灵融入现实世界中,Pokémon GO 使用了来自另一个增强现实游戏 Ingress 中由用户产生的数据,Ingress 也是 Niantic 出品的。...利用这条路线,我孵化了三个蛋,控制了 65 +个道馆!我从来没有试过这样的策略。我还计划在巴塞罗那也这样做。在另一个帖子中,我谈及在一年中 Runkeeper 活动是怎样演化的。

90340
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    你也对阅读源码感兴趣,说说我是如何阅读Nacos源码的

    因为这篇文章亦是在写如何阅读Nacos源码,也是在写如何阅读源码。不要被技术栈所束缚,要提炼属于自己的方法。看你所欲,取你所需。...这里的底层实现和原理相对来说要宏观一些,比如阅读Nacos源码我就是想知道,它是如何实现服务注册、服务发现以及那些服务实例是如何存储的。...再看一个Nacos Client中的例子,在Client中调用Server的API时,会涉及到重试机制和多个Server选一个进行注册的逻辑。看看Nacos是如何实现的。...从源码中可学的内容太多了,我这里就不逐一讲解了,后面会逐步形成系列文章的形式把我看到的源码中的技术和思想分享给大家。 如何阅读源码 有了阅读源码的目标,下一步就是执行了。...先来了解一些科普知识吧》 《微服务的灵魂摆渡者——Nacos,来一篇原理全攻略》 《你也对阅读源码感兴趣,说说我是如何阅读Nacos源码的》 《Nacos中已经有Optional使用案例了,是时候慎重对待这一语法了

    31720

    如何快速删除InnoDB中的大表?

    背景 在使用MySQL时,如果有大表的存储引擎是InnoDB,并且系统参数innodb_file_per_table设置为1,即每个文件对应一个独立的表空间,当对这些大表进行DROP TABLE时,有时会发现整个数据库系统的性能会有显著下降...在删除一个有独立表空间的大表时,需要对buffer pool中所有和这个表空间有关的数据页做清理工作,包括从AHI,flush list和LRU list上移除,而在这个清理过程中,会一直持有buffer...通过阅读MySQL 5.7的源码可以看到,整个DROP TABLE过程可以简单地概括为: 获取dict_sys->mutex这个数据字典锁 启动一个innodb事务 更新数据字典,包括内存中的数据和mysql...dict_sys->mutex dict_sys->mutex是用来保护内存中的数据字典,以及mysql库下的数据字典表,从源码可以看到,在unlink ibd文件之前,所有的数据字典操作已经结束,其实是可以释放掉...过程调整为: 获取dict_sys->mutex这个数据字典锁 启动一个innodb事务 更新数据字典,包括内存中的数据和mysql库下的数据字典表 lazy drop逻辑,清理buffer pool的

    8.7K32

    如何阅读(和理解)Linux 中神奇的手册页

    有一次,在很久以前的哲学课上,有人告诉我,阅读 亚里士多德 是最无聊的阅读。我不同意:说到枯燥的阅读,亚里士多德远远地排在第二位,仅次于手册页。...有一个关于手册页的介绍,这是一篇值得阅读介绍。它非常详细地说明了手册页是如何布局和组织的。...如果你在看 passwd 的手册页,页面的顶部显示: PASSWD(1),说明你正在阅读第 1 节中描述 passwd 命令如何更改用户账户密码的手册页。...如果你看到 PASSWD(5),那么你正在阅读关于密码文件和它是如何组成的的手册页。 image.png passwd 恰好是两个不同的东西:一个是命令的名称,一个是文件的名称。...如果我想阅读 passwd 命令的手册页,我可以在终端输入以下内容: man 1 passwd man 工具将只在第 1 节中搜索 passwd 并显示它。它不会在任何其他节中寻找 passwd。

    58800

    我是如何还原NC中的美图的

    Fig2b,分为三部分: 上图为细胞系表达水平的箱线图。中间为热图,显示乳腺癌及其相关生物学过程中预测的抑癌基因和癌基因top50。基于欧氏距离矩阵进行层次聚类。下图是颜色标记不同注释信息。...红色(蓝色)标记Moonlight基因得分加(减)的生物过程。特定基因突变的样本数量从白色到深紫色不等。超甲基化DMR显示为蓝色,去甲基化黄色。KM生存预后差的基因标记为粉红色。...后来,我找到了这个神器——ComplexHeatmap。看这个R包的直译就知道啦,它是用来画复杂的热图。那到底有多复杂?小编带你一览庐山真面目。...,我的数据中基因为行,所以就加到右边了,但代码是一样的。...小编总结 ComplexHeatmap由顾祖光博士创建,是一个全面绘制复杂热图的R包,利用它你能绘制许多文献中的图片并学习到美图的精髓。像小编我这样的手残星人都能复制出来,你还没有信心么???

    1.3K30

    如何到达C语言的巅峰?我推荐你阅读《C语言小白变怪兽》!

    《C语言小白变怪兽》融入了作者 8 年的编程功力,以及文学级的写作能力,耗时 5 年完成,期间经过了 5 次大改版。 作者的执着和专注让我非常感动。在这个浮躁的年代,能沉下心了写一部教程着实不易。...《C语言小白变怪兽》除了讲解语法知识,还重点讲解了: 1) 学习规划 告诉读者如何学习C语言,如何避免踩坑,分析程序员的发展方向以及高薪秘诀。 2) 内存 内存是菜鸟和大神的分水岭!...《C语言小白变怪兽》处处涉及内存,从内存的角度分析每一个知识点,让读者看透本质。 此外还有一个《C语言和内存》专题,从更加宏观的层面讲解程序在内存中的分布,以及计算机控制内存的秘密。 ?...4) 多文件编程(模块化开发) 大中型项目往往涉及上万行的代码,将所有代码都集中在一个源文件中简直是一场灾难,后续阅读和维护都将成为棘手的问题,所以必须将代码分散到多个文件中。...5)缓冲区(缓存) scanf、printf 等输入输出函数会将数据放在缓冲区中,缓冲区也是内存的一部分。

    7.9K86

    如何优化MySQL千万级大表,我写了6000字的解读

    千万级大表如何优化,这是一个很有技术含量的问题,通常我们的直觉思维都会跳转到拆分或者数据分区,在此我想做一些补充和梳理,想和大家做一些这方面的经验总结,也欢迎大家提出建议。...我来逐步展开说明一下,从而给出一系列的解决方案。 1.数据量:千万级 千万级其实只是一个感官的数字,就是我们印象中的数据量大。...其实不难理解,我们要支撑的表数据量是千万级别,相对来说是比较大了,DBA要维护的表肯定不止一张,如何能够更好的管理,同时在业务发展中能够支撑扩展,同时保证性能,这是摆在我们面前的几座大山。...hash,range等方式会多一些,在MySQL中我是不大建议使用分区表的使用方式,因为随着存储容量的增长,数据虽然做了垂直拆分,但是归根结底,数据其实难以实现水平扩展,在MySQL中是有更好的扩展方式...千万级大表的数据清理一般来说是比较耗时的,在此建议在设计中需要完善冷热数据分离的策略,可能听起来比较拗口,我来举一个例子,把大表的Drop 操作转换为可逆的DDL操作。

    1.7K50

    如何插入或 Visio 中粘贴的 Excel 工作表

    单击 对象类型 列表中的 Microsoft Office Excel 工作表 ,单击 创建新 ,然后单击 确定 。 双击嵌入的 Excel 工作表,然后添加所需的数据。...请注意,如果您双击嵌入的 Excel 工作表,水平并在 Excel 工作表中显示的垂直滚动条。 您可以使用滚动条查看嵌入工作表中的所有列和行。...若要调整到绘图页在 Excel 工作表,使用以下方法根据您的具体情况之一: 调整绘图页的大小。 若要调整绘图页,请请按 Ctrl,,然后拖动绘图页的边缘,以便在工作表适合绘图页中。...调整工作表中的列的大小之前您嵌入在工作表,Visio 绘图中或复制为图片在工作表之前。 然后,粘贴图片以 Visio 绘图。 在调整大小在工作表中的列时, 您会更改工作表的格式。...因此,您可能需要通过测试工作表,您要在 Visio 绘图中显示工作表中使用此方法之前尝试此方法。 要调整工作表中的列的大小,请按下列步骤操作: 启动 Excel,然后打开所需的工作表。

    10.3K71

    Mysql如何随机获取表中的数呢rand()

    我们在来看看上面随机获取字段的sql语句是如何执行的 创建一个临时表,临时表使用的是memory引擎,表里面有两个字段,一个字段double类型,我们叫R,另一个字段varchar(64),记为W,且没有建立索引...sort_buffer的两个字段中,此时要全表扫描临时表,扫描的行数为10000行,此时总共扫描的行数变成了2000行 sort_buffer根据R字段进行排序,这里没有涉及到表的扫描 在根据sort_buffer...上图我们发现sort_buffer中的位置信息,是个什么概念呢,而Mysql是如何定位一行数据的呢, 首先我们知道mysql中有以下规则 对于有主键的innodb表来说,rowid就是我们的主键 对于没有主键的...,当临时表的大于这个参数的时候,就会使用磁盘临时表.而磁盘临时表是由internal_tmp_disk_storage_engine控制的, 为了复现这个过程,我把tmp_table_size设置成1024...select * from t where id >= @X limit 1; 虽然上面可以获取一个数,但是他并不是一个随机数,因为如何表中的id可能存在空洞,导致每一行的获取概率并不一样,如id=1,2,4,5

    4.6K20

    Hive中的表是如何定义的?请解释表的结构和数据类型。

    Hive中的表是如何定义的?请解释表的结构和数据类型。 在Hive中,表是用于存储和组织数据的对象。表的定义包括表的名称、列的定义和其他属性。让我们通过一个具体的案例来说明。...表的定义包括表的名称(movies)和列的定义。 每个列由列名和数据类型组成。在我们的例子中,我们定义了四个列:title、director、genre和rating。...rating列的数据类型是DOUBLE,表示电影的评分。 在表的定义中,我们还可以指定一些其他属性。...创建表后,我们可以使用LOAD DATA语句将数据加载到movies表中。在上述代码中,我们使用LOAD DATA INPATH语句将数据文件(movies.txt)中的数据加载到movies表中。...通过这个案例,我们可以看到Hive中表的定义和结构。表的定义包括表的名称和列的定义,每个列由列名和数据类型组成。表的结构定义了表中的列以及每个列的数据类型。

    6300

    【DB笔试面试469】Oracle中如何删除表中重复的记录?

    题目部分 Oracle中如何删除表中重复的记录? 答案部分 平时工作中可能会遇到这种情况,当试图对表中的某一列或几列创建唯一索引时,系统提示ORA-01452 :不能创建唯一索引,发现重复记录。...重复的数据可能有这样两种情况:第一种是表中只有某些字段一样,第二种是两行记录完全一样。...2、删除重复记录的方法 若想要删除部分字段重复的数据,则使用下面语句进行删除,下面的语句是删除表中字段1和字段2重复的数据: DELETE FROM 表名 WHERE (字段1, 字段2) IN (...SELECT 字段1,字段2 FROM 表名 GROUP BY 字段1,字段2 HAVING COUNT(1) > 1); 也可以利用临时表的方式,先将查询到的重复的数据插入到一个临时表中,然后进行删除...& 说明: 有关删除重复数据更多的内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2123234/ 本文选自《Oracle程序员面试笔试宝典》

    2.8K30

    在Excel中,如何根据值求出其在表中的坐标

    在使用excel的过程中,我们知道,根据一个坐标我们很容易直接找到当前坐标的值,但是如果知道一个坐标里的值,反过来求该点的坐标的话,据我所知,excel没有提供现成的函数供使用,所以需要自己用VBA编写函数使用...(代码来自互联网) 在Excel中,ALT+F11打开VBA编辑环境,在左边的“工程”处添加一个模块 把下列代码复制进去,然后关闭编辑器 Public Function iSeek(iRng As Range...False, False): Exit For Next If iAdd = "" Then iSeek = "#无" Else iSeek = iAdd End Function 然后即可在excel的表格编辑器中使用函数...iSeek了,从以上的代码可以看出,iSeek函数带三个参数,其中第一个和第二个参数制定搜索的范围,第三个参数指定搜索的内容,例如 iSeek(A1:P200,20),即可在A1与P200围成的二维数据表中搜索值

    8.8K20

    如何恢复oracle中误删除表(drop掉的)?

    恢复表: flashback table test_drop to before drop; 或者: flashback table "BIN$b+XkkO1RS5K10uKo9BfmuA==$0"...to before drop; 注意: 必须9i或10g以上版本支持,flashback无法恢复全文索引 详解: 以下是一个不该发生却经常发生的情况:用户删除了一个非常重要的表 ― 当然是意外地删除...(在某些时候,这个不幸的用户可能就是 DBA!) Oracle9i Database 推出了闪回查询选项的概念,以便检索过去某个时间点的数据,但它不能闪回 DDL 操作,如删除表的操作。...唯一的恢复方法是在另一个数据库中使用表空间的时间点恢复,然后使用导出/导入或其他方法,在当前数据库中重新创建表。...这一过程需要 DBA 进行大量工作并且耗费宝贵的时间,更不用说还要使用另一个数据库进行克隆。

    1.6K30

    【腾讯云CDB】如何快速删除InnoDB中的大表

    背景 在使用MySQL时,如果有大表的存储引擎是InnoDB,并且系统参数innodb_file_per_table设置为1,即每个文件对应一个独立的表空间,当对这些大表进行DROP TABLE时,有时会发现整个数据库系统的性能会有显著下降...在删除一个有独立表空间的大表时,需要对buffer pool中所有和这个表空间有关的数据页做清理工作,包括从AHI,flush list和LRU list上移除,而在这个清理过程中,会一直持有buffer...通过阅读MySQL 5.7的源码可以看到,整个DROP TABLE过程可以简单地概括为: 获取dict_sys->mutex这个数据字典锁 启动一个innodb事务 更新数据字典,包括内存中的数据和mysql...dict_sys->mutex dict_sys->mutex是用来保护内存中的数据字典,以及mysql库下的数据字典表,从源码可以看到,在unlink ibd文件之前,所有的数据字典操作已经结束,其实是可以释放掉...过程调整为: 获取dict_sys->mutex这个数据字典锁 启动一个innodb事务 更新数据字典,包括内存中的数据和mysql库下的数据字典表 lazy drop逻辑,清理buffer pool的

    3.9K20
    领券