记录暑假java后端深度底层学习计划

基础知识分为两大部分: 

目录

1.后端通用基础知识:

2.java方向技术栈相关知识:(并不是只看这些)

3.java开发实习生全栈技术点(都应该去了解一遍)

1.javaSE:

2.javaEE:    

3.数据库:

4.前端:

5.服务器:

6.开发工具:

7.虚拟化/容器化:

8.分布式/微服务:

9.中间件:

10.主流框架:

11.web后端:

12.其他杂七杂八的技术:

13.最全开发工具


1.后端通用基础知识:

(1)计算机网络  (后端面试考查的重中之重,IP/TCP/UDP/HTTP相关协议等)
     推荐书籍:《计算机网络,谢希仁第五版》
     第4章到第7章网络安全必学,网络层与应用层,http协议是重中之重) 
      推荐深入学习书籍:《自顶向下计算机网络》,《图解HTTP》(把HTTP通过图讲得透彻))

(2)数据库          

强烈推荐:《mysql技术内幕++InnoDB存储引擎》!!!《Redis设计与实现(第二版)》
 第5章索引与算法,第6章锁,第7章事务是必须要反复学习阅读的重点章节)

(3)操作系统基础理论        

因为java后台的会用java底层的JVM解决垃圾回收的问题,所以对基础掌握,JVM考察居多
重点是第三章同步、通信与死锁和第四章存储管理
《操作系统教程》第五版高等教育出版社      进阶《UNIX环境高级编程》 7-13章重点学习


(4) 数据结构与算法(最重要的知识)    

先刷PTA乙级,同时看视频,然后甲级,然后剑指offer,力扣      

5)设计模式                        《大话设计模式》

(6) Linux基础命令机器使用等        熟悉它是后端开发人员的基本技能     
                                                            推荐《鸟哥的Linux私房菜》,
                                                             可以说是Linux入门基础操作的圣经了。
                                                              其中关于文件操作的第5章第6章,关于vim编辑器的第9                                                                     章,关于进程管理的第16章都要重点学习掌握。

      

2.java方向技术栈相关知识:(并不是只看这些)


(1) java语言基础及常用集合          

《java核心技术卷一》  基础入门看这个足够了,重点:3-9章(4.5.6.9格外重点,尤其是9章)
 进阶:《java核心技术卷二》

(2) java并发编程 :进阶必学,面试重头戏 《实战java高并发程序设计》(重点看基础前5章)                              进阶:《Java并发编程的艺术》(神书,全是重点,读好多遍都能收获)

  (3)  java虚拟机(JVM)                        

《深入理解java虚拟机》    2367章重点掌握,收获非常大

   (4)   java开发常用框架spring相关等。      

《SPRING技术内幕:深入解析SPRING架构与设计原理(第2版)》

《spring源码深度解析》

《深入分析Java Web技术内幕》

3.java开发实习生全栈技术点(都应该去了解一遍)

1.javaSE:

1.容器:List接口,Set接口,Map接口,Iterator接口,Collections工具类,Arrays工具类,Comparable接口,泛型


2.泛型:(正在学习总结中)


 3***.i/o:引入IO的原因,基本概念(数据源,流的概念),io流体系,io流对象(例如:InputStream(源,读,字节),OutputStream(目的,写,字节),Reader(源,读,文本),Write(目的,写,文本)r等...),java对象的序列化和反序列化,io其他常用类:File类,RandomAccessFile

4***.集合:(正在学习总结中)


5.异常:概练,分类(Error,Exception),处理方法:捕获(try,catch,finally),声明异常:throws  抛出异常:throw


6.反射:(正在学习总结中)


