随着对Java语言的不断深入学习,仅仅学习一些简单的框架已经不能满足工作的需求,
于是我写了本篇博客,用于复习巩固Java中特别重要的知识点,如果大家有补充的内容,
请私信笔者或者留言在下方评论区(请直接转移到博客分类中看)
注:有的博客为别人文章的连接
SpringCloud第一代使用Dalston.SR3版本和|SpringBoot1.5.6.RELEASE版本,
整合了Eureka, RestTemplate, Ribbon, Feign, Zuul, Hystrix, Config ,Bus 等优秀框架
SpringCloud第二代使用Hoxton.SR1版本和|SpringBoot2.2.2.Release版本,SpringCloud Alibaba2.1.0.Release
整合了Zookeeper, Conslo, Necos, loadbalance, OpenFeign, GetWay, sentinel 等优秀框架
链接:https://www.zhihu.com/question/305924723/answer/1223768347
第一.java8,特别是jdk1.8是现阶段的主流,jdk11没必要学,直接就是jdk14. 这个主要是掌握juc里面的用法特别是如lock,reentrantlock, skiplist, copyonwritearraylist, deque,之类用法;多线程虽然主流使用是以异步为主,但是面试基本上还是以executor的几个线程池为主,看是否了解,因为现在的基本上都是在executor上封装,譬如scala的akka机制。
第二.springboot,springboot你需要调用run方法了解里面的enviroment,resource,listener是究竟怎么润起来的,spring的bean加载机制搞清楚comman runner和postconstruct就行了。
第三.idea 和git是必须掌握的,eclipse 过时了,但是mat 还可以用,但是大部分不会问那么仔细,最多jvm问下cms ps等,类加载,双亲委托之类,更复杂可能问下jstat dump怎么看gc日志。
第四. 中间件技术,redis,kafka,netty,ElasticSearch是必须了解乃至掌握基本api调用,非常重要,基本上这几个里面kafka你需要了解avro序列化或者json序列化,特别是netty基本上websocket也罢,akka也罢,都是需要了解的。一般公司你如果把reidis,redisson分布式锁讲清楚,kafka 0拷贝讲清楚基本上就ok了,rabitmq,rocketmq了解他们场景。
第五.数据库技术,分表分库sharding sphere和mycat二选一,当然阿里还有其他新鲜工具,
第六.rpc技术,目前主流有finagle,dubbo,thrift等,但是建议掌握dubbo/dubbox
第七.缓存技术,spring cache+reids缓存就够了,j2cache我看了下,觉得太繁琐了,简单就好。
第八.高性能队列,disruptor 你掌握了就可以出去吹很多水了,秒杀linkedblockqueue,linkedtansferque之类,秒杀git上有很多源码,了解下够了
第九. 微服务技术,基本上springcloud全家桶就行了,知道在service层配置ribbot,feign就可以了,至于zipkin,cat等其他技术了解下就知道了,http://spring.io多逛逛,有好处的。目前我生产主推的springboot2.2.2版本
第十.大数据技术, 这个其实对三万以下没什么要求,但是解决三万以上焦虑问题的,基本上flink,storm,spark这三个主流引擎都要了解原理,还有hbase,hadoop,至少掌握map reduce思想,当然如果没有map reduce机制,es做索引,mysql分表解决亿级以上数据的读写也要了解,特别是分表导致的分页查询全文搜索,mysql其实也需要了解innodb存储引擎,但是mysql8.0出来了后,分区表的一些查询用法也要掌握,反正主流现在是mysql8.0了。
第十一,数仓,其实主流都是四层或者三层 元数据层,明细层 集市 报表,阿里的那一套完全就是以后全家都得跟它混了,maxcompute 还是可以学习下,
第十二, service mesh技术 这个是以后主流,现在主要是docker k8s, 三代的技术,我看了下非常有前景也是主要方向,istio可以多了解下,但是阿里我看到他们在搞sofa,git上有几个新项目,可以多提提代码pr,混个脸熟,如果leetcode的动态规划 线段树刷题刷了些后,掌握基本的八大排序算法和红黑树,跳跃表,快排,缺内网推荐非常简单的事情。
第十三,分布式事务 这个阿里有个fescar,可以了解下思想,但是除非电商类,但是大部分不会怎么问
第十四,机器学习和ai技术 这个主流机器学习算法和神经网络,卷积神经网络,蒙特卡洛,遗传算法等都需要了解下算法,这块主要是掉包学习吧,pytorch虽然是主流,tensorflow学习下也没坏处,这个知乎大佬太多,我只是工业界,这辈子是没指望技术有建树的,混混日子罢了。
第十五,编译器优化 就是王垠大神的领域了,绝对的神域了,我是知道有人在华为ai编译器优化,阿里p9 200万package挖都不去 ,有空实现下语法分析,掌握编译原理,jvm虚拟机指令。
第十六。 规则引擎 这个主要是风控系统,优惠券设计需要用到,现在主流的有drools,urule之类,核心是rete算法,这个个人感觉实现都有些繁琐,drools 还是特别占内存,改天我想个办法写个好点的简单点的,把那些决策,规则塞到数据库里面去感觉更合适,虽然还有groovy,scala脚本之类,但是个人还是觉得java大法好,java+数据库够用了
第十七 新语言 Rust,Scala,Haskell 这个是个人比较喜欢的,python 用用就好,玩java 默认都会,scala函数编程还有大数据处理的生产力工具,Rust我看到觉得这就是真正统一所有码农审美和认知的终极工具,实在是优雅的令人赞叹,Haskell主要是掌握思想。一般面试很少会问这些,了解下
第十八 前端技术 目前前后端分离是主流,国内主要是vue vuex,webpack,其他less elementui ,js掌握核心匿名函数,回调地狱,作用域链,对于后端来讲就够用了,反正虽然知乎不少前端大神,但是说句得罪所有前端大佬的话,前端都是玩具。
第十九 操作系统 作为工业界,没事多看看linux内核源代码,特别是select epoll机制,这个基本上大厂都会问