Skip to content
This repository was archived by the owner on Jan 9, 2025. It is now read-only.

(Updating!) Architect's Kung Fu tutorial collection Article collection contains paradigm programming microservices essential algorithms Security attack Assembly Crawler Reverse penetration test...etc.

License

Notifications You must be signed in to change notification settings

program-spiritual/KongFuOfArchitect

Repository files navigation

《 架构师的功夫》

英文 《KongFuOfArchitect》

架构师的功夫

版本 2.2

2.1-snap

Full Documentation

致谢

感谢 JetBrains的支持 , 让我不必受开发工具的限制,提高书写效率。

前言

为什么要写:

受极客时间的《左耳听风》、《从零开始学架构》、《许式伟的架构课》等专栏影响,结合目前自身的现状,想留一份记录给20年后的自己

win 用户开发效率提升方法

架构师的成长路线

根据极客时间 《从0开始学架构》《斗罗大陆》对比整理

内功:

架构师

  • 判断力
  • 执行力
  • 创新力

对照:

封号斗罗:
  • 紫极魔瞳
  • 玄天功
  • 鬼影迷踪

能力来源

架构师:

  • 经验
  • 视野
  • 思考

封号斗罗:

  • 魂力--魂师等级
  • 魂环
  • 魂骨
  • 魂灵

指导原则

架构师:

  • 积累经验
  • 拓宽视野
  • 深度思考

封号斗罗:

  • 战斗经验
  • 游走大陆
  • 战术与战略

等级成长

工程师 == 魂师

  • 特征: 在别人的指导下完成开发

  • 技能:

    • 语法、基本数据结构
    • 各种工具
    • 数据库、缓存
    • 业务系统的基本流程

高级工程师 == 大魂师

  • 特征: 独立完成开发

  • 技能:

    • 深度:
      • 知道how 、 知道 why
      • 实现原理
    • 理论:
      • 前人总结出来的成熟的设计经验
      • 研究源码
      • 系统学习
      • 源码

技术专家 == 魂尊 || 魂宗

  • 特征: 某个领域的专家

  • 技能:

    • 拓展技术宽度
      • 学习业界成熟的开源方案
      • 研究业界的经验分享
      • 深入去理解每个技术的原理、优缺点、应用场景

初级架构师 == 魂王 || 魂帝

  • 特征:独立完成一个系统的架构设计

  • 技能:

    • 形成自己的“架构设计方法论
      • 架构设计目的
      • 架构设计原则
      • 架构设计步骤
      • 架构设计模式 学习手段:
      • 系统学习架构设计方法论
        • 订阅专栏
        • 阅读书籍
      • 深入研究成熟开源系统的架构设计
        • 聚焦于学习其架构设计原理和思想
  • 与专家的区别:

架构师是基于完善的架构设计方法论的指导来进行架构设计,而技术专家更多的是基于经验进行架构设计

中级架构师 == 魂圣 || 魂斗罗

  • 特征:能够完成复杂系统的架构设计

  • 技能

    • 技术理论
      • CAP、BASE

        异地多活的设计理论基础

      • Paxos

        是分布式一致性的基础算法

      • 2PC、3PC

        分布式事务的基础算法

    • 技术深度
      • Kafka

        磁盘顺序写

      • Disruptor

        CPU 预读取机制、缓存行、无锁设计等基础

      • Storm

        高效异或确认机制

      • Flink

        分布式快照算法

高级架构师 == 封号斗罗

  • 特征:创造新的架构模式

  • 可能诞生创造性架构的背景条件:

    • 足够复杂的业务场景
      • 谷歌大数据
      • 阿里的双十一
      • Facebook 的海量用户
    • 足够强大的技术团队
      • 大公司
      • 知名的研究机构
    • 不满足于现状的态度
      • Docker
      • Storm
    • 尊重技术价值的文化
      • OKR 而不是 KPI

IT界国内"七大宗门"

  • BAT

  • TMD

  • P

以上内容部分引自 极客时间 -- 高效学习、快乐学习

项目主旨

《架构师的功夫》教程合集、文章合集包含:

  • 思想指引
  • 资源汇总
  • 范式编程
  • 高效成长
  • 必备算法
  • 数据结构
  • 架构思想
  • 机器学习
  • 区块链
  • ...

引言

无名,天下之始;有名,天下之母 -- 《道德经》

当人类的文明发展到一定的阶段,一些基本性的问题就会被提出讨论,像是宇宙本源、万物之母,往往成为科学家与哲学家争论的焦点。

一般的,从简化问题角度出发,我先提出作为技术出身的人的疑问.

  1. 我们是否能跨行业、专业去思考技术问题?

  2. 是否被自己的职业认知所限制?

  3. 传统经典读物,是否有利于提升技术修养?

  4. 我们口中的 "道" 和 架构有哪些根本的联系?

以上的问题只是一小部分,问题的答案没有标准,问题的提出,是为了让我们能够从本源出发,认识自己。

下面我就谈谈我们需要注重的几点:

第一步:认识自己

如何找到最根本的问题的答案,要从柏拉图说的:"认识你自己",卢梭说的: "伟大的人是决不会滥用他们的优点的,他们看出他们超过别人的地方,并且意识到这一点,然而绝不会因此就不谦虚。他们的过人之处越多,他们越认识到他们的不足"。

在我看来, 架构设计和 "道" 存在着微妙的关系,对"道"的理解越深,思想和认知的层次越深,那么我们能知道如何化繁为简,如何跳出认知的局限,看到我们自身的不足,从而真正的提升自己,成为那个心中的自己 -- 一名合格的架构师

第二步: 全局观

