学习计划

2019年计划
1.学习计算机基础,并加以实践。包括LeetCode刷题、数据库原理(索引和锁、Sql优化等)、网络协议(Http、Tcp)、操作系统(加深Linux)。《Http权威指南》、《操作系统设计与实现 》(重点!)
2.巩固java基础。重点加深多线程、并发、Jvm、NIO。多温习《深入理解Java虚拟机》(重点!)
3.阅读Spring源码,Mybatis源码,体会设计模式。可以配合博客、书籍去理解源码。
4.提高技术深度。包括微服务SpringCloud的熔断、降级、网关等原理。
《Redis的设计与实现》,《Mysql技术内幕》(主从、分库分表等)。
消息队列Kafka的细节及原理。加深理解分布式事务和分布式一致性。
先学工作中用到的。多写Demo,多记笔记。
5.拓展技术广度。开始了解网络通信Netty,Web服务器Nginx,应用服务器Tomcat,搜索引擎ElasticSearch。

后端怎样才能进入顶尖的大公司?

1.每周刷几道LeetCode。大公司对算法要求比较高。还可以在牛客网刷《剑指offer》,重点学习经常考的题目。
刷题就跟以前中学时做数学题一样,解出题目,得到反馈,很有成就感。
2.每天GitHub打卡commit,积累十万行代码,刻意学习,不断纠错。
3.想进大厂,基础一定要非常扎实。包括java基础,并发,JVM,网络协议,操作系统,数据库。
3.提高技术深度。
一定要对某个领域的技术非常精通,包括整套技术的知识图谱、架构、组成、区别等。比如精通缓存、或者精通MQ、微服务、搜索引擎或者其他的某一两个技术领域等。
4.提高技术广度。
包括分布式架构。分布式理论。集群。分布式缓存Redis。SOA架构Dubbo。远程调用RPC。分布式服务协调Zookeeper。消息队列KafKa 。微服务架构SpringCloud。分布式事务。
搜索引擎ElasticSearch。容器Docker。分布式数据库分库分表Mycat 。分布式Session。分布式存储。分布式锁。通信框架Netty、Web服务器Nginx,应用服务器Tomcat等等。

java后端学习重点:

1.java语言特性: 基础知识,集合,多线程,并发,JVM,NIO,网络编程,设计模式。 (★★★★★)
jdk源码中有大量的数据结构与java语言细节。jdk源码着重看concurrent、collection、sort、nio、util。
2.计算机基础知识: 数据库(索引和锁等基础及sql优化)。网络(http协议、tcp协议)。数据结构。算法。操作系统。计算机组成原理。 (★★★★★)
计算机基础知识和java语言细节。是最最重要的。需要重点学习。五年甚至十年后都有用。
框架每隔几年就会更新换代,但是基础知识是永远有用的。
80%的时间用来学习基础知识,20%的时间学习框架。

3.Web框架。分布式架构。
必备:Spring,Mybatis,SpringMVC,Mybatis-plus,SpringBoot
常用:分布式架构。分布式理论。集群。分布式缓存Redis。SOA架构Dubbo。远程调用RPC。分布式服务协调Zookeeper。消息队列KafKa 。微服务架构SpringCloud。分布式事务。
可选:搜索引擎ElasticSearch。容器Docker。分布式数据库分库分表Mycat 。分布式Session。分布式存储。分布式锁。
边实战边理解原理。最重要的是理解原理。用过很多框架,但是不懂原理,那也是无用的。(★★★★)
比如学习Redis,就得知道Redis常用数据结构、Redis事务、备份方式、回收策略、主从同步、哨兵模式,Redis集群。
阅读spring、springMvc等框架源码、或者是其他第三方库源码。Spring源码主要是体会设计模式的运用。
4.其他进阶知识:linux、mongodb、nginx、netty、tomcat、sql优化 (★★★★)
java后端架构师技术图谱: https://github.com/xingshaocheng/architect-awesome

书籍:

java语言:《java编程思想》、《Effective Java》、《码出高效》、《Java性能优化权威指南》、《java并发编程实战》、《深入理解Java虚拟机》、《Java 8实战》
SSM:《Java EE互联网轻量级框架整合开发 SSM框架》、《精通Spring企业应用开发实战》、
设计模式:《Head First 设计模式》、《大话设计模式》
分布式理论:《大型分布式网站架构设计与实践 》、《大型网站技术架构:核心原理与案例分析》、《大型网站系统与Java中间件实践》
分布式中间件:《从Paxos到Zookeeper 分布式一致性原理与实践》、《Redis设计与实现》、《Redis开发与运维》、《kafka实战》、《kafka权威指南》
微服务:《SpringCloud微服务实战》
网络 :《图解Http》、《HTTP权威指南》、《tcp/ip详解 卷一、二、三》、《网络是怎样连接的》、《图解Tcp/ip》
数据库:《mysql必知必会》、《MySQL技术内幕 InnoDB存储引擎》、《高性能MySQL》
操作系统:《linux鸟哥的私房菜》
计算机组成原理:《深入理解计算机系统》、
代码规范:《阿里巴巴java开发手册》、《代码整洁之道》、《重构 改善既有代码的设计 》
其他:《程序员修炼之道》、《码农翻身》、《代码大全》、《人月神话》、《黑客与画家》

