Java程序员如何成长为架构师?

王佳冉


网站架构涉及许多技术,

Java程序员想要学习进阶成为架构师,需具备与架构师相匹配的技术能力,这是前提和基础。本篇列举了架构师的必备技术能力,文末随附详细的架构师专题资料

一、计算机基础

  1. 操作系统(推荐现代操作系统)
  2. 编译原理
  3. 计算机网络
  4. 互联网协议
  5. TCP/IP(推荐《TCP/IP协议族》)
  6. HTTP1.1/2.0
  7. HTTPS
  8. OAauth 2.0
  9. REST

二、集合框架(源码)

  1. List
  2. ArrayList
  3. LinkedList
  4. Set:HashSet、TreeSet
  5. Map:TreeMap、ConcurrentHashMap
  6. Queue:ConcurrentLinkedQueue
  7. Stack
  8. Collection的synchronized等方法

三、工具类

  1. Google guava(推荐)
  2. Apache common lang/BeanUtils/Collctions/IO
  3. JSON
  4. fastjson
  5. gson
  6. jackson

四、框架

  1. Spring:IOC、AOP、常用注解
  2. SpringMVC
  3. Mybatis
  4. Shiro
  5. Netty

五、远程调用(RPC)

  1. rmi
  2. Thrift
  3. Dubbo(Dubbox)
  4. 服务器治理,也可以作为微服务
  5. gRPC

六、构建

  1. Maven:推荐《Maven实战》
  2. Gradle

七、安全

  1. 单项散列算法:MD5、SHA
  2. 对称加密:DES
  3. 非对称加密:RSA、HTTPS

八、JVM

  1. Java虚拟机(Hotspot实现)
  2. 类加载机制
  3. 内存模型
  4. GC:回收算法、垃圾收集器
  5. 调优
  6. 工具:jstack、jmap、jconsole

九、并发编程

  1. Executor框架
  2. Fork/join
  3. happen-before
  4. 数据结构:ConcurrentHashMap
  5. 线程池:参数设置、原理、拒绝策略
  6. 线程状态
  7. Lock/synchronized
  8. 原子操作类
  9. 并发工具类:CountDownLatch、Semaphore、CyclicBarrier、Exchanger
  10. IO、BIO、AIO、NIO

十、数据

  1. NoSQL:MongoDB

  2. 分布式缓存:Memcached、Redis(推荐)

  3. 关系数据库

  • MySQL
  • 引擎
  • InnoDB(支持事务)
  • 分库分表
  • Cobar
  • Mycat

十一、SQL优化

  1. 索引
  2. 主键索引
  3. 组合索引
  4. explain
  5. 存储过程

SQL注入:使用#而不使用$

十二、事务隔离级别(ACID)

  1. 原子性
  2. 一致性
  3. 隔离性
  4. 持久性

十三、锁

  1. 表锁
  2. 行锁
  3. 悲观锁

数据库设计

十四、范式

  1. 第一范式
  2. 第二范式
  3. 第三范式
  4. E-R图

十五、搜索引擎

Luecene

Solr

ElasticSearch

十六、大数据

  1. Hadoop
  2. Hbase
  3. Spark
  4. Storm/JStorm

十七、算法与数据结构

  1. 数组
  2. 链表
  3. 队列
  4. 二叉树
  5. B Tree/B+ Tree
  6. 红黑树
  7. 哈希

十八、排序

  1. 内部排序
  2. 插入排序
  3. 直接插入排序
  4. 希尔排序
  5. 选择排序
  6. 简单选择排序
  7. 堆排序
  8. 交换排序
  9. 冒泡排序
  10. 快速排序
  11. 归并排序
  12. 基数排序
  13. 桶排序
  14. 外部排序

十九、分布式系统

  1. 从集中到分布式
  2. 分布式Session:Session复制、Session绑定、Session服务器(靠谱)
  3. 分布式缓存:Redis、一致性Hash算法
  4. 数据库:读写分离、主从热备、分库分表、一致性
  5. 分布式事务、CAP、BASE、2PC/3PC
  6. 分布式锁
  7. Redisson
  8. 负载均衡、硬件、F5、软件、LVS、Nginx
  9. 消息队列:RabbitMQ、ZeroMQ、ActiveMQ、Kafka(推荐)
  10. 服务化:服务注册与发现、Zookeeper
  11. 架构
  12. 微服务
  13. Spring Boot
  14. Dubbo
  15. RPC
  16. SOA
  17. 虚拟化
  18. Docker

以上,是架构师必备的技术能力,以下,是架构师进阶专题(已更新至80期),将关键词【架构】私信给优知学院,全部秒收~


优知学院


一: 编程基础

不管是C还是C++,不管是Java还是PHP,想成为一名合格的程序员,基本的数据结构和算法基础还是要有的。下面几篇文章从思想到实现,为你梳理出常用的数据结构和经典算法。

1-1 常用数据结构

数组、链表、堆、栈、队列、Hash表、二叉树等

1-2 算法思想

算法时间复杂度和空间复杂度的分析计算

算法思想:递推、递归、穷举、贪心、分治、动态规划、迭代、分枝界限

1-3 经典算法

经典排序:插入排序、冒泡排序、快排(分划交换排序)、直接选择排序、堆排序、合并排序

经典查找:顺序查找、二分查找、二叉排序树查找

1-4 高级数据结构

