JAVA最全面的一条自学路线,2024必看

| — | — | — | — | — |

| 自定义注解 | 熟练 | 学会自己写一个注解出来 | 工作会用(偶尔) | |

| 实操 | 亲手自定义注解 | 实操 | 工作会用 | |

| 元注解 | @Repeatable、@Inherited 、@Target、@Documented、@Retention | 熟悉 | 工作会用 | |

| 预置的注解 | @Override

、@SafeVarargs、@Deprecated

、@SuppressWarnings

、@FunctionalInterface | 熟练 | 工作会用 | |

JUC必备多线程


(个人建议juc熟悉为主,不用学得特别深,但是可以用心学好CAS算法和锁装逼最牛,面试官都服你的技术,这是秘密,标注蓝色用点心学)

| 线程 | # 进程和线程的理论 | 是并发编程中很常用的工具类,线程池,异步 IO 和轻量级任务框架都有涉足\原子性

\线程按序交替\线程八锁\调度\线程的安全问题\ 线程的生命周期\线程优先级 | 理解 | 面试会问 |

| — | — | — | — | — |

| 实现多线程 | 实现多线程四种方式1、继承Thread类\2、实现Runnable接口\3、实现Callable接口\4、使用ExecutorService、Callable、Future实现 | 熟练 | 面试必问 | |

| # 同步代码块 | # synchronized实操和理论 | 熟练 | 工作会用、面试会问 | |

| Lock 同步锁 | 和synchronized区别、ReentrantLock.lock(),ReentrantLock.tryLock(),

ReentrantLock.tryLock(long timeout,TimeUnit unit), | 熟练 | 面试会问\工作会用 | |

| volatile 关键字 | 内存模型中的可见性、原子性和有序性\Volatile原理 | 理解 | 面试会问 | |

| CAS算法、原子变量 | CAS算法incrementAndGet、compareAndSet、compareAndSwapInt、Atomic.cmpxchg、compareAndSwapInt.native | 原子变量AtomicInteger\AtomicReference\FieldUpdater\ABA问题与解决 | 理解 | 面试会问 |

| ConcurrentHashMap 锁 | 线程安全与不安全、数据结构、锁分段 | 熟练 | 面试会问 | |

| CountDownLatch | 工具类的主要犯法CountDownLatch(int count)、countDown()、await()、getCount()

、await(long timeout, TimeUnit unit) | 熟练 | 面试会问 | |

| Callable | Callable接口的实现实操 | 熟练 | 面试必问 | |

| ReadWriteLock 读写锁 | 熟练 | 熟练 | 面试必问 | |

| 线程池 | newCachedThreadPool、newFixedThreadPool、newSingleThreadExecutor | 熟练 | 面试必问 | |

| 线程八锁 | 1. 两个普通同步方法,两个线程,标准打印, 打印?\2. 新增 Thread.sleep() 给 getOne() ,打印?\3. 新增普通方法 getThree() , 打印?\4. 两个普通同步方法,两个 Number 对象,打印?\5. 修改 getOne() 为静态同步方法,打印?\6. 修改两个方法均为静态同步方法,一个 Number 对象?\7. 一个静态同步方法,一个非静态同步方法,两个 Number 对象?\8. 两个静态同步方法,两个 Number 对象? | 熟练 | 面试必问 | |

| 线程调度 | 抢占式调度\协同式调度 | 熟练 | 面试必问 | |

网络编程


(学习建议实操一遍为主,这玩意就是个理解概念但是又不得不重视)

| 网络编程 | 理论知识 | IP\协议\网络协议\HTTP协议\UDP协议\TCP协议\常见网络协议\URL\域名\端口\OSI参考模型\三次握手\常用协议 | 熟练 | 工作会用 |

| — | — | — | — | — |

| UDP协议 | {发送

-DatagramSocket、DatagramPacket对象、Socket发送、释放}{接收-DatagramSocket、DatagramPacket、接受数据、解析数据包对象、释放} | 实操过 | 面试会问(偶尔) | |

| TCP协议 | {发送-ServerSocket 、server.accept()、获取客户端的输出流、输出数据 、关闭释放}{接收-Socket 、InputStream 、接收到数据、数据输出 、关闭释放} | 实操过 | 面试会问(偶尔) | |

| Soket通讯 | 熟悉 | 明白原理和理论 | 工作会用(偶尔) | |

| OSI | 物理层\数据链路层\网络层\传输层\会话层和表示层\应用层 | 熟悉 | 学习会用 | |

HTML


(学习建议必学会)

| HTML | 理论 | HTML、HTML发展、W3C、格式<标签名 属性名=‘属性值’ 属性名=‘属性值’ …/> | 最好到熟练,到时候不求人 | 工作会用 |

| — | — | — | — | — |

| 常用标签 | 、

、、、、、

|

CSS


(学习建议必学)

| CSS | 理论知识 | 继承性和层叠性、权重计算、内联标签与块标签基础理论 | 熟练 | 学习会用 |

| — | — | — | — | — |

| 选择器 | 类别选择器、标签选择器、ID选择器、后代选择器、子选择器、伪类选择器、通用选择器、群组选择器等 | 熟悉 | 工作会用 | |