7.多线程:基本概念(程序,进程,线程,他们之间的关系),线程生命周期(新生,就绪,运行,死亡,阻塞),线程基本信息和优先级,线程同步和死锁及其解决方案,生产者/消费者问题


 8.网络编程:基本概念(计算机网络,网络通信协议、接口,网络分层,通信协议的分层规定,数据的封装拆封,IP,端口,URL),TCP和UDP(区别,内容),JAVA网络编程(InetAddress,InetSocketAddress,URL类,基于TCP协议的Socket编程和通信)


 9.JVM:(正在学习总结中)


 10.NIO编程讲解
              (还有基础,计算机基础,***基础语法,***面向对象(封继多,抽象类,接口,字符串比较使用),注解,java8,常用类(基本数据类型包装类,Math类,File类,枚举类,字符串类String(Buffer,Builder),时间处理类:(Date,DateFormat,SimpleDateFormat,CAalendar))和工具类,正则,XML,设计模式,数据结构/算法:堆,栈,二叉树,图,平衡搜索树,
 高频算法:******DFS难(递归),排序:快速排序和归并排序(必须掌握),***双指针,堆HEAP(高频),哈希表(高频),****动态规划(难,大厂喜欢考),拓扑排序算法(中,基本都考),链表(中小GS考的多),二叉树(中小考的多),字符串处理,二分法,分治法,BFS,二叉树遍历算法,跳跃表(难,知道原理),字典树,并查集,红黑树(难,原理)                            
11.计算机网络:物理层,链路层,网络层,传输层,应用层  )

2.javaEE:    

                     1.spring全面剖析(目前Java最流行也是大腿的容器框架,Apache官方出品的大杂烩框架):SpringAOP,事务管理,核心源码分析
                      2. SpringMVC(JavaWeb框架,目前主流框架):开发环境和入门配置,进阶开发,与前端交互,源码分析
                      3.MyBatis ORM(持久层数据库框架):开发环境和配置,核心配置和高级查询,关系映射和缓存配置,MyBatis plus
                      4.Quartz任务调度:任务调度应用场景,架构体系和核心类讲解
                      5.Spring Boot
                 过滤器,***,文件上传下载,模板框架(JSP/JSTL,FreeMaker,Thymeleaf),邮件收发(HTTP协议,Cookie/Session,Servlet,JDBC,MVC分层,)

3.数据库:

                1.Oracle:使用JDBC完成增删改等等
                 2.连接池(C3P0,Druid,HikariCP),
                 3.分库分表(MyCat,Sharding JDBC,Sharding Sphere)
                 4.数据库设计和JDBC(第123范式,BC范式,数据库连接池,Dao层开发等等)
                 5.Mysql调优:总体思路,通用查询日志,错误日志,二进制日志,慢查询日志,执行计划,索引及优化策略
                 6.druid:(这家伙有一个叫作数据源监控的功能,非常好用!)    
                 (Mysql(索引和锁):排序,***聚合查询,用户权限,约束管理,DML操作,内外自连接,子查询,常用函数,分页查询,存储引擎,MySQL框架,索引及优化策略)(更多内容在图中)
                    JDBC: (java操作MySQL数据库的一套API而已)
                

4.前端:

              LayUI,React,Angular,Echarts(柱状图,折线图等等),zTree(树,普通JSON和标准JSON的区别)
             XML(文档结构,基本语法,DOM4j节点查询,文档操作,XPATH语法和快速查询)
             JSON(语法,用法,java和json的转换,js和json转换)
             HTML5(网页的骨架)(基础标签,img标签,a标签,表格标签,表单标签,框架和字符实体)
             CSS3(网页的衣服)(长度单位,颜色单位和路径,常见选择器,背景属性,文本属性,列表属性,元素分类,浮动和定位属性,盒子模式),
             JavaScript(网页的灵魂)(js基础语法,数据类型和转换,运算符和流程控制语句,数组和字符串,函数和函数化编程思想,对象和面向对象,内置类:(Math和Date),js定时器,正则,DOM树,DOM对象及其获取元素方式,DOM事件,事件冒泡,取消事件默认行为,DOM内容、属性、样式、元素节点、表单等等操作,window对象,location对象,history对象)
             JQuery(语法,核心函数,对象,选择器,文档处理,事件,动画效果)
             Ajax(XMLHttpRequest使用,同步请求,异步请求,JQuery基础ajax方法,三级联动)
             Bootstrap(全局css样式,组件库,插件),Node.js,Vue)

