Overview_java

​ 对java知识体系的整理,把知识从点到线 面的 ,学习地图

知识体系总结

基础

英语

​ 了解一手资料,官方文档,github资料

​ 书籍📚《程序员英语》

linux / 计算机基础、原理

​ linux常用命令,问题定位需要知道

​ 计算机原理这里,基于冯诺伊曼模型建造的计算机分为4个子系统:存储器、算术逻辑单元、控制单元、和输入/输出单元

​ 书籍📚《linux鸟哥私房菜》、《计算机原理》、《深入理解计算机原理》、《程序是怎么跑起来的》《Linux内核》

网络编程 tcp/ip协议 http

​ TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据,IP想像成一种高速公路,TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,HTTP协议即超文本传送协议(Hypertext Transfer Protocol )

​ 书籍📚《http权威指南》、《tcp/ip详解》、《图解http》、《网络是怎么链接的》

数据结构和算法

​ 数据结构和算法,常见的排序类型,知道时间复杂度,空间复杂度等概念,==实现方面可以看jdk的集合类==

​ 书籍📚 《算法》

数据库MySQL

​ 关系型数据库,事务隔离级别、对应解决的问题,懂的索引(b+ tree 以及相关优化)、锁(MVCC实现相关、 间隙锁),调优,定位问题

​ 书籍📚 《高性能MySQL》

mysql分析。—-》https://mp.weixin.qq.com/s/213sPk-0RtWwwX6YotN6eQ
原因
1.硬件问题。如网络速度慢,内存不足,I/O吞吐量小,磁盘空间满了等。

2.没有索引或者索引失效。(一般在互联网公司,DBA会在半夜把表锁了,重新建立一遍索引,因为当你删除某个数据的时候,索引的树结构就不完整了。所以互联网公司的数据做的是假删除.一是为了做数据分析,二是为了不破坏索引 )

3.数据过多(分库分表)

4.服务器调优及各个参数设置(调整my.cnf
切入点
1.先观察,开启慢查询日志,设置相应的阈值(比如超过3秒就是慢SQL),在生产环境跑上个一天过后,看看哪些SQL比较慢。

2.Explain和慢SQL分析。比如SQL语句写的烂,索引没有或失效,关联查询太多(有时候是设计缺陷或者不得以的需求)等等。

3.Show Profile是比Explain更近一步的执行细节,可以查询到执行每一个SQL都干了什么事,这些事分别花了多少秒。

4.找DBA或者运维对MySQL进行服务器的参数调优。

Java SE(Java Standard Edition)

Java语言/语法基础

​ 对象:封装性、派生性、多态性

​ 切面: Java动态代理 字节码提升

​ 元编程 :泛型、 反射、 注解

​ 函数编程:函数式编程、Stream API设计

​ 书籍📚 《Thinking in java》 《core Java》 《SCJP考试指南》《java8函数式编程》

​ 文档 官方指导文档:https://docs.oracle.com/javase/tutorial/index.html

集合框架

​ Java Collections Framework Java Collections主要包括以下三部分:接口(Interface)、实现(Implemention)和算法(Algorithm)

Java IO/网络

​ 文件流、 java网络编程 、阻塞IO、非阻塞IO

​ 书籍📚《NIO与Socket》、《Netty权威指南》、《Netty实战》

​ 可以沿着这个路线深入学习,socket -> Netty -> dubbo

​ Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。Socket 只是个接口不是协议

​ netty资料:==待整理==

https://mp.weixin.qq.com/s/nVqjSbocs4kFFz2pJqovhQ
https://mp.weixin.qq.com/s/WBV4Tm-I5VNWXqjxMgw0yw
https://www.jianshu.com/p/cde27461c226
https://mp.weixin.qq.com/s/zf_LY0MSD4S4p0wXKOyhZg

多线程

​ ==J.U.C== ,多线程的整个体系基于volatile 、cas ->aqs,通常需要了解的 JMM内存模型、锁、线程池、工具类

​ 书籍📚《Java并发编程艺术》 、《并发编程实践》 翻译不太好,建议看英文版、《Concurrent_Programming_in_Java》并发框架的作者DougLea写的

JVM

​ 调优,问题定位,常用的工具,jstack 等,字节码、编译过程、垃圾收集器、即时编译等、虚拟机规范

​ 书籍📚《深入理解 Java 虚拟机》

版本特征 ==待整理==

​ JDK发展史:从几个角度看 jvm特性、并发工具、语言特性 ,例如

JDK1.0版本:JAVA 虚拟机、AWT
JDK1.1版本:JAR文件格式、JDBC、JavaBeans、RMI、Java语法:内部类(Inner Class)和反射(Reflection)
JDK1.2版本:Java技术体系拆分为3个方向(面向桌面应用开发J2SE/面向企业级开发的J2EE/面向手机等移动端开发的J2ME)
      代表性技术:EJB、Java plugin-in、JavaIDL、Swing
      虚拟机中内置了JIT(JUST IN TIME)编译器、3个虚拟机并存(Classic VM /HotSpot VM/Exact VM)
      语言和API级别上:添加了strictfp关键字与Collections集合类
JDK1.3版本:一些类库(数学运算和新的Timer API)/JNDI服务作为平台级服务提供、使用CORBA IIOP来实现RMI通信/添加了JavaSound类库
JDK1.4版本:正则表达式、异常链、NIO、日志类、XML解析器、XSLT转换器
JDK1.5版本:语法:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach循环)jmx 元数据(注解); 引入Instrumentation(Agent,jvm级别的AOP)
      虚拟机和API:改进了Java的内存模型、提供了Java.util.concurrent并发包
