java有哪些语法糖(必看!java后端,亮剑诛仙(最全知识点))java基础 / Java语法结构详解...

wufei123 发布于 2024-06-12 阅读(10)

作者 |小姐姐养的狗来源 |公众号小姐姐味道

你可能有所感悟零散的资料读了很多,但是很难有提升到处是干货,但是并没什么用,简单来说就是缺乏系统化另外,噪音太多,雷同的框架一大把,我不至于全都要去学了吧这里,我大体根据基础、Java基础、Java进阶给分了下类,挑的也都是最常用最重要的工具。

这篇文章耗费了我大量的精力,你要是觉得好,请不要吝啬你的赞如果你认同,可以关注我,里面讲的就是这些内容我会尝试更加系统化最新的内容会在github持续更新,添加新的精选相关文章地址:https://github.com/sayhiai/javaok。

基础知识数据结构基本的数据结构是非常重要的,无论接触什么编程语言,这些基本数据结构都是首先要掌握的具体的实现,就体现在java的集合类中这些数据结构,就是这些复杂工具的具体原始形态,要烂记于心培训机构一般没有时间普及基础知识,通过算法和数据结构,“通常”能够一眼看出是否是经过培训。

常用算法算法是某些大厂的门槛毫无疑问,某些参加过ACM的应届生,能够秒杀大多数工作多年的码农算法能够培养逻辑思维能力和动手能力,在刚参加工作的前几年,是非常大的加分项但随着工作年限的增加,它的比重在能力体系中的比重,会慢慢降低。

算法的学习方式就是通过不断的练习与重复不精此道的同学,永远不要试图解决一个没见过的问题一些问题的最优解,可能耗费了某个博士毕生的精力,你需要的就是理解记忆以及举一反三最快的进阶途径就是刷leetcode。

对于普通研发,排序算法和时间复杂度是必须要掌握的,也是工作和面试中最常用的。时间充裕,也可涉猎动态规划、背包等较高阶的算法知识,就是下图的左列。

书籍《算法导论》《编程之美》《数学之美》数据库基础 MySQLMySQL是应用最广的关系型数据库除了了解基本的使用和建模,一些稍底层的知识也是必要的MySQL有存储引擎的区别InnoDB和MyISAM是最常用的,优缺点应该明晓。

ACID是关系型数据库的基本属性,需要了解背后的事务隔离级别脏读、幻读问题的产生原因也要了解为了加快查询速度,索引是数据库中非常重要的一个结构,B+树是最常用的索引结构因字符集的问题,乱码问题也是经常被提及的。

专业的DBA通常能帮你解决一些规范和性能问题,但并不总是有DBA,很多事情需要后端自己动手。

书籍《MySQL技术内幕——InnoDB存储引擎》《高性能MySQL》《高可用MySQL》网络基础网络通信是互联网时代最有魅力的一个特点,可以说我们的工作和生活,每时每刻都在和它打交道连接的三次握手和四次挥手,至今还有很多人非常模糊。

造成的后果就是对网络连接处于的状态不慎了解,程序在性能和健壮性上大打折扣HTTP是使用最广泛的协议,通常都会要求对其有较深入的了解对于Java来说,熟悉Netty开发是入门网络开发的捷径爬虫是网络开发中另外一个极具魅力的点,但建议使用python而不是java去做。

书籍《HTTP权威指南》《TCP/IP详解 卷一》操作系统 Linux科班出身的都学过《计算机组成机构》这门课,这非常重要,但很枯燥结合Linux理解会直观的多鉴于目前大多数服务器环境都是Linux,提前接触能够相辅相成。

需要搞清楚CPU、内存、网络、I/O设备之间的交互和速度差别对于计算密集型应用,就需要关注程序执行的效率;对于I/O密集型,要关注进程(线程)之间的切换以及I/O设备的优化以及调度这部分知识是开发一些高性能高可靠中间件的前提,无法绕过。

对于Linux,首先应该掌握的就是日常运维,包括常用命令的使用和软件安装配置正则也是必须要掌握的一个知识点脚本编程对后端来说是一个非常大的加分项它不仅能增加开发效率,也能在一些突发问题上使你游刃有余

