从程序员进阶到架构师,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

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input