java后端学习记录2019

时间:2022-10-26 23:15:11

学习计划

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. [python] python实现2048游戏,及代码解析。

    我初学python,有不对之处望大家指教.转载请征得同意. 我在网络上也找了一些2048游戏代码的讲解,但都不是特别详细.所以我希望能够尽量详细的讲解.同时,有的地方我也不懂,希望大家能帮助补充.我会 ...

  2. percona-toolkit 之 【pt-summary】、【pt-mysql-summary】、【pt-config-diff】、【pt-variable-advisor】说明

    摘要: 通过下面的这些命令在接触到新的数据库服务器的时候能更好更快的了解服务器和数据库的状况. 1:pt-summary:查看系统摘要报告 执行: pt-summary 打印出来的信息包括:CPU.内 ...

  3. 0x80072f8a未指定的错误

    问题: 安装DotNetCore.1.0.1-VS2015Tools.Preview2.0.2.exe提示:0x80072f8a未指定的错误 解决方法: 修改IE选项,取消选项 “检查服务器证书是否已 ...

  4. UIView详解2

    第三.Configuring the Event-Related Behavior 1.  userInteractionEnabled  property A Boolean value that ...

  5. SQL的介绍及MySQL的安装

    基础篇 - SQL 介绍及 MySQL 安装               SQL的介绍及MySQL的安装 课程介绍 本课程为实验楼提供的 MySQL 实验教程,所有的步骤都在实验楼在线实验环境中完成, ...

  6. jquery快速入门(三)

    捕获内容和属性 1.DOM 操作 获得内容 - text().html() 以及 val() text() - 设置或返回所选元素的文本内容,如果不带值则是返回值,如果带值则是修改值,如:$('p') ...

  7. C#生成MD5的方法

    ///C#生成MD5的方法 public static string GetMD5(string sDataIn) { MD5CryptoServiceProvider md5 = new MD5Cr ...

  8. Linux下运行jmeter

    • 我们在做测试的时候,有时候要运行很久,公司用的测试服务器一般都是linux,就可以运行在linux下面,linux下面不能像windows一样有图形化界面,那怎么运行脚本呢,就先在windows上 ...

  9. java 中 正则 matches vs find

    find()方法在部分匹配时和完全匹配时返回true,匹配不上返回false; matches()方法只有在完全匹配时返回true,匹配不上和部分匹配都返回false.

  10. STL基础--容器

    容器种类 序列容器(数组,链表) Vector, deque, list, forward list, array 关联容器(二叉树),总是有序的 set, multiset根据值排序,元素值不能修改 ...