JDK1.6版本:终结了J2ME/J2SE/J2EE的命名方式,启用Java SE6/Java EE6/Java ME6的命名方式
      提供动态语言支持(通过内置的Mozilla javaScript Rhion引擎实现)
      提供编译API和微型HTTP服务器API,增强Instrumentation,虚拟机启动后的
      虚拟机改进:锁与同步、垃圾收集、类加载
JDK1.7版本:nio2 try resource autocloseable JVM新增了一套叫做invokedynamic的指令为为支持动态类型化程序语言的实现;并发API新增了轻量级的分支/合并(Fork/Join)框架
      Java开源
      提供新的G1收集器(G1在发布时依然处于Experimental状态)
      加强对非Java语言的调用支持(JSR-292到目前没有完全实现定型)、升级类加载架构
JDK1.8版本:Lambda表达式、Coin
JDK1.9版本:flow reative 模块化
JDK10版本:var 垃圾收集改进
JDK11版本:httpclient 垃圾收集改进 Epsilon 垃圾收集器被称为“no-op”收集器,将处理内存分配而不实施任何实际的内存回收机制

其他

classLoder

​ 双亲委派,以及怎么破坏双亲委派,在spring和tomcat中的体现

​ 文档:https://zhuanlan.zhihu.com/p/51374915?utm_source=wechat_session&utm_medium=social&utm_oi=557574927448846336

java官方订阅

​ 获取了解最新变化情况

​ 文档:mail.openjdk.java.net Mailing Lists

Java EE(Enterprise Edition)

​ 常用的技术栈spring + springmvc + mybatis(或者其他的orm框架) ,这里建议学习j2ee的常用规范

Spring /Spring boot

​ ==注意关注版本特征==

​ spring 实现了大部分的j2ee规范,本身主要是DI(管理对象之间的关系)和AOP(切面编程) ,深度学习源码和理解它的优秀思想(简单,开放),springmvc

​ SpringBoot的简化配置,部署,自动装配。

​ 书籍📚《spring实战》、《spring技术内幕》、《spring源码剖析》、《Expert One-on-One J2EE Design and Development》《Expert One-on-One J2EE Development without EJB》 spring作者写的书

​ 文档:spring 动态代理 https://mp.weixin.qq.com/s/vCZP8sPrtnXWvg6IlcHQOg

​ 特性 https://mp.weixin.qq.com/s/09lMCJKvACOU_umkzu2StQ

其他

web Framework框架性能

​ 关注常用框架性能

​ 文档 https://www.techempower.com/benchmarks/#section=data-r17

重视规范

JVM规范

​ Java语言规范、Java虚拟机规范、Java内存模型规范

​ 书籍📚/文档:官方文档 ==待补充==

JSR规范

​ Servlet、REST、JDBC、JNDI、JPA、JTA、Bean Validation、JMS等

​ 书籍📚/文档:JSR https://jcp.org/en/jsr/platform

​ Servlet : servlet规范 -> springMVC -> servelt容器 tomcat jetty

​ JNDI: Java Naming and Directory Interface,JNDI避免了程序与数据库之间的紧耦合,使应用更加易于配置、易于部署。 SPI https://www.zhihu.com/question/49667892/answer/404097870 / https://blog.hhui.top/hexblog/2017/05/26/SPI%E6%A1%86%E6%9E%B6%E5%AE%9E%E7%8E%B0%E4%B9%8B%E6%97%85%E4%B8%80%EF%BC%9A%E8%83%8C%E6%99%AF%E4%BB%8B%E7%BB%8D/#%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2%EF%BC%9A-Z-blog

​ restful风格 —–》〉 https://mp.weixin.qq.com/s/_CeSX_lSoyg9zPxs52twRA

IETF规范

​ URL/URI、HTTP、REST、WebSockets等

​ 书籍📚/文档:RFC 2616 新标准

消息规范

​ AMQP、MQTT

​ 书籍📚/文档:官方文档 ==待补充==

