Java架构师学习小目标
前言:本Java服务端菜鸟目前需要加强的方向,Leetcode算法,分布式架构,JVM优化思路,常见问题解决/设计方案,框架源码原理。希望以后能对于老生常谈的IO模型、并发安全、GC原理,JUC、分布式系统常见理论和架构设计能够谈笑风生。
一、架构师的要求
Java架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。一个Java架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。
Java架构师在软件开发的整个过程中起着很重要的作用。说的详细一些,架构师就是确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。
Java架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了解,并且需要有良好的组织管理能力。可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。
专注于提升这些: 1、Java基础:IO、多线程、集合,对JVM原理有较深入了解,并有实际调优和线上排除问题的经验。 2、扎实的数据库、缓存、消息队列、索引等分布式中间件原理和优化的技术 3、掌握分布式架构理论,数据一致性解决方案,分布式锁和分布式事务,高可用架构设计 4、有大数据工具使用经验更好,Hadoop、Spark、Flink、HBase、ClickHouse等等
二、本人需要加强的方向
1、LeetCode算法题
LeetCode常用算法和大厂历年真题
2、分布式架构
Redis实现分布式锁
分布式事务
Kafka或RocketMQ消息队列中间件
最终一致性解决方案
分布式数据一致性协议Raft
分布式ID生成方案
分库分表
3、JVM底层调优和设计模式
GC原理和GC常见算法
对象逃逸
线上遇到OOM异常,怎么处理
FullGC何时发生,线上问题排查
JVM参数调优相关
Gof:代理模式、观察者模式、装饰者模式、责任链模式、门面模式
银行家算法
4、容器和大数据
K8S容器编排+Docker虚拟化linux容器
ElasticSearch搜索引擎,ELK分布式日志平台搭建
Nosql的Hbase、ClickHouse列式数据库海量存储
分布式数据库TiDB
Hadoop和Spark大数据存储和分析,Flink大数据流处理工具
5、综合能力
微服务架构设计
秒杀系统设计场景题
大数据治理等等
三、下面隆重推荐三个学习链接
前两个用来准备Java面试题,最后一个手撕大厂高频算法题:
涵盖大部分Java程序员所需要掌握的核心知识,整合了互联网上的很多优质Java技术文章,力求打造为最完整最实用的Java开发者学习指南。 一份涵盖大部分 Java 程序员所需要掌握的核心知识,准备 Java 面试,首选 JavaGuide。 对于应付面试而言,应该把精力用在刷大厂高频算法题上,这样性价比会更高,请大胆告别LeetCode。