Java|Java架构师技术专家-成长直通车-完结

Java|Java架构师技术专家-成长直通车-完结

Download:

1、怎么才能成为架构师呢?虽然人跟人差别很大 , 但是绝大多数情况都是相同的 , 先把共性做好了 , 剩下的差异各自发展就行了 。
我说一下自己的个人感受 , 以下所言都是通过不断试错 , 摸着石头过河走过来的 , 仅供参考 。
第一步:别被误导 , 明辨是非 , 把握好学习方向 。Javaer成为架构师其实挺难的 , 因为很多人被误导了 , 被周围的环境误导 , 被网络资料给误导了 。 有“绝活”的人 , 都忙的要命 , 那有空闲时间在网络上德化育人呢?所谓的分享很多都是初学者的交流 , 反正大家都在探索和试错 。 这就导致了很多人被困在Java这个山头上了 , 导致学习方向有问题 。
术业有专攻弄 , 这个道理没错 , 但是很多人做错了 , 因为要看怎么个专法 。 以socket编程为例 , 把Java的socket学一下 , 把netty搞一遍 , 把Linux和c++的select和epoll搞一下 , 把python的tornado搞一下 , 这才叫专攻 。 如果仅仅学习Java那么不叫专攻 。 举例来说 , 你使用汉语 , 你算精通法律吗?不能啊 , 你还需要研究英美的律法 , 这才叫专攻 。 生活中的道理 , 我们都知道 , 但是我们在计算机上却依然犯错栽跟头 。
以高并发这个领域来说 , 绝大多数Javaer , 对高并发的理解和掌握其实很肤浅 。 这种现状跟工作年限无关 , 而是跟学习方向有关 , 所以要把握好方向 。 方向如何把握 , 详见下文的分析 。
Java擅长应用层面 , 绝大数Javaer都在忙于业务 , 忙着增删改查 , 所以 , 对高并发的一无所知和茫然失措是任何搞Java开发的人都会面临的难题 。 即是工作了五年、十年的人 , 也依然如此 。 造成现状的原因 , 我分析了一些 , 主要有以下几点:
(1)对高并发的理解和掌握 , 往往与socket编程绑定在一起的 。 在Javaer的日常工作中 , 往往都是web编程 , 很少有机会进行socket编程 。 虽然web的底层是socket实现 , 但是web编程和socket编程还是相差甚远 。
(2)高并发的根源往往在于select/epoll , 是“文件描述符+事件监听+异步通知”的处理机制 。 听说过select/epoll的人很多 , 但是真正去编程去应用过的Javaer却是很少的 。 这就是一个很高的门槛 , 将绝大数Javaer拦在了门外 , 这就是上面说的茫然失措的根源所在 。
(3)要想体验select/epoll的强劲 , 需要C/C++的基础 。 学习C/C++的难度远比Java要大 , 一个Javaer为了体验select/epoll的强劲 , 而去坚持半年的业余时间 , 去学习C/C++ , 这样的人 , 不能说没有 , 但是很少 。
(4)很多javaer往往止步于netty 。 netty是socket的封装 , 从应用层面来说 , 它带来了很大的帮助 。 但是 , 从理解的角度来说 , 它让人对socket编程产生了错觉 , 让人止步于它 , 而不再深挖socket编程 , 不再深挖select/epoll的强劲 。 netty就是一个指路标 , 它的存在让绝大多数Javaer都已经止步了 , 让人忘记了离高并发其实还有一长段路要走 。 犹如 , 你考完试 , 心满意足的交上卷子 , 其实背面的题你还没有做 。
第二步:要扩展知识面 。 【Java|Java架构师技术专家-成长直通车-完结】上面一条提到了学习方向 , 无非就是要懂得切入Java , 也要适当的跳出Java , 把知识面扩展起来 。 我个人觉得:
Java + C + Shell + SQL + DataStructure + Coding >= 架构师
架构师需要具备数据库知识 , 所以SQL这块要精通 。 架构师不同于DBA , DBA侧重于数据库的运维 , 而架构师更侧重于SQL编程(锁 , 事务 , 索引) 。 架构师需要具备Linux知识 , 所以Shell这块要熟练 。 SQL里面的各种树 , Java里面的各种高级类 , 背后都是DataStructure的知识 。