学习方法:

0.每周完成一个 ARTS。
每周至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章。(也就是 Algorithm、Review、Tip、Share 简称 ARTS)坚持至少一年。阅读英文技术文章,这个我经常忘记。感觉可以读读官方的文档。
1.项目驱动型学习。
项目经验!!以战养战!动手做项目!
做Side Project。或者参与开源的项目。
Learning By Doing。编程是一门需要大量实践的技能。
只有亲自动手做,才能掌握技术。没有动手做,就算看十遍也不一定会理解的。
写十万行代码,积累常用的可复用的代码块。刻意学习,不断纠错提高。
将项目放到GitHub,坚持commit。。
2.问题驱动型的学习方法。
带着问题去看书,去学习。如果功利一点,也可以带着面试题的疑问去看书。
比如当工作中或者面试时遇到问题都可以记录下来,然后带着这些问题去学习。
3.个人驱动型的学习方法。
明确的目标,何时何地要完成什么目标。比如,三年后,加入一家互联网或者金融科技公司,非996,月薪20k。
4.经常进行CodeReview。
通过审核,重构代码,在反馈中不断进步。
5.多读源码 ,理解技术原理。
要带着疑问去读源码,不要为了读源码而读源码。
读源码,对提高水平非常有帮助。
阅读spring、springMvc等框架源码、或者是其他第三方库源码。Spring源码主要是体会设计模式的运用。
也可以去GitHub下载一些优秀的项目,阅读源码。
6.多看好书,并做读书笔记,最好有图有代码。记了笔记,还要多看多复习。
书籍的知识是系统知识,而不是碎片化知识。
边看书,边实践,再查阅相关博客,总结提高。
7.多写博客。
内容不要留于表面,要往深处挖掘,写深一点。
曾经有一位面试官跟我说,"你还写博客喔,我特意去看了。"我一脸地自豪,然后面试官又说"你写的内容太浅太表面了,要多往深处挖掘。"
8.csdn回答问题,收集疑问。还有浏览器的收藏夹。多整理并系统化知识.
9.牛客网看面试题,在线编程,做题目,包括《剑指offer》、《程序员面试金典》和《Sql实战》。
Leetcode刷题。刷题可以分Topic刷,比如链表、栈、队列、树、排序等。刷题通过笔试才有机会进入比较好的公司。。
10.多看官方文档,官方文档的内容是最准确的。最好将官网的代码敲一遍。
网络上其他的资料大多是二手货,而且还不一定是正确的。
11.每隔几个月,查看招聘网站的 java开发/架构师 的工作要求,技术栈。
面向就业学习。如果学习的内容不是企业所需要的,那找工作会比较麻烦。
12.阅读ImportNew、InfoQ等公众号,拓展视野。阅读微信公众号等内容,要多摘录,记录到有道云笔记。
13.多用Google,少用百度。Google的内容才是最精准的。
14.分清哪些是最主要的技术。抓重点。下班后分配更多的时间学习。有些技术是很容易过时的。
15.使用网站或其他产品的时候,多思考实现和原理。模仿其他知名网站的。自己写一下。
16.提高调试技巧。
17.多和他人交流。Learning By Teaching。Learning By Sharing。
18.番茄工作法。专注一个小时,休息五分钟。更有益健康。
19.刻意学习。

其他

1.焦虑是没有用的。只会影响学习效率。

学习记录:

3月--9月
实战类:《阿里巴巴java开发手册》、《代码整洁之道》、《Maven实战》、《java8实战》、《SpringCloud微服务实战》
理论类:《Redis设计与实现》、《Http权威指南》、《高性能Mysql》
面试类:《剑指offer》
4月21号-4月30号
1.统一异常处理。
2.HttpServeletRespon响应返回图片及其他内容。
3.SpringBoot配置多数据源。DataSourceBuilder建造者模式。
4月15号--4月20号
1.在服务提供者Feign的方法中使用@RequestBody,然后在服务消费者的方法中使用@RequestBody,参数能够成功解析吗? (可以的。)
2.条件断点:比如,当for循环比较次数比较多,想让for循环停在指定的第几次循环处。。可以使用条件断点。
3.异常断点?
4月1号-4月15号
1.深入学习一下Http的请求头、响应头、状态码等参数。
3月20--3月31号
1.一周做一道算法题。还是有点少。删除有序链表的重复节点时,没有审好题,以为是无序的,做了半天没做完。
2.看《SpringCloud微服务实战》,并做笔记。
3月10号--3月16号
1.了解下getJSONObject()的apiDemo。进行JSONObject的处理。注意JSONObject和JsonObject的区别 。
2.学习一下jenkins怎么用。
3.FeignClient进行声明式服务消费。
4.添加Hystrix断路由。
5.postMan发送测试接口。一直报异常信息。(晕死,方法参数为json,前面忘了加@RequestBody)。
6.安装mysql-8.0,出了一大堆问题。
3月6--3月10号
1.主要温习一下工作中常用的基础知识。
2.Mybatis多表查询、手写比较复杂的Sql、Mybatis-plus
3.java8的Lambda表达式以及时间日期api,还有guaua包、HttpClient。
4.linux安装mysql、tomcat、nginx。
5.SpringCloud服务熔断和降级。