5.服务器:

                   Jetty,Undertow
                 (Tomcat,Nginx)

6.开发工具:

必学:LINUX(常用命令)因为公司很多服务器都是用的Linux。
1.服务器基本都是linux吧,安全开源轻量,当服务器最合适不过了!(记不住没关系,忘了百度查,知识大爆炸的时代…记不住会查会用就行)
1.1.最基本的防火墙操作要知道吧
1.2.把一个服务加到系统服务并且设置为开机自启要知道吧
1.3.SSH要会用吧(阿里云还有个安全组的东西也要会用,不要开了防火墙没更新安全组…这就很尴尬了)
1.4.基本的linux操作要知道吧(java主流的技术栈在Linux中怎样配置一定是要会的,)
1.5.最后是我对Linux这块的看法(在工作中经常用到的也就那么些,可以忘记,但是不能不会查,解决问题的能力和搜索能力是每个优秀的程序员必备的技能)
                 (集成开发环境:Eclipse,intellij IDEA,VS Code。  代码管理:Git(创建版本库,版本控制,远程仓库,分支管理)、SVN(服务器搭建,客户端使用)  项目管理:Maven、Gradle)

7.虚拟化/容器化:

虚拟化:Vmware,virtualbox

容器化:Docker,Kubernetes

8.分布式/微服务:

注册中心:Eureka(服务注册中心和zookepper那个家伙一样,充当服务与服务之间的桥梁)、Nacos、Consul、ZooKeeper(常用命令)(注册中心,注册生产者和消费者,这家伙长得像个管道工人)
                            服务调用:Ribbon、Feign(远程调用&负载均衡)、Dubbo
                            熔断/降级/限流:Hystrix,Sentinel(服务容错)
                            网关:Zuul,Gateway
                             配置中心:Config:Consul,Apollo,Nacos
                             认证鉴权:Shiro,Spring Security,OAuth2,SSO
                             链路追踪:Sleuth(服务追踪),Zipkin(可视化追踪),Skywalking
                             任务调度:Quartz,Elastic-Job,XXL-JOB
                             分布式事务:Seata(分布式事务),TX-LCN,
                             日志分析:Elasticsearch,Logstash,Kibana
                             文件存储:HDFS,FastDFS,MinIO
                             监控警告:Actuator,Admin,*Prometheus,Grafana*
                             Mysql 数据库分库分表:Shardingsphere

9.中间件:

               缓存:Redis,MemCache
                搜索:Solr,Elasticsearch
                队列:RabbitMQ(消息中间件),RockerMQ,ActiveMQ,Kafka
                RPC:Dubbon,gRPC,Netty
                NoSQL:Redis,MongoDB
                1.Swagger(***哥,这位哥是接口文档,提高前后端沟通的效率) 官方网址
               2.Nginx(web服务器,毛子用c语言写的,一般用来给那只tom猫做负载均衡/反向代理用,如有分布式文件存储需求,可和FastDFS这位兄弟联手) 官方网址中文文档
               3.Redis(缓存数据库,有很多功能,一般就作为缓存来用,最常用的就是SSO单点登录,还有前后端开发中的数据缓存) 官方网址
                3.1.单点登录,这里还有spring官方的一个家伙叫作SpringSession,也可实现(后面写一篇关于sso的文章吧…也是自己在项目中经常用到的)
                4.RabbitMQ(消息中间件,有6种工作模型,一个系统发送消息给这位兄弟,这位兄弟接收到消息发送给其他系统,比如…用户注册功能,注册成功后,发送手机短信同时发送邮件提醒) 官方网址
                 还有一位哥叫作Kafka也是消息队列,本人没用过
                5.还有个家伙叫作FastDFS(分布式文件系统,学过没用过…) 官方网址
                 6.Docker(大鲸鱼背上装集装箱,环境独立,互不影响,容器化技术 解决运维与开发环境不同) 官方网址