| Css样式 | [内部](http://www.so.com/s?q=内部&ie=utf-8&src=internal_wenda_recommend_textn" \t “https://wenda.so.com/q/_blank)样式,行内样式和[外部样式](http://www.so.com/s?q=外部样式表&ie=utf-8&src=internal_wenda_recommend_textn” \t "https://wenda.so.com/q/_blank) | 熟练 | 工作会用 | |

| 边框 | border-style(none\dotted\dashed\solid

ridge\inset\double\outset\groove) | 熟练 | 工作会用 | |

| 列表 | ul {list-style-type : square} | 熟练 | 工作会用 | |

| 鼠标效果 | Cursor(crosshair

\help\wait) | 熟练 | 工作会用 | |

| 浮动float | float(left\right\none\inherit) | 熟练 | 工作会用 | |

| 定位 | Position([static](https://www.runoob.com/css/css-positioning.html" \l “position-static)[relative](https://www.runoob.com/css/css-positioning.html” \l “position-relative)[fixed](https://www.runoob.com/css/css-positioning.html” \l “position-fixed)[absolute](https://www.runoob.com/css/css-positioning.html” \l “position-absolute)[sticky](https://www.runoob.com/css/css-positioning.html” \l "position-sticky)) | 熟练 | 工作会用 | |

| 文本排版 | 实操 | 熟练 | 工作会用 | |

| 文本颜色 | Color(#… …) | 熟练 | 工作会用 | |

| 字体样式 | Serif 字体\Sans-serif 字体\Monospace 字体\Cursive 字体\Fantasy 字体 | 熟练 | 工作会用 | |

| 选择器 | 熟练 | 熟练 | 工作会用 | |

| CSS优先级 | CSS[样式](http://www.so.com/s?q=样式&ie=utf-8&src=internal_wenda_recommend_textn" \t “https://wenda.so.com/q/_blank)在[浏览器](http://www.so.com/s?q=浏览器&ie=utf-8&src=internal_wenda_recommend_textn” \t "https://wenda.so.com/q/_blank)中被解析的先后顺序理论要清晰 | 熟练 | 工作会用 | |

| 背景颜色、背景图片与列表样式 | background-color、background-image

、list-style-type | 熟练 | 工作会用 | |

| CSS盒模型 | 盒子模型与布局 | 熟练 | 工作会用 | |

| float浮动 | float浮动属性、浮动的意义、清除浮动的方法 | 熟练 | 工作会用 | |

| background | background系列属性、css精灵 | 熟练 | 工作会用工作会用 | |

| 超级链接 | 超级链接的伪类、导航条 | 熟练 | 工作会用 | |

| DIV+CSS布局 | 浮动

、常规流式布局、定位布局 | 熟练 | 工作会用 | |

JavaScript


(学习建议必学)

| js | 基本语法 | Js类型、运算符、控制语句、数组、函数、对象、函数的使用 | 熟练 | 工作会用 |

| — | — | — | — | — |

| 流程控制 | for\ if\switch | 跟java的流程控制一样 | 工作会用 | |

| 事件绑定/触发 | 事件绑定bind和两种触发trigger 1.分开触发;2.一次性触发多个。事件冒泡和捕获 | 熟练 | 工作会用 | |

| DOM操作 | getElementById、getElementsByName、getElementsByTagName、getElementsByClassName、getAttribute、setAttribute、createElement、createAttribute、createTextNode、createAttribute、appendChild、insertBefore、removeChild、chlidren、chilidNodes、parentNode、firstChild、lastChild、nextSibling 、previousSibling、innerHTML、innerText | 熟练 | 工作会用 | |

| NAN null nudefined | NAN null nudefined区别和理论 | 熟练 | 工作会用 | |

| json | json存储和传输数据的格式 | 熟练 | 工作会用 | |

| 三种使用范围 | 内联式、外联式、外链式 | 熟练 | 工作会用 | |

| 变量、常量 | var 变量名 = 值;

const 常量名 = 值; | 熟练 | 工作会用 | |

| 数据类型 | 基本类型、复合类型 | 熟练 | 工作会用 | |

| 数组 | var myArray=new Array();

var cars=[“a”,“b”,“c”]; | 熟练 | 工作会用 | |

| string类型 | new String(s);方法

{charAt()concat()fontsize()indexOf()search()sub()substr()valueOf()toString()} | 熟练 | 工作会用 | |

| 运算符 | 乘法*、加法+、赋值=、除法/、系数%、减法-、递加++、递减– | 熟练 | 工作会用 | |

| 注释 | 单行注释以 // 开头,

多行注释以/开头以 /结尾。 | 熟练 | 工作会用 | |

| 内置函数 | confirm()\eval()\alert()

isNaN()\parsetFloat(" “) \parseInt(” ")\prompt() | 熟练 | 工作会用 | |

| 自定义函数 | function fn(){} | 熟练 | 工作会用 | |

| DOM对象 | document实操 | 看上面DOM操作 | 工作会用 | |

| BOM对象 | windows实操 | 熟练 | 工作会用 | |

| 内置对象 | window对象、下拉对象 | 熟练 | 工作会用 | |

| 原型prototype | 原型理论、原型扩展、实例化 | 熟练 | 工作会用 | |

jQuery


(学习建议必学)

| jQuery | jQuery理论 | JavaScript类库、函数入口、选择器、事件、操作DOM对象

等 | 熟悉 | 工作会用 |

| — | — | — | — | — |

| 核心函数 | jQuery(),$(“.class”) | 精通 | 工作会用 | |

| jQuery选择器 | 元素选择器\属性选择器\CSS 选择器 | 精通 | 工作会用 | |

| jQuery文档处理 | 插入append、删除empty()、删除 remove()、复制clone()、替换replaceWith()、查找eq(index)、parent()、next() | 精通 | 工作会用 | |

| jQuery事件 | 基础事件、复合事件、事件冒泡、事件对象的属性 | 熟练 | 工作会用 | |

| jQuery遍历 | ( " l i " ) . e a c h ( f u n c t i o n ( ) a l e r t ( (“li”).each(function() alert( (“li”).each(function()alert((this).text())

}); | 熟练 | 工作会用 | |

| 函数入口 | ( f u n c t i o n ( ) ) ; < b r > < b r > (function(){ });

(function());<br><br>(document).ready(function(){ }); | 精通 | 工作会用 | |

| jQuery对象 | var person = new Object();

var person = {}; | 精通 | 工作会用 | |

| 选择器 | 表单选择器、基本选择器、层次选择器、内容过滤选择器、子元素过滤选择器、表单对象属性过滤选择器 | 精通 | 工作会用 | |

| 动画效果 | 显示和隐藏、淡入和淡出、 改变元素 | 熟练 | 工作会用 | |

| 操作DOM | css-dom、操作样式、查询、操作节点、操作属性、节点遍历 | 熟练 | 工作会用 | |

| 表单验证 | | 精通 | 工作会用 | |

| 常用方法 | data(),each()

serialize(),bind() | 熟练 | 工作会用 | |

| ztree | zTree(setting, [zTreeNodes]) | 熟练 | 工作会用 | |

Ajax


(学习建议必学)

| Ajax | 理论 | XMLHttpRequest\基本AJAX方法\同步&异步\JSON转换\跨域\JSON语法 | 熟悉 | 面试会问,工作会用 |

| — | — | — | — | — |

| Get请求 | Get实操 | 精通 | 工作会用 | |

| Post请求 | Post实操 | 精通 | 工作会用 | |

| 同步和异步 | async:false;

async:true | 实操精通 | 精通 | |

| XMLHttpRequest | 实操创建XMLHttpRequest对象使用 | 熟悉 | 工作会用(偶尔) | |

| 基本AJAX方法 | jQuery.ajax();$.ajax(); | 精通 | 精通 | |

| 底层$.ajax | 这是理论知识看看文章就可以了 | 熟悉 | 学习会用 | |

| JSON语法 | {属性名:属性值,属性名:属性值…} | 精通 | 工作会用 | |

| JSON转换 | JSON.stringify(jsonObj);JSON.stringify(jsonObj);

JSON.parse(jsonStr);$.parseJSON(jsonStr);

eval(“(” + jsonStr + “)”); | 精通 | 工作会用 | |

| Ajax跨域问题 | 这是100%遇到的问题,百度相关文章学习一下 | 熟悉 | 面试会问,工作会用 | |

XML


(学习建议熟悉,学习会用。工作少不了的配置文件,减轻学习压力以熟悉为主

,这一块什么技术含量的,只要实操dom解析xml两边就会了)

| XML | 结构 | XML文档结构 | 熟悉 | 学习和框架会用 |

| — | — | — | — | — |

| 语法 | XML基本语法 | 熟练 | 学习和框架会用 | |

| 解析xml | AX,DOM,dom4j,jdom,commons-digester | 熟悉 | 学习和框架会用 | |

| 节点操作 | 实操解析两遍就会了,SelectNodes方法使用 | 熟悉 | 学习和框架会用 | |

JDBC


(学习建议必学)

| JDBC | Connection类 | 获取数据库连接 | 熟练 | 学习会用 |

| — | — | — | — | — |

| DriverManager类 | 驱动原理 | 熟练 | 学习会用 | |

| Statement类 | 学会操作和原理 | 熟练 | 学习会用 | |

| ResultSet类 | 封装 | 熟练 | 学习会用 | |

| 增删改查 | 实现CRUD的操作 | 必须精通 | 学习会用,工作会用 | |

| PreparedStatement类 | 预处理对象实现CRUD(增删改查) | 熟练 | 学习会用 | |

| JDBC事务管理 | 事务机制 | 精通 | 学习会用,工作会用 | |

| 连接池 | druid连接池,c3p0连接池 | 熟练 | 学习会用,工作会用,面试会问 | |

| JDBCTemplate的使用 | 学会使用 | 熟练 | 工作会用(偶尔) | |

| DBUtils | 利用DBUtils编写通用 DAO | 熟练 | 学习会用,工作会用(偶尔) | |

| Map封装 | Map封装一条记录_Map和List封装多条记录 | 熟练 | 学习会用,工作会用 | |

| 分页 | 分页的实现 | 熟练 | 工作会用 | |

MySQL


(学习建议必学,标注蓝色的是重点)

| MySQL | 概念 | DDL、DML、DQL、DCL数据库软件,理论熟悉 | 熟练 | 面试会问 |

| — | — | — | — | — |

| insert | 数据的添加 | 精通 | 工作会用 | |

| delete | 数据的删除 | 精通 | 工作会用 | |

| update | 数据的修改 | 精通 | 工作会用 | |

| select | 查询(含分页,分组,排序,带函数,子查询等) | 精通 | 工作会用,面试会问 | |

| 多表关系 | 一对一、一对多、多对多 | 精通 | 工作会用 | |

| 三大范式 | 1确保每列的原子性,2确保表中的每列都和主键相关,3确保每列都和主键列直接相关,而不是间接相关 | 精通 | 工作会用,面试会问 | |

| 外键 | 建表时候添加外键、动态添加外键 | 熟练 | 工作会用 | |

| 数据库备份 | mysqldump工具备份,mysqlhotcopy工具备份,表的导出和导入、mysqlbinlog恢复数据 | 熟练 | 工作会用 | |

| 事务 | {事务的基本要素:原子性、一致性、隔离性、持久性}{事务的并发问题:脏读、不可重复读、幻读} | 精通 | 工作会用 | |

| select(增) | 数据的查询,分页,排序,分组,条件,外连接,内连接等等 | 精通 | 工作会用 | |

| 存储引擎 | MyIsam,innodb | 熟练 | 面试会问,工作会用 | |

| 锁 | 行锁,表锁,页面锁 | 熟练 | 面试会问,工作会用 | |

| 配置文件 | my.cnf | 熟练 | 面试会问(偶尔),工作会用 | |

| Mysql数据类型 | 数值型、浮点型、字符串类型、时间日期类型 | 精通 | 工作会用 | |

| 特殊查询 | 子查询、联合查询、自连接查询 | 精通 | 工作会用 | |

| 约束 | 主键约束primary key\外键约束foreign key\唯一约束unique\非空约束not null\默认值default | 精通 | 工作会用 | |

| 数学函数 | Ceil(),floor(),round(),truncate(),mod(),exp(),pi() | 精通 | 工作会用 | |

| 字符串函数 | UPPER(column | str)、CONCAT(column | str1, column | str2,…)、CONCAT_WS(separator,str1,str2,…)、SUBSTR(str,pos[,len])、LENGTH(str)、REPLACE(str, from_str, to_str)、REPEAT(str, count)、FORMAT(X,D[,locale])、RIGHT(str, len)、LEFT(str, len) |

| 时间函数 | now()、sysdate()、date_format(date,format)、 time_format(time,format)、str_to_date(str,format)、makdedate(year,dayofyear)、maketime(hour,minute,second)、sec_to_time(seconds)、time_to_sec(time)等等 | 精通 | 工作会用 | |

| 注释 | #,– | 精通 | 工作会用 | |

| 数据结构及算法 | B-Tree和B+Tree | 熟悉 | 面试会问 | |

Web服务器


(学习建议必学)

| Web | HTTP协议 | 熟练 | HTTP协议 | 工作会用 |

| — | — | — | — | — |

| Tomcat服务器 | Tomcat服务器搭建 | 熟练 | 工作会用 | |

| Tomcat配置 | Tomcat配置实操 | 熟练 | 工作会用 | |

| 目录结构 | Tomcat目录结构 | 熟练 | 工作会用 | |

| Tomcat端口配置 | 百度文章 | 熟练 | 工作会用 | |

| Tomcat启动&停止 | 实操 | 熟练 | 工作会用 | |

Servlet


(学习建议必学)

| Servlet | Servlet生命周期 | 熟悉 | 熟悉 | 面试会问 |

| — | — | — | — | — |

| 配置 | Servlet的XML配置和注解配置,ServletContext,ServletConfig | 熟悉 | 工作会用(偶尔),

面试会问 | |

| 请求&响应 | javax.servlet.http.HttpServletRequest;javax.servlet.http.HttpServletResponse; | 精通 | 工作会用 | |

| Request对象和Response对象 | HttpServletRequest对象和HttpServletResponse对象的API | 熟练 | 工作会用 | |

| 重定向&转发 | 请求转发(RequestDispatcher)的过程,重定向(sendRedirect)的工作原理。 | 精通 | 工作会用 | |

| 路径问题 | 相对路径与绝对路径,完全路径匹配、目录匹配、扩展名匹配 | 精通 | 学习会用,工作会用

工作会用 | |

| Filter | Filter原理、Filter生命周期\Filter链\ Filter乱码过滤\ Filter登录过滤\Filter权限过滤 | 精通 | 学习会用,工作会用 | |

| Listener | WEB中八大监听器\Listener原理\Listener监听 | 熟练 | 学习会用,工作会用 | |

| HTTP协议 | 网络应用层协议,规定了浏览器与web服务器之间如何

通信以及数据包的结构。回去复习网络编程知识点 | 熟练 | 学习会用 | |

| Servlet程序的多种实现 | 实现Servlet接口,继承GenericServlet类, 继承HttpServlet类 | 熟练 | 学习会用 | |

| 线程安全问题 | {ServletRequest对象和Session对象是线程安全的}{ServletContext和Application对象} | 熟练 | 面试会问 | |

| 日志组件 | log4j和logback | 熟练 | 工作会用 | |

| Servlet整合JDBC | 这是实操学习找视频学 | 熟练 | 学习会用 | |

JSP


(学习建议必学)

| JSP | 理论 | JSP原理 | 熟练 | |

| — | — | — | — | — |

| JSP语法 | <% … %>

<%= … %> | 熟练 | 工作会用 | |

| 九大对象 | request\Response\config

Application\session

Exception\page

Out\pageContext | 熟练 | 工作会用(理论),面试会问 | |

| EL表达式 | EL使用\ EL取值\ EL的11大隐含对象\ EL逻辑运算\EL函数库|精通 | 工作会用 | | |

| JSTL | JSTL核心标签库(通用、选择、循环)\ JSTL核心标签库(循环、URL)\JSTL函数标签库\自定义空标签\属性标签\体标签\函数\父标签 | 精通 | 工作会用 | |

| JSP组成元素 | 静态资源、JSP脚本片段、 表达式、 JSP声明、注释、指令、动作 | 熟悉 | 学习会用 | |

| JSP标准动作 | jsp:getProperty:从JavaBean中获取一个属性值; jsp:setProperty:设置一个JavaBean中的属性值; jsp:include:在JSP页面包含一个外在文件;jsp:useBean:定义jsp页面使用一个JavaBean实例; jsp:forward:把到达的请求转发另一个页面进行处理; jsp:param:用于传递参数值; jsp:plugin:用于指定在客户浏览器中插入插件的属性;jsp:params:用于向HTML页面的插件传递参数值;jsp:fallback:指定如何处理客户端不支持插件运行的情况; | 熟悉 | 学习会用,工作会用(偶尔) | |

| 域对象 | pageContext、request、session、application | 熟练 | 工作会用 | |

| 中文乱码 | 实操常见中文乱码问题的解决方法(百度) | 熟练 | 工作会用 | |

| JSP路径问题 | 解决JSP路径问题的方法(百度文章) | 熟悉 | 工作会用 | |

| MVC模式 | (模型-视图-控制器)模式一定要理解了,不理解重新找视频学习直到理解,不理解无法进行下一个技术学习 | 精通 | 学习会用,工作会用 | |

| JSP分页 | JSP中分页的实现 | 熟悉 | 学习会用 | |

文件上传和下载


(学习建议熟悉和理解为主)

| 文件上传和下载 | 文件上传原理 | 熟悉 | 熟悉 | 学习会用 |

| — | — | — | — | — |

| commons-io&commons-fileupload | 实操 | 熟悉 | 工作会用 | |

| 文件上传参数控制 | 实操 | 熟悉 | 工作会用 | |

| 浏览器兼容性问题 | 文件下载中文乱码&浏览器兼容 | 熟悉 | 工作会用 | |

| 文件下载原理 | 百度文章熟悉一下 | 熟悉 | 学习会用 | |

| 文件下载响应头 | 实操 | 熟悉 | 工作会用 | |

| 文件下载中文乱码&浏览器兼容性 | 实操 | 熟悉 | 工作会用 | |

Maven


(学习建议熟练实操为主)

| Maven | Maven构建&自动化构建 | 实操 | 熟悉 | 熟悉 |

| — | — | — | — | — |

| 本地仓库&中央仓库 | 远程仓库、本地仓库、私服 | 熟练 | 工作会用 | |

| 常用命令 | {mvn archetype:create}{mvn archetype:generate}{mvn compile}{mvn test-compile}{mvn test}{mvn site}{mvn package}{mvn install}{mvn clean}{mvn idea:idea}{mvn -Dtest package}{mvn test-compile}{mvn jar:jar}{mvn dependency:list}{mvn deploy}{mvn clean install-U}{mvn source:jar}{mvn verify}等等 | 熟练 | 工作会用 | |

| 依赖管理 | 传递依赖发现、依赖范围、依赖关系管理、依赖冲突的解决,继承的关系,聚合的关系 | 熟练 | 工作会用,面试会问 | |

| 生命周期 | 验证、编译、测试、打包、验证、安装、部署 | 熟悉 | 面试会问 | |

| pom.xml | 熟练和实操 | 熟练 | 工作会用 | |

| 私服仓库 | 私服仓库搭建, 本地资源上传到私服,私服下载资源到本地 | 熟悉 | 工作会用 | |

| maven创建web工程 | mvn archetype:create

-DgroupId=packageName

-DartifactId=webappName

-DarchetypeArtifactId=maven-archetype-webapp | 熟悉 | 学习会用 | |

| idea下的maven使用 | 这个没啥说的就是熟练各个maven在idea上的按钮 | 熟练 | 工作会用 | |

| 继承&聚合 | 继承机制、在各个子工程中引用父工程 | 熟练 | 工作会用 | |

Mybatis


(学习建议必学)

| Mybatis | 理论 | 熟悉 | 熟悉 | 面试会问 |

| — | — | — | — | — |

| 全局配置文件 | 实操 | 熟练 | 面试会问,工作会用 | |

| Mapper文件 | sql编写,nameSpace作用域,扫描package方式 | | 面试会问,工作会用 | |

| 相关API | SqlSession

,SqlSessionFactoryBuilder,SqlSessionFactory | 熟悉 | 面试会问 | |

| 增删改查(含1:n和n:1) | Select\update\delete\insert | 精通 | 面试会问,工作会用 | |

| MyBatis结果集封装 | resultType的使用 | 精通 | 面试会问,工作会用(偶尔) | |

| 连接池 | 配置和实操 | 熟练 | 面试会问,工作会用 | |

| 事务 | 事务机制和实操 | 熟练 | 面试会问,工作会用 | |

| 动态sql | if、choose、where、trim、set、foreach、like和代码片断 | 精通 | 面试会问,工作会用 | |

| 表关系 | 一对一、一对多、多对多 | 精通 | 面试会问,工作会用 | |

| 延迟加载 | 理论知识和实际操作 | 熟练 | 面试会问,工作会用 | |

| 缓存机制 | 一二级缓存理论和实操 | 熟练 | 面试会问,工作会用 | |

| 别名 | 别名机制采用package的方式 | 精通 | 面试会问,工作会用 | |

| #{}和${} | 区别和实际应用 | 精通 | 面试会问,工作会用 | |

| 通用mapper | 通用mapper实操 | 熟练 | 工作会用 | |

| 分页插件 | PageHelper使用 | 熟练 | 工作会用 | |

| Mybatis-Plus | Mybatis-Plus实操 | 精通 | 工作会用 | |

| paramenterType | parameterType传递包装类型 | 精通 | 工作会用 | |

| ResultMap | resultMap的使用 | 精通 | 工作会用 | |

| 基于XML的CRUD | SqlMapConfig.xml配置 | 熟悉 | 工作会用 | |

| 基于注解的CRUD | MyBatis注解开发 | 精通 | 工作会用 | |

| SqlSession使用范围 | 对象SqlSessionFactory和SqlSession运用 | 熟悉 | 工作会用 | |

| 比较原始dao | mapper动态代理开发方式和原始开发比较 | 熟悉 | 工作会用 | |

| mapper配置 | resultMap、配置实现一对多关联查询 | 熟练 | 工作会用 | |

| Mybatis Plus | 主键策略和分布式id生成器、自动填充、乐观锁、分页插件、逻辑删除、性能分析插件、条件构造器 | 熟练 | 工作会用 | |

Spring


(学习建议必学)

| Spring | 理论 | 熟练 | 熟练(因为很重要) | 面试会问 |

| — | — | — | — | — |

| IOC/DI | IOC容器中Bean的生命周期方法、理解IOC控制反转和DI依赖注入的概念、 泛型依赖注入 | 熟练 | 面试会问,工作会用 | |

| 配置 | 自动装配\使用p命名空间的配置方法\scope作用域\ 使用外部属性文件\SpEL(字面量、引用Bean、属性和方法、SeEL支持的运算运算符号)、注解配置 | 熟悉 | 工作会用 | |

| AOP | 动态代理增强,AOP xlm配置,AOP 注解配置, | 精通 | 面试会问,工作会用 | |

| 声明式事务 | 声明式事务的配置 | 熟练 | 面试会问,工作会用 | |

| 集成mybatis | 实操 | 熟练 | 工作会用 | |

| 整合junit | 实操 | 熟悉 | 工作会用(偶尔) | |

SpringMVC


(学习建议必学)

| SpringMVC | 理论 | 熟悉 | 环境搭建,执行过程及原理 | 面试会问 |

| — | — | — | — | — |

| SpringMvc组件 | 熟练 | 1、前端控制器DispatcherServlet,2、处理器映射器HandlerMapping,3、处理器Handler,4、处理器适配器HandlerAdapter,5、视图解析器 View resolver,6、视图View(jsp,framemark) | 面试会问,工作排bug会用 | |

| 请求参数绑定 | 精通 | pojo类绑定,map绑定,String绑定,HttpSession绑定,HttpServletResponse绑定,HttpServletRequest绑定等等 | 工作会用,面试会问 | |

| 常用注解 | 精通 | 常用注解实操@Controller

,@RequestMapping,@Resource和@Autowired,@ModelAttribute和 @SessionAttributes,@PathVariable,@requestParam,@ResponseBody,@Repository

@Component | 工作会用,面试会问 | |

| 实操 | | 数据类型转换、数据格式化、数据校验、处理JSON,SpringMVC整合FastJSON | | |

| Restful风格 | 精通 | 实操 | 工作会用,面试会问 | |

| 实现文件上传 | 精通 | SpringMVC文件上传与下载 | 工作会用 | |

| 异常处理 | 精通 | 使用 @ ExceptionHandler 注解

实现 HandlerExceptionResolver 接口

使用 @controlleradvice 注解 | 工作会用,面试会问 | |

| SpringMvc中的拦截器 | 熟练 | 拦截器概述、自定义拦截器、

Interceptor拦截器,WebRequestInterceptor 接口,HandlerInterceptor接口 | 工作会用,面试会问 | |

| 校验框架 | 熟悉 | JSR 303、Hibernate Validator | | |

| 响应数据 | 精通 | String类型 ,void类型,ModelAndView ,forward 转发,redirect转发 | 工作会用,面试会问 | |

| SpringMvc实现异步 | 精通 | DeferredResult,Callable | 工作会用,面试会问 | |

| SpringMvc+Spring+Mybatis整合 | 精通 | SpringMvc+Spring+Mybatis整合实操 | 工作会用,面试会问 | |

SpringBoot


(学习建议必学)

| SpringBoot | 理论 | 熟悉 | 核心功能\SpringBoot的优势\依赖原理\自动配置原理\热部署\配置文件\SpringBoot缓存\SpringBoot异步任务\定时任务和邮件任务\SpringBoot安全框架 | 面试会问 |

| — | — | — | — | — |

| 自动配置 | 熟悉 | 实现自动配置原理 | 面试会问 | |

| SpringBoot

配置文件 | 熟练 | application.properties,

application.yml,

bootstrap.yml bootstrap.properties | 工作会用,面试会问 | |

| 映射方式 | 熟悉 | 映射文件方式和注解方式 | 工作会用 | |

| 事务 | 精通 | 实操@Transactional注解 | 工作会用 | |

| 实现RESTfull | 精通 | 实操Springboot开发RESTFul | 工作会用 | |

| 注册Servlet三大组件 | 熟练 | 注册Servlet\注册Filter注册Listener | 工作会用,面试会问 | |

| 热部署 | 熟练 | 使用spring提供的devtools

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

img
img

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V:vip1024b 备注Java获取(资料价值较高,非无偿)
img

最后

如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!

熟练 | 使用spring提供的devtools

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-Wlk6ffYf-1711559078866)]
[外链图片转存中…(img-Mj2mrOeh-1711559078867)]
[外链图片转存中…(img-d7uJuHO4-1711559078867)]
[外链图片转存中…(img-zwJquIDN-1711559078868)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

[外链图片转存中…(img-btONzoM9-1711559078868)]
[外链图片转存中…(img-r6JeVXMY-1711559078869)]

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V:vip1024b 备注Java获取(资料价值较高,非无偿)
[外链图片转存中…(img-WRrmel00-1711559078870)]

最后

如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!

[外链图片转存中…(img-mPiVkGZB-1711559078871)]

[外链图片转存中…(img-yvBbFRcm-1711559078872)]

  • 27
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
有不少的同学发信给我,和我探讨java自学过程应该是什么样的,毕竟有很多人因为各种各样的原因不能参加培训。我试着给出自己的见解,抛砖引玉吧。 这个路线图是给那些为了就业的人准备的,如果只是兴趣,不一定照这个走。 这里只是讲了路线图,关于路线中的各个阶段,学到什么程度,如何学习等,可以参考后面的JAVA自学之路 七:《路线图明细》。 首先要学JavaSE,这是无庸置疑的。 与此同时,是的,与此同时,和JavaSE的学习同步,建议大家研究一下数据结构与算法。 在这儿之后,你可以选择向J2ME、或者Java GUI、Socket编程等方向努力,但是通过第一篇的办法,你可以很容易就将这方向过滤掉(永远不要忘了我们是为了就业),好吧,暂时和它们诀别,还是向着J2EE的方向前进吧。 在JavaSE完成之后,可以试着完成一些小项目,同时关注一下设计模式的内容,不必强求自己能够完全掌握各种细节,往前走吧。 掌握一种编程工具,比如说Eclipse。 数据库,可以选择使用Oracle或者MySQL开始 。 JDBC,用Java连接数据库。 可以选择在这个地方切入Hibernate,也可以选择在Struts 之后。 HTML CSS JavaScript,这些东西是做web项目必需的内容 。 Servlet JSP,服务器端必需。 XML AJAX,新的流行趋势不能不了解。 作一些小项目吧。比如BBS、留言系统、学籍管理、商城等等,随便着一些业务逻辑比较简单的来做一做。 Struts,MVC的典型应用 Hibernate,OR Mapping的典范之作。 Spring IOC + AOP, 面向对象 + 面向切面,完善的旅程。 把以前自己的小项目加入Struts、Spring、Hibernate的元素吧。 去研究各种商业项目的业务逻辑吧,才能在你的简历中加入浓重的一笔。 EJB3.0,java在走了很多弯路后的回归之作,值得研究。 SOA,业界铁定的未来趋势,要紧紧跟随。 在后面,我会告诉你每一步的学习方法和学习重点。 JAVA自学之路 三:要动手 无论如何,请坚持不懈的动手实验! 学习Java要动手,仅仅是看和听是不能够学好编程的。总有同学来信问我们这样的问题,说:"老师我看了视频了,可是怎么一动手就没有任何思路呢?" 对此,我一般都会说不要着急,如果你只是看了视频就想行云流水的话,那老师这些年的锻炼真是白费了,这么多年的苦练才能略有些行云流水的感觉,你一朝一夕就想自己能够达到,不是太奢侈了吗 作为编程的过来人想一下,当年自己学编程的时候是什么时候有思路的呢?至少也是照猫画虎画了一段时间之后吧,我本人是在某一个领域画虎画了上万行代码的时候才慢慢有自己思路的。就像写作文,要有自己思路总是一般来说要经过几个阶段,首先学习词汇,然后学习造句,然后大量阅读别人的文章,自己模仿着写一些,逐渐的经验积累,才能形成自己的思路。学编程,恐怕也得慢慢的来吧,只是看一看、听一听视频,是不足以学好编程的。 所以,动手吧,跟着做,一行一行的跟着敲,一个项目敲完了,比如坦克,再试着加一些自己的功能,按照自己的思路敲一些代码,收获远比干听大的多。 如果遇到,暂时对于一些思路不能理解的同学,我一般都会劝告说,动手写,先写代码,量变会引起质变的。而这种质变的确发生过不少次。 提醒一句,要理解代码思路之后再跟着敲 ,背着敲,千万不要左边摆着别人的程序,右边自己一个一个子母的写,这就不再是程序员了,成了打字员了。 纸上得来终觉浅,所以:别问那么多,别想那么多,动手写吧。 JAVA自学之路 四:要事为先 对待人生的任何事情都要:抓大放小,要事为先 对于一个以前从来没有接触过java的人,java无疑是庞大的,似乎每个领域都可以拓展开来都是一片开阔地,每一个领域要想深入接触到每一个细节所耗费的精力都是巨大的。这个时候大家都胸怀壮志,两眼发光的盯着每一个崭新的知识点,遇见了任何一个知识点都恨不得抠的清清楚楚,明明白白。 难道这有什么不对吗? 我的意见是,没什么大毛病,但是学习效率太低了!我们推荐的学习方式是,抓大放小,要事为先。 比如说学习J2SE的时候,学到GUI这一章,有的同学认为,既然学到这儿了,我们去把SWING细细的了解一遍吧;还有的同学,遇到了在Linux下的Shell编程,就恨不得把Shell先学成专家才肯,或者是才敢,继续往下学习;有没有过这样的感觉,一本书的上册没有学好,觉着下册心里也没底儿,甚至非要把上册复习一遍才敢继续学习。如果你也是这样,要去看看心理医生啦,没准儿会有洁癖的毛病。 任何事情都要追求完美才敢继续往后进行,是一种性格缺陷 大胆的放弃一些东西吧,有失才有得,把自己有限的、宝贵的精力用在对于就业直接相关的地方,这才是最有效率的学习方式!等你参加工作,有了可持续发展的事业动力和经济基础,有时间有精力闲的没事儿干的时候,再去研究那些其它吧。 曾经有一个故事,说得是产能和产量的关系。 一个人喜欢读书,读了一辈子,无所不通,这时候要做任何工作都可以,他的产能到了极致,但是,他老了,即便每天产出大量的东西也不能维持多久了,一辈子的产量并没有多少。 另一个人直接工作,忙,天天在机器旁日复一日,做了一辈子,没时间学习和进修,可以想象,产量能有多大呢。 人的一生,要锻炼产能,也要及时产出,引擎要转,也要停下来加油,这两者平衡的越好,你的贡献和产量就会越大。如果钻研的东西和产能目标(或者说近期的产能目标)无关的话,要舍得放手。 所以,对于SWING,暂时先扔在一边吧。 对于shell,对于各种协议过于详细的细节,对于喜欢的游戏编程,对于javascript各种华而不实的效果,都暂时和它们分别吧。一切和我们的直接工作目标关联不大的东西,扔在一边或者弄清楚到足够支持下一步的学习就可以了。 那这样岂不是妨碍我成为通晓各种细节的高手了吗? 我一向不认为一个人掌握了很多很多知识点的细节就是高手了,一个人如果告诉你,回字有四种写法,你会认为他是高手吗? 毫不客气的说,现在我们所教授的所有知识细节在网上或书中都可以找到,只要你肯花时间花精力去动手试,去钻研,没有什么不能掌握的。struts、spring你能掌握吗?当然能!但是如果把时间花在spring的各种细节的研究上,花在研究中国企业应用不广泛地的spring mvc上,这个精力就太浪费了,而且学习的积极性会受到打击,谁愿意整天泡在细节的蜘蛛网中挣扎不出来呢?谁愿意天天经历风雨却总是不能见到彩虹呢? 盖房子,要先建骨架,再谈修饰。 画山水,要先画结构,再谈润色。 认识一台结构复杂的机器,应该首先认清楚脉络,然后再逐步认识每一个关节。 为了应付从小学到大学的考试,我们背了各种各样的不应该提前掌握的细节,同时也养成了见到细节就抠的学习习惯。而现在,是到改改的时候了。 请在合适的时间,做合适的事情吧。 把时间和精力花在作项目上面,花在写作品以及锻炼解决问题的能力上面吧,这是迈向高手的正确的而且快速的方向。 我一直不认为一个课程提供了很多很多的细节就是优秀的价值高的课程了,掌握必要的细节,这个不含糊,至于其他,或者通过视频给出(这样可以给出更多的细节,但是不占上课时间,课上只讲重要的、必要的细节知识),或者在掌握了自学的能力后自己能够查出,这才是正途。 当你看书到某个地方暂时不理解的时候的,暂时放手吧,追求一些行云流水、自然而然的境界吧,只是不要停下前进的脚步,不要被大路旁边的支根末节干扰了你前进的行程,项目,真实的项目,这才是目的,就在不远的前方。 陶渊明读书,叫做“不求甚解”,但他是大诗人。 诸葛亮读书,总是“观其大略”,但他是大政治家。 作研究的,是在确定了方向之后才详细的研究深入的东西。 到了庐山,脉络形状扔在一边,盯着一棵棵小草、一粒粒石子的看,怎么样才能识得“真面目”? 作为应用型的人才,是研究回字的n种写法还是抓紧时间向着主要应用的方向努力,请自己作出抉择。 以项目驱动自己的学习吧,当把握了技术的脉络之后再去补充细节的研究,是正途。 这辈子就不研究其他的方向了吗? 当然要研究!但是在将来合适的时间再说吧。 所以,抓大放小,要事为先! 那么,在JAVA的这些课程中,哪些才是大,才是要事呢?请继续读下去。 JAVA自学之路 五:问题解决之道 既然是学习,就不可能不遇到问题。 既然是自学,就没有方便的和老师探讨的机会。 那么,遇到问题之后,环境配不通,程序调不过,运行不正常,遇见这些恼人的问题的时候,该怎么办呢? 首先我要恭喜你,遇见问题,意味着你又有涨经验的机会了,每解决一个问题,你的JAVA经验值就应该上升几百点,问题遇到的越多,知识提升的越快。 但是总是解决不了也是很恼人的,怎么办呢? 我一般要求我们的学生都是这样来进行的。 当你遇到一个问题的时候: 1:要仔细的观察错误的现象,是的,要仔细 有不少同学的手非常快,在编译一个程序的时候,报了一大堆的错误,扫了一眼之后就开始盯着代码一行一行的找,看清什么错误了吗?没有!有的时候安装软件出问题了,一个对话框弹出来说出错了,马上举手问老师:“不得了了,出错了,出错了”。 “什么错误?” “还没看呢?” 这都是典型的不上心的方法!请记住,学习编程并不是一件很容易的事情,自己首先要重视,要用心才可以。 在开发中,仔细观察出错信息,或者运行不正常的信息,是你要做的第一件事。 读清楚了,才能在以后的步骤中有的放矢,哭了半天,总要知道哭的是谁才成。 这里又分三种情况: A:错误信息读懂了,那么请进入2步:要仔细思考问题会出在哪些环节 B:没读懂,愣是一点没看懂,进入第4步吧:google C:读了个半懂,有些眉目但是不太能确定,第2步和第4步结合着来。 2:要仔细思考问题会出在哪些环节(重要) 当你读懂了一个问题之后,要好好的思考这个问题可能会在哪些环节上出错。 一辆汽车从总成线上下来,车门子关不上! 哪错了?你怎么查? 当然是顺着生产线一站一站的查下来。 程序也是一样的,也是一系列语句完成后产生的结果。 写一个网络程序,总是发现服务器端打印不出接收的数据,有几个环节会出错? 仔细分析这个现象的环节: 客户端产生数据->按“发送”按钮->发送到服务器->服务器接收到后打印 这几个环节都有可能会出错: 有可能客户端根本就没产生数据,有可能发送按钮按下去后根本就没发出去,或者发出去的不是你产生的东西,或者根本就没连接网络,或者发送出去服务器没有接收到,或者接收到之前就打印了等等等等。 学着去这样仔细的分析程序的环节和这些环节可能会产生的问题,你的经验值定然会大幅度快速的提升,这样做很累人,但是一件事情如果做下来一点都不累的话,这个东西还有价值吗? 在网页A输入了一个人的名字,提交到B,首先存储到数据库,然后再读出来,发现乱码!怎么办?当然是分析环节: 客户输入->HTTP发送->B接收->存储到数据库->读出->展现到网页 每个环节都可能出问题,怎么才能知道哪里出的问题?继续往下读。 3:如何定位错误(重要)分析清楚有哪些环节之后,下一步就是定位到底什么环节出错了。 定位有以下三种办法: A 打印输出,比如java的System.out.println(),比如js的alert(),这种办法常用,必须掌握 B Debug,可以参考我们的视频《坦克大战》,详细讲了Eclipse的调试。 C 删掉一部分调试一部分,也就是去掉一部分的功能,做简化,然后调试剩下的功能,JSP和JavaScript常用。 4:如果还不行,google吧 还查不出来?恭喜你,你遇到的错误是值得认真对待的错误,是会影响你学习生涯的错误,问一下google或者百度吧。照着下面的方法查查看。 一般来讲,搜索引擎可以搜到各种知识点,我曾经跟同学们开玩笑说:“学会了怎么google或者baidu,其实没必要跟老师学了,自己全都搞懂了,尚学堂是没必要来的。”当然,只是玩笑,培训的作用有三个: A:系统化知识 B:真实项目锻炼经验 C:少走弯路,节省时间 不知不觉开始做广告了,请原谅,处其位谋其事,总得为尚学堂说点什么:) 言归正传,如何查搜索引擎? 先精后粗,首先先进行尽量精确的查找,比如一个错误,SocketException,你怀疑它是在connect()方法出的问题,那么当然是选这样的关键词java connect SocketException 先中后英,本着以解决问题为主的想法,练习英文还是先放在一边吧,首先应该在中文网页中查询,还不行的话,搜索英文的吧,最近的尚学堂课程中会带大家阅读英文的书籍。有很多东西就像一层窗户纸,远看灰蒙蒙怪唬人的,你壮着胆子一捅,它就破了。阅读英文的书籍就是如此,不是想象中的那么困难:)宁可在沙场上战死,也不能被吓死不是吗:) 信息筛选,搜索出来的结果不见得能够完全匹配,建议大家多阅读前几页的搜索结果,多打开几个网页看看,不过,我的经验是超过3页一般就没意义了,所以超过3页还没有找到合适的答案,或许应该调整一下关键词,或者放粗整个搜索的结果了。 经常的进行知识难点的查询,如果一个问题牵扯的面比较广,就干脆到网上搜索一些相关的专题,比如“java 乱码 mysql” “oracle 创建用户”等等,如果有必要,不要犯懒,勤动手写一些小小的测试程序,来弄明白知识点的细节。这也是涨知识的重要的途径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值