java后端学习记录2019的更多相关文章

  1. javaWeb后端学习记录

    java后端学习重点: 1.java语言特性: 基础知识,集合,多线程,并发,JVM,NIO,网络编程,设计模式.  (★★★★★) jdk源码中有大量的数据结构与java语言细节.jdk源码着重看c ...

  2. Java设计模式学习记录-模板方法模式

    前言 模板方法模式,定义一个操作中算法的骨架,而将一些步骤延迟到子类中.使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤. 模板方法模式 概念介绍 模板方法模式,其实是很好理解的,具体 ...

  3. Java设计模式学习记录-状态模式

    前言 状态模式是一种行为模式,用于解决系统中复杂的对象状态转换以及各个状态下的封装等问题.状态模式是将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象的状态可以灵活多变.这样在客户端使 ...

  4. Java设计模式学习记录-观察者模式

    前言 观察者模式也是对象行为模式的一种,又叫做发表-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式. 咱们目前用的最多的就是各种MQ(Message Queue ...

  5. Java设计模式学习记录-备忘录模式

    前言 这次要介绍的是备忘录模式,也是行为模式的一种 .现在人们的智能手机上都会有备忘录这样一个功能,大家也都会用,就是为了记住某件事情,防止以后自己忘记了.那么备忘录模式又是什么样子的呢?是不是和手机 ...

  6. Java设计模式学习记录-迭代器模式

    前言 这次要介绍的是迭代器模式,也是一种行为模式.我现在觉得写博客有点应付了,前阵子一天一篇,感觉这样其实有点没理解透彻就写下来了,而且写完后自己也没有多看几遍,上次在面试的时候被问到java中的I/ ...

  7. Java设计模式学习记录-解释器模式

    前言 这次介绍另一个行为模式,解释器模式,都说解释器模式用的少,其实只是我们在日常的开发中用的少,但是一些开源框架中还是能见到它的影子,例如:spring的spEL表达式在解析时就用到了解释器模式,以 ...

  8. Java设计模式学习记录-命令模式

    前言 这次要介绍的是命令模式,这也是一种行为型模式.最近反正没有面试机会我就写博客呗,该投的简历都投了.然后就继续看书,其实看书也会给自己带来成就感,原来以前不明白的东西,书上已经给彻底的介绍清楚了, ...

  9. Java设计模式学习记录-享元模式

    前言 享元模式也是一种结构型模式,这篇是介绍结构型模式的最后一篇了(因为代理模式很早之前就已经写过了).享元模式采用一个共享来避免大量拥有相同内容对象的开销.这种开销最常见.最直观的就是内存损耗. 享 ...

随机推荐

  1. TypeScript: this bind 和 回调的正确用法

    TypeScript 中如果传递了 而且在回调函数中用了this 的话, 就要小心了, 这个this 不一定是指向当前类对象了,如果想确保指向的还是那个对象的话, 需要在传递那个方法的时候, 先调用b ...

  2. CNVD-C-2019-48814 漏洞

    CNVD-C-2019-48814 WebLogic wls9-async反序列化远程命令执行漏洞 网上均有详细的说明(https://github.com/jas502n/CNVD-C-2019-4 ...

  3. NPOI 导出Excel部分

    ) { MessageBox.Show("没有找到相关的数据!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.I ...

  4. connected standby

    参考链接 https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby http ...

  5. 学习笔记——Ubuntu下使用Docker包部署禅道任务管理系统

    写此文目的:利用搭建禅道环境联系Docker基本使用方法,加深对Docker容器的理解,Ubuntu下面才能原生运行Docker,因此选择了Ubuntu 1.下载禅道开源版 wget http://d ...

  6. 如何让SQLServer的 itemNum 字段 按照数字大小顺序排序

    我的 itemNum 从1到20,可是超过了SQLServer的默认排序这样的1101112...19234567如何才能让排序成为这样1234567891011.. . 解决办法:因为 itemNu ...

  7. linux git 保存账号密码

    vi .git/config [credential] helper = store git pull 输入用户名.密码自动保存

  8. Error occurred during initialization of VM Could not reserve enough space for object heap

    Error occurred during initialization of VM Could not reserve enough space for object heap Java虚拟机(JV ...

  9. linux/centos elasticsearch 环境搭建 安装 运行 使用

    环境搭建也是有些坑的存在,所以整理了一下搭建流程,安全无痛. ElasticSearch是一个开源的分布式搜索引擎,具备高可靠性,支持非常多的企业级搜索用例. 一.java 环境 直接apt安装火箭一 ...

  10. 通过ldap验证svn服务

    1.简单介绍: 这里需要介绍一点的就是svn服务器的验证是需要通过SASL机制的,那么SASL全称为(Simple Authentication and security Layer),是一种用来扩充 ...