15

如何建立你自己的开发知识体系

 3 years ago
source link: https://ihtcboy.com/2020/02/02/2020-02-02_%E5%BB%BA%E7%AB%8B%E4%BD%A0%E8%87%AA%E5%B7%B1%E7%9A%84%E5%BC%80%E5%8F%91%E7%9F%A5%E8%AF%86%E4%BD%93%E7%B3%BB/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

如何建立你自己的开发知识体系

2020-02-02

首先,我认为学习总结,要有所总,所结,就是有归纳后,能用自己的话告诉别人!有所结,就是有所收获输出,一般我认为是思维导图,所以,每篇文章前,我都会先给出文章的脑图:

建立你自己的开发知识体系.png

学习任何文章之前,一定要有可行的方法论,否则很难有所突破。上面脑图中,我列出了一些个人认为非常好的方法论,所以,在学习课程前,先了解一下,对后续自学或其它的学习都会有益处。

一个知识点

  1. 为什么需要 XXX
  2. 什么是 XXX
  3. 怎么使用 XXX
  4. 使用 XXX 时注意的问题
  5. XXX 的应用领域
  6. XXX 的优缺点
  7. XXX 触类旁通

这个理论是在郝斌老师所录制的计算机(编程)教学视频里提到的,很适合初学者,有兴趣的大家可以自行搜索。

为什么这个很受用?因为简单的套用一下,你就知道自己是否掌握了一个知识点!

  1. 为什么需要 单例模式
  2. 什么是 单例模式
  3. 怎么使用 单例模式
  4. 使用 单例模式 时注意的问题
  5. 单例模式 的应用领域
  6. 单例模式 的优缺点
  7. 单例模式 触类旁通

当我们在谈论性能优化时,我们在说什么?

大家有没有发现,以上4点对应计算机的基本组成原理,在谈论性能优化时,其实就是在说计算机的瓶颈!,所以,当在谈论性能优化时,我们可以做的,就是把计算机的瓶颈提高或转化

单一 CPU 处理不过来,我们新加 GPU;一个 CPU 处理不来,我们8核、16核心!多核 CPU 处理不过来,我们可以集群!分布式!云化!

当内存不足时,我们加内存!内存压缩!内存置换

当网络带宽不够时,我们加带宽!我们加服务器!我们加异地多端!

当I/O过高时,我们取舍I或O!我们把I和O拆分

在深入到程序、代码中,所有的优化,是不是也一样,你要减少计算和循环次数,你要节省内存开销!你要网络数据缓存!你要定量定时入库

所有的性能优化,不过如此!大家明白了吗?

移动设备时代,性能问题还有一个就是在小的空间里没有大的电池,其实就是电池的瓶颈!但是一般开发者并不关心,因为他们感觉自己只是开发App,使用App的是用户和他们的手机设备!电池的瓶颈有消耗损耗2个问题,消耗是我们写的程序在实现功能的同时能不能减少计算量,损耗是我们写了一些我们并不需要的代码导致了不必要的计算量。如果平时有注意的,2015年时三星手机针对那么功耗过大的App 直接强制退出,这可能也是大家说的对中国本地化做不好的原因导致失败吧?因为优化是不是真的为了解决卡顿或性能,就一定要为所欲为呢?这也是开发者需要思考的问题。电池技术当下没有突破的时候,电量依然是非常值得关注的事情。现在iOS 和 Android 都开始统计App的电量使用情况,所以不从现在开始节能,你的App可能就被用户删除。当然,针对这些问题,iOS/macOS 系统苹果做了很多系统层级的优化,这也许也是很少开发者关心的原因,感兴趣的可以看看历年 WWDC - Apple Developer,苹果很多关于电量节能有很多策略可以借鉴。

上面说到的性能优化,从大方向时如此,然后细化到具体,会有非常多的算法或技巧,其中换空间就是一个经典的问题。

大家一定听说过类似:

  • “20张100MB的图片,怎么显示在1G内存的设备上”
  • “在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数。”
  • “给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?”

这些问题,其实解法,基本上可以用上面3个方法!

大家明白了吗?建立你自己的开发知识体系!其实并不难,学习是没有捷径,但有方法!,所以,了解和掌握更多的方法论,构建自己的知识体系树,这样,才是不用被动的每天在各种各样的文章中,人浮于事!

  1. 不要被难倒 —— 分治思想
  2. 不要想太简单
  3. 学习曲线陡峭度,跳过原则
  4. 多疑问,多思考,多总结
  5. 学习不仅仅是知识,还有过程
  6. 授人以鱼不如授人以渔