天地万物都是自己化育、自己成长。所以说「天地不仁,以万物为刍狗」,大道以及天地都无所谓意志、无所谓仁慈,一任万物自生自灭;万物自生自灭,即是遵循「道」、遵循自然的规律,这就是「万物归焉」。

任何事物都有自己的生命周期,这个在我们出生的时候就已经写在了我们的 DNA 中 ,每个人都会经历出生、青年、壮年、老年、死亡,这个过程。

"人法地,地法天,天法道,道法自然"。自然就是最伟大的架构师。

无生有,有生万物

认识架构过程我个人理解为如下几个层次

  1. 自我对于自身的认知,认知的越深、知道自身的不足越多、提升越快

  2. 领悟 "道" 和 架构设计之间的微妙关系,练就全局视角的掌控力

  3. 架构设计的落地,作为一名架构师、如何设计基础、各个终端、如何形成较好的架构思维、架构范式、软件工程等等

第三步:实战出真知

实践,是个伟大的揭发者,它暴露一切欺人和自欺。——车尔尼雪夫斯基(俄)

每个人都会有缺陷,就像被上帝咬过的苹果,有的人缺陷比较大,正是因为上帝特别喜欢他的芬芳。—— 列夫托尔斯泰

理论再高深,他只是理论,作为一名工程师或架构师,当我们想要将一件事情做好的时候,我们可以将这件事当做学术问题来研究,也就是 科学精神(学术精神)

我们日常的生活中,不缺乏很多只会高谈阔论的"学者",我觉的做什么都可以,关键人家要看你这个人做的事情的结果,而不是你理论。

第四步:职业认知

软件工程没有"银弹",同样,软件工程里也没有真正的《九阴真经》,学会了就可以驰骋天下,这个只会出现在小说里。

认识自己,是我们一辈子的事情,相同的,如果想把软件工程当成一辈子事业来做,是更加的困难,只是困难,不是不能。

最后引用"左耳朵耗子"的一句话来结束我的浅述。

“我们学计算机当程序员最大的福气不是可以到大公司里加班和 996,而是我们生活在了第三次工业革命的信息化时代,这才是最大的福气,所以,我们应该努力地提升自己,而不是把自己当劳动力一样的卖了!在这样的一个时代,你要做的不是通过加班和拼命来跪着挣钱,而是通过技能来躺着挣钱……”

整体目录

大纲描述

  • 架构基础
    • 大部分架构基础知识
  • 算法与数据
    • 常用的算法与数据结构
  • 范式编程
    • 如何认知编程的本质
  • 高效成长
    • 作为技术人 如何高效自学成才
  • 资源汇总
    • 整理架构相关的资源
  • 大道至简
    • 如何提高自身的认知和逻辑思维层次
  • AI与区块链
    • AI基础知识
    • 区块链基础知识
  • 微服务与自动化
    • 微服务架构基础知识
    • 自动化流程 、 DevOps

"攻城狮"的自学路线指北

根据《极客时间》APP 整理 ,只包含路线

计算机专业课

  • 计算机组成原理
  • linux 系统
    • 操作系统基础知识
    • 网络协议
    • Socket 套接字编程
  • 数学基础课
    • 数学基础课
    • 线性代数
    • 微积分
  • 算法
  • 数据结构
  • 软件工程
  • 设计模式
  • 编译原理
  • 软件设计
  • 软件工程

web 与 架构

(一般的,以JAVA工业级语言为准)

  • 脉络图
    • 《左耳听风》
  • JAVA基础知识
  • 架构基础知识
  • 虚拟机原理
  • 分布式技术栈、分布式架构
  • 架构基础知识
  • 框架分析与编程思想
  • Linux性能优化
  • Web 安全
  • C++ 系列
  • 数据库系列
  • 各种原理解析

前端与移动端、桌面端 -> 统称 客户端

  • web

    • Http 协议
    • Nodejs
    • TS
    • webpack ,rollup ...
    • React
    • Vue
    • V8
    • 安全
  • 移动端

    • 混合

      • Flutter
      • RN
      • 微软系列
    • mp(小程序)

      • ...
    • 原生

      • Android
        • Kotlin
        • Java
      • IOS
        • Swift
        • OC
  • 桌面端

    • Electron
    • .Net Core
    • NW.js
    • ...
  • 原理

人工智能与大数据

  • 大数据
    • 从零开始
    • 中台
    • 大数据检索
    • 大数据处理
  • 人工智能
    • Python 基础
    • 人工智能基础
    • TF(tensorflow)
    • 数据分析实战
    • 推荐系统
    • 技术内参
    • NLP

高质量代码指北

引用内容 极客时间《设计模式之美》

如何编写高质量代码

设计模式

质量评估标准

面向对象

设计原则

规范与重构

ISSUES 问题

如果您有任何建议和错误反馈,例如发现了错别字,请在 ISSUES 中直接指出,谢谢!

问题讨论

请阁下移步:https://github.com/xiaomiwujiecao/KongFuOfArchitect/issues/

贡献

fork 此项目并 pull request 你新增的源码

项目维护周期

本项目长期维护 LTS

遵循协议

LICENSE 996.icu

CHANGE LOG

  • 2020年07月25日

  • 2020年07月07日

    • [+] 安全与渗透 教程
    • [+] 自学指北
  • 2020年05月03日

    • [+] LISP 基础编程文字教程
    • [branch] 增加 spring , Algorithm 维护者增加
  • 2020年04月01日

    • [+] 增加廖雪峰博客JAVA教程笔记

致谢

感谢阁下的star,感谢关注此项目

About

(Updating!) Architect's Kung Fu tutorial collection Article collection contains paradigm programming microservices essential algorithms Security attack Assembly Crawler Reverse penetration test...etc.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published