如何建立你自己的开发知识体系
1、前言
首先,我认为学习总结,要有所总,所结,就是有归纳后,能用自己的话
告诉别人!有所结,就是有所收获输出,一般我认为是思维导图
,所以,每篇文章前,我都会先给出文章的脑图:
2、正文
学习任何文章之前,一定要有可行的方法论
,否则很难有所突破。上面脑图中,我列出了一些个人认为非常好的方法论,所以,在学习课程前,先了解一下,对后续自学或其它的学习都会有益处。
一个知识点
为什么需要
XXX
什么是
XXX
怎么使用
XXX
使用
XXX
时注意的问题XXX
的应用领域XXX
的优缺点XXX
触类旁通
这个理论是在郝斌
老师所录制的计算机(编程)教学视频里提到的,很适合初学者,有兴趣的大家可以自行搜索。
为什么这个很受用?因为简单的套用一下,你就知道自己是否掌握了一个知识点!
举例:
为什么需要
单例模式
什么是
单例模式
怎么使用
单例模式
使用
单例模式
时注意的问题单例模式
的应用领域单例模式
的优缺点单例模式
触类旁通
当我们在谈论性能优化时,我们在说什么?
CPU
内存
网络
I/O
大家有没有发现,以上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个方法!
大家明白了吗?建立你自己的开发知识体系
!其实并不难,学习是没有捷径,但有方法!
,所以,了解和掌握更多的方法论
,构建自己的知识体系树,这样,才是不用被动的每天在各种各样的文章中,人浮于事!
学什么
不要被难倒 —— 分治思想
不要想太简单
学习曲线陡峭度,跳过原则
多疑问,多思考,多总结
学习不仅仅是知识,还有过程
授人以鱼不如授人以渔
我个人推崇 授人以鱼不如授人以渔,学习不是给你知识,而是学会如果获取知识,如何知识点串联起来,如何快速有效的掌握知识!
学习技巧
先实践再学理论更有感觉
按工作需要来,工作毕竟是实践,最容易有成就感的
实践&思考
经验&总结
方向很重要,坚持方向更重要
不断深入,理解和认知都在更新
把逻辑和流程整理出来,更清晰
尝试作为一个提供 api 的人
并不是样样精通,而是有擅长的领域。
融会贯通
很多人可能迷恋/迷信学习的快捷方式,每次学习一个知识点时,总时想找到捷径在学习,往往不得其道!有需要,大家可以看看我之前的年终总结 2020,爱你爱你 | iHTCboy's blog,这里我就不多说了。关于学习,先深挖某一领域,经过大量的学习和实践后理解了编程的本质,从而可以灵活调配和运用自己已经积累的知识。切记!切记!切记!学习是没有捷径!但有方法!
知识点
组件化是将上层业务隔离开,下层提供通用能力的一种架构模式
组件化、热修复、动态化、大前端、Flutter、小程序
提高编译速度,内存优化,性能优化,电量优化,测试驱动开发,架构设计模式和iOS中算法数据结构的使用
虽然大家都是程序员,工程师,但是,所在行业不同,现实是千差万别
的!了解和熟悉的知识也是不尽不同!如何把计算机的万千技术用到自己所在的行业?每个人的精力有限,但是无极限
,当别人告诉你不可能时,那一定是他度量的尺子与你不同!我们度量一件事,要尽量放长线,放大眼光,放高视角!
,对于知识点,有太多的东西,选择自己感兴趣和工作需要的,不用太关心别人的评论,绝大多数事件,不是做不来,而是需要长期做
!
面试
被别人问底层原理答不出所以然
1.业务代码谁都会写,你还会什么?
2.我觉得iOS开发不值这个价,我们公司这个价的也不是没有都是后台,前端不需要。
公司不考虑员工的成长,多待无益
成体系地提升自己的内功,完善自己,然后反哺到工作上,让工作效率和质量达到质的提升,进而从容应对技术的更新迭代
面试应聘者的时候,通常都会问他所负责项目的整体架构是怎样的。
只对自己负责的那摊子事儿说的溜,而回答所在项目整体情况时却支支吾吾,面试不会成功。
如果不是自由工作者,我想大多数的国内同学都没有机会选择,所以,面试是一个总是要面对的问题,每次辞职、被辞职,大家就重新拿起试题集来刷,刷题目!刷算法!刷刷刷!
所有的问题不能简单的一刀切!
,经过这么多年,我的理解里,问题没有对与错,好与坏。刷题目也是一样。我想说的是内力是不能一天俩天就长成,所以为面试,建立自己的开发知识体系,面试题就是西天取经,每一道题目就是一个怪兽,你不可能一天打败所有怪兽,所以,不要忽视七七四十九日的轮回。
书籍
《代码整洁之道》
《人月神话》
书籍很多,好书也很多!这里暂时不列出所有值得看的技术书,因为,我害怕大家一下子又回到原点,买了一堆书,然后不知道从那里开始!
,所以,我是不建议买书!买书是自己要系统学习的时候买!怕伤害眼睛时买,但不能因为别人推荐或感觉不错就买!要从自身出发,从自己工作,从自己从事的行业,从自己的规划发展,从自己的兴趣,任何事情的起点,都是初心,不要忘了初心!
3、总结
关于如何建立自己的开发知识体系,以上就是我认为比较重要的点(还有很多方法论,但是多并一定是好事,以后有机会在归纳吧),贯穿到开发的每一个细节,需要大家长期长时间的学习、研究和经历,才能打造一套属于自己的知识树,任何告诉你可以复制的知识,你可以复制!但永远无法粘贴到自己脑心中!
更多关于 iOS 开发和程序开发相关的内容,可以查看系列,目前还在连载中 【学习总结】iOS开发高手课 -- (连载中) | iHTCboy's blog,以上,希望对你有用!
参考
如有侵权,联系必删!
如有不正确的地方,欢迎指导!
如有疑问,欢迎在评论区一起讨论!
注:本文首发于 iHTCboy's blog,如若转载,请注来源
版权声明: 本文为 InfoQ 作者【iHTC】的原创文章。
原文链接:【http://xie.infoq.cn/article/818c6204abab48e13eb638529】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论