java学习思维导图(java思维导图)
本文目录
java思维导图
Java虚拟机是Java语言的运行环境,它是Java 别具吸引力的特性之一,属于Java的中级内容。在学习过Java初级知识后,工程师就需要学习Java虚拟机。
周志明的《深入理解Java虚拟机》详细的介绍了Java虚拟机,但是学习的过程中会发现书本很厚,知识点很多,我最开始是采用有道云笔记去记笔记,但是发现知识点过于分散,朋友建议我绘制Java虚拟机的思维导图,更有助于学习Java虚拟机。
图片1:MindManager软件界面
一、绘制目录结构
绘制本书的目录结构
《深入理解Java虚拟机》这本书介绍了走进Java、自动内存管理机制、虚拟机字节码执行引擎、Java编译器与代码优化、高效并发等知识点。最开始学习的时候,要先绘制出主要知识点的思维导图。
图片2:主要知识点
二、绘制章节的思维导图
走近Java章节
走进Java章节主要介绍了JDK及其常用的版本,JDK1.5-1.8均为现在常用的版本,但是大部分项目使用JDK1.8。
图片3:走近Java章节
自动内存管理机制章节
自动内存管理机制章节介绍了内存区域、GC和JVM监控工具,内存区域包含了两个重要的知识点,运行时数据区和直接内存。GC中较为重要的是内存分配回收策略和垃圾收集算法,在后续的学习中需要重点看这部分的思维导图。
图片4:自动内存管理机制章节
虚拟机字执行子系统章节
虚拟机执行子系统章节介绍了字节码和类加载两个部分,在实际使用过程中,字节码占据重要的部分,因此字节码相关的思维导图应该作为后续学习的重点,我甚至将这个部分的思维导图打印出来随身携带。
图片5:虚拟机执行子系统章节
程序编译与代码优化章节
程序编译与代码优化章节介绍了前端编译器,JIT编译器,AOT编译器和高效并发,前三种编译器需要注意区分,他们需要编译的对象不同,分别为.java、字节码、.java;编译后的对象也是不同的,分别为.class、机器码、机器码。
图片6:程序编译与代码优化章节
高效并发章节
高效并发章节是我在学习过程中最易将概念混淆的章节,在这个章节中包含了JMM和线程安全两个部分,需要区别JVM和JMM的区别,需要了解线程的概念,线程安全部分需要重点进行学习。
图片7:高效并发章节
将《深入理解Java虚拟机》这本书的学习笔记绘制成思维导图后,使得知识点更加的清晰了然,并且能够方便的增加或者删除知识点,思维导图中同时也可以增加图像或者超链接,可以给更好的进行知识点的复习,达到事半功倍的效果。
java工作一年,方向渺茫该怎么办
java 工作一年了,流行的框架都会了,前台不算精通也算熟练了.遇到瓶颈,如何突破?
我记得我大学毕业简历上写的是精通java,工作5年后写的是熟悉java,现在10年+后写的是了解java。如果你现在才工作一年。。。
作为过来人我经历过感觉什么都懂,不知道何去何从的阶段。现在想想其实根本是似懂非懂。后面恶补基础,多简单的例子都亲自测试,思考实现原理,查看对应的jdk代码,半年后感觉到质的变化,才觉得java真有意思!
了解得越多,发现自己不懂的越多,这句话绝对是真理!
大胆讲一句,现在你工作一年,很大可能连wait,notify怎么样用都不懂?不服?用wait,notify写一个blockqueue试试?
补充一些有用的信息,说一下我是怎么样学习的,就说一点数据结构的:
一开始我们就学习list和map。先说list,最基本有Arraylist和LinkedList,就以他们两为例分析,看他们的父类和实现的接口。ArrayList继承AbstractList,LinkedList继承AbstractSequentialList,AbstractSequentialList继承AbstractList,查看代码AbstractSequentialList没有新增方法,那么Arraylist和LinkedList都继承AbstractList,可以把他们当成有相同的特性。
接下来查看AbstractList,他实现了List接口,没有新增方法,那么重点查看List的方法即可。每一个方法都要看一遍API说明,用一遍测试一遍。add,remove这些没有什么好看的,重点留意你不熟悉的方法。
接下来看他们实现的接口,相同的Cloneable, Serializable看一下有哪些方法即可,重点看不同的,Arraylist实现了RandomAccess(其实里面啥方法也没有,应该说是只是一个标志),LinkedList实现了Deque。在看每一个接口的说明,RandomAccess说明可以用get方法访问,性能很快,你如果是一个LinkedList用get你就会发现慢的吓人;Deque说明实现了双向队列,在查看Dueue的各个方法了解他所有的特性。
接下来看构造函数的参数,可以看出ArrayList有个int类型的initialCapacity参数,LinkedList没有,思考一下为什么。接下来你会发现有数组的数据结构的构造函数都有一个容量的参数(如HashMap),你会发现他的用处,再深究下去会发现ArrayList会存在扩容这个概念。。。
到了这步你应该有自己的总结:
a。ArrayList是用数组实现的,需要初始化容量,容量不够的时候会扩容,扩容会把数组copy一遍比较耗费性能,大数据量的时应该尽量避免。
b。ArrayList可以用get方法随机访问,性能还能很快,LinkedList用get方法会比较慢,大数据量应该避免。
c。LinkedList实现了双向队列,可以非常方便的在头尾增加和删除数据。
d。一边遍历一边修改的时候需要使用listIterator,不要傻傻的搞2个List。
到了这步算是入门了,我才敢说自己入门了。
想要朝这方面发展或者真心有兴趣的。可以找我要一些基础的学习视频,Q号码:5,这个是免费的,希望同学找我要的时候不要有理所应当的态度,毕竟都是我的心血,希望你是真的有一颗想要学好java的心,我也会尽所能的去帮助你成为一名优秀的程序员。
加我Q有以下几个要求,不达标的勿扰:
1、大学学习的是Java相关专业,毕业后面试受挫,找不到对口工作可以
2、在公司待久了,现在过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的
3、参加过线下培训后,知识点掌握不够深刻,就业困难,想继续深造
4、已经在Java相关部门上班的在职人员,对自身职业规划不清晰,混日子的
5、有一定的C语言基础,接触过java开发,想转行的
小号勿扰,不喜勿加
然后分享一个思维导图,这个阶段是对于1年的工作经验比较适合的学习规划图:
我有时候面试会问,list怎么样删除指定的数据了?如,存放数字的list,把偶数删除掉。很简单对吧,你写代码试试?你要是知道List接口有个可以修改的listIterator,你就会知道这么常见的场景应该用这个迭代器解决。
面试的时候最讨厌有点人自以为是:“这个我不清楚,但我上网查一下就知道了!”Are you kidding?你都不知道有这个东西,你会去查?
说这么多,只是希望大家记住,最简单的基础才是最重要的,我不希望我接下来在面试的时候,问map有哪些map,只能回答出我大学毕业的时候就知道的hashmap和hashtable。。。
作者:晓风轻
如何学习JAVA
零基础学习java可按照这份大纲来进行学习第一阶段:Java专业基础课程阶段目标:1. 熟练掌握Java的开发环境与编程核心知识2. 熟练运用Java面向对象知识进行程序开发3. 对Java的核心对象和组件有深入理解4. 熟练应用JavaAPI相关知识5. 熟练应用JAVA多线程技术6. 能综合运用所学知识完成一个项目知识点:1、基本数据类型,运算符,数组,掌握基本数据类型转换,运算符,流程控制。2、数组,排序算法,Java常用API,类和对象,了解类与对象,熟悉常用API。3、面向对象特性,集合框架,熟悉面向对象三大特性,熟练使用集合框架。4、IO流,多线程。5、网络协议,线程运用。第二阶段:JavaWEB核心课程阶段目标:1. 熟练掌握数据库和MySQL核心技术2. 深入理解JDBC与DAO数据库操作3. 熟练运用JSP及Servlet技术完成网站后台开发4. 深入理解缓存,连接池,注解,反射,泛型等知识5. 能够运用所学知识完成自定义框架知识点:1、数据库知识,范式,MySQL配置,命令,建库建表,数据的增删改查,约束,视图,存储过程,函数,触发器,事务,游标,建模工具。2、深入理解数据库管理系统通用知识及MySQL数据库的使用与管理。为Java后台开发打下坚实基础。Web页面元素,布局,CSS样式,盒模型,JavaScript,jQuery。3、掌握前端开发技术,掌握jQuery。4、Servlet,EL表达式,会话跟踪技术,过滤器,FreeMarker。5、掌握Servlet相关技术,利用Servlet,JSP相关应用技术和DAO完成B/S架构下的应用开发。6、泛型,反射,注解。7、掌握JAVA高级应用,利用泛型,注解,枚举完成自己的CRUD框架开发为后续框架学习做铺垫。8、单点登录,支付功能,项目整合,分页封装熟练运用JSP及Servlet核心知识完成项目实战。第三阶段:JavaEE框架课程阶段目标:1. 熟练运用Linux操作系统常见命令及完成环境部署和Nginx服务器的配置2. 熟练运用JavaEE三大核心框架:Spring,SpringMVC,MyBatis3. 熟练运用Maven,并使用SpringBoot进行快速框架搭建4. 深入理解框架的实现原理,Java底层技术,企业级应用等5. 使用Shiro,Ztree和Spring,SpringMVC,Mybaits完成企业项目知识点:1、Linux安装配置,文件目录操作,VI命令,管理,用户与权限,环境部署,Struts2概述,hiberante概述。2、Linux作为一个主流的服务器操作系统,是每一个开发工程师必须掌握的重点技术,并且能够熟练运用。3、SSH的整合,MyBatis,SpringMVC,Maven的使用。4、了解AOP原理,了解中央控制器原理,掌握MyBatis框架,掌握SSM框架的整合。5、Shiro,Ztree,项目文档,项目规范,需求分析,原型图设计,数据库设计,工程构建,需求评审,配置管理,BUG修复,项目管理等。6、独立自主完成一个中小型的企业级综合项目的设计和整体架构的原型和建模。独立自主完成一个大型的企业级综合项目,并具备商业价值
求不需要java的思维导图软件
mindmanagerxmindMindMapperDropMindImindmapNovaMindTheBrainjava装起来也不是那么费劲啦。参考百度:
更多文章:
git gui使用教程(如何使用 Git 和 GitHub)
2024年7月12日 11:55
peer to peer(peer to peer (P2P),grid大概是怎么一回事计算机网络方面的)
2024年6月3日 13:32
单片机编程数字代码(编程用单片机控制三个数码管显示数字520)
2024年7月7日 02:41
getremoteaddr(request.getRemoteAddr怎么获取用户真实的IP地址)
2024年7月20日 13:17
python培训教材ppt(python实训答辩ppt应该写什么)
2024年7月23日 12:04
formatdatetime语句(使用ASP显示系统时间的语句是什么)
2024年5月17日 07:26
estimate读音(打量度量计量度量中估量的量读音一样吗)
2024年6月13日 09:00
手机里的svg格式可以用什么软件打开(我想问一下svg格式可以用什么软件打开)
2024年7月23日 14:18
saas系统是什么意思(saas系统和传统的系统,该怎么选择)
2023年9月12日 00:00
in that(for that和in that有什么区别)
2024年5月8日 10:19
segmentation什么意思(Market Segmentation是什么意思)
2023年11月16日 04:00