B+/B-数、红黑树、图等

1-5 高级算法

图的深度优先搜索、图的广度优先搜索、拓扑排序、Dijkstra算法(单源最短路径)、霍夫曼编码、辗转相除法、最小生成树等

二:Java语言基础

诞生不过二十余年的Java语言凭借其跨平台、面向对象、适合于分布式计算的特性,广泛应用于Web网站、移动设备、桌面应用中,并且已经连续多年稳居TOBIE编程语言排行榜前列,最近更是登上冠军宝座。Java有哪些优秀而又与众不同的地方首先一定要清楚。

2-1 基础语法

Java语法格式,常量和变量,变量的作用域,方法和方法的重载,运算符,程序流程控制,各种基本数据类型及包装类

2-2 重要:集合类

Collection以及各种List、Set、Queue、Map的实现以及集成关系,实现原理

Collections和Arrays

2-3 其他JavaAPI

String和StringBuffer,System和Runtime类,Date和DateFomat类

java.lang包

java.util包(集合类体系、规则表达式、zip,以及时间、随机数、属性、资源和Timer等)

java.math包

java.net包

java.text包(各种格式化类等)

java.security包

2-4 面向对象、面向接口

对象的三大特性:封装、继承和多态,优缺点

如何设计类,类的设计原则

this关键字,final关键字,static关键字

对象的实例化过程

方法的重写和重载;方法和方法的参数传递过程

构造函数

内部类,抽象类,接口

对象的多态性(子类和父类之间的转换、父类纸箱子类的引用),抽象类和接口在多态中的应用

2-5 JVM内存模型、垃圾回收

2-6 关于异常

Throwable/Error/Exception,Checked Exception vs. Unchecked Exception,异常的捕捉和抛出,异常捕捉的原则,finally的使用

2-7 多线程

线程和进程的概念

如何在程序中创建多线程,线程安全问题,线程之间的通讯

线程的同步

死锁问题的剖析

线程池

2-8 IO

java.io包,理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。

File及相关类,字节流InputStream和OutputStream,字符流Reader和Writer,以及相应缓冲流和管道流,字节和字符的转化流,包装流,以及常用包装类使用

分析IO性能

2-9XML

熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理;这几种解析方法的原理

2-10 一些高级特性

反射、代理、泛型、枚举、Java正则表达式

2-11 网络编程

网络通信协议原理及适用场景,Socket编程,WEB服务器的工作原理

2-11 JDK1.5、JDK1.6、JDK1.7、JDK1.8每个版本都比前面一个版本添加了哪些新特性,进行了哪些提升

三:数据库相关

前面说到了数据结构,数据库简单来说就像是电子化的档案柜,是按照一定的数据结构来组织、存储和管理数据的仓库。

3-1理论基础

数据库设计原则和范式

事务(ACID、工作原理、事务的隔离级别、锁、事务的传播机制)

3-2 各种数据库优缺点、使用场景分析

MySQL/SQLServer/Oracle以及各种NoSQL(Redis、MongoDB、Memcached、HBase、CouchDB等)

3-2 SQL语句

数据库创建,权限分配,表的创建,增删改查,连接,子查询

触发器、存储过程、事务控制

3-3 优化

索引原理及适用,大表查询优化,多表连接查询优化,子查询优化等

3-4 分库、分表、备份、迁移

导入、导出,分库、分表,冷备热备,主从备份、双机热备、纵向扩展、横向扩展

3-5 JDBC

JDBC Connection、Statement、PreparedStatement、CallableStatement、ResultSet等不同类的使用

连接池(配置使用、实现原理)

ORM,DAO

四:JavaWeb核心技术(包括部分前端)

Html5/Css/JS原生/jQuery

Ajax(跨域等)

JSP/JavaBean/Servlet/EL/JSTL/TabLib

JSF

JSON

EJB

序列化和反序列化

规则引擎

搜索引擎

模板引擎

缓存

身份认证

测试

集群

持久化

生成静态页技术

高性能

安全

事务JTA

其他需要了解的,如:管理JMX、安全JCCA/JAAS、集成JCA、通信JNDI/JMS/JavaMain/JAF、SSI技术

五、主流框架及工具

Struts1/Struts2

Spring(IoC、AOP等),SpringMVC

持久化:Hibernate/MyBatis

日志:Log4j

单元测试:JUnit

消息队列:ActiveMQ、RabbitMQ等

负载均衡:Nginx/HaProxy

Web服务器:Tomcat、JBoss、Jetty、Resin、WebLogic、WebSphere等

通信:WebService(cxf的soap、restful协议)

缓存:Redis、Memcached

工作流:Activity、JBPM

搜索引擎:lucene,基于lucene封装的solr

模板引擎:Velocity、FreeMaker

大数据:Hadoop(HDFS和MapReduce)

构建工具:Ant/Maven

六、JavaWeb系统设计与架构

Java设计模式

JAVA与UML建模

面向服务架构:SOA/SCA/ESB/OSGI/EAI,微服务


成都朗沃教育


1 首先是一个合格的程序员。

2 真正懂软件,懂软件工程,而不知是考试做题。可以独立完成一个产品,并服务客户产生收益。

3 需要伯乐,给你一个超出一个人完成的项目,你兢兢业业险些在deadline前完成了产品。

4 不断有新的挑战。


分享到:


相關文章: