从运筹帷幄的角度,一个优秀的Java后端程序员需要掌握哪些知识?我想这也是很多读者急切想知道的一个问题,因为如果不站在宏观的角度,所有学过的知识点都散了,感觉自己像一只迷路的小鹿,跌跌撞撞,跌跌撞撞,总觉得有点不知所措,对吧?如何?将知识点连接在一起形成知识图谱或知识系统非常重要。下面我就根据自己多年来的一些心得体会,给大家做一个简单的科普介绍。如有遗漏内容,希望读者朋友们在留言区指出。1)MVC框架:MVC模式是软件工程中的一种软件架构模式,可以将软件系统划分为三个基本部分:模型(Model)、程序中应该编写的功能(实现算法等)、数据管理和数据库设计,.视图(View),界面设计者设计的图形界面。控制器(Controller),负责转发请求并进行处理。众所周知的MVC框架是SpringMVC,它是一个基于请求驱动类型的轻量级Web框架,其目的是帮助我们后端程序员简化开发。我个人比较喜欢一个比较轻量级的JFinal,国人开发的,基于Java语言的极速WEB+ORM框架。它的核心设计目标是快速开发、代码少、易学、功能强大、轻量级、易扩展、Restful,小项目我会选择使用JFinal,非常方便。2)IoC框架:可以实现依赖注入/控制反转的框架,Spring框架就是为此而生。3)ORM框架:对象关系映射(ObjectRelationalMapping)通过使用描述对象与数据库之间映射关系的元数据,自动将面向对象语言程序中的对象持久化到关系数据库中。MyBatis是目前最流行的ORM框架,可以屏蔽底层数据库操作细节,减少大量模板代码,支持分布式特性。为了在服务层面统一解决分库分表、读写分离、故障恢复等问题,就需要数据库中间件,MyCat就是其中最著名的一个。MyCat是一个基于Java语言编写的数据库中间件。它是一个实现MySQL协议的服务器。前端用户可以将其视为数据库代理,通过MySQL客户端工具和命令行访问。后端可以与本地MySQL协议进行通信。多个MySQL服务器可以进行通信,也可以使用JDBC协议与大多数主流数据库服务器进行通信。它的核心功能是分库分表,还可以配合数据库的主从模式实现读写分离,非常强大。4)缓存框架:缓存通常用于解决热点数据的访问问题,可以提高数据的查询效率,尤其是在高并发业务中,将持久层的数据加载到缓存中可以防止数据库被访问被大量请求压垮。使用频率最高的缓存框架是Redis,没有之一,Memcached是比较常用的。Redis是互联网技术领域应用最广泛的缓存中间件,是RemoteDictionaryService三个词中粗体字母的组合。别说了,结合起来看还是挺自然的。Redis以超高性能、完善的文档、简洁的源代码而著称。被国内外多家大型互联网公司使用,如阿里、腾讯、GitHub、StackOverflow等,版本更新非常快,功能也越来越强大。最初是作为缓存数据库使用的,现在可以用来实现消息队列。可以说,掌握Redis已经成为Java后端程序员必须具备的一项基本技能。5)数据库:大部分业务数据需要持久化存储在数据库中。主流的关系型数据库包括MySQL和Oracle。MySQL和Oracle现在都归甲骨文公司所有。公司的产品牛逼,CEO拉里埃尔森也牛逼,和乔布斯是铁哥们。Oracle比MySQL重,属于企业级应用。而MySQL是开源的,性能强劲,所以近几年市场占有率飙升至第一,将甲骨文甩在后面两条街。主流的非关系型数据库有MongoDB和HBase,后者主要用于数据库领域。MongoDB是一个分布式文件存储数据库,旨在为Web应用程序提供可扩展的高性能数据存储解决方案。它将数据存储为文档(类似于JSON对象),数据结构由键值对组成,类似于Java中的Map。通过密钥访问它效率更高,对吧?这也是MongoDB最重要的特性。6)搜索框架:Solr和Elasticsearch是目前应用广泛的开源软件,主要用于各种数据维度的全文检索和查询。后者逐渐成为搜索引擎的主流开源方案。Elasticsearch是一个分布式的RESTful搜索和数据分析引擎,可解决各种新兴用例。作为ElasticStack的核心,它集中了您的数据并帮助您发现您期望的和不期望的。7)消息队列:目前常用的消息队列有基于日志设计的Kafka和大事务的RabbitMQ。如果你对消息丢失不是特别敏感,那么选择Kafka可以获得更高的性能。Kafka是用Scala和Java编写的,旨在为处理实时数据提供一个统一的、高吞吐量、低延迟的平台。它的持久层本质上是一个“基于分布式事务日志架构的大规模发布/订阅消息队列”,使其作为处理流数据的企业级基础设施非常有价值。RabbitMQ的主要特点是健壮性好、易用、高性能、高并发、易于集群扩展、强大的开源社区支持。8)文件存储:文件存储需要满足的特性是:可靠性、容灾性、稳定性,可以保证文件不易丢失,也可以提供意外情况下的回滚方案。Hadoop的HDFS是目前最常用的分布式文件存储方案。此外,还有一个开源的轻量级分布式文件系统——FastDFS,可以解决大数据存储、负载均衡等问题。特别适用于中小文件(推荐范围:4KB