10.主流框架:

                     Spring:IoC,AOP
                      Spring全家桶:Spring +(MVC,Boot(对spring的相关功能进行了封装,完美的避开复杂的配置,开箱即用,能更专注于业务开发) ,Data,AMQP,Session,Security,Integration,Clound(治理boot开发的微服务,提供了一套微服务的生态链/解决方案))
                      ORM框架:JPA,Hibernate,MyBatis,
                       Shiro(蟹肉,安全框架,apache旗下基于用户-角色-权限模型的安全框架)

11.web后端:

                     1.web服务器基础Tomcat:(HTTP协议,HttpWatch,Tomcat服务器搭建,目录解析,端口配置,启动与停止与idea整合)
                      2***.Servlet:体系,生命周期,请求,响应,重定向,转发,项目路径问题,中文乱码解决,ServletConfig,ServletContext
                      3.JSP:语法,原理,脚本片段和表达式,声明和指令,九大内置对象,域对象使用
                      4.JSTL:核心标签库,函数标签库,fmt标签库,自定义标签库使用和原理
                      5.EL:表达式简介,使用,原理。11大隐含对象,逻辑运算,函数库深入
                      6.Cookie:机制,创建,使用
                      7.Session:原理,失效。活化,钝化
                      8***.Fiter:原理,声明周期,链,登录验证
                      9.Listener:原理,八大***使用,监听在线用户
                      10.文件上传下载

12.其他杂七杂八的技术:


                                   1.数据库层面的
1.jdbc(这没啥说的.Java提供的操作数据库的官方api) 学习网址
2.mybatis-plus(支持逆向代码生成,偷懒工具.) 官方网址
3.springdata-jpa(spring官方的一个框架,这家伙有一个利用其他语法代替sql的好处,新技术都是懒人搞出来的…) 官方网址

                                    2.身份校验层面的
1.jwt(java_web_token) 这位哥可比cookie/session好用多了!也更安全,也是单点登陆的一种方案(最常用的是把jwt存在redis中) 官方网址
2.oauth2(第三方登录开源组件…),其实github上还有比这个更好用的开源项目,开箱即用

13.最全开发工具

           1.开发工具
1.IntelliJ IDEA(推荐使用,这家伙是真的好用!) 官方网址
2.Eclipse(前几年还可,现在还有人再用) 官方网址
3.STS(Spring官方自研的开发工具,定制版的eclipse) 官方网址
可能还有其他的开发工具…但是不实用也不主流,这里不推荐

              2.压测工具
1.meter(接口压力测试工具,也可以当作接口测试工具来用) 官方网址

            3.JVM调优工具
1
.jprofile(jvm分析调优工具) 官方网址

                  4.查看代码工具
1.SublimeText(这个软件针不戳 推荐) 官方网址
2.EditPlus(也还好,反之我装了没用过…) 官方网址

                5.远程连接工具
1.XShell(远程连接工具 稳定 用户量大) 官方网址
2.XFTP(远程文件传输工具) 官方网址

               6.数据库连接工具
1.Navicat Premium 12(界面清爽,支持各种数据库连接,我用的挺爽,缺点:收费) 官方网址
2.sqlyog(界面一般,功能和上面差不多 优点:免费) 官方网址
3.redis desktop manager(redis官方连接工具,大方美观,稳定性好,用这也挺爽 缺点:收费) 官方网址
4.fastoredis(开源的redis管理工具) 官方网址

             7.数据库设计工具:
1.workbench(orcale官方出品的mysql数据库设计工具) 官方网址
2.PowerDesigner(功能齐全,也还好 缺点:收费) 官方网址
3.PDMan(国产开源,功能齐全 优点:开源免费) 官方网址

             8.接口测试工具
1.Postman(功能齐全,不收费 缺点:太重了 现在有很多插件可以代替) 官方网址
2.HTTP Client(idea中就自带的一个插件 挺好用)
9.JSON可视化工具
1.JsonView(一般作为插件使用,客户端只有windows版本) 官方网址

10.HOST工具
1.SwitchHosts(支持修改本地Host以及远程的) 官方网址

11.虚拟机工具
1.vmware workstation pro(这估计都没啥说的,主流虚拟机软件就是这家伙)

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 5 评论
分享
牛客网
牛客企业服务