关系型数据库规范

​ SQL99、SQL03等

​ 书籍📚/文档:官方文档 ==待补充==

Reactive 规范

​ Reactive Manifesto、Reactive Streams

​ 书籍📚/文档:官方文档 ==待补充==

高效/优雅

​ 多看,多写模仿,例如spring中的设计模式,tomcat中的设计模式

​ 常用工具Git、Maven 、Nginx

​ 书籍📚/文档 :《Maven实战》、《Effective Java》、《重构》、《Head First设计模式》、《测试驱动开发 by Example》、《程序员修炼之道》翻译不太好

框架/中间件

​ 关注常用框架,以及生命周期Attic—–> https://attic.apache.org/,注意主流框架的版本特征 / 使用了什么设计模式

Web栈

​ Struts、 Spring

关系型数据库

​ MyBatis、Hiberante、JPA

NoSQL

​ Redis 、Mongo、 ELasticSearch、Hbase

RPC

​ CXF(WebServices)、Spring Cloud Feign(REST)、Dubbo (多协议)

任务调度

​ Java Timer/ScheduleExecutorService、 Spring @Scheduled

消息服务

​ ActiveMQ(JMS)、RabbitMQ(AMQP)、Kafka

客户端

​ HttpClient(HTTP) 、Spring RestTemplate ( REST )

Web容器

​ Tomcat、Jetty​

书籍📚/资料

​ 《大型网络架构与中间件》、《Tomcat架构解析》

​ tomcat设计模式 https://www.cnblogs.com/coldridgeValley/p/6606271.html

微服务演变

​ SOA向微服务的演变,衍生了许多技术,CAP 、BASE理论

服务调用

​ 如何高并发、高可用

分布式配置

​ Nacos、Spring Cloud Feign

服务注册/发现

​ zk、Eureka Consul。对比,使用场景。 cp、ap

​ 书籍📚:《proxys到zookeeper一致性协议》

路由/负载均衡

​ Netflix Ribbon

熔断/限流

​ Spring Cloud Hystrix

相关技术:

​ 限流 -》RateLimiter是Guava的concurrent包下的一个用于限制访问频率的类.

网关

​ Spring Cloud Zuul

其他

​ 分布式锁

​ 分布式事务 https://mp.weixin.qq.com/s/oKOzvN49zOhl8cwliy3SEg

​ XA两阶段提交的不足 XA三阶段

​ 解决一致性问题,raft、Gossip (redis)、Paxos(zk)

Spring Cloud (侵入式)

​ 可以看看springCloud都做了些什么实现

​ Compare with k8s https://en.wikipedia.org/wiki/Kubernetes#Comparison_to_Spring_Cloud

​ 相关文档/书籍📚:《领域驱动》、《SpringCloud微服务实践》

Service Mesh (非侵入式)

​ kubernetes 为基础,docker为容器(https://zhuanlan.zhihu.com/p/54512286?utm_source=wechat_session&utm_medium=social&utm_oi=557574927448846336)

​ 相关技术:CI/CD 持续集成

相关文档/书籍📚:《Docker进阶与实战》

大数据生态

​ Kafka zookeeper flume

​ 实时 sparker

​ 离线 hive

其他

开阔视野

​ 正所谓站的高看得远,多关注业界发展。

​ 相关资料:https://www.zhihu.com/question/305924723/answer/556971474?utm_source=wechat_session&utm_medium=social&utm_oi=557574927448846336

https://mp.weixin.qq.com/s/CPUaB60pue0Zf3fUL9xqvw

http://www.iocoder.cn/chinese-comment-repository/?xing

性能/压力测试/调优

​ 懂常用性能指标,以及如何预估性能

​ 相关资料:

https://mp.weixin.qq.com/s/w0TxuFQZAIED879JRax8vg

https://mp.weixin.qq.com/s/Lz4cEt0LY_Fvqz2zAgOafw

前端基础

​ 除了html、css、javascript 相关、 一些前端框架也需要了解Vue、React

​ 前后端分离/单页面应用—》〉https://blog.csdn.net/Nicorui/article/details/74945839

​ 书籍📚《Javascript DOM编程艺术》

态度

​ 保持自我驱动和热情/不满足于完成预期

学习方法

  • 是什么 :官方、wiki、同类技术对比、组成部分、版本特性

  • 为什么 : 解决了什么问题、没有出现之前怎么做、 自己实现的话会怎么做

  • 怎么做 :官方示例/文档 、相关学习视频、写Demo、带着问题看源码、实践

  • 输出 :写blog、分享


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 951488791@qq.com

文章标题:Overview_java

字数:3k

本文作者:zhengyumin

发布时间:2019-02-02, 20:43:14

最后更新:2019-11-24, 16:56:38

原始链接:http://zyumin.github.io/2019/02/02/Overview_java/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。