Java专栏学习导图【二】

该文详细介绍了JavaWeb的相关技术,包括JSP、Servlet、EL和JSTL,以及前端性能优化、数据存储和应用服务的性能调优。同时,文中也探讨了大数据领域的数据采集、存储和处理技术,如Hadoop、Spark和数据挖掘工具。此外,提到了微服务架构和各种消息队列解决方案。
摘要由CSDN通过智能技术生成


上篇:Java专栏学习导图【一】

六、JavaWeb

1、JSP和Servlet

1.1 JSP

JSP是Java Server Pager的简称,是一门脚本语言,可以嵌入到HTML中,拥有Java语言的所有特性。运行于JSP容器中,比如Tomcat、Jetty等。用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其它操作系统上运行。它的主要目的是将表示逻辑从Servlet中分离出来

1.2 Servlet

Servlet是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内
容。Servlet运行于支持Java的应用服务器中。Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成
JSP

2、EL和JSTL

2.1 EL表达式

Expression Language表达式语言,常用于取值。JSP中编写Java代码必须写在<%%>里面。并且取值代码比较繁琐。而EL表达式可以使我们的取值代码更加简洁,${}即可
60%

2.2 JSTL详解

JSP标准标签库(JavaSeverPages Standard Tag Libary)同样也是为了简化JSP代码的。一般与EL表达式结合使用,EL表达式多用于取值操作,而JSTL则可以方便我们对集合进行遍历,对数据进行判断等操作

3、HTML和CSS

网站页面通常由三部分内容组成;分别是内容(结构)、表现、行为;内容(结构),是在页面中可以看到的数据。一般使用HTML技术实现表现,指的是这些内容在页面上的展示形式。比如:布局、颜色、大小等,一般使用CSS技术实现行为,指的是页面中元素与输入设备交互的响应。一般使用JavaScript技术实现

4、JavaScript

4.1 jQuery

jQuery是一个JavaScript库,而且是典型的轻量级的“写的少,做的多"的JavaScript库。大大简化了DOM获取页面某个节点或者某一类节点的固定方法。jQuery提供了很多附加的功能来简化常用的JavaScript操作,还提供了大量可自定义参数的动画效果,用起来很酷

4.2 Ajax

Ajax是AsynchronousJava and XML的缩写,也叫做“异步刷新”,是一种异步请求数据的Web开发技术,对于改善用户的体验和页面性能很有帮助。简单来讲,在不需要重新刷新页面的情况下,Ajax可以通过异步请求加载后台数据,并在网页上展现出来。目的是提高用户体验,较少网络数据的传输量。比如:百度搜索下拉框提示

5、模块引擎

5.1 Thymeleaf

Thymeleaf是SpringBoot官方推荐方案,在有网络和无网络的环境下皆可运行,语法简洁,功能强大,只是性能略差一些

5.2 Velocity

程序员在不使用JSP的情况下,可以使用Velocity让HTML页面具有动态内容的特性。Velocity是一个基于Java的模板引擎,通过它就可以仅仅使用简单的模板语言(template language)直接引用由Java代码定义的对象,与FreeMarker基本齐名,适合从事过JSP人员的使用模板引擎

5.3 FreeMarker

FreeMarker与Velocity一样,也是一款模版引擎。针对维护性来说,FreeMarker比tVelocity相对更可靠一些。针对性能来说,FreeMarkerttVelocity相对更稳定,更快一些。如果是对并发量特别高的可以优先采用FreeMarker

七、性能调优

1、web前端性能优化

1.1 终端/浏览器/App优化

减少HTTP请求:合并CSS、合并JavaScript等,减少浏览器请求次数使用浏览器缓存:将静态资源缓存到客户端浏览器上、逐量更新启用压缩:服务端压缩、客户端解压缩、减少数据传铺资源文件加载顺序:CSS放在页面最上面、JavaScript放在页面最下面减少Cookie传输:对于静态文件使用Cookie没有意义,Cookie会影响数据传输

1.2 反向代理

