作为一个Java 程序员 你应该会什么

一,JAVA架构师

1、语法:Java 程序员必须比较熟悉语法,在写代码的时候IDE 的编辑器对

某一行报错应该能够根据报错信息 知道是什么样的语法错误并且知道任何修

正。

2、命令:必须熟悉JDK 带的一些常用命令及其常用选项,命令至少需要熟

悉:appletviewer、 HtmlConverter、jar、 java、 javac、javadoc、javap、

javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么你对

java 实际上还很不了解。

3、工具:必须至少熟练使用一种IDE 的开发工具,例如Eclipse、Netbeans、

JBuilder、Jdeveloper、IDEA、JCreator 或者Workshop,包括进行工程管理、

常用选项的设置、插件的安装配置以及进行调试。

4、API:Java 的核心API 是非常庞大的,但是有一些内容笔者认为是Java

程序员必须熟悉的,否则不可能熟练的运用Java,包括:

java.lang 包下的80%以上的类的功能的灵活运用。

◆java.util 包下的80%以上的类的灵活运用,特别是集合类体系、规则 表

达式、zip、以及时间、随机数、属性、资源和Timer.

◆java.io 包下的60%以上的类的使用,理解IO 体系的基于管道模型的设计

思路以及常用IO 类的特性和使用场合。

◆java.math 包下的100%的内容。

◆java.net 包下的60%以上的内容,对各个类的功能比较熟悉。

◆java.text 包下的60%以上的内容,特别是各种格式化类。

◆熟练运用JDBC. 8)、java.security 包下40%以上的内容,如果对于安全

没有接触的话根本就不可能掌握java.

◆AWT 的基本内容,包括各种组件事件、监听器、布局管理器、常用组件、

打印。

◆Swing 的基本内容,和AWT 的要求类似。

◆XML 处理,熟悉SAX、DOM 以及JDOM 的优缺点并且能够使用其中的一种完

成XML 的解析及内容处理。

5、测试:必须熟悉使用junit编写测试用例完成代码的自动测试。

6、管理:Java 程序员必须熟悉使用ant完成工程管理的常用任务,例如工

程编译、生成javadoc、生成jar、版本控制、自动测试。

7、排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。

8、思想:必须掌握OOP 的主要要求,这样使用Java 开发的系统才能是真正

的Java 系统。

9、规范:编写的代码必须符合流行的编码规范,例如类名首字母大写,成

员和方法名首字母小写,方法名的第一个单词一般是动词,包名全部小写等,这

样程序的可读性才比较好。

10、博学:Java 程序员除了精通Java 意外,还要掌握J2EE 、Oracle 、

WebLogic、Jboss、Spring、Struts、Hibernate 等流行技术,掌握软件架构设

计思想、搜索 引擎优化、缓存系统设计、网站负载均衡、系统性能调优等实用

技术

二, 罗列一下架构知识点

作为一个Java 程序员 你应该会什么_第1张图片
作为一个Java 程序员 你应该会什么_第2张图片
作为一个Java 程序员 你应该会什么_第3张图片
作为一个Java 程序员 你应该会什么_第4张图片
作为一个Java 程序员 你应该会什么_第5张图片
作为一个Java 程序员 你应该会什么_第6张图片
作为一个Java 程序员 你应该会什么_第7张图片

我把它分为了五大专题

工程化专题

工程化专题 git git安装使用

git日常使用:fetch/pull/push/revert/rebase git分支管理git flow

作为一个Java 程序员 你应该会什么_第8张图片

Jenkins多套环境(test/pre/production)系统自动化发布

作为一个Java 程序员 你应该会什么_第9张图片

Jenkins自动发布到远程主机

MavenMaven私服搭建setting.xml文件剖析pom.xml详解Maven实用插件教学(静态代码检查、生成可执行jar包)profile使用

作为一个Java 程序员 你应该会什么_第10张图片

源码分析

源码分析 Spring源码分析

Spring IOC的实现原理Spring BeanFactory源码分析Spring AOP的实现原理及配置文件详解Spring AOP的各种应用场景分析Spring MVC与Struts对比Spring HandlerMapping详解手写实现SpringMVC框架Spring与各种框架集成原理Spring JDBC操作原理基于Spring JDBC手写ORM框架

作为一个Java 程序员 你应该会什么_第11张图片

MyBatis源码分析

MyBatis3简介MyBatis3 SqlMap那些事儿数据库连接池到底是什么MyBatis3 SessionFactory实现原理MyBatis3 配置文件详解MyBatis3 事务管理与集成浅谈HibernateMyBatis3与Hibernate框架对比Netty源码分析

作为一个Java 程序员 你应该会什么_第12张图片
作为一个Java 程序员 你应该会什么_第13张图片

NIO通信原理剖析深入了解NIO缓冲区Buffer

NIO Selector原理AIO编程Netty产生的背景以及基础入门

Netty高性能之道Netty的HTTP与Socket通信原理利用Netty搭建高性能的

WebSocket聊天室

Netty聊天室客户端架构实现Netty的编码解码

Netty的拆包粘包操作MsgPack原理讲解及各种序列化框架对比MsgPack与Netty整合

Netty HTTP通信与Spring整合Netty RPC架构Netty与各种架构整合以及Netty源码分析

性能调优

性能调优 JVMJVM内存模型JVM运行时数据区垃圾回收机制GC日志详解

根据GC日志调优系统,调优不靠碰运气!Mysql数据库优化

数据库底层数据结构索引数据存储结构 innodb详解SQL调优及原理分库、分表实现Nginx调优动静资源分离

