# 大纲
-
基础 (大概学习 2-3 个月可以掌握)
-
工具 maven+git+idea
-
mysql (2 星期左右)
-
基础前端 (2 星期左右)
-
框架 SSM+Springboot (1 到 2 个月左右)
-
项目 电商项目已做过了,再找几个不同类别差不多的做做 (2 个月左右)
-
找工作面试阶段
一般来说:1 周至 1 个月,如果 3 个月都找不到工作简历有大问题了
# 2023.4.26 自我分析
- Java 基础差不多了,需要结合面试题笔试题巩固
- 工具基本上全用过,也较为熟练了,不需要刻意再专研。
- 数据库已会,多看看 sql 文件,理解句子,时间充裕可以写写 SQL
- 三件套和前端 vue 基本会,可以再学点 react
- 框架会用但缺乏原理理解,需要结合面试题八股文学习。
- 项目:电商差不多就是要把做过的会说出来,再者就是再做个优质的,尽量是技术含量高一点的某一个模块,不需要完整的一个项目都做出来。
- 工作的话就主要是简历及时更新,暂定每个月的一号去写一下简历。
# 2023.5.7 自我分析
- 计划是面试算法:今天已经完成到了第十题,总共 66 题,还有 56 题,预计 7 月 2 日完成。
- 英语六级,5 月 21 日前完成所有。
- 今天 rabbitMQ 入门完成。
# 2023.5.17 自我分析
# 做过的项目总结与收获
# 电脑商城
这个项目是我最早接触到的 SpringBoot 项目,通过该项目快速的了解了前端后端接口数据的传输,以及 json,Ajax,数据库表的一些设计。
# springboot+vue 全栈开发一个后台管理系统
这个系统一开始是出于对 vue 的一个补充而学的,起初速成学习了一下 vue 的基本语法,nodejs,以及脚手架的搭建。项目的低阶部分完成的已经非常不错了,使用了一些比较的常用的技术栈,包括 element-ui。高阶部分就是一些高德地图的 api 整合还没有尝试整合,有些渲染问题自己也不太会调试,还是没有那个前端的体系开发能力
# 接下来就是一些乱起八糟的项目一点点的单独技术栈了,前面可以说是入职 java 工程师的基本操作了
# redis 秒杀商城
学习了基本的 redis 概念,一开始是用虚拟机进行环境的搭建的,但是还没有开始进行入门,仅仅是搭建了环境,现在是基本上都用 docker 容器进行搭建,非常的方便,包括后面的 rabhitMQ 我也是用的 docker 安装一个镜像来直接使用,就是需要注意端口的一致性问题。
# 自己的博客搭建系统
2023.5.2 更新:系统开发的,做完了一般就没动静了,受限于技术的问题,有空一定要把项目功能尽可能的去完善,以后的路线就是主要专门抓住某一个模块功能进行开发。这个项目也是基本上用到了自己所学的技术了,能做的也都做了。
2023. 更新。。。
# 技术栈总结
# 数据库
建议学 mysql 就可以,oracle 有精力可以研究下,银行电信偏爱 oracle, 但互联网公司等中小公司基本都是 mysql (免费啊)
存储过程建议了解,互联网公司都是禁止把代码写到存储过程到,但是有些传统公司偷懒也是用存储过程写业务
优化 SQL 是面试必问的,建议把索引好好学习下
# 中间件
redis 必学,高频面试 ,互联网公司必备
消息中间件学一个就可以,推荐 RabbitMQ
(东西比较多,会主流即可)
# 微服务
互联网公司喜欢问微服务,程序汪建议可以学阿里的 dubbo 框架,
有能力可以再学下 springcloud
包装微服务项目经验,程序汪不建议 因为 真实的微服务项目很复杂的,包装了你也讲不清楚啊
互联网公司面试是比较爱问微服务,准备下这方面的项目面试会加分
# Java 的一些概况
Java Swing 图形界面开发 ,基本可以跳过这块知识点里
IO 流(一般难)里面 API 非常多,基本文件读写学会就可以,不用把所有 API 都学会
反射(比较难),其实反射基本 API 了解就可以,开发框架反射用的很多,实际业务开发代码用的很少,如果你要深耕源码 那反射必须学深点
网络编程(很难),其实一本业务开发网络编程这块涉及比较少,学好非常难,建议小白们可以跳过,如果你要深耕源码 ,那请你啃下去
多线程(比较难),互联网业务真的会用到,但一般公司很少用多线程,因为他们数据量非常少,如果你要去互联网公司必须把多线程研究深点点
前端,如果你自己定位是全栈 前端的基本知识点肯定要会,大公司都流行前后端分离了,后端就只搞后端,前端基本了解就可以,目前 vue 用的比较多
# Java 基本语法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| 1. Java语言的发展史
2. JDK的下载和安装
3. DOS命令的介绍和使用
4. Path环境变量的配置
5. 第一个代码HelloWorld案例
6. NotePad++软件的安装和使用
7. Java中的数据类型
8. 常量的使用
9. 变量的定义与使用
10. Java中代码的书写规范
11. 数据类型之间的转换
12. Java中的各种运算符操作
13.if分支语句的灵活使用
14. switch分支语句
15. for循环结构
16. while循环结构
17. do..while循环结构
18.各种循环语句的区别和应用场景
19.循环跳转控制语句
20. 嵌套循环的应用
21. 使用循环嵌套打印直角三角形
22. IDEA开发软件
23. 数组的动态初始化
24. 数组的访问格式|
25. 数组的静态初始化
26. Java的内存划分和作用
27. 分析数组在内存中的存储
28. 方法的定义和调用
29. 方法的参数和返回值问题
30. 方法的重载(Overload)
31. 参数是基本类型和引用类型的区别
32. Debug断点调试的使用
|
# 基础
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414
| 1. 类和对象的概述
2. 分析对象在内存中的存储
3. 成员变量和局部变量的区别
4. private关键字的应用
5. this关键字的应用
6. this关键字的内存原理
7. 面向对象特性之封装
8. 构造方法(Constructor)
9. 构造方法的注意事项
10. 标准类的定义规范
03、API基础
1. API的使用方式
2. String类的特点
3. String类的常用构造方法
4. 字符串的比较规则
5. 用户登录的案例
6. 遍历字符串的方式
7. 字符串的拼接
8. 字符串的反转操作
9. StringBuilder类的作用
10. StringBuilder类的构造方法
11. StringBuilder类的常用方法
12. 用StringBuilder完成字符串拼接和反转
04、集合基础
1. ArrayList集合的特点
2. ArrayList的构造方法
3. ArrayList的常用操作
4. 集合存储自定义类型并遍历 1. 面向对象特性之继承
2. 继承的好处和弊端
3. super关键字的作用
4. 继承时子父类的访问特点
5. 方法的重写(Override)
6. package关键字的作用
7. import关键字的作用
8. final关键字的作用
9. static关键字的作用
10. static关键字内存分析
11. 面向对象特性之多态
12. 多态的好处和弊端
13. 多态中成员访问的特点
14. 多态中的数据类型转型
15. instanceof关键字的使用
16. 抽象类的特点
17. 抽象类的成员特点
18. 模板设计模式
19. 接口的概述
20. 接口的特点和注意事项
21. 类、抽象类、接口之间的关系
22. 内部类的概述
23. 成员内部类的使用
24. 局部内部类的使用
25. 匿名内部类的使用
26. 匿名内部类在开发中的应用
1. Math类及其常用方法
2. System类及其常用方法
3. Object类的toString()和equals()方法
4. Objects类以及常用方法
5. BigDecimal类及其常用方法
6. 二分查找原理以及代码实现
7. 冒泡排序的原理分析及代码实现
8. 递归的应用和注意事项
9. 快速排序原理以及代码实现
10. jar包的制作以及使用
11. Arrays类及其常用方法
12. 基本类型的包装类
13. 自动拆箱和自动装箱
14. Optional类以及使用
15. ProcessBuilder类以及使用
16. 日期Date类型及其常用方法
17. 日期格式化类SimpleDateFormat
18. 日历Calendar类的使用
19. Jdk8新增的日期Date API(LocalDateTime,LocalDate,LocalTime,
Instant,Period,Duration)
20. NumberFormat类以及使用
1. 异常的概述
2. JVM默认处理异常的方式
3. 异常处理方式之try..catch
4. 异常处理方式之throws
5. Throwable的常用方法
6. 异常的分类和区别
7. 异常的注意事项
8. 自定义异常的使用
04、集合
06、多线程
1. 集合体系结构
2. 单列集合体系的详细讲解
3. 迭代器的使用
4. 增强for循环的使用
5. forEach方法遍历
6. 并发修改异常的产生原因和解决办法
7. 数据结构之栈和队列
8. 数据结构之数组和链表
9. ArrayList集合源码分析
10. LinkedList集合源码分析
11. 双列集合体系的详细讲解
12. Map集合的遍历方式
13. TreeSet的自然排序和比较器排序
14. 数据结构之树
15. 数据结构之二叉树
16. 数据结构之二叉平衡树
17. 数据结构之红黑树
18. TreeSet(TreeMap)底层源码分析
19. 数据结构之哈希表
20. Jdk1.7中HashSet(HashMap)源码分析
21. Jdk1.8中HashSet(HashMap)源码分析
22. 泛型的使用
23. 泛型通配符的使用
24. 可变参数的使用和注意事项
05、IO
1. File类对文件的操作
2. IO流的概述和分类
3. 字节流写数据的方式
4. FileOutputStream和BufferedOutputStream源码分析
5. 字节流读数据的方式
6.FileInputStream和BufferedInputStream源码分析
7. 字节流完成视频文件的复制
8. 编码表
9. 字符流写数据的方法
10. 字符串读数据的方法
11. 字符缓冲流的使用
12. 字符缓冲流的特有方法
13. 标准输入输出流
14. 打印流的使用
15. 对象序列化流
16. serialVersionUID&transient
1. 进程和线程的区别
2. Java实现多线程的三种方式
3. 线程API之线程名称
4. 线程API之线程休眠
5. 线程API之线程礼让
6. 线程API之线程优先级
7. 线程API之线程中断
8. 线程API之后天线程
6. 线程的安全问题
8. 同步代码块
9. 同步方法
10. Lock锁
11. 死锁概述以及现象演示
12. 死锁诊断(jstack工具的使用)
13. 线程通讯之生产者消费者问题
14. 线程通讯代码实现之同步代码块
15. 线程通讯代码实现之Condition实现
通信
16.线程通讯代码实现之阻塞队列
(BlockingQueue)实现
17. 线程的状态
18. 线程池概述
19. 自定义线程池
20. Executors创建线程池
21. ThreadPoolExecutor创建线程池
22.ThreadPoolExecutor原理介绍以及
任务拒绝策略介绍
23. volatile关键字
24. JMM内存模型
25. 原子性概述
26. 原子类AtomicInteger类的使用
27. CAS算法
28.并发容器ConcurrentHashMap原
理讲解
29.并发工具类(CountDownLatch,Semaphore,CyclicBarrier,Exchanger)的使用
17. Properties的用法
18. 内存操作流的使用
19. RandomAccessFile使用
20. SequenceInputStream的使用
21. 压缩流/解压缩流
07/08
07、网络编程 10、基础加强
1. 网络编程的概述
2. 网络编程的三要素之ip地址(ipv4,ipv6)
3. InetAddress类的操作
4. 网络编程的三要素之端口和协议的详
细解释
5. 网络参考模型
6. UDP协议发送与接收数据
7. 聊天小程序案例
8. UDP协议中广播与组播
9. TCP协议发送与接收数据
10. 多线程下文件的上传
11. NIO概述
12. NIO之Buffer的使用
13. NIO之Channel的使用
14. NIO之Selector的使用
15. 自定义非阻塞式的HTTP静态服务器
08、Lambda
1. Lambda表达式的标准写法
2. Lambda的省略规则
3. Lambda和匿名内部类的区别
4. JDK8和9对接口组成的更新
5. 方法引用的介绍
6. Stream流的中间操作
7. Stream流的终结操作
8. Stream流的收集操作
09、反射
1.虚拟机类加载机制(概述,类加载过
程,类的初始化时机)
2.类加载器(概述,分类,双亲委派机
制,ClassLoader类,自定义类加载)
3. 反射机制的概述
4. 获取Class类的对象
5. 反射获取构造方法并使用
6. 反射获取成员方法并使用
7. 反射获取成员变量并使用
9.自定义非阻塞式的HTTP动态服务器
|
# 普通 maven 会用就行,高级的就得懂原理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| Maven高级
1. pom文件依赖传递介绍
2. 依赖冲突的解决
3. Maven项目继承的关系
4. Maven项目聚合的关系
5. 分模块搭建聚合项目
6. 私服仓库介绍和搭建
7. 本地资源上传到私服
8. 从私服下载资源到本地
9. 安装第三方资源到本地仓库
10. 安装第三方资源到私服仓库
11. Maven多环境开发
12. 单元测试
13. 自定义插件
|
# git
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 1. Git概述和特点
2. Git的下载安装
3. Git基本概念
4. Git操作入门
5. Git历史版本控制
6. Git分支版本控制
7. Git远程仓库的操作
8.Git远程托管平台应用(GitHub,码云)
9. Git解决冲突
10.IDEA中集成Git应用
11.Git常用操作命令
|
# spring
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| 1.框架简介
2.Spring概述
3.耦合与解耦
4.工厂设计模式
5.IoC概述及作用
6.Spring基于XML的IoC配置入门
7.Spring基于XML的IoC配置详解
8.依赖注入的概念
9.Spring中的依赖注入
10.Spring中多配置文件配置及问题分析
11.Spring基于XML和Mybatis的整合
12.Spring基于注解的IoC配置
13.常用注解的使用
14.Spring整合Junit
15.Spring高级分析之-IoC容器说明
16.Spring高级分析之-组件扫描器TypeFilter
17.Spring高级分析之-Import注解和自
定义导入器
18.Spring高级分析之-BeanFactoryPostProcessor
19.Spring高级分析之-BeanPostProcessor
20.Spring高级分析之-InitializingBean
21.Spring高级分析之-FactoryBean
22.AOP编程思想,作用,优势及实现原
理分析
23.代理模式和动态代理实现AOP思想的
案例
24.Spring中的AOP简介和常用术语
25.Spring基于XML的AOP配置
26.5种通知类型分析
27.切入点表达式详解
28.Spring基于注解的AOP配置
29.Spring中AOP的高级分析之-EnableAspectjAutoProxy注解的解析分析
30.Spring中AOP的运行期增强的执行过
程分析
31.Spring中事务的API详解
32.Spring基于XML的事务配置
33.Spring基于注解的事务配置
34.Spring事务高级分析之-TransactionTemplate源码分析
35.Spring事务高级分析之-DataSourceUtils源码分析
36.Spring事务高级分析之-TransactionSynchronizationManager源码分析
37.Spring事务高级分析之-TransactionEventListener注解的加载过程分析
38.Spring中的模板对象介绍
39.JdbcTemplate和NamedParameterJdbcTemplate的使用
40.RedisTemplate的使用
41.Spring事务设计的设计模式分析
|
# SpringMVC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| 1.SpringMVC概述
2.SpringMVC基于XML的环境搭建
3.SpringMVC基于Servlet3.0规范的纯注解环境搭建
4.纯注解环境搭建的入门案例执行过程分析
5.SpringMVC常用组件介绍
6.SpringMVC的 @RequestMapping注解详解
7.SpringMVC中的请求参数封装
8.SpringMVC中的表单校验相关注解
9.SpringMVC中和ServletAPI相关的注解使用详解
10.SpringMVC中控制器方法的返回值详解
11.SpringMVC中的异步交互和相关注解介绍
12.Rest风格URL详解
13.@PathVariable注解详解
14.Postman工具
15.跨域访问详解和 @CrossOrigin注解
的使用
16.SpringMVC中的请求参数封装源码
分析和运用的设计模式介绍
17.SpringMVC中的父子容器
18.SpringMVC中的异常处理
19.SpringMVC中的拦截器使用
20.SpringMVC中的文件上传
21.Spring SpringMVC Mybatis的整合
|
# Mybatis-Plus
1 2 3 4 5 6 7 8 9 10 11
| 1.Mybatis-Plus简介
2.Mybatis-Plus快速入门
3.Mybatis-Plus通用CRUD
4.Mybatis-Plus条件构造器
5.Mybatis-Plus的Service封装
6.Mybatis-Plus代码生成器
|
# SpringBoot
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| 1. SpringBoot介绍
2. SpringBoot的核心功能
3. SpringBoot的优势
4. SpringBoot入门程序
5. 起步依赖原理分析
6. 自动配置原理解析
7. 自定义起步依赖并实现自动配置
8. SpringBoot配置文件类型
9. 配置文件与配置类的属性映射方式
10. SpringBoot整合Mybatis
11. SpringBoot整合Junit
12. SpringBoot整合Redis
13. 自定义Starter
14. 事件监听
15. 初始化流程
|
# 最后是鼠鼠翻身
1. 基本功:
对 JDK 要比较熟练地理解和使用,重点内容有:集合,多线程,IO,异常,反射,注解,序列化,反序列化等知识。
网络和数据结构:网络至少要知道三次握手,四次分手,HTTPS,GET,POST 等。数据结构会问下红黑树,平衡二叉树。如果了解 Redis ,还可以聊下跳跃表,前缀树。
操作系统问的不多,一般就问下实际中有没有出现过 CPU 过高或者内存过高的情况,然后怎么定位解决。
2. 中间件框架:
Spring :常问题目要了解。比如启动过程,Bean 的初始化流程,Bean 的生命周期,如何解决循环依赖问题,IoC,AOP 等。
缓存:不论 Redis、 MemCache 或其他的,至少要有一个比较熟练的,能了解底层数据结构及实现原理,常规的使用方法。
数据库:MySQL 或者 Oracle 要熟悉一种,数据库一般要知道分库分表的实现,数据库备份,数据库的事务,数据库和缓存的数据一致性,数据库的索引,锁机制等等。常用的 RPC 框架可以了解下,优缺点,RPC 的原理要懂,如果有时间自己可以基于 Netty 写一个实战一下。
MQ :一般会问下消息的幂等性,事务性实现,如何保证不丢消息等,要熟练至少一种消息队列,了解原理。
Zookeeper:有时问有时不问,这个有时间也可以看下,毕竟这是分布式协调器,很多时候在分布式系统中都会使用 zk 来保证强一致性的问题。
3. 设计题:一般会给定某个特定场景,让你去做,如果是架构设计,一般就是高并发。如果是数据库的设计,一般看你对数据怎么设计能够方便查询。
4. 理论题:一般看你对现在常用的分布式理论的理解。一致性协议,分布式 CAP,BASE 理论,服务降级,熔断,RESTful 接口等等。
5. 项目:这是个重点,如果连自己做的项目都讲不清楚的话,基本就没希望过了,所以一定要想下自己做的项目,有什么难点,解决了什么问题,架构有什么调整,为什么这么做,最后的结果是什么。
6. 手写代码:代码考核是进入每个大公司都需要准备的,这个就是要刷刷题,LeetCode,有时间逛逛,你值得拥有。