传统代理服务器位于用户浏览器这边,代理浏览器将HTTP请求发送到互联网上。而反向代理服务器位于网站机房这边,代理网站Web服务器接收HTTP请求。与传统代理服务器可以保护浏览器安全类似,反向代理服务器也具有保护网站安全的功效,来自互联网的访问请求必须经过代理服务器,也就是把Web服务器和可能的网络攻击之间建立了一道屏障。代理服务器还可以作为缓存服务器,加快访问速度。反向代理还可以实现负载均衡,实现高可用。

1.3 CDN加速

CND加速主要是加速静态资源,例如:网站中上传的图
片、媒体,以及引入的一些JS和CSS文件等

2、数据存储性能优化

2.1 SQL优化

2.2 索引优化

2.3 数据库架构+分库分表

3、应用服务性能优化

3.1 缓存

  • Redis
    (Redis除了可以作为数据库还可以用作缓存)
    • 缓存穿透
      业务系统访问不存在的数据,就称为缓存穿透。经常出现在恶意攻击以及程序员的代码逻辑错误,数据库压力非常大,可能会导致系统崩溃

    • 级存击穿
      一般情况下都会给缓存设定失效时间,过时后删除,从而一定程度上保证数据的实时性。但对于一些请求量极高的热点数据而言,一旦过了有效时间,此刻扔将会有大量请求落在数据库上,可能会导致数据库崩溃

    • 缓存雪崩
      如果缓存出现了机,那么原先被缓存抵挡/保护的海量查询请求就会疯狂的涌向数据库。数据库如果抵挡不了这么巨大的压力,它就会可能崩溃

  • CDN
    CDN是Content Delivery Network的简称,即内容分发网络。本质还是缓存,将数据缓存在离用户相对近的地方,使用户以相对快的速度获取数据,也就是所谓网络访问第一跳。

3.2 集群

  • 简单来讲,集群就是通过添加服务器的数量,提供相同的服务,从而让服务器达到稳定、高效的状态
  • MySQL集群
    性能瓶颈中,脆弱的就是连接:一个客户端与后端的连接,一个是后端与数据库的连接,其中后端与数据库的连接又是最脆弱的。可以使用LVS+Keepalived组合、DRBD+Heartbeat组合等方式实现
  • Redis集群
    • 主从模式
    • Sentinel模式
    • Cluster模式

3.3 JVM

  • 类加载过程和机制
  • Java运行时数据区域
  • JVM的GC算法
  • 垃圾回收器原理和造型
  • JVM常见参数调优
  • Arthas

3.4 异步

  • 多线程
    • 继承Thread类
    • 实现Runnable接口
  • MQ
    MQ是(Message Queue)的简称。它是数据结构中“先进先出”的数据结构代表。常常用来解决应用解耦、异步消息等问题。实现高性高可用、可伸缩和最终一致性架构。主要有:RabbitMQ、ActiveMQ、RocketMQ、ZeroMQ、Kafka等产品

八、解决方案

1、架构方案

1.1 SOA

  • Dubbo
    通常Dubbo服务搭建在其它计算机上。通过RPC的方式让程序去调用。由于网络连接是脆弱的,假如Dubbo的服务断网了,那么应用程序就会因为无法调用远程的服务抛出很多异常.Zookeeper是一个搭建集群的框架,可以多搭建几个Dubbo服务提高SOA的可靠性
  • Zookeeper
    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件

1.2 微服务

  • SpringCloudNetflixy
    由Netflix提供的微服务解决方案,很多组件Netflix不再维护了
  • SpringCloudAlibaba
    由阿里提供的微服务解决方案,相比之下更新一些,用户也越来越多

2、分布式搜索方案

2.1 Solr

Solr是用Java编写的全文搜索方案,它是一个成熟的产品,拥有强大而广泛的用户社区。Netfix、eBay、Instagram和亚马逊(CloudSearch)都在使用

2.2 Elasticsearch

