阿里架构师八年Java开发经历自述,在“互联网寒冬”下不断进步
做JAVA有8年的时间了,我从高一就开始接触JAVA,家里亲戚有从事这方面工作经常给分享这方面的职业发展,自己对编程也是非常感兴趣,今天讲述一下我是怎么学习JAVA的,此文章不可以太短,显得没有诚意,也不可以太长,那样很多人看不下去,精简了如下文字:
刚开始学习JAVA的时候是看书,一页页的看书,因为身边有一个好的资源,有问题可以问亲戚,学起来相对容易点,但是我后来发现看JAVA的零基础书籍,很难看下去,而且很多专业的东西对于一个新手根本就看不懂,没有什么效率。刚开始放弃了看书,但是我在把JAVA都学过完了之后,看技术性的书,倒是增进不少。
后来是跟着马士兵的视频学习,那个视频算是经典的,但是现在看的话是多少有些老了,学JAVASE的时候感觉很多地方根本就理解不够,视频上的东西可以看得懂。但是动手自己做的时候,根本无从下手,那个时候因为年纪小,就想放弃了,但是总是到了第二天早上,又想学了,真的是睡了一觉就好了。
记得刚开始搭建环境的时候,浪费了好长时间,百度之后也不会,还是问了我亲戚,一下子就把环境搭建好了,现在看很多新手好像跟我之前差不多,一个环境搭建一天都搞不定,这个就是新手刚接触的时候,比较困难,但是一定要有信心,万事开头难。
到了大二的时候,我对于JAVA了解已经很多了,虽然这期间是断断续续的,中间还有一个高考,大二开始学习嵌入式开发,参加比赛在全国拿了一个十三名,这个算是一个小骄傲,然后在大二的时候开始在猪八戒接网页制作的兼职,一个小静态界面能赚个几百块钱。
我个人觉得学习JAVA必须的具备的几个条件:
第一:学习能力。什么是学习能力,就是当一个陌生东西给你了,是否有学习他的欲望,自己琢磨的心思,学习能力非常重要,如果一个人没有学习能力的话,任何东西都很难学。
第二:正常人的思维逻辑,JAVA不是每一个人都能学会的,因为JAVA的逻辑比较强,有一些人天生逻辑就差,比如一道数学题,有的同学马上懂,有的同学需要老师讲几遍,但是有的同学老师咋讲都不懂。
第三:必须而且一定有一个老师,因为如果没有人给你解答问题,会浪费很多时间,而且大多数问题对于一个新手来说是很难自己解决的,可能明白人的一句话,你需要一天的时间。
第四:目标,坚持下去的一颗心,因为学习JAVA不容易,而且现在转行的也多,工资高,最后能拿高薪的都是刚开始没日没夜的熬过来的,所以坚持非常重要,而为什么学习JAVA成了主要因素,就是坚持下去的动力,比如:挣钱就是动力。
新手按照这个学习路线:
第一阶段:HTML CSS 静态布局
第二阶段:必须要掌握的JS/JQ JS尤为重要,也是最难的
第三阶段:JAVA的基础,JAVASE核心技术,也是JAVA的魂和JAVA紧紧相连的数据库。
第四阶段:JSP相关技术
第五阶段:JAVAEE企业级开发
给新手三个建议:
第一:学习Java不可以依赖老师,这样你只会成为废物,要知道举一反三,目前我见过很多依赖老师的学生,这样的后果就是自己没有解决问题的能力,也没有自主学习的能力,面试不能通过,找工作会非常难,因为学习开发就是锻炼这种自我学习的能力。
第二:要有专业人士的指导,尤其是学习Java找工作的,不要妄想自己一个人自学Java能找到工作,现在非常难,如果没有一个明白人帮你解决一下问题,会有非常多的弯路,中间很容易放弃,学习的不专业不说,最重要是浪费时间。
第三:一个好的心态和一个坚持的心很重要,很多冲着高薪的人想学习Java,但是能学到最后的没有几个,遇到困难就放弃了,这种人到处都是,就是因为有的东西难,所以他的回报才很大,我们评判一个java开发者是什么水平,就是他解决问题的能力有多强。
下面是我整理的一些Java学习进阶资料,从P5-P8架构的Java学习内容,整理成PDF资料给大家
有需要的伙伴可以+VX:q1472750149 免费获取
Java基础部分
- Java概述
- 基础语法
- 面向对象
- 类与接口
- 变量与方法
- 内部类
- 重写与重载
- 对象相等判断
- 值传递
- Java包
- IO流
- 反射
- 常用API
- 集合容器概述
- Collection接口
- HashMap
- 多线程
- Java异常
- Tomcat
- 并发编程
- Java基础面试题
JVM 部分
- JVM 的主要组成部分及其作用
- 堆栈的区别
- 处理并发安全问题
- 内存溢出异常
- JVM内存模型,GC机制和原理
- 双亲委派
- 深拷贝和浅拷贝
- JVM性能调优
- 线程
- JVM内存区域
- JVM运行时内存
- 垃圾回收与算法
- JAVA四种引用类型
- GC分代收集算法VS分区收集算法
- GC垃圾收集器
- JAVA IO/NIO
- JVM类加载机制
- JVM面试高频题
多线程部分
- 线程,程序、进程的基本概念。以及他们之间关系
- 线程的基本状态
- 线程的创建方式
- 线程池原理
- 线程的生命周期
- 线程安全
- volatile关键字的用法:使多线程中的变量可见
- volatile、ThreadLocal的使用场景和原理
- synchronized、volatile区别
- synchronized锁粒度、模拟死锁场景
- Java并发和并行
- 怎么有效提高并发量
- 进程通讯的方式:消息队列,共享内存,信号量,socket通讯等
- 线程通讯
- 并发、同步的接口或方法
- 同步锁与死锁
- 进程调度算法
- CAS
- AQS
- NIO
- 多线程面试高频题
MySQL部分
- 数据库基础知识
- 数据类型
- 引擎
- 索引
- 事务
- 锁
- 视图
- 存储过程与函数
- 触发器
- 常用SQL语句
- SQL优化
- 数据库结构优化
- MySQL锁:悲观锁、乐观锁、排它锁、共享锁、表级锁、行级锁
- 分布式事务的原理2阶段提交,同步异步阻塞非阻塞
- 数据库事务隔离级别,MySQL默认的隔离级别
- Spring如何实现事务
- JDBC如何实现事务
- 分布式事务实现
- SQL的整个解析、执行过程原理、SQL行转列
- 红黑树的实现原理和应用场景
- MySQL分表自增ID解决方案
- 理解分布式id生成算法SnowFlake
- MySQL索引背后的数据结构及算法原理
- MVCC
- MySQL索引原理之聚簇索引
- 关系型和非关系型数据库区别
- MySQL面试高频题
Spring部分
- Spring lOC
- Spring AOP的原理
- Spring AOP两种代理方式
- Spring 如何保证 Controller 并发的安全?
- Spring 中用到哪些设计模式?
- Spring IOC的理解,其初始化过程?
- Spring 的事务管理
- Spring MVC概述Spring概述
- Spring 控制反转(IOC)
- Spring 注解
- Spring 数据访问
- Spring面向切面编程(AOP)什么是AOP
- SpringMVC 面试题
- SpringMVC 原理
- Spring 数据访问
- Spring 原理
- Spring 核心组件
- Spring面试高频题
SpringBoot部分
- Spring Boot概述配置
- 安全
- 比较一下 Spring Security 和 Shiro 各自的优缺点
- Spring Boot 解决跨域问题
- 监视器
- 整合第三方项目
- Spring Boot 实现异常处理
- Spring Boot 特性
- Spring Boot 原理
- Spring Boot 实现定时任务
- Spring Boot比Spring做了哪些改进?
- Spring Boot热加载
- Spring Boot设置有效时间和自动刷新缓存,时间支持在配置文件中配置
- hibernate和ibatis的区别
- 讲讲mybatis的连接池
- Spring Boot经典面试题
SpringCloud部分
- 什么是Spring Cloud
- 为什么需要学习Spring Cloud
- Spring Cloud发展前景
- Spring Cloud对比下Dubbo,什么场景下该使用Spring Cloud?
- Spring Cloud熔断机制介绍
- CAP原理和BASE理论
- 分布式事务、分布式锁
- 设计目标与优缺点
- 整体架构
- Spring Cloud Config
- Spring Cloud Netflix
- Spring Cloud Bus
- Spring Cloud Sleuth
- Spring Cloud Stream
- Spring Cloud Task
- Spring Cloud OpenFeign
- Spring Cloud的版本关系
- SpringBoot和SpringCloud的区别?
- 服务注册和发现是什么意思?Spring Cloud 如何实现?
- 负载平衡的意义什么?
- 什么是 Hystrix?它如何实现容错?
- 什么是 Netflix Feign?它的优点是什么?
- Spring Cloud断路器的作用
- Spring Cloud面试题
Dubbo部分
- 基础知识
- 架构设计
- 注册中心
- 集群配置
- 通信协议
- 设计模式
- 运维管理
- SPI
- 分布式系统原理
- Dubbo完整的一次调用链路介绍
- Dubbo支持几种负载均衡策略?
- Dubbo 支持哪些协议,每种协议的应用场景,优缺点?
- Dubbo超时时间怎样设置?Dubbo有些哪些注册中心?
- Dubbo 集群的负载均衡有哪些策略Dubbo是什么?
- Dubbo的主要应用场景?Dubbo的核心功能?Dubbo的核心组件?
- Dubbo 服务注册与发现的流程?
- Dubbo 的架构设计?
- Dubbo框架设计—共划分了10个层:Dubbo的服务调用流程?
- Dubbo支持哪些协议,每种协议的应用场景,优缺点?
- Dubbo有些哪些注册中心?
- 为什么需要服务治理?
- Dubbo 与 Spring 的关系
- Dubbo 和 Dubbox 之间的区别
- Dubbo 和 Spring Cloud 的关系
- Dubbo 和 Spring Cloud 的区别
Mybatis部分
- JPA原理
- MyBatis简介
- Mybatis 缓存
- Mybatis的一级缓存原理(sqlsession级别)
- MyBatis缓存
- MyBatis数据源与连接池
- MyBatis的解析和运行原理
- Spring MVC运行流程
- 什么是MyBatis?
- 讲下MyBatis 的缓存
- Mybatis 是如何进行分页的?分页插件的原理是什么?
- 简述 Mybatis 的插件运行原理,以及如何编写一个插件?
- 为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
- MyBatis 与 Hibernate 有哪些不同?
- MyBatis 的好处是什么?
- 简述 Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系
Redis部分
- Redis概述
- 数据类型
- 持久化
- 过期键的删除策略
- 内存相关
- 分区
- 分布式问题
- 其他问题
- 消息中间件如何保证消息的一致性
- 如何进行消息的重试机制?
- Redis数据类型
- Redis集群如何同步
- Redis的数据添加过程是怎样的:哈希槽
- Redis的淘汰策略有哪些
- Redis集群基础
- Redis Cluster主从模式
- Redis为什么这么快?
- Redis采用多线程会有哪些问题?
- Redis支持哪几种数据结构Redis跳跃表的问题
- Redis是单进程单线程的,如何能够高并发?
- Redis如何使用Redis实现分布式锁?
- Redis分布式锁操作的原子性,Redis内部是如何实现的?
网络部分
- 计算机网络体系结构
- TCP/IP四层体系结构
- TCP/IP协议族常见面试题
- Socket通信,以及长连接,分包,连接异常断开的处理
- http中,get post的区别
- HTTP报文内容
- 说说浏览器访问http://www.taobao.com,经历了怎样的过程
- HTTP协议、HTTPS协议,SSL协议及完整交互过程
- Ping过程原理详解
- TCP/IP协议详解笔记——ARP协议和RARP协议
- DNS域名解析的过程
- Http会话的四个过程
- 网络7层架构
- TCP/IP原理
- TCP三次握手/四次挥手
- HTTP原理
- CDN原理RPC
- Znode有四种形式的目录节点
- 负载均衡
- 四层负载均衡vs七层负载均衡
- 负裁均衡算法/策略
- LVS
- Keepalive
- Nginx反向代理负载均衡
Linux部分
- 什么是Linux
- Unix和Linux有什么区别?
- 什么是Linux内核?
- Linux的基本组件是什么?
- Linux的体系结构
- BASH和DOS之间的基本区别是什么?
- Linux开机启动过程?
- Linux系统缺省的运行级别?
- Linux 使用的进程间通信方式?
- Linux 有哪些系统日志文件?
- Linux系统安装多个桌面环境有帮助吗?
- 什么是交换空间?
- 什么是root帐户什么是LILO?
- 什么是CLI?
- 什么是GUI?
- 开源的优势是什么?
- GNU项目的重要性是什么?
- 磁盘、目录、文件
- 安全
- Shell
- 磁盘管理命令cd命令
- swap分区
- overcommit_memory
- Linux系统下查看CPU、内存负载情况
- 经典面试题
消息中间件部分
- 为什么使用MQ?
- 消息队列有什么优缺点?
- RabbitMQ有什么优缺点?
- 你们公司生产环境用的是什么消息中间件?
- Kafka、ActiveMQ、RabbitMQ、RocketMQ有什么优缺点?
- MQ有哪些常见问题?如何解决这些问题?
- 什么是RabbitMQ?
- Rabbitmq的使用场景
- RabbitMQ基本概念
- RabbitMQ的工作模式
- 如何保证RabbitMQ消息的顺序性?
- 消息如何分发?
- 消息怎么路由?
- 消息基于什么传输?
- 如何保证RabbitMQ消息的可靠传输?
- 如何保证消息不被重复消费?或者说,如何保证消息消费时的幂等性?
- 设计MQ思路
- 消息中间件如何保证消息的一致性如何进行消息的重试机制?
- 传递保证语义
- 生产者的"Exactly once"语义方案
- 消费者的"Exactly once"语义方案
- ISR集合
- 请说明什么是Apache Kafka?
- 请说明什么是传统的消息传递方法?
- 请说明Kafka相对传统技术有什么优势?
- 在Kafka中broker的意义是什么?
- Kafka服务器能接收到的最大信息是多少?
- 解释Kafka的Zookeeper是什么?我们可以在没有Zookeeper的情况下使用Kafka吗?
- 解释Kafka的用户如何消费信息?
- 解释如何提高远程用户的吞吐量?
Zookeeper部分
- ZooKeeper是什么?
- ZooKeeper提供了什么?
- Zookeeper文件系统
- Zookeeper怎么保证主从节点的状态同步?
- 四种类型的数据节点Znode
- Zookeeper Watcher机制-数据变更通知
- 客户端注册Watcher实现
- 服务端处理Watcher 实现
- 客户端回调Watcher
- ACL权限控制机制
- Chroot特性
- 会话管理
- 服务器角色
- Zookeeper 下 Server 工作状态数据同步
- zookeeper是如何保证事务的顺序—致性的?
- 分布式集群中为什么会有Master主节点?
- ZK节点宕机如何处理?
- Zookeeper有哪几种几种部署模式?
- Zookeeper 的java客户端都有哪些?
- Chubby 是什么,和zookeeper 比你怎么看?
- 说几个zookeeper '常用的命令。
- ZAB和Paxos算法的联系与区别?
- Zookeeper的典型应用场景Zookeeper都有哪些功能?
- 说一下Zookeeper的通知机制?
- Zookeeper和 Dubbo的关系?
- Zookeeper集群之间如何通讯
- Zookeeper面试题
Netty部分
- Netty简介
- Netty高性能设计
- Netty架构设计
- Netty面试题
- Netty是什么?
- Netty特点是什么?
- Netty的优势有哪些?
- Netty的应用场景有哪些?
- Netty高性能表现在哪些方面?
- BIO、NIO和AIO的区别?
- NIO的组成?
- Netty的线程模型?
- TCP粘包/拆包的原因及解决方法?
- 什么是 Netty 的零拷贝?
- Netty 中有哪种重要组件?
- Netty 发送消息有几种方式?
- 默认情况 Netty 起多少线程?何时启动?
- 了解哪几种序列化协议?
- 如何选择序列化协议?
- Netty支持哪些心跳类型设置?
- Netty和Tomcat的区别?
- NIOEventLoopGroup源码?
- Netty 原理
- Netty RPC 实现
- Netty经典面试题
大数据部分
- Hadoop
- SPARK 概念
- SPARK 核心架构
- SPARK 核心组件
- SPARK 编程模型
- SPARK 计算模型
- SPARK 运行流程
- SPARK RDD流程
- SPARK RDD
- Storm
- 集群架构
- YARN
- 负载均衡的原理
- 六大Web负载均衡原理与实现
- http重定向
- DNS负裁均衡
- 反向代理负载均衡
- IP负载均衡(LVS-NAT)
- 直接路由(LVS-DR)
- IP隧道(LVS-TUN)
- Tomcat并发
- Exchange类型
- base概念
- 列式存储
- Hbase核心概念
- Hbase核心架构
- Hbase的写逻辑
- HBase vs Cassandra
- CLH队列
算法与数据结构部分
- 红黑树
- 红黑树在STL上的应用
- AVLtree
- 二叉搜索树
- 红黑树的定义
- B树定义
- B+树
- Trie树((字典树)
- 贪心算法和动态规划的区别
- BitMap从字面的意思
- Bitmap应用
- Bitmap排序复杂度分析
- BitMap算法流程
- BitMap算法评价
- 七大查找算法
- —致性算法
- JAVA算法
- 数据结构
- 加密算法
- 顺序查找
- 二分查找
- 插值查找
- 斐波那契查找
- 树表查找
- 分块查找
- 哈希查找
项目实战部分(完整项目***+视频+源码)
- 日志
- Slf4j
- Log4j
- LogBack
- 以网约车为例,切入分布式项目
- 互联网高并发项目需求分析
- 高并发场景业务漏洞,正确理解技术赋能业务
- 实际生产项目中高并发微服务架构设计
- 合理制定业务架构图支持高并发和扩展性挑战
- 如何在项目开发中沉淀中台能力
- 项目拆解技术选型以及技术架构图
- 网约车业务中的派单功能设计
- 网约车中开放平台接口设计
- CAP定理在实际生产中的应用
- 网约车中数据—致性的保障上:分布式锁
- 网约车中数据—致性的保障上:分布式事务