书籍《UNIX环境高级编程(第3版)》《鸟哥的Linux私房菜》《Linux内核设计与实现》《Linux命令行大全》相关文章《Linux上,最常用的一批命令解析(10年精选)》Java基础JVMJava程序员的最爱和噩梦。

以oracle版本为准,各个jvm版本之间有差别JVM的知识包含两方面一个是存储级别的,一个是执行级别的以存储为例,又分为堆内的和堆外的两种,各有千秋垃圾回收器就是针对堆内内存设计的,目前最常用的有CMS和G1。

JVM有非常丰富的配置参数来控制这个过程在字节码层面,会有锁升级以及内存屏障一类的知识,并通过JIT编译来增加执行速度JVM还有一个内存模型JMM,用来协调多线程的并发访问JVM的spec非常庞大,但面试经常提及。

另外,jdk还提供了一系列工具来窥探这些信息。包含jstat,jmap,jstack,jvisualvm等,都是最常用的。

书籍《深入理解Java虚拟机》JDK现在,终于到了java程序员的核心了:JDK,一套依据jvm规范实现的一套API我们平常的工作,就是组合这些API,来控制程序的行为jdk的代码非常庞大,内容也非常繁杂。

最重要的大体包括:集合、多线程、NIO、反射、文件操作、Lambda语法等这部分内容加上下面的SSM,基本上就是大多数小伙伴玩耍的地方假如说数据结构和算法是理论,这里就是支撑理论的实现Java玩的好不好,就是说这里。

书籍《Effective Java 中文版》《数据结构与算法分析:Java语言描述》SSM你可能会用SSM开发项目,觉得编程无非就这些东西设计模式烂记于心,IOC、AOP手到擒来这里集中了大部分同行,有些可能到此为止就Ok了,因为有些同学接下来的重点是项目管理,而不是技术。

SSM最擅长的是Web开发。目前的表现形式逐渐多样化,随着前后端分离的盛行,Restful这种有着明确语义的模式逐渐流行。

书籍《Head First 设计模式》《Spring揭秘》《SpringBoot揭秘》《MyBatis技术内幕》《深入剖析Tomcat》其实跟着文档走一遍就行了,很多书籍就是翻译而已并发编程现在的服务器都是多核的了,并发编程也来越多。

java有多种创建多线程的方式,不过目前使用线程池的多一些线程池的基础就是AQS,基于AQS,又有很多的工具类扩展java同时有很多加锁和线程同步的方式,锁有乐观锁/悲观锁之分,又有公平锁/非公平锁之分,写一段死锁代码还是有点难度的。

有两个问题被考察的频率非常高,一个是ABA,一个是伪共享。并发编程一般和网络编程配对,提供对某个问题的一系列解决方案。这是java中一块难啃的骨头。

书籍《Java核心技术系列:Java多线程编程核心技术》 《Java性能权威指南》《Java并发编程实战》性能优化 & 故障排查有人认为这应该是SRE的范畴,但通常最熟悉业务的却是开发,技术并没有什么明显的界限。

掌握这些内容,会让你在芸芸大众中脱颖而出从操作系统的内核优化到数据库的索引和事务优化,这部分的技能是建立在牢固的基础之上的也就是操作系统的基础操作系统的每个组件都有可能出现问题,对于一个java后端来说,要能够非常容易的定位到这些问题。

比如常见的内存溢出问题

书籍《性能之巅:洞悉系统、企业与云计算》《高性能Linux服务器构建实战》Java进阶下面有些知识点,界限是非常模糊的它们你中有我,我中有你,可以说是一个整体Redis缓存可以说是计算机系统中应用最广泛的技术了。

对于分布式缓存来说,最常用的就是Redis了由于其数据结构丰富,被应用的场景越来越多基本的5种数据类型都知道,但你要说出其他几种,给人的印象就不一样了Redis有主从和Cluster两种集群模式,高可用配置也不相同。

Redis几乎能适应除搜索外的所有互联网业务,对于其使用来说,一些规范限制是非常有必要的一般速度越快的系统,越容易被长尾操作给拖死所以,对于info命令的内容,也应有了解有三个点要尤其注意:分布式锁、限流,以及和源数据的同步问题。

