本文转载自公众号:鸿洋
船长导读:程序猿经常面对加班,很少有时间学习,久而久之,导致技术跟不上,缺乏竞争力。本文 鸿洋 跟我们分享了他在加班状态下是如何保持学习的。

之前看到一篇非常让人焦虑的文章,叫”废掉一个人最隐蔽的方式,是让他忙到没时间成长”...真可怕,很多时候咱们这一行,忙是不可避免的,索性决定周末写篇文章,如何在繁忙的工作环境下,有一定高效的学习能力。

当然了我是不会写鸡汤的,倒不是我反对鸡汤文。

由于我的文采问题,很难写出一篇让人产生冲动的文章,所以我写的文章一般都是我个人践行的总结,而且细致到大家也可以去实践。

今天我这篇文章要写给很多上班强度比较大的同学,当然也包括我。我面试过一些同学,其中很多工作经历比我多,遇到过很多问题,面试者都以:

不好意思,这块没了解过,上班太忙,都在做业务,没那么多时间去学习...


作为同行,我是可以理解的;作为一名面试官,这样的回答听多了,难免会扣分的。

场景

很多时候,上班特别忙,好不容易闲下来一会,一般都是下午,高强度工作之后,回头来看一些自己没有了解过的技术文章,大概是这样的情况:

恩,这个文章不错,我没了解过,来学习一下...

看了十分钟,还有这么长,快速拉一下滚动条吧...

拉完了,好。

想一下,刚才文章写的是什么?

忘了...算了,再看一遍...

鉴于自己的懵逼状态,越看越懵逼,随着时间流逝,可能还是没能消化掉一点内容。

找文章也是一种技术活

下面我要以具体的实例,来描述了,主人公:帅气的小张。


小张今天上班早早来到公司,嗷嗷干活,中午还遇到一些问题,忙得午觉都没睡,一直忙到下午4点,终于喘了口气,看了眼时间,距离周会5点,还有一个小时,此时处于半懵逼状态,但是还是决定这一个小时学点东西。

于是打开wanandroid.com,看到首页有篇讲解Android P hidden API的文章,想了下,这个我好像没有了解过,于是准备这一个小时学一波这个。

点开这篇文章:

另一种绕过 Android P以上非公开API限制的办法

http://weishu.me/2019/03/16/another-free-reflection-above-android-p/

恩...看了一遍,感觉有点屌...

大致了解下,是一种绕开 hidden API限制的问题,除了感觉有点屌,就没其他收获了。

ok,此时正视一下自己,自己没有了解过Android P hidden API约束的文章,这篇文章明显不适合用来入门。

换个姿势,拿出纸,笔,这个时候,就不要相信你的大脑了,拿出纸笔,写上对Android P hidden API 要了解到什么程度?

  1. Android P是如何限制hidden API的?

  2. 如何突破Android P的限制?

然后快速的利用搜索引擎,快速浏览,找到几篇合理的文章,这里小张搜索完成后,留下了3篇文章,分别为:

1. 突破 Android P 非公开 API 限制

https://infoq.cn/article/2018/04/Android-P-API

2. 另一种绕过 Android P以上非公开API限制的办法

http://weishu.me/2019/03/16/another-free-reflection-above-android-p/

3.理解Android P内部API的限制调用机制

http://gityuan.com/2019/01/26/hidden_api/

第一篇较为科普;第二篇在一定知识储备条件下,可以看到也是一种比较深入的探索;第三篇为纯原理佐证。

可以看到,并不是说看到一篇文章就一定适合你:

1. 发掘到一个未知的技术

2. 列出自己对于该技术了解程度的预期

3. 找到几篇由浅入深的文章

别忘了,我们的小张还处于懵逼状态,现在对于他来说,就是3个链接,加上本子上的:

  1. Android P是如何限制hidden API的?

  2. 如何突破Android P的限制?

小张的笔记本上

两行字。

不要仅仅是阅读


现在要打开第一篇文章了,上来说了限制的原理,大概200多个字,好了,不要再继续往下看了,记住你现在处于懵逼状态,200多个字已经很难记住了。

总结和用自己的话梳理这200个字,这200个是说的是限制的原理,这里小张非常喜欢造问题:

自己造一些疑问,利用目前看到的原理的解释来回答。

如何限制访问hidden api的?

先想想我们是怎么调用的呢?-> 反射

那么就是限制反射?

那反射有哪些方式?->Java 层的,和JNI层的。

那就是限制Java 层的,和JNI层类似反射的调用。

怎么 check 呢,你得分析出来是系统调用还是开发者调用,这个方法是不是 hidden API吧?

  1. 如何区分用户和系统?

  2. 如何确定该方法是否是hidden API?

一连串在纸上写了一堆问题,并且利用已经读到的文字自问自答。

现在小张的纸上已经是这样了:

