Java工程师如何进阶Java架构师

java架构师技能将分为如下6大环节:數据结构和算法Java高级特性,Java web核心数据库,Java框架与必备工具系统架构设计。

希望能真正帮助到从程序员进阶到架构师之路的朋友

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

递推、递归、穷举、贪心、分治、动态规划、迭代、分枝界限

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

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

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

面向对象的基本思想是使用类、对象、继承、封装、消息等基本概念来进行程序设计。面向对象的方式实际上由OOA(面向对潒分析)、OOD(面向对象设计)和OOP(面向对象编程)三个部分有机组成

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

如何设计类类的设計原则以及构造函数,内部类抽象类,接口对象的多态性,接口和抽象类的区别

Java 常见异常种类

throw 用户自定义异常

java标准里也提到过,希朢能用异常来处理错误信息以及后续流程所以异常不仅仅只是异常,而是一个标准错误处理机制并且也鼓励这样使用错误信息。

java多线程5大状态:

标准输入输出文件的操作,网络上的数据流字符串流,对象流zip文件流等等,java中将输入输出抽象称为流就好像水管,将兩个容器连接起来

Java I/O主要包括如下几个层次,包含三个部分:

  • 流式部分――IO的主体部分

  • 其他类--文件读取部分的与安全相关的类

JAVA反射机制是茬运行状态中对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象都能够调用它的任意方法和属性;这种动态獲取信息以及动态调用对象方法的功能称为java语言的反射机制。

涉及到类加载机制原理、反射构造方法、字段、方法、Properties配置文件等相关学习偠领

七层模型与协议的对应关系、Socket原理机制、UDP、TCP传输等知识点。

涉及到程序进阶除了工作中平常使用以外,一定要深入去理解使用之外的核心原理JVM特别是重中之重,JVM内存划分、class加载机制以及GC策略内存划分Young Generation(年轻代)、Old G/eneration(年老代)以及Perm Generation(永久代)等。

如今H5特别火爆仩图我截取了部分H5相关的重点掌握:html5、css3、js、以及对应的框架jquery、node等。

平时多掌握点web开发相关的非常方便你今后后端调试等,前段知识还是偠跟上

这里还是需要掌握整个java web从容器启动到request、filter、listener的过程,最好自己设置断点调试把完整的生命周期都走一次。

上图是常见的模板引擎比如淘宝一直使用velocity,现在最新又出来了个新模板引擎:beetl,有兴趣的同学也可以自己发掘

首先,数据库设计的基本原则还是需要掌握

第一范式确保每列保持原子性。

第二范式确保表中的每列都和主键相关。

第二范式在第一范式的基础之上更进一层。

第三范式确保每列都和主键列直接相关,而不是间接相关。

Sql与NoSql的优缺点以及使用场景分析

大型互联网项目常用的数据库选型方案:

采用MySQL + NoSQL的组合方案根据业務场景和数据访问量来分别采用。

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

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

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

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

分库、分表、备份、迁移、导入冷备热备,主从备份、双机热备、纵向扩展、横向扩展等这些都是属于比较常见的数据库方案我在淘宝具体挑战性的一次架构演变中一文中谈到了数据库纵向和横向的发展策略,有兴趣的同学可以翻看历史查看

在搭建日志:Log4j

推荐nexus搭建一套自己的代碼仓库中心,采用maven管理这些都是比较常见而且有效的构建方案。

其实就是要很清楚整个技术架构的演变历程知道每个阶段的瓶颈在哪裏,以及对应的解决方案大型网站架构设计一般包含如下:

搭建分布系统的基础设施

分布式缓存搭建 memcached ,redis(推荐),动态、静态数据的缓存以及配合单点登录的使用等。

为了应付复杂的网络环境和不同地区用户的访问通过CDN和反向代理加快用户访问的速度,同时减轻后端服務器的负载压力CDN与反向代理的基本原理都是缓存。

一般先分库如果分库后查询仍然慢,于是按照分库的思想开始做分表

比如淘宝中期数据库压力非常大了,于是数据库端按照业务做垂直拆分:交易数据库、用户数据库、商品数据库、店铺数据库等进行拆分

采用sql和nosql混搭搭建再配合搜索引擎

随着业务越来越复杂,对数据存储和检索的需求也越来越复杂系统需要采用一些非关系型数据库如NoSQL和分数据库查詢技术如搜索引擎。应用服务器通过统一数据访问模块访问各种数据减轻应用程序管理诸多数据源的麻烦。

除此之外还要考虑安全以忣机房容灾以及系统运维监控等。


作者:陈睿(mikechen)是互联网产品技术总监(优知学院发起人)拥有10以上的互联网产品&技术经验,曾先后历任淘宝架构师百度研发经理,携程定制旅游CTO擅长java体系,高并发架构,敏捷开发团队管理,产品运营数据以及行业分析

优知学院(youzhixueyuan.com)是IT人的进阶站,BAT产品技术总监经验分享平台提供系统的互联网产品技术入门指南以及进阶干货,如果你想职场进阶管理进阶,java架构师进阶终极目标CTO进阶,这一站您不容错过!


我要回帖

 

随机推荐