我个人推崇 授人以鱼不如授人以渔,学习不是给你知识,而是学会如果获取知识,如何知识点串联起来,如何快速有效的掌握知识!

  1. 先实践再学理论更有感觉
  2. 按工作需要来,工作毕竟是实践,最容易有成就感的
  3. 实践&思考
  4. 经验&总结
  5. 方向很重要,坚持方向更重要
  6. 不断深入,理解和认知都在更新
  7. 把逻辑和流程整理出来,更清晰
  8. 尝试作为一个提供 api 的人
  9. 并不是样样精通,而是有擅长的领域。

很多人可能迷恋/迷信学习的快捷方式,每次学习一个知识点时,总时想找到捷径在学习,往往不得其道!有需要,大家可以看看我之前的年终总结 2020,爱你爱你 | iHTCboy’s blog,这里我就不多说了。关于学习,先深挖某一领域,经过大量的学习和实践后理解了编程的本质,从而可以灵活调配和运用自己已经积累的知识。切记!切记!切记!学习是没有捷径!但有方法!

  1. 组件化是将上层业务隔离开,下层提供通用能力的一种架构模式
  2. 组件化、热修复、动态化、大前端、Flutter、小程序
  3. 提高编译速度,内存优化,性能优化,电量优化,测试驱动开发,架构设计模式和iOS中算法数据结构的使用

虽然大家都是程序员,工程师,但是,所在行业不同,现实是千差万别的!了解和熟悉的知识也是不尽不同!如何把计算机的万千技术用到自己所在的行业?每个人的精力有限,但是无极限,当别人告诉你不可能时,那一定是他度量的尺子与你不同!我们度量一件事,要尽量放长线,放大眼光,放高视角!,对于知识点,有太多的东西,选择自己感兴趣和工作需要的,不用太关心别人的评论,绝大多数事件,不是做不来,而是需要长期做

  1. 被别人问底层原理答不出所以然
  2. 1.业务代码谁都会写,你还会什么?
  3. 2.我觉得iOS开发不值这个价,我们公司这个价的也不是没有都是后台,前端不需要。
  4. 公司不考虑员工的成长,多待无益
  5. 成体系地提升自己的内功,完善自己,然后反哺到工作上,让工作效率和质量达到质的提升,进而从容应对技术的更新迭代
  6. 面试应聘者的时候,通常都会问他所负责项目的整体架构是怎样的。
  7. 只对自己负责的那摊子事儿说的溜,而回答所在项目整体情况时却支支吾吾,面试不会成功。

如果不是自由工作者,我想大多数的国内同学都没有机会选择,所以,面试是一个总是要面对的问题,每次辞职、被辞职,大家就重新拿起试题集来刷,刷题目!刷算法!刷刷刷!

所有的问题不能简单的一刀切!,经过这么多年,我的理解里,问题没有对与错,好与坏。刷题目也是一样。我想说的是内力是不能一天俩天就长成,所以为面试,建立自己的开发知识体系,面试题就是西天取经,每一道题目就是一个怪兽,你不可能一天就打败所有怪兽,所以,不要忽视七七四十九日的轮回。

  1. 《代码整洁之道》
  2. 《人月神话》

书籍很多,好书也很多!这里暂时不列出所有值得看的技术书,因为,我害怕大家一下子又回到原点,买了一堆书,然后不知道从那里开始!,所以,我是不建议买书!买书是自己要系统学习的时候买!怕伤害眼睛时买,但不能因为别人推荐或感觉不错就买!要从自身出发,从自己工作,从自己从事的行业,从自己的规划发展,从自己的兴趣,任何事情的起点,都是初心,不要忘了初心!


关于如何建立自己的开发知识体系,以上就是我认为比较重要的点(还有很多方法论,但是多并一定是好事,以后有机会在归纳吧),贯穿到开发的每一个细节,需要大家长期长时间的学习、研究和经历,才能打造一套属于自己的知识树,任何告诉你可以复制的知识,你可以复制!但永远无法粘贴到自己脑心中!

注:更多关于 iOS 开发和程序开发相关的内容,可以查看系列,目前还在连载中 【学习总结】iOS开发高手课 – (连载中) | iHTCboy’s blog,以上,希望对你有用!

  • 如有侵权,联系必删!
  • 如有不正确的地方,欢迎指导!
  • 如有疑问,欢迎在评论区一起讨论!

注:本文首发于 iHTCboy’s blog,,如若转载,请注来源。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK