Lua算法 redis 如何系统的学习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和老年代,在内回收警戒线,wide触发条件,各种个样的基本参数和不怎摸专用超参数,在内G1的H区,ZGC等等。。。好在的是,GC并属于法律jvm官方规范的一部分。
然后把,动手制作一些jvm的实践和实战,
诸如,jvm常见的故障排查和故障归纳,性能调优,热运行程序,class字节码的动态操作,asm等。
后来,这个可以数次利用自己的jvm。(肯定这个步骤,对很多同学来说不是什么可以了)
这里我推荐一下几本书,确实是彻底搞明白jvm规范标准的学习路径。建议自己利用垃圾回收器。
周老师的《深入理解Java虚拟机》。
下一步是《深入嵌入式java虚拟机》和配套源码。这个cldc的jvm源码只能1M多。目前在oracle的官网上,仍旧是可以可以下载。是一个设计非常系统精简的jvm利用。
下一步,这个可以去阅读《自己动手写java 虚拟机》。这本书的jvm利用是区分go语言编写。当然了其中也有很多设计并也不是相当合理不。但基本都都不能违背了jvm规范。
这个时候就是可以去看一下github上各种jvm的闭源实现方法了。有go,scalajvm,javainjava,ajvm,python-jvm,lua,各个版本各个差别的jvm实现程序。
当然了,这些实现都只不过基本原理。
后面推荐一下你看看《实战hotspot》豹子书,打听一下高级语言虚拟机的圈子。
当然了,垃圾回收的书籍也很少,这里我还是推荐推荐给你垃圾回收的超经典书《The Garbage Collection Cookbook》。只不过对新的垃圾回收算法有兴趣,可以不去知乎搜索相关的论文和GC算法闭源基于的demo。
5.当然了,我的建议只是根据Java本身。
完全要提升彻底能学好java生态,软件工程,计算机网络,大数据基础知识,mahuot,sparklib,分布式搜索架构,各种消息中间件,缓存中间件,数据库,DNS/CDN。。。。。这些是做互联网应用,无法躲开的。
没有办法建议您,通用知识非常熟练,专研方向精通于,咨询生态所了解。
的原因提问是针对java本身。我就不再继续发动说其他详细方向了。具体解释的是大的技术方向,并没有什么其他答主那样的,具体去再讨论语法糖这种级别。期望对提主极大帮助。
有任何问题,欢迎大家关注知道回答,与我再讨论。谢谢啦。
springboot的lock方法对应redis的哪个?
springboot的lock方法不对应redis的spring-boot-lock-starter。它是实现redis利用的简单的分布式锁。软件再朝接口编程,同样的注重于基于组件zk也可以其他利用的方便些扩展。
实现redis的分布式锁实现方法,要注意感情依赖以reids的set命令和let'sdel的lua脚本。同样对锁做了注解整体封装,确认好是否禁用分布式锁、和是否需要关闭设置为redis实现程序类成功分布式锁的扩展。
加锁过程比较多是调用redis的set命令,其中NX和PX它表示当key存在时设置一次,超过过期时间自动出现删除掉key。要注意低版本的redis是不支持什么set传多个参数的。方法做了个递归函数内部函数,容许一段时间tryNum次加锁。
常规加锁过程和解锁代码基于,注解裸芯片,并定义方法注解的切面。结果,进行去拓展测试,基于lock方法。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。