Elasticsearch是在Solr之后的几年推出的。它提供一个分布式,多租户能力的全文搜索方案。它建立在更现代的原则上,针对更现代的用例,并且是为了更容易处理大型索引和高查询率而构建的,正在不断壮大

3、MQ方案

3.1 RocketMQ

RocketMQ是一个队列模型的消息中间件,由阿里巴巴团队使用Java开发。2016年贡献给Apache,成为了Apache的一个顶级项目。RocketMQ经历过双十一的挑战

3.2 ActiveMQ

ActiveMQ是Apache开发的开源消息中间件,也是使用Java开发

3.3 Kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统,由Apache使用Scala和Java开发的开源流处理平台。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理。

九、大数据

1、数据采集

1.1 网络爬虫

网络爬虫是一种按照一定的规则,自动地抓取网站信息的程序,可以为数据收集提供来源

1.2 Flume

Flume是分布式、高可靠、高可用的服务,可以高效收集、聚合、移动大量的日志数据。Flume的设计目的是要向Hadoop集群批量导入基于事件的海量数据

1.3 Logstash

Logstash是开源服务器端数据处理管道,可以同时从多个数据来源采集数据和转换数据,并且将数据发送到存储中

1.4 Beats

Beats是一款轻量级数据采集产品,包含四种工具:Packetbeat,用于收集网络流量数据, Topbeat:用于收集系统、进程和文件系统级别的CPU和内存使用情况等数据,Filebeat:用于收集日志与文件数据Winlogbeat,用于收集Windows事件日志数据

2、数据存储

2.1 HDFS

HDFS是(HadoopDistributed File System,即Hadoop分布式文件系统)的简称。HDFS是一个高度容错性的系统,可以部署在配置和价格相对低的计算机上,HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用

2.2 Hbase

Hbase是(Hadoop Database)的简称,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。它是Hadoop项目的子项目,不同于一般的关系数据库,它是一个可以运行在Hadoop集群上的NoSQL数据库

3、数据处理

3.1 Hadoop

Hadoop是一个分布式系统基础架构,用户无需了解分布式底层细节的情况下,开发分布式程序。Hadoop的框架最核心的设计是HDFS和MapReduce.HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算

3.2 MapReduce

MapReduce是面向大数据并行处理的计算模型、框架和平台。主要用途是:数据划分和计算任务调度、数据/代码互定位、系统优化、出错检测和恢复。Hadoop就是依据MapReduce的原理,用Java语言实现的

3.3 Impala

Impala是Cloudera公司主导开发的新型查询系统,提供了SQL语义,可以查询存储在Hadoop的HDFS和HBase中、相比之下Hive虽然也提供了SQL语义,可是因为Hive底层执行使用的是MapReduce引擎,本质上还是批处理过程,不易满足查询的交互性。所以,Impala的最大特点也是最大卖点就是它的快

3.4 Storm

Storm是一个开源框架,来自Twitter公司,它是用来做大数据流实时处理的。Storm可以相对可靠地处理无限的数据流,实时处理Hadoop的批任务。Storm相对简单,支持非常多的编程语言

3.5 Spark

Spark是一种基于内存的分布式并行计算框架,不同于MapReduce的是Job中间输出结果可以保存在内存中,不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器字习等需要迭代的MapReduce的算法

3.6 Flink

Flink是一个开源流处理框架,以数据并行和流水线方式执行任意流数据程序、而且,Flink的运行时本身也支持选代算法的执行,比较适合处理在线的实时的大数据

4、数据挖掘

4.1 Hive

Hive是面向Hadoop生态的数据仓库。它让用户可以使用HiveQL查询和管理大数据

4.2 Pig

Pig是一种面向分布式大数据分析的平台。用于简化Hadoop任务,对MapReduce进行更高层次的封装,执行效率快,适用于实时分析

4.3 Sqoop

企业经常需要在关系数据库与Hadoop之间传输数据,Sqoop可以完成这项任务。它可以将数据导入到Hive或HBase中,并从Hadoop导出到关系数据库管理系统

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangkay88

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值