如何限制的基本上搞清楚了。

继续往下看,下面的内容就是如何突破系统限制限制访问hidden API了。

说了三个方法,大致可以分为:

  1. 不用反射;

  2. 利用上文的怎么 check?把自己伪装成系统类;

  3. 利用上文的怎么 check?去掉字段上的hidden标识;

根据文章内容,完善我们在纸上的记录:

ok,第一篇文章看完了。

虽然处于懵逼状态,但是利用我们记录和不断问自己的方式,加强我们的认知,有条理的将一篇文章梳理下来。

如果你是强忍着一定要用大脑不动手,去把这个篇文章消化了,很困难,利用纸笔就会快很多。

接下来,我们再看第二篇:

另一种绕过 Android P以上非公开API限制的办法

http://weishu.me/2019/03/16/another-free-reflection-above-android-p/

从标题就知道这是个突破的方式,看完也很好记录:

大致阅读完成文章,发现文章中提出了一种“元反射”的方式,利用系统方法去反射,非常精髓,也属于伪装成系统调用,记录下来。

开心,又补充了一点知识,学到了。

最后第三篇:

理解Android P内部API的限制调用机制

http://gityuan.com/2019/01/26/hidden_api/

这篇是纯源码解析的,你可以看一些比较关键的地方,看看系统如何在源码层的调用流程,主要是用来 让已经记录下来的笔记 更加精确的...

最后,别忘了,你这些都在纸上,并不像文中的贴图。

好好看看自己纸上的内容,觉得差不多搞明白了,重新进行排版,然后记录到自己喜欢的笔记中去(电子):

我这里比较喜欢脑图,所以最终,就是这样的:

微信限制看不清,如有需要:可以wanandroid.com上搜索 公众号配图

电子笔记的好处是,可以贴链接和截图,而且可以手机端,PC端同步,下班路上还可以拿出手机再巩固下,最主要是:可以一直扩展和纠错

千万不要忘了,贴上你这些知识主要是学了那几篇博客的参考。

有了这份笔记,正常情况下,和别人聊到Android P hidden API,你已经不吃亏了,你知道是系统是如何限制的,针对这些限制,你还可以列出1,2,3,分别如何突破...很稳。

根据自己的能力把握好了解的尺度

以上三篇文章,还有非常多的jni的代码,以及非常细节的处理方式。

这个时候有个疑问,我们一定要完全了解吗?

哪个方法一定要了解清楚吗?

不一定,根据自己对于知识的接受程度,比如说你不了解JNI,你就抛开JNI的代码,就一句话:这里利用JNI去修改XXX。

等你需要的时候我来查和验证好了。

但是对于Java的方式,你就要去跑一下代码,根据敲出来的代码,仔细推敲作者的描述,比如上文中的“元反射”就够你理解好一会了。

还有时候会有疑问,我们的知识都是来源于这些博客,假如他写的有错误怎么办?

有什么关系呢?你是一点不了解,人家都可以写博客了,肯定理解在你的前面,你先达到作者这个层次,以后看到其他文章,或者能力见长,或者需要实践的时候,发现有部分内容不准确,再完善你的笔记和记录就好了。

总结一下

在你注意力难以集中的时候,不要对于自己的大脑过于自信,不妨拿出纸笔,辅助自己的大脑,完成一个知识点的阅读。

即使你处于非常清晰的状态,读完一篇文章,脉络都在自己大脑中,其实你也该立刻梳理成一份笔记,记录下来。

一次的记录只是开始,说不定哪天你在鸿洋公众号又看到一篇类似的知识点,发现又补充了一些内容。你可以不断的改动以及优化这份记录。

最后

很多时候,有些事情是很难改变的,你感觉到忙,你因为一篇焦虑文章就要换工作,那么你下一份工作还忙怎么办?接着换么?

只有不断的调整自己去适应当下的环境,除非真的太过于压抑、压力...那时候保命要紧。

以上仅是我个人觉得在高强度工作之后的学习一个知识点的方法,文中的记录不一定严谨,也不一定适用于每个人。但是如果对一小部分人有所启发,有所帮助,何乐而不为呢。


以前的一些类似文章:


我平时学习的一个方法

就如何高效学习的一点建议

坚持写技术博客

觉得受用?
扫码关注鸿洋兄的公众号

船员们假期愉快哟!~玩的开心!~

