概述
想了很久怎么样可以让文章的标题不那么悲观,但是各种文案都在我脑海里面不断的被否定,要么是不那么抓眼球,要么是立意不匹配。最后想了想,这个标题是真的符合我最近的感悟。
希望看过文章,能有同感的朋友也能多思考一下。
最近因为疫情的关系,相信很多国内的小伙伴都逐渐开始了解到在家上班的体验。在美国基本上work from home在IT公司里面算是比较常见的现象了。一般大厂每个周都会有一天被划为No Meeting Day,说只是不开会日,但通常都会被大家当成在家办公日。不开会嘛,那我在家和在办公室也没区别不是。
也正是因为闲的时间多了,看文章的时间也多了。我是个不喜欢看书,更倾向于看碎片化文章的人,没事翻翻掘金,翻翻Android Weekly,是我上厕所蹲坑时候的首选项。
但是让我感到悲伤的是,好多安卓技术博主,就在这么一个月两个月之间消失了。点击他们的个人主页,你会发现上次更新可能都是好几个月,甚至是一年前的事情了。粗糙的以为是因为疫情,其实想一下,这个事情符合技术这行的发展规律。
二、理解架构
全球有名的架构目前分为四种:
1、Clean架构:一种分层的架构方式,将核心业务(对应domain层)、UI相关(对应presenter层)以及数据加载(对应data层)彼此独立开来,不同的层之间由接口依次连接起来,但却又彼此不了解彼此的具体实现。
2、DCI架构:DCI是数据Data 场景Context 交互Interactions的简称,DCI是一种特别关注行为的模式(可以对应GoF行为模式)。DCI架构真正含义可以归结如下:
-
1.数据data:是领域对象中代表领域类概念的那部分。
-
2.场景context:根据运行时即时调用,将活的对象实例带到符合用例需求的场景中
-
3.交互interactions, 描述需求用户心目中角色的活动算法。
3、DDD领域驱动设计:2004年著名建模专家Eric Evans发表了他最具影响力的著名书籍:Domain-Driven Design –Tackling Complexity in the Heart of Software(中文译名:领域驱动设计 2006年3月清华出版社译本,或称 Domain Driven-Design architecture [Evans DDD])。软件的产生过程是:分析、设计、编程、测试、部署。过去,分析领域和软件设计是分裂的,分析人员从领域中收集基本概念;而设计必须指明一组能在项目中适应编程工具构造的组件,这些组件必须能够在目标环境中有效执行,并能够正确解决应用程序出现的问题。模型设计设计(Model-Driven Design)抛弃了分裂分析模型与设计的做法,使用单一的模型来满足这两方面的要求。这就是领域模型。
4、六边形架构架构:六边形架构(Hexagonal Architecture),又称为端口和适配器架构风格,其中的“六”具体数字没有特殊的含义,仅仅表示一个“量级”的意思,六边形的定义只是方便更加形象的理解。我们知道分层架构的重要作用就是避免耦合的出现,经典分层架构和六边形架构都是分层架构的一种,但是所发挥的作用会有些不同,经典分层架构更多的精力放在抽象的分离上,每个层的职责分的很明确,各个层的依赖关系更加抽象化,从而避免耦合的出现,而在六边形架构中,是用“组件化”的形式来避免耦合的出现,每个业务单元尽可能的最小化,然后把这些业务组件集合起来,用一个锤子把他们都拍扁,所以,在整个集合中,这些小的业务单元都是“平等的”,这种方式用一个词来概括,那就是“扁平化”。
三、设计模式
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
1、设计模式的重要性:
-
设计模式是高级软件工程师和架构师面试基本必问的项目(先通过面试进入这个门槛我们再谈其它)
-
设计模式是经过大量实践检验的安全高效可复用的解决方案。不要重复发明*,而且大多数时候你发明的*还没有已有的好
-
设计模式是被主流工程师/架构师所广泛接受和使用的,你使用它,方便与别人沟通,也方便别人code review(这个够实在吧)
-
使用设计模式可以帮你快速解决80%的代码设计问题,从而让你更专注于业务本身
-
设计模式本身是对几大特性的利用和对几大设计原则的践行,代码量积累到一定程度,你会发现你已经或多或少的在使用某些设计模式了
-
架构师或者team leader教授初级工程师设计模式,可以很方便的以大家认可以方式提高初级工程师的代码设计水平,从而有利于提高团队工程实力
四、代码形式
-
这样子解释架构、设计模式应该能让你更加了解它:
-
我现在要盖一栋房子(需求),房子当然要盖得漂亮大方美观一点去把全国最有名的设师Jack叫过来把我的房子先设计出来让我看一看(架构师),恩Jack果然是老司机设计的我很满意不过这个房子的左边不要盖出来要留出来一部分让我以后的孩子来用,还有右上角要多加个走廊还有房子的院前要留出啦一部分当花园,针对这么多需要更变Jack爽快的答应了,一点也不苦恼因为Jack早就想到会变更偷偷运用了自己总结了一生的方案(设计模式)。好了搬砖的搬砖、砌墙的砌墙、工人们依靠Jack给出的设计愉快的盖着房子(程序员)。
总结
算法知识点繁多,企业考察的题目千变万化,面对越来越近的“金九银十”,我给大家准备好了一套比较完善的学习方法,希望能帮助大家在有限的时间里尽可能系统快速的恶补算法,通过高效的学习来提高大家面试中算法模块的通过率。
这一套学习资料既有文字档也有视频,里面不仅仅有关键知识点的整理,还有案例的算法相关部分的讲解,可以帮助大家更好更全面的进行学习,二者搭配起来学习效果会更好。
部分资料展示:
有了这套学习资料,坚持刷题一周,你就会发现自己的算法知识体系有明显的完善,离大厂Offer的距离更加近。
资料获取方法:点赞+关注+转发,然后进入我的【GitHub】,里面有免费获取途径
82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md),里面有免费获取途径**