nginx参数详解nginx + lua使用应用:ip过滤,扛DDOSTomcat调优

Tomcat源码、架构分析Tomcat具体调优参数设置Tomcat压力基准测试Tomcat NIO配置

作为一个Java 程序员 你应该会什么_第14张图片

双十一技术架构专题-九阳真经

九阳真经技术专题 秒杀系统实战

从0到1构建秒杀系统从all-in-one到分布式从1到100的优化重构分布式压测系统

作为一个Java 程序员 你应该会什么_第15张图片
作为一个Java 程序员 你应该会什么_第16张图片

最简单的单机压测压测应该关注的点如何做分布式压测分布式跟踪系统

如何梳理链路依赖如何做到优雅降级分布式配置系统

灵活配置热发布一切都是为了自动化分布式消息系统

作为一个Java 程序员 你应该会什么_第17张图片

异步化&系统隔离应对瞬时大流量分布式缓存体系

五级缓存体系热点数据处理

高性能及分布式专题

分布式专题分布式缓存技术 RedisRedis简介及安装Redis基础知识、数据类型、Keys的操作命令Redis对不同数据类型的操作命令使用Redis核心配置分析Redis持久化概述,RDB原理、AOP原理分析Redis事务操作分析以及发布订阅模式的操作使用Redis集群搭建,一步步教你如何搭建Redis集群Redis主从复制原理分析Redis的优化建议、最佳实践Redis的JAVA客户端使用Redis集成Spring的使用MemcachedMemcached的介绍和安装、基本配置、常用运维命令

Memcached的工作原理Memcached的常用操作命令使用分析理解Memcached的数据存储方式,理解Slab Allocator、新建Item分配内存的过程Memcached数据存储方式的缺点;分析Memcached的数据过期方式Memcached内存调优建议、常见问题的解决方案Memcached的典型应用场景、不适用的场景Memcached基于Java客户端的使用分布式接口技术

DubboDubbo的发展过程及基本原理Dubbo控制台及监控平台的搭建使用快速搭建Dubbo服务框架Dubbo常用配置的使用及分析Dubbo注册中心原理、整合Zookeeper实现服务动态发现Dubbo多注册中心、多协议支持Dubbo服务分组、服务版本号控制Dubbo并发控制、连接控制Dubbo负载均衡、集群容错使用和分析Dubbo配置文件优先级别Dubbo和DubboX的比较以及DubboX的使用介绍ThriftThrift基本介绍、

如何安装配置ThriftThrift的数据类型、基本类型、结构体类型、容器类型介绍通过Thrift搭建服务端客户端通信Thrift数据传输协议分析

Restful什么是RestfulRestful的起源如何实现一个满足Restful架构的设计Restful实战

分布式服务协调 技术

Zookeeper 什么是Zookeeper、Zookeeper的安装配置、常用命令使用Zookeeper节点特性以及节点属性分析如何搭建zookeeper的集群环境Zookeeper客户端的使用:zkclient/curatorZookeeper的实现原理分析Zookeeper实战,共享锁、

master选举Consoul Eureka 微服务架构Spring BootSpring Boot概述、如何快速搭建一个Spring Boot的项目Spring 常用注解回顾Spring Boot核心配置文件分析Spring Boot四大神器使用剖析自定义Starter、自定义ActuatorSpring Boot 实现原理分析Spring Boot 数据存储配置、缓存配置、日志框架配置

DockerDocker原理分析入门介绍及安装配置网络模型常用命令讲解自己构建Docker镜像仓库管理实际案例使用搭建微服务架构Docker集群及编排工具分布式消息技术

ActiveMQActiveMQ功能简介、安装配置使用通过ActiveMQ实现简单的消息收发测试JMS的基本概念、PTP、Pub/Sub域分析JMS消息结构分析、理解JMS可靠性机制演示Topic持久化接收与非持久化接收理解Broker,Java内嵌Broker启动ActiveMQ结合Spring的使用理解ActiveMQ的传输协议ActiveMQ消息持久化方式(jdbc/KahaDB/Memory)及特点ActiveMQ集群(静态网络连接、动态网络连接)ActiveMQ的高级特性分析

KafkaKafka的基本介绍、安装配置使用Kafka的设计原理分析利用Kafka快速搭建一个消息发送接收程序Kafka数据传输的事务特点Kafka消息存储格式Kafka的集群部署配置Kafka消息分组、消息消费原理

分布式事务 分布式事务的基本介绍常用的分布式技术说明理解2PC和3PC协议分布式事务实践演练分布式环境session共享 什么时候需要用到Session共享Session共享的常用解决方案

高性能专题高性能web容器nginx Nginx简介、安装和基本配置Nginx的进程模型分析深入理解Nginx核心配置文件Nginx http模块功能配置及使用Nginx location定位功能的优先级Nginx 反向代理、负载均衡的配置Nginx 如何实现动静分离Nginx rewrite模块的使用Nginx 的使用建议Keepalived+nginx实现nginx高可用数据库性能

作为一个Java 程序员 你应该会什么_第18张图片

分库分表的基本概念mysql的主从配置分库分表的基本规则Mycat的安装使用Mycat配置深入分析及实践Mycat结合Mysql实现读写分离

MongoDBMongoDB是什么?MongoDB安装配置、及常用命令MongoDB增删改查的基本操作MongoDB查询操作命令使用深入理解MongoDB文档存储机制MongoDB索引使用分析MongoDB副本集配置及基本原理分析MongoDB分片功能介绍、分片和复制、片键的选择MongoDB数据备份、数据恢复MongoDB于spring集成使用

你可能感兴趣的:(作为一个Java 程序员 你应该会什么)