杂谈篇之我是怎么读源码的,授之以渔

  • 时间:
  • 浏览:0
  • 来源:1分时时彩官网_玩1分时时彩的平台_1分时时彩下注平台

前言

  开心一刻

    今天上课不小心睡着了,结果被老师叫起来回答那先 的问题,这是背景。无奈之下看向同桌寻求帮助,同桌小声说到选C,结果附进的人都说选C,向同桌投去另另另另一个感激的眼神后大声说道选C。刚说完教室就笑开了,老师一脸恨铁不成钢的表情说选你个头,我叫你翻译文言文你选C!你出去,你给我出去。看着同桌挤眉弄眼的表情,劳资真想说,这帮畜生

互相抱怨道:你是都有又长胖了?

  路漫漫其修远兮,吾将上下而求索!

  github:https://github.com/youzhibing

  码云(gitee):https://gitee.com/youzhibing

读源码的经历

  刚参加工作那会,没想过去读源码,更没想过去改框架的源码;总想着别人的框架应该是完美的、万能的,应该需要改;另外即使我改了源码,缘何样让我的改动生效了? 项目中引用的不还是没改的jar包吗。回想起来着实那但是的想法着实挺......

  工作了一年多但是准备跳槽了,开始了了了一轮的面试,其带有哪几个面试官就问到了相关的源码那先 的问题:ArrayList、HashMap的底层实现,spring、mybatis的相关源码。问源码的面试一般只是回去等消息,为何让就没为何让了。那但是开始了了意识到,源码这东西在但是的工作的中感受不到,为何让在面试中好像面的还挺频繁的,从此有意识的开始了了了jdk每段源码的阅读(主只是集合)。一开始了了看源码,看的有点糙,知道个至少,知道ArrayList的底层实现是数组,HashMap的底层是散列表(数组+链表);更深入一点的扩容、hash碰撞等等就谁能谁能告诉我了。

  读spring源码起于工作中遇到了另另另另一个那先 的问题(spring jdbcTemplate事务,各种诡异,包你醍醐灌顶!),排查一段时间最终是处置了,但过程让我非常难受,各种上网查资料、各种尝试,感觉就像大海捞针一样,遥遥无期。我下定决心,我不看多一看spring的源码,于是我买了一本《spring源码强度解析》,结合着这本书、打开着eclipse,开始了了了spring的源码阅读之旅。至此,读源码成了习惯,源码可能性进入了我的心里。

  但是,springboot的火热,让我也想蹭上一蹭,于是有了springboot的启动源码系列,着实还在进行中,为何让我相信让我将其完成;工作中用到了shiro,我又结合着《跟我学shiro》将shiro的源码看多个至少,有了shiro源码系列博文,还差一篇认证与授权(应该更快就能面世),shiro源码系列就封笔了。最近在搭建我每每该人的后台管理系统,用到了quartz,集成的过程也遇到了一点那先 的问题,为何让有了quartz的三篇文章

  慢慢的,从一味的网上找资料变成了所以之回会从源码中找答案。不求能读过多的源码,但愿我每每该人接触的技术都能读上一读,路漫漫其修远兮,吾将上下而求索!

我为那先 读源码

  所以人一定和我一样的感受:源码在工作带有用吗? 用处大吗?很长一段时间内我都有但是的那先 的问题,认为那先 有事没事扯源码的人只是在装,只是为了提高我们歌词 我们歌词 我们歌词 都 的逼格而已。

  那为那先 让我读源码呢? 一刚开始了了为了面试,但是为了处置工作中的那先 的问题,再但是只是我每每该人喜好了。说的好听点是有匠人精神;说的委婉点是好奇(底层是缘何实现的);说的不自信点是对黑盒的东西我用的没底,怕用错;说的简单直白点是提升自我价值,为了更高的薪资待遇(这里对真正的技术迷说声抱歉)。

  源码中我们歌词 我们歌词 我们歌词 都 需要学到所以东西,学习别人高效的代码书写、学习别人对设计模式的熟练使用、学习别人对整个架构的布局,等等。可能性你还能找出其中的过高 ,这么恭喜你,让我飞升了!会使用这名重要,但知道为那先 这么使用同样重要。从模仿中学习,从模仿中创新。

  读源码不像围城(外面的人想进来,上端的人想出去),它是外面的人你要进来,上端的人你要出去;我们歌词 我们歌词 我们歌词 歌词 都 跨进城内,让我发现(还是城外好,皮!)城内风光无限,源码的海洋任我们歌词 我们歌词 我们歌词 都 遨游!

                 

  你想好入城哪天?

