从程序员进阶到架构师,6大核心技能要领详解

2024-09-04 11:08

本文主要是介绍从程序员进阶到架构师,6大核心技能要领详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



从程序员进阶到架构师,6大核心技能要领详解

优知学院  2017-12-05 12:42:55

从程序员进阶到架构师,6大核心技能要领详解

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

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

数据结构和算法

从程序员进阶到架构师,6大核心技能要领详解

算法分析与计算

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

算法思想

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

常用数据结构

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

经典算法

排序

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

查找

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

java语言高级特性

从程序员进阶到架构师,6大核心技能要领详解

深入理解面向对象

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

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

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

理解异常处理

Java 常见异常种类

Java Exception

Error

Runtime Exception 运行时异常

Exception

throw 用户自定义异常

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

多线程

从程序员进阶到架构师,6大核心技能要领详解

java多线程5大状态:

  • 新建状态(New)

  • 就绪状态(Runnable)

  • 运行状态(Running)

  • 阻塞状态(Blocked)

  • 死亡状态(Dead)

Java多线程掌握

  • 创建与启动

  • 线程和进程的概念

  • 线程安全

  • 线程之间的通讯

  • 线程的同步与锁

  • 死锁问题的剖析

  • 线程生命周期

  • 线程池

输入与输出

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

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

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

  • 非流式部分――主要包含一些辅助流式部分的类,如:File类、RandomAccessFile类和FileDescriptor等类

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

反射

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

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

网络编程

从程序员进阶到架构师,6大核心技能要领详解

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

JVM

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

java web开发

从程序员进阶到架构师,6大核心技能要领详解

前段技术

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

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

Java Web核心

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

模板引擎

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

高级特性

  • SSI技术

  • 安全JCCA/JAAS

  • 通信JNDI/JMS/JavaMain/JAF

  • 集成JCA

  • 事务JTA

数据库

从程序员进阶到架构师,6大核心技能要领详解

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

数据库设计原则和范式

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

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

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

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

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

SQL 关系型数据库:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源)

NoSQL泛指非关系型数据库 :MongoDB,Redis,Memcached,Hbase,CouchDB。

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

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

关系式数据库必备

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

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

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

数据库性能优化

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

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

java框架与工具

从程序员进阶到架构师,6大核心技能要领详解

web开发框架

Struts2、SpringMVC、spring、hibernate、myBatis

在搭建日志:Log4j

单元测试:JUnit

构建工具

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

Web服务器

  • Tomcat

  • JBoss

  • Jetty

  • Resin

  • WebLogic

  • WebSphere等

通信协议

  • RMI

  • Hessia

  • Burlap

  • Httpinvoker

  • Soap

  • WebService等

工作流

Activity、JBPM

搜索引擎

lucene,基于lucene封装的solr

大型网站架构设计

从程序员进阶到架构师,6大核心技能要领详解

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

搭建分布系统的基础设施

缓存搭建

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

负载均衡

Nginx/HaProxy

CDN搭建

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

分布式储存搭建

常见的分布式文件系统有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等,比如GFS(Google File System),TFS(Taobao File System),tfs参考tfs而来,所以名字也直接参考了。

消息系统搭建

目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ,优先推荐ActiveMQ。

消息系统使用四大场景

  • 异步处理

  • 应用解耦

  • 流量削锋

  • 消息通讯

常用的大数据方案

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

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

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

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

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


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

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


这篇关于从程序员进阶到架构师,6大核心技能要领详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135851

相关文章

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

mac中资源库在哪? macOS资源库文件夹详解

《mac中资源库在哪?macOS资源库文件夹详解》经常使用Mac电脑的用户会发现,找不到Mac电脑的资源库,我们怎么打开资源库并使用呢?下面我们就来看看macOS资源库文件夹详解... 在 MACOS 系统中,「资源库」文件夹是用来存放操作系统和 App 设置的核心位置。虽然平时我们很少直接跟它打交道,但了

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

Rust 数据类型详解

《Rust数据类型详解》本文介绍了Rust编程语言中的标量类型和复合类型,标量类型包括整数、浮点数、布尔和字符,而复合类型则包括元组和数组,标量类型用于表示单个值,具有不同的表示和范围,本文介绍的非... 目录一、标量类型(Scalar Types)1. 整数类型(Integer Types)1.1 整数字

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

PyTorch使用教程之Tensor包详解

《PyTorch使用教程之Tensor包详解》这篇文章介绍了PyTorch中的张量(Tensor)数据结构,包括张量的数据类型、初始化、常用操作、属性等,张量是PyTorch框架中的核心数据结构,支持... 目录1、张量Tensor2、数据类型3、初始化(构造张量)4、常用操作5、常用属性5.1 存储(st