书籍《Redis实战 》《Redis开发与运维》《Redis设计与实现》KafkaMQ是分布式系统中非常重要的组件,目前使用最广泛的就是Kafka除了用在大数据场景中,Kafka也能够在业务系统中使用Kafka的速度非常快,根据ACK的级别配置,可靠性会增加,但速度会减缓。

对于消息系统来说,监控报警是非常重要的一环,能够提前预知系统的问题Kafka的集群自身就是高可用的,依赖Zookeeper组件,了解一些基本概念,包括ISR,能够更加详细的了解这个过程

书籍《Kafka入门与实践》《Kafka技术内幕》分库分表 ShardingJDBC随着数据的增长,MySQL本身出现了瓶颈分库分表是针对关系型数据库的一套解决方案,把它改造成分布式数据库根据切分层次,最像回事的是在代理层和驱动层进行切入。

ShardingJDBC就是在驱动层的一个组件组件本身只是一个问题在真正的切分之前,会有垂直拆分和水平拆分之分我们的线上业务也要不停机的进行拆分和切换,一个全量和增量同步工具都是需要的有条件经历这个过程的,都是一笔宝贵的财富。

它不仅在技术上,而且在流程上都有诸多挑战你会体验到技术、流程、管理,是不分家的

微服务 & 中间件目前最火的微服务架构就是SpringCloud这对熟悉SSM开发的同学来说, 是非常容易上手的微服务有注册中心、RPC、负载均衡、熔断限流、网关等关键组件,有些组件有很多不同的替代品

微服务拆分后又引申出一些列问题,需要一些其他中间件支持比如监控报警、ELKB、配置中心、调度中心、调用链等虽然没有微服务也需要它们,但明显组合起来,效果会好的多各种A/B测试,金丝雀,灰度等,基本是终极目标之一。

微服务是一个复杂的整体,同时融合了技术和流程管理方面的内容书籍《可伸缩服务架构:框架与中间件》《Spring Cloud与Docker微服务架构实战》《架构修炼之道》分布式当服务器数量增加,一些服务,包括上面提到的微服务,都需要进行协调和交互。

这就是分布式系统分布式的理论基础有CAP、BASE等针对一致性,有特别多的算法,其中Raft作为易懂的新贵,使用越来越广泛这部分侧重于理论,一旦开始进入实践,写出来的都是些大家伙这里有一篇文章,虽然不是很全,聊表心意吧。

书籍《NoSQL精粹》《ZooKeeper:分布式过程协同技术详解》《从Paxos到Zookeeper分布式一致性原理与实践》支撑技术基本运维我倾向于基础架构和运维不分家,因为它们有太多重合和相似的地方。

基本运维和架构配合起来,典型的特点就是平台化+规范化这里是检验综合素质的地方,有广度也有深度。

书籍《奔跑吧Ansible》《Docker——容器与容器云》《Kubernetes权威指南》《Jenkins权威指南》《深入理解Nginx》安全安全无小事,建筑工地和系统安全一样的道理熟悉一些常用的攻击和加密解密算法是必要的。

就像是你给家里的门上锁:能够阻挡大部分心怀不轨的人,但无法阻挡无所顾忌的暴徒。

End你可能发现并没有自己关注的组件这不奇怪,比如个人喜欢的的ES,就找不到一个合适的位置这里只是最主要的一点内容,就已显繁杂,一个大杂烩并不见得好值得提醒的是,这些知识,是众多发展路线上的一个分支可能有的朋友,目前只在其中的一个点上面奋斗,缺乏所谓的广度;也可能有的朋友,有着全栈的标签,却做着SSM的工作。

不同的公司需要的技术水平不尽相同一个专注ERP业务的公司,会在项目管理上多些文章;一个专做IM的团队,可能对网络开发滚瓜烂熟再次强调此技术要点为个人整理,为了修复认知上的偏差,我会维护一个github项目,实时跟进分类和增加新的相关文章(欢迎提交PR)。

如果你有什么想法,请尽快反馈给我,非常感谢END

● 面试字节跳动的一点小经验● 千万不要小瞧那些不好好写代码的程序员● 老司机教你如何写出没人敢维护的代码!● ”去他丫的北上广,老子要去成都定居了!“一名33岁老码农有话说

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

河南中青旅行社综合资讯 奇遇综合资讯 盛世蓟州综合资讯 综合资讯 游戏百科综合资讯 新闻63698