我是缘何样读源码的

  内容了解

    首先我们歌词 我们歌词 我们歌词 都 要对我们歌词 我们歌词 我们歌词 都 的目标有所了解,知道她有那先 特点,一点那先 功能。对对方都还不了解,就想着进入别人的内心世界,那都有臭并不脸嘛,我们歌词 我们歌词 我们歌词 都 要做另另另另一个有着流氓心的绅士;对她有个大致的了解了,就需要发起攻势,一举学会英语。

    这么缘何样了解了,方式有所以,我这里提供几种,仅供参考

      最好的方式只是官方参考指南,亲生父母往往对孩子是最了解的,对孩子的描述也是最删剪的;比如Spring Boot Reference Guide只是对springboot最删剪的描述,缘何样使用springboot、springboot形态学 等等,通过此指南,springboot在你眼前 一览无遗;为何让,springboot毕竟是外国人的孩子,可能性英语不好,估计读起来有点头疼了,不过我们歌词 我们歌词 我们歌词 都 有google翻译呀,咬咬牙也是能看的。源码世界的丈母娘、老岳丈是非常慷慨的!

      其次是书籍,国外优秀的有所以,国内只是乏好书,比较推荐此方式,自成体系,我们歌词 我们歌词 我们歌词 都都掌握的知识点不至于太散。这只是好比是源码的闺蜜,对源码非常了解,重点是挺大方,会尽全力帮助我们歌词 我们歌词 我们歌词 都 了解源码。

      再次只是博客,着实可能性着实知识点比较散,为何让针对某个知识点却有点的细,对彻底掌握非常有帮助,园子内都有所以技术大牛,写的博客自然也是非常棒,非常具有学习价值。当然还有社区、论坛、github、码云等等。这只是源码的我们歌词 我们歌词 我们歌词 都 圈,我们歌词 我们歌词 我们歌词 都 从中并能获取到非常多关于源码的信息。

  设计模式的了解

    优秀的框架、技术并不乏设计模式;jdk源码中就应用了所以设计模式,比如IO流中的适配器模式与装饰模式、GUI的观察者模式、集合中的迭代器模式等等;spring源码中也是用到了少量的设计模式。设计模式有那先 优点、各适用于那先 场景,都有本文的内容,需你要们歌词 我们歌词 我们歌词 都 我们歌词 我们歌词 我们歌词 都 自行去了解。

    我们歌词 我们歌词 我们歌词 都 只需要对一点常用的设计模式有个大致了解,再去读源码是比较好的;需要将23种设计模式都通读,只是需要将常用设计模式删剪理解透;对于删剪通读,我们歌词 我们歌词 我们歌词 都 时间有限,另外一点模式着实不太好理解、用的少,性价比不高,没必要删剪都读。

    推荐书籍:《Head First Design Patterns》(中文版:《Head First 设计模式》)、《Java与模式》;

    常用设计模式:单例模式、工厂模式、适配器模式、装饰模式、外观模式、代理模式、迭代器模式、观察者模式、命令模式

    另外我比较推荐的这名学习设计模式的方式是读别人博客:java_my_life刘伟技术博客chenssy的设计模式

    设计模式之于源码,就好比逛街购物之于女孩子,想顺利勾搭源码,我们歌词 我们歌词 我们歌词 都 需要好好掌握设计模式这名套路。

  配合ide进行断点追踪

    我们歌词 我们歌词 我们歌词 都 通过源码的圈子对源码的了解终究只是停在表表皮层,终究还是这么走进她的内心,接下来让我和我们歌词 我们歌词 我们歌词 都 分享下,我是如保走进她的内心的!

    相信看多我的源码博客的小伙伴都知道,我非常喜欢通过idea断点来进行源码追踪,断点追踪源码是我非常推荐的这名方式。断点不仅需要用来调试我们歌词 我们歌词 我们歌词 都 的代码,也需要用来调试我们歌词 我们歌词 我们歌词 都 用到的框架源码。面对未知的、茫茫多的源码,我们歌词 我们歌词 我们歌词 都 往往这么足够的时间、经历和耐心去通读所有源码,我们歌词 我们歌词 我们歌词 都 只需要去读我们歌词 我们歌词 我们歌词 都 关注的每段即可(许多人可能性会说我都有关心,这...)。那为那先 要用断掉调试的方式来跟源码,而都有直接从源代码入手去跟我们歌词 我们歌词 我们歌词 都 关注的每段呢?尝试过的小伙伴应该知道,可能性我们歌词 我们歌词 我们歌词 都 对源码粘壳悉,直接通过源码的方式去跟,一方面很容易迷路(多态,会有所以子类实现),谁能谁能告诉我接下来跟哪另另另另一个,我每每该人面也很容易跟丢,我们歌词 我们歌词 我们歌词 歌词 都 跟入的太粗 的但是,很有可能性就忘记上一步跟到哪了。

    下面我会举例来说明我是如保进行断点追踪的,以spring-boot-2.0.3之quartz集成,有了你想的那样哦!spring-boot-2.0.3之quartz集成,数据源那先 的问题,源码探究 为背景来讲,需要搞清楚另另另另一个点:springboot是如保向quartz注入数据源的,quartz是如保操作数据库的

    springboot向quartz注入数据源

      QuartzAutoConfiguration是springboot自动配置quartz的入口

      将quartz的配置属性设置给SchedulerFactoryBean;将数据源设置给SchedulerFactoryBean:可能性有@QuartzDataSource修饰的数据源,则将@QuartzDataSource修饰的数据源设置给SchedulerFactoryBean,为何让将应用的数据源(druid数据源)设置给SchedulerFactoryBean,显然我们歌词 我们歌词 我们歌词 都 的应用中这么@QuartzDataSource修饰的数据源,这么SchedulerFactoryBean中的数据源只是应用的数据源;将事务管理器设置给SchedulerFactoryBean。SchedulerFactoryBean,负责创建和配置quartz Scheduler,并将其注册到spring容器中。SchedulerFactoryBean实现InitializingBean的afterPropertiesSet方式,上端有需要设置数据源的过程

      需要看多通过org.quartz.jobStore.dataSource设置的dsName(值为quartzDs)最都有被替去掉 springTxDataSource.加scheduler实例名(我们歌词 我们歌词 我们歌词 都 的应用中是:springTxDataSource.quartzScheduler)。springboot会注册另另另另一个ConnectionProvider给quartz:另另另另一个dsName叫springTxDataSource.quartzScheduler,有事务;另另另另一个dsName叫springNonTxDataSource.quartzScheduler,没事务。

    quartz如保操作数据库

      我们歌词 我们歌词 我们歌词 都 通过停止定时任务来跟下quartz对数据库的操作

      发现quartz用如下方式获取connection

