java管理系统入门教学 如何系统的学习JAVA?
如何系统的学习JAVA?
java的整体生态和学习积累确实是太大了。95年至今20多年的积累,完全涉及到计算机软硬件的方方面面。我暂且放过就以为,提主所说的精通满,是指jdk本身和一些必要的数据结构以及广泛框架和面向对象的基本是思想吧。
从11年初至今,一直在学习java相关的知识。其中也走了不少弯路。按自己的积累,能提供提主一个自认为比较合理且有一定深度的学习路线。大概情况分下面几个阶段吧。
1.是需要应尽可能的打牢基础的数据结构和简单的算法基础。
可以不去迅速的学习一些简单的大型系统,来满足的条件软件怎么学习的兴趣和初期成就感。但,要先回过身,翻看的平定内乱数据结构基础和简单算法。像这种书就可以不。
2.能熟练在用Java类库和java第三方工具框架。
学习不使用java的语法,尝试明白Java语法怎么设计的逻辑。熟练掌握到jdk开发库本身,这些各种第三方类库工具包和第三方框架的简单的使用。这里怎么学习的同时,推荐看看吧《设计模式》,《代码整洁之道》,《spring源码解读》,《Spring揭秘》等这一类的书集。
3.理解怎么学习jdk类库本身的应用源码实现方法和高端点第三方框架的源码和架构设计。
例如jdk本身的数据结构二叉树,红黑树,treemap,和异步包的unsafe,同步阻塞队列,call-future等等包源码,以及线程基础类的实现,各个类库啊,设计的结构和设计模式。理解透彻第三方框架的设计思想,理解学习第三方框架的核心源码。
肯定,这里面很可能会涉及到其他的事务,分布式协议等,这里继续发起。这个过程未必一朝一夕,可能会要大量的时间和技术感悟。当然了,《设计模式》,《代码整洁之道》,《spring源码解读与设计详析》,《Spring揭秘》等等这一大类书,在这个过程可以不解释大差不差了。
4.理解jdk,jre即jvm原理和实现方法。
这里我帮我推荐看下葛老师的《实战java虚拟机》,里面解释比较好偏实操。容易上手理解。
首先,可以不从jdk光盘驱动的工具去学习来从哪里入手。
.例如:jstat,jmap,jstack,jps,jdb.......甚至连还有一个直接这个可以窥视运行期间求实际内存数据的HSDB。当然了,充当学习进一步,我们只必须表述正确的几个命令,并知道其代表的意义再试一下。毕竟,第三方监控工具,包括jdk本身也提供给了3个可视化的监控。
如果你是,再理解jvm的运行打开程序原理,搞懂class文件结构。
这个过程我们可以借助于之前会用的监控工具,理解jvm读取的基本原理。可以建议参考官方各个版本的jvm标准,学习看懂class文件。到此可以使用如classpy等工具,方便些我们直接泛读class文件。也可以试试支持什么class字节码级别的单步运行调试工具。哪怕,这个可以一段时间用用jvm汇编编码工具。
接下来的,理解jvm的垃圾回收机制发展历史和各个主流垃圾回收器的工作原理。
这个过程总之太急切。垃圾回收器有各种串行,联成一体,新声代/swap和老年代,以及回收警戒线,endless触发条件,各种个样的基本参数和不怎么是用超参数,这些G1的H区,ZGC等等。。。还好的是,GC并属于jvm官方规范的一部分。
然后把,尝试着做一些jvm的实践和实战,
比如,jvm最常见的一种的故障排查和故障总结归纳,性能调优,热加载,class字节码的动态操作,asm等。
之后,可以不一段时间实现方法自己的jvm。(其实这个步骤,对很多同学来说不是什么必须了)
这里我推荐推荐几本书,确实是完全看懂jvm规范的要求的学习路径。建议自己基于垃圾回收器。
周老师的《深入理解Java虚拟机》。
下一步是《深入嵌入式java虚拟机》和配套源码。这个cldc的jvm源码唯有1M多。目前在oracle的官网上,依然可以可以下载。是一个设计的很不精简的jvm实现方法。
接下来的,可以不去阅读《自己动手写java 虚拟机》。这本书的jvm利用是常规go语言c语言设计。不过其中也有很多设计并不是太合算。但基本上都不违背了jvm规范。
这会儿就这个可以去看下github上各种jvm的闭源利用了。有play,scalajvm,javainjava,ajvm,python-jvm,lua,各个版本各个相同的jvm利用。
不过,这些实现都只是基本原理。
后面推荐推荐你自己去看《实战hotspot》豹子书,了解高级语言虚拟机的圈子。
肯定,垃圾回收的书籍比较好少,这里那就帮我推荐给你垃圾回收的很经典书《The Garbage Collection Cookbook》。实际上对新的垃圾回收算法有兴趣,可以不去知乎搜索相关的论文和GC算法开源利用的demo。
5.当然,我的建议只是根据Java本身。
真正的要提升到几乎能学好java生态,软件工程,计算机网络,大数据基础知识,mahuot,sparklib,分布式搜索架构,各种消息中间件,缓存中间件,数据库,DNS/CDN。。。。。这些大都做互联网应用,无法躲闪的。
没有办法见意,通用知识比较熟练,专研方向精通满,去相关生态所了解。
由于提问是因为java本身。我就并没有展开攻击说其他具体方向了。具体解释的是大的技术方向,并没有其他答主那样,具体看去讨论语法糖这种级别。希望对提主有不帮助。
有任何问题,欢迎关注知道回答,与我继续讨论。谢谢啦。
使用java如何打造分布式框架或系统,需要哪些知识?
感激邀请。
分布式系统的架构与设计,可能要按实际中项目升级的需要来演绎,要:有SOA的思想,RESTfulAPI得整个明白了,且大量应用;
有都统一登陆账号,身份认证与合法授权的想法,token的定义与无法激活机制,加解密的处理;
有文件服务器,能提供支持静态文件的读写服务(包装成熟可信的API),CDN的概念;
有消息队列的想法,且适度地应用,比ActiveMQ,Kafka;
有缓存管理的概念,且更多运用,例如Memecache,Redis等;
有web服务器集群,负载均衡的想法,会玩Nginx,HAProxy等;
有数据库集群的概念,能玩主从数据库复制,读写分离等;
有有高级网络编程的概念,同步异步的应用,多线程的处理,socket程序,非阻塞的IO处理
对https,tcp/ip,telnet有进入到理解与应用;
有对系统的容错机制如何处理,要做预警处理;
能怎么设计高可用(冷热备份文件,异地多活等)的系统;
有对当下流行的应用设计框架的理解与应用等;
声明搞分布式系统,时间成本与资源成本得先考虑好;
如果不是用户量下降数百,点击率上不去,就放下心来先把系统功能做了才是真;
杰出的系统,都是一步步分阶段来演绎出来的。
(结束)
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。