热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java后端程序员必须要懂的几种框架分享

MVC框架MVC模式是软件工程中的一种软件架构模式,可以把软件系统分为三个基本部分:模型(Model),编

MVC 框架

MVC 模式是软件工程中的一种软件架构模式,可以把软件系统分为三个基本部分:

  • 模型(Model),编写程序应有的功能(实现算法等等)、进行数据管理和数据库设计,。
  • 视图(View),界面设计人员进行图形界面设计。
  • 控制器(Controller),负责转发请求,对请求进行处理。

比较知名的 MVC 框架有 SpringMVC,是一种基于请求驱动类型的轻量级 Web 框架,目的是帮助我们后端程序员简化开发。

我个人喜欢的还有一个更轻量级的 JFinal,国人开发的,基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful,小型项目我都会选择使用 JFinal,很方便。

IoC 框架

可实现依赖注入/控制反转的框架,Spring 框架就是为此而生的。

ORM 框架

对象关系映射(Object Relational Mapping)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。

MyBatis 是目前最流行的 ORM 框架,能够屏蔽底层的数据库操作细节,减少大量的模板代码,并且能够支持分布式特性。

为了在服务层面统一解决分库分表、读写分离、故障恢复等问题,就需要一种数据库中间件,MyCat 是最知名的一种。

MyCat 是基于 Java 语言编写的数据库中间件,是一个实现了 MySQL 协议的服务器,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,后端可以用 MySQL 原生协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分库分表,配合数据库的主从模式还可实现读写分离,非常强大。

缓存框架

缓存通常用来解决热点数据的访问问题,可以提高数据的查询效率,尤其是在高并发的服务中,将持久层的数据加载到缓存中,可以避免数据库被大量请求击垮。使用频率最高的缓存框架就是 Redis,没有之一,Memcached 相对来说也比较常用。

Redis 是互联网技术领域中使用最广泛的缓存中间件,它是 Remote Dictionary Service 三个单词中加粗字母的组合。你别说,组合起来后念着挺自然的。

Redis 以超高的性能、完美的文档、简洁的源码著称,国内外很多大型互联网公司都在用,比如说阿里、腾讯、GitHub、Stack Overflow 等等。它的版本更新非常的快,功能也越来越强大,最初只是用来作为缓存数据库,现在已经可以用它来实现消息队列了。

可以这么说吧,掌握 Redis 已经变成了一项 Java 后端程序员必须具备的基础技能。

数据库

绝大多数的业务数据都需要持久化存储到数据库中,主流的关系型数据库有 MySQL 和 Oracle。

MySQL 和 Oracle 现在都隶属于甲骨文公司,这家公司的产品很牛逼,CEO 拉里埃尔森也很牛逼,和史蒂夫乔布斯是铁哥们。Oracle 相对 MySQL 更沉重一些,属于企业级应用。而 MySQL 是开源的,性能又给力,所以近些年来市场占用率已经飙升到了第一位,甩开 Oracle 两条街。

主流的非关系型数据库有 MongoDB 和 HBase,后者主要用于数据库领域。

MongoDB 是一个基于分布式的文件存储数据库,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它将数据存储为一个文档(类似于 JSON 对象),数据结构由键值对组成,类似于 Java 中的 Map,通过 key 的方式访问起来效率就高得多,对吧?这也是 MongoDB 最重要的特点。

搜索框架

目前用得比较多的开源软件有 Solr 和 Elasticsearch,主要用于全文检索和各种数据维度的查询,后者逐渐成为搜索引擎的主流开源方案。

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。

消息队列

目前使用得比较普遍的消息队列有,基于日志设计的 Kafka,重事务的 RabbitMQ。对消息丢失不是特别敏感的话,选择 Kafka 可以获得更高的性能。

Kafka 由 Scala 和 Java 编写,目的是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,使得它作为企业级基础设施来处理流式数据非常有价值。

RabbitMQ 的主要特点在于健壮性好、易于使用、高性能、高并发、集群易扩展,以及强大的开源社区支持。

文件存储

文件存储需要满足的特性有:可靠性、容灾性、稳定性,能够保证文件不轻易丢失,还能在出现事故的时候提供回滚方案。Hadoop 的 HDFS 是目前最常用的分布式文件存储方案。

除此之外,还有一个开源的轻量级分布式文件系统——FastDFS,可以解决大数据量存储和负载均衡等问题。特别适合以中小文件(建议范围:4KB

单点登录

简称为 SSO,目前很多网站都实现了单点登录,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。

推荐一个还不错的分布式单点登录框架——xxl-sso,开源的。

统一配置中心

常见的有 properties、YAML 文件,就是可以不修改代码只修改配置文件就能够让整个项目区分开发、测试、生产环境。

YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。

对于较复杂的数据结构来说,YAML 远远优于 properties,可以使用冒号加缩进的方式代表层级(属性)关系,使用短横杠(-)代表数组元素。

服务治理框架

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。

Dubbo 是一款高性能、轻量级的开源 Java RPC 框架,提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

统一调度中心

定时调度是一个非常普遍的场景,比如说定时去备份数据库,刷新订单状态等。可以依赖 Linux 的 Cron 机制,以及 Java 的 Quartz 框架。

工具型软件 Cron 是一款类 Unix 操作系统下的基于时间的任务管理系统。用户可以通过 Cron 在固定时间、日期、间隔下,运行定期任务(可以是命令和脚本)。我最经常用的,就是通过 Cron 来备份 MySql 数据库。

Quartz 可以用来创建或简单或复杂的调度时间表,执行 Java 下任意数量的作业。

日志服务

日志是生产环境不可缺少的产物,能够为线上服务提供快速记录、定位、排查问题的来源。常用的日志框架有 Log4j 和 LogBack。

Log4j 通常和 SLF4J 配合起来一起使用,SLF4J 是简单日记门面(simple logging Facade for Java)的意思,为各种 log API 提供了一个简单的统一接口,从而使得 Java 后端程序员能够在部署的时候配置自己希望的日志实现。

LogBack 和 Log4j 是同一个大神写的(作者对 Log4j 的性能不满意),Spring Boot 默认使用的日志框架是LogBack。

了解相关java培训开发技术知识,关注我,有更多精彩内容与您分享!


推荐阅读
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
author-avatar
討厭香菇_748
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有