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

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

Spring Cloud LoadBalancer 负载均衡详解

《SpringCloudLoadBalancer负载均衡详解》本文介绍了如何在SpringCloud中使用SpringCloudLoadBalancer实现客户端负载均衡,并详细讲解了轮询策略和... 目录1. 在 idea 上运行多个服务2. 问题引入3. 负载均衡4. Spring Cloud Load

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

Go路由注册方法详解

《Go路由注册方法详解》Go语言中,http.NewServeMux()和http.HandleFunc()是两种不同的路由注册方式,前者创建独立的ServeMux实例,适合模块化和分层路由,灵活性高... 目录Go路由注册方法1. 路由注册的方式2. 路由器的独立性3. 灵活性4. 启动服务器的方式5.