美文网首页Java 杂谈资深架构师
程序员成长必须经历的四个阶段,大牛都是这样成长起来的

程序员成长必须经历的四个阶段,大牛都是这样成长起来的

作者: java爪哇 | 来源:发表于2019-05-23 21:52 被阅读2次

    阶段一:不知道自己不知道(Unconscious incompetence)

    程序员成长必须经历的四个阶段,大牛都是这样成长起来的

    大学期间,我和老师做过一些小项目,自认为自己很牛,当时还去过一些公司面试做兼职,但是就是不知道为什么没有回复。那个时期的我,压根不知道自己不知道,还以为自己懂很多,现在想起自己以前就好笑,那个时候还算不上程序员,顶多只能算是个业余编程爱好者。

    表现:假自信、过度承诺、满口我能行没问题、看不起其他程序员….。

    阶段二:知道自己不知道(Conscious incompetence)

    程序员成长必须经历的四个阶段,大牛都是这样成长起来的

    工作后,发现自己在项目中工作时遇到困难不知道怎么解决,和身边人一比发现自己知识很欠缺,这时候知道自己技不如人,很多地方都不足,需要大补才行,这个时候就是大家所说的初级程序员阶段,这个阶段必须依靠别人指导。

    表现:有点心虚、虚心学习、偷偷努力、羡慕牛人…

    阶段三:知道自己知道(Conscious competence)

    程序员成长必须经历的四个阶段,大牛都是这样成长起来的

    工作三四年后,自己的技能逐步提高,成为了项目组的技术大拿,这时候也很自信,知道自己能够解决遇到的所有问题,这时候就是高级程序员阶段了。

    表现:自信、比较客观、真正承诺、有点自我…

    阶段四:不知道自己知道(Unconscious competence)

    程序员成长必须经历的四个阶段,大牛都是这样成长起来的

    工作多年后,随着自己知识的深度和广度的提高,越学发现越不懂,有时好觉得自己以前真是浪费了太多时间。虽然觉得自己还有很多需要提高,但是对工作中遇到的问题基本没有解决不了的,这个时候很多知识都自成体系,解决问题也有了自己的潜意识,有时连自己都不知道自己知道,这时候属于架构师级别了。

    表现:开放、主动、好学、谦虚…

    复旦大学工程硕士手把手教你怎么学习,进阶java架构师

    程序员成长必须经历的四个阶段,大牛都是这样成长起来的

    什么是微服务架构?

    微服务是指开发一个单个 小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。

    程序员成长必须经历的四个阶段,大牛都是这样成长起来的

    微服务也指一种种松耦合的、有一定的有界上下文的面向服务架构。也就是说,如果每个服务都要同时修改,那么它们就不是微服务,因为它们紧耦合在一起;如果你需要掌握一个服务太多的上下文场景使用条件,那么它就是一个有上下文边界的服务

    分布式系统

    分布式系统从当初的CORBA 到EJB,Web和SOA,从集群到现在的NoSQL 云计算和大数据Hadoop等分布式系统,横向水平扩展Scala out/in是分布式系统设计的一个特点,可靠性 容错性是两个质量指标。

    什么是分布式系统?

    1. 一大批服务器组成一个集合,对于用户来说仍然是一个整体连贯系统。
    2. A. Tanenbaum定义:分布式网络的计算机中的组件之间协调动作是通过消息进行通讯。
    3. G. Coulouris定义:当你知道有一台电脑崩溃,但是你的软件运行从来不会停止。
    4. Leslie Lamport定义:分布式系统是这样系统:旨在支持应用程序和服务的开发,可以利用物理架构 由多个自治的处理元素,不共享主内存,但通过网络发送异步消息合作。
    5. 与分层应用区别:分层的应用程序(例如,3层)是 划分应用程序逻辑,是一种逻辑分层,而不是物理,而分布式系统DS是物理分层,和实际部署有关。
    程序员成长必须经历的四个阶段,大牛都是这样成长起来的

    并发编程

    程序员成长必须经历的四个阶段,大牛都是这样成长起来的

    Synchronized的概念和分析

    • 同步、重量级锁以及Synchronized的原理分析
    • 自旋锁、偏向锁、轻量级锁、重量级锁的概念、使用以及如何来优化他们

    Volatile和DCL的知识

    • Volatile的使用场景和Volatile实现机制、内存语义、内存模型
    • DCL的单例模式,什么是DCL?如何来解决DCL的问题

    并发基础之AQS的深度分析

    • AbstractAueuedSynchronizer同步器的概念、CLH同步队列是什么?
    • 同步状态的获取和释放、线程阻塞和唤醒

    Lock和并发常用工具类

    • java当中的Lock、ReentrantLock、ReentrantReadWriteLock、Condition
    • java当中的并发工具类CyclicBarrier、CountDownLatch、Semphore
    • java当中的并发集合类ConcurrentHashMap、ConcurrentLinkedQueue......

    原子操作常用知识讲解

    • 基本类型的原子操作比如经典的AtomicBoolean、AtomicLnteger、AtomicLong
    • 数组类型的原子操作代表几个类AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray
    • 引用类型的原子操作的典型AtomicReference、AtomicReferenceFieldUpdater......
    • CAS的概念和知识、Compare And Swap 以及他的缺陷

    线程池和并发并行

    • Executor、ThreadPoolExecutor、Callable &Future、ScheduledExecutorService
    • ThreadLocal、Fork & Join?什么是并行?线程池如何保证核心线程不被销毁?

    本文到此结束!喜欢的朋友帮忙转发文章和关注,感谢支持!

    相关文章

      网友评论

        本文标题:程序员成长必须经历的四个阶段,大牛都是这样成长起来的

        本文链接:https://www.haomeiwen.com/subject/vveizqtx.html