• 一门新技术或者开源项目我是如何从头开始学习


    开篇

    对于一门新技术或者开源项目如何从头开始学习?相信每个人都有不同的想法和见解,下面谈谈我个人的想法和实践

    万变不离其宗

    无论你学习的新知识是什么,首先可以简单的百度 google一下,比如我想要学习netty,那么就搜索 "netty 介绍",读完过后,一定要去官方网站看一下。一般的开源项目都放在github上,且有一个readMe.md文件,我建议你一定要去读一遍。因为官网上的文档信息一定是最全最新的,所有其他网站的资料,几乎都是从官网上搬运过去的,且很有可能相关资料已经过时。

    无论怎样,对于一门新知识的学习,建议你一定要去官网上看一下文档

    重量级知识

    这里的“重量级知识”是指有难度,有深度,且相对不容易掌握的知识,例如elasticsearch、netty、Java多线程、JVM底层,这些知识的学习是需要时间沉淀的,不可能一蹴而就。

    这些知识,往往不是简单掌握用法、API即可,不然很有可能会埋坑,且在将来某个时间爆发。

    就拿我亲身经历来说,以前我们有个项目需要使用elasticsearch,且该项目非常紧急,我和另一个同事之前都没有任何elasticsearch相关经验,我们从网上简单了解并学习相关elasticsearch api过后,就直接在项目中使用,而我们判断elasticsearch是否正确使用的依据,就是 业务 “CRUD” 相关功能是否正常。

    受益于elasticsearch开箱即用,我和同事顺利的完成了相关任务,但是随着我深入学习elasticsearch,我发现我们写的代码存在不少问题

    1. elasticsearch没有配置任何mapping,使用的是默认的dynamic mapping,且没有任何设置
    2. 数据分片没有配置,默认只有5个分片,且副本为1,按照官网的信息,1个分片应该最多不超过50G数据,否则大分片在reindex和故障修复时会很慢,且不稳定
    3. 我们使用的相关elasticsearch API存在不少性能问题,在业务允许的情况下,应该优先使用filter查询
    4. 应该提高refresh的默认值,以提升写入速度
    5. ... 很多很多问题

    虽然我们顺利的完成了任务,但是我们的代码存在很多问题,且在数据量大的情况下,很致命。(后来已修复)

    一件事情,往往有两面性,像elasticsearch开箱即用功能,非常容易上手,简单部署一下,再调用相关API,就能实现 “CRUD”,但是便利的背后却是一大堆问题,如果你不深入学习elasticsearch,包括它的分片、mapping、索引别名、分词器、routing、template、filter过滤器、聚合、JVM内存设置、集群、冷热数据、副本、kibana、logstash等等。即使现在你的代码没有任何问题,能够运行,将来在某个时刻,你一定会为你的行为买单!

    因此,对于这些“重量级知识”,我建议你一定要深入学习,并且长时间积累,形成体系。并把一些重要的知识点和坑记录下来,以免忘记。

    就拿我学习elasticsearch而言,因为我们项目严重依赖elasticsearch,且数据量不少,因此过年期间我专注于elasticsearch。且后续不断积累相关知识,我的学习步骤如下

    首先看官方文档,且在学习的过程中,一直穿插着在看官方文档 ,由于elasticsearch知识点很多,官网的文档也非常多,刚开始学习的时候,仅仅看官网文档,进展很慢,因为一些elasticsearch术语、行话不是很了解,所以是一边看视频、博客、公众号、一边看官方文档。

    1. 看完极客时间 阮一鸣老师 “Elasticsearch核心技术与实战”(因为当时刚好出了这门课程),但是这门主要讲解如何使用,相关api讲解较多
    2. 看完中华石杉 ES-顶尖高手 基础篇和高手进阶篇,这门课程讲解了很多elasticsearch底层原理,受益匪浅
    3. 看完https://blog.csdn.net/laoyang360/ 铭毅天下所有关于elasticsearch的博客,大约有130篇左右
    4. 看完 铭毅天下的公众号 所有关于elasticsearch的文章
    5. 看了很多铭毅天下知识星球上的帖子

    如果你想要深入学习elasticsearch,我强烈推荐你去看 铭毅天下的博客、公众号、知识星球。 这个博主专注于elasticsearch领域,且已经通过了elasticsearch官方认证工程师。 百度搜索 “铭毅天下” 即可

    至此,我的elasticsearch相关领域的知识,已经从最初的简单使用 api 到现在 已深入理解elasticsearch相关核心知识。

    我在学习elasticsearch的过程中,不断积累相关重点知识和坑,并形成一定知识体系,方便我后期查阅。

    我建议你最好也将相关知识记录下来,最后形成一定体系。

    轻量级知识

    这里的“轻量级知识”是指难度较低,且深度较浅,并容易掌握的知识。类似于druid数据库连接池、easyExcel等等

    就拿我学习easyExcel举例。以前处理excel相关数据的时候,使用的都是poi,但是最近发现同事在使用easyExcel,这引起了我的好奇心,到网上查阅相关资料,发现easyExcel相比poi、jxl有不少优点,且有完善的中文文档和社区(其实就是qq群和钉钉群,有问题可以到群里面提问),于是我也尝试使用easyExcel来处理excel相关数据。

    第一步: 我到github easyExcel首页,读完整个readMe.md 文档(全是中文),建议你一定要读完,以免错过重要信息。

    第二步: 通过文档信息,我知道easyExcel是个maven工程,并且有着完善的单元测试,我随即clone()最新的代码到本地

    第三步: 通过文档信息,找到核心单元测试 ReadTest、WriteTest,并跑完这两个类所有的测试方法

    第四步: 读取docs目录下相关easyExcel相关信息

    这里不得不提一下,easyExcel的单元测试用例,写的非常好,并且很完善,基本上所有和excel相关的处理,你基本上都可以找到相关的测试用例代码。每一个单元测试,你都可以成功运行,且还有代码注释和实际的控制台输出,如果你想深入了解底层逻辑,还可以debug代码。

    每一个测试用例都有详细的注释:

    每一个测试用例都有详细的输出:

    通过easyExcel的单元测试用例,仅仅一个下午的时间,我就完全掌握了easyExcel处理excel相关的方法。

    对于这类“轻量级知识”,通过官方文档信息和单元测试用例来学习,真的非常省时省力。如果你是通过博客或百度查阅一个个知识点,真的很花时间,且资料很可能已经过时。

    作者:一杯热咖啡AAA
    出处:https://www.cnblogs.com/AdaiCoffee/
    本文以学习、研究和分享为主,欢迎转载。如果文中有不妥或者错误的地方还望指出,以免误人子弟。如果你有更好的想法和意见,可以留言讨论,谢谢!
  • 相关阅读:
    Eval与DataBinder.Eval的区别
    ETL增量抽取方式
    SPSS Clementines 预测分析模型啤酒+尿片故事的实现机理(转载)
    【转载】SPSS Clementine 数据挖掘入门3
    SSIS 包配置的过程
    SPSS Clementine 数据挖掘入门2(转载)
    SPSS19.0实战之聚类分析(转载)
    SPSS Clementine 数据挖掘入门1(转载)
    【转】ASP网站源代码修改方法
    【转】【转】一个一年工作经验的java工程师从工作初到今天的所有收藏的学习java的网站(有些很经典
  • 原文地址:https://www.cnblogs.com/AdaiCoffee/p/12790915.html
Copyright © 2020-2023  润新知