嗷嗷加班,如何保持学习能力~相关推荐

  1. 校招简历的包装制作---详解教你制作一份适合自己的简历

    文章目录 一: 简历的认知 (1):简历的作用 (2):适合自己简历的特征 (3):差简历为什么差 二: 简历具体制作方法(重点) (1)用什么制作自己的简历 (2)设计简历的内容模板 (3)如何写好 ...

  2. 程序员的修炼之路(突破)

    讲个笑话简单,真的换行,还是挺困难的.我大学毕业开始做程序员,之后做项目经理,再是项目总监,现在是咨询顾问,在IT行业摸爬滚打十几年,也是个IT老兵了.基于我的经历和体会,讲一下程序员如何转行,以及相 ...

  3. 笔加学堂 | 破解35岁职业黑洞,你可以尝试着这么做!

    2019年,马云在阿里巴巴20周年年会上说了这样一段话,"10年前,我提出,要离开董事长的位置,那年我45岁,很多人不相信,但是今年我做到了.我希望在座的阿里人,未来30年,每年至少向社会输 ...

  4. 卷学历、卷加班……程序员拥有什么能力才能破局内卷?

    全世界的天才程序员都在疯狂的造轮子,其它程序员只能被动的学习轮子,这简直就像一场绝地求生.程序员行业的内卷已是有目共睹,选择程序员作为职业的人越来越多:大厂对程序员的学历要求越来越高:程序员工作加班越 ...

  5. 手下两个应届生,一个踏实喜欢加班,一个技术强挑活,怎么选?

    近日,有位阿里员工发帖称,自己手下有两个应届生,985本硕和985本,但两人无论性格.技术,还是家境都不一样,问大家如何选择. 原贴如下: 有不少人认为楼主应该考虑选择A. @阿里巴巴员工:沟通能力强 ...

  6. 解决问题的能力和个人学习能力总结。

    2019独角兽企业重金招聘Python工程师标准>>> 赤裸裸的现实 我是一个前端开发,最近碰到很多新人,或多或少都抱着这样的期待:在工作中能遇到个天使般的老师,能够悉心的指导你,帮 ...

  7. IT 行业:前端和后端分别是要做什么?哪个方向加班时间更多?

    IT前端和后端要做什么?前端开发和后端开发是软件开发的重要组成部分.前端开发主要做的是用户所能看到的前端展示界面:后端开发主要做的是逻辑功能等模块.要问哪个辛苦加班多?其实都差不多,毕竟技术研发行业都 ...

  8. 面试过程中如何介绍自己?最大优缺点?加班?薪资?

    1.请你自我介绍一下你自己? 回答提示:一般人回答这个问题过于平常,只说姓名.年龄.爱好.工作经验,这些在简历上都有.其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能.最深入研究的知识领域 ...

  9. 程序人生:扒一扒程序员为什么总在加班?拿生命敲代码?

    假设这位程序员是一位职场新手甲.他刚大学毕业,没有工作经验.来自产品的需求,他要理解很久才能做. 然后开发的过程中会遇到各种问题,如果经验不足以支撑他快速完成任务,那么只能求助于网络,书籍,熟人. 如 ...

最新文章

  1. 阿里问题定位神器 Arthas 的骚操作,定位线上BUG,超给力
  2. 就业指导——招聘信息的获取、简历投递和指导、HR面试指导
  3. 配置DATAGUARD 时关于 LOG_FILE_NAME_CONVERT配置错误的解决
  4. 接口隔离原则(ISP)
  5. 点击startup.bat启动tomcat出现乱码
  6. html显示python执行的结果_批量执行用例,且结果显示在html中,python控制台也会显示运行过程...
  7. chainmaker VerifyingBlock height is not equal to proposed block
  8. 什么是分贝?如何计算声音分贝?一文解析Audition计算方法
  9. 【NLP】一文简要了解词义消歧与实体消歧
  10. 北京职工修改医保定点医院
  11. OpenGL /GLES 使用Pyqt5 + glad
  12. 广告轮播图的前后台实现
  13. 微信小程序picker地区选择器显示省市二级联动
  14. win10自带输入法总是莫名奇妙变繁体
  15. 佳明 Fenix 7S、佳明Fenix 7和Fenix 7X评测
  16. Power BI查漏补缺_1
  17. 实验吧web题(26/26)全writeup!超详细:)
  18. 【嵌入式开发】ARM 处理器工作模式 及 修改方法 ( 处理器模式 | 设置处理器模式 | 程序状态字寄存器 CPSR SPSR | 模式设置代码编写 | 设置 svc 模式 )
  19. logback应用日志格式参考
  20. HT1382时钟芯片代码

热门文章

  1. 2W字 详解20道Redis经典面试题(珍藏版)
  2. 百万格子广告网站“1百万像素网”创意十足
  3. android studio gradle 添加jar,android studio学习----通过gradle来导入jar包
  4. html字体类型选择,css 对应word字体类型 css 字体类型
  5. java List分割工具类
  6. 个人理财第六课-基金投资之货币基金和债券基金
  7. 【C语言】【unix c】环境变量(续)
  8. 测试方法-等价类划分
  9. PM883 SSD:三星首发LPDDR4缓存
  10. 2018.04华为算法工程师实习面试经历