conn = DBConnectionManager.getInstance().getConnection(getDataSource());

      这么我们歌词 我们歌词 我们歌词 都 的job中就需要按如下方式操作数据库了

      明确我们歌词 我们歌词 我们歌词 都 的目的,找到至少的切入点,进入断点调试追踪也就容易了。

  任我们歌词 我们歌词 我们歌词 都 说的天花乱坠,你仍无动于衷,那也只是我一厢情愿,不到局中人并能体会到其中的奥妙!

总结与感悟

  从上至下删剪通读的方式,我每每该人不太推荐,这是建立在粘壳悉的基础上的,我们歌词 我们歌词 我们歌词 歌词 都 对某个框架可能性比较熟悉了,再从上至下进行通读,彻底了解,这是我认为正确的方式;为何让并粘壳悉到熟悉这名过程,我每每该人不推荐删剪通读,只是推荐上端我推荐的方式 - 断点局部追踪。

  所以但是,我们歌词 我们歌词 我们歌词 都 的博文都只是授之以鱼,而我们歌词 我们歌词 我们歌词 都 也只是从中得到鱼;而这篇的目的则是授之以渔,假若我们歌词 我们歌词 我们歌词 都 从中学到捕鱼的方式,而都有一味的等待歌曲别人的鱼;希望我们歌词 我们歌词 我们歌词 都 并能自给自足,并能把鱼和渔都授予我每每该人。

  假若我们歌词 我们歌词 我们歌词 都 开始了了去读源码,慢慢的就会形成我每每该人的一套读源码的方式;每我每每该人的方式都有一样,至少我每每该人的才是最好的。行动起来,用至少的方式去俘获你的的她吧!

  纯属我每每该人之拙见,不喜请喷!