线性表
一、线性表的基本概念1、线性表的定义线性表是具有相同数据类型的 n(n 大于等于 0)个数据元素的有限序列,其中 n 为表长,当 n = 0 时线性表是一个空表。若用 L 命名线性表,则其一般表示为:$$L = (a_1, a_2, …, a_i, a_{i+1}, …, a_n)$$式中,a1是唯一的“第一个”元素,又称表头元素;an是唯一的“最后一个”数据元素,又称表尾元素。除第一个元素外,每个元素有且仅有一个直接元素。除最后一个元素外,每个元素有且仅有一个直接后继。以上就是线性表的逻辑特性。
由此,我们得出线性表的特点如下:
表中元素的个数有限。
表中元素具有逻辑上的顺序性,有其先后次序。
表中元素都是数据元素,每个元素都是单个元素。
表中元素的数据类型都相同,这意味着每个元素占有相同大小的存储空间。
表中元素具有抽象性,即仅讨论元素间的逻辑关系,而不考虑元素究竟表示什么内容。
注意:线性表是一种逻辑结构,表示元素之间一对一的相邻关系。顺序表和链表是指存储结构,两者属于不同层面的概念。下面通过一张图来说明它们之间的关系:
2、线性表的基本操作下面通过一张表格来介绍线性表的主 ...
数据结构与算法入门
一、数据结构的基本概念1、基本概念数据结构(Data Structure)是一种存储和组织数据的方式,旨在便于访问和修改。在任何问题中,数据元素都不是孤立存在的,它们之间存在某种关系,这种数据元素相互之间的关系称为结构。
下面介绍一些数据结构中常用的术语:
数据:是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符合的集合。数据是计算机程序加工的原料。
数据元素:是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可由若干个数据项组成,数据项是构成数据元素的不可分割的最小单位。如学生记录就是一个数据元素,它由学号、姓名、性别等数据项组成。
数据对象:是具有相同性质的数据元素的集合,是数据的一个子集。
数据类型:是一个值的集合和定义在此集合上的一组操作的总称,包括原子类型、结构类型和抽象数据类型。
数据结构包括三方面的内容:逻辑结构、存储结构和数据的运算。数据的逻辑结构和存储结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。下面我们将对这三方面的内容进行详细介绍。
2、数据结构的三要素 ...
Cookie & Session
一、会话技术1、概述
会话是浏览器和服务器之间的多次请求和响应。
为了实现某一个功能,浏览器和服务器之间可能会产生多次的请求和响应,从浏览器访问服务器开始,到访问服务器结束,浏览器关闭为止,这期间产生的多次请求和响应加在一起就称之为浏览器和服务器之间的一次会话。
2、功能在一次会话的范围内的多次请求间共享数据。
3、常用技术在 Java 中有以下两种会话技术:
客户端会话技术:Cookie
服务端会话技术:Session
实际上,除了传统的 Cookie 和 Session 技术,近些年来开始流行无状态的会话技术,常用的是JWT技术,在我之前的一篇文章《JWT简介与基本原理》对该技术进行了详细介绍,有兴趣的可以阅读这篇文章。
下面我们将分别对 Cookie 和 Session 技术进行详细介绍。
二、Cookie1、概念Cookie 是一段不超过 4KB 的小型文本数据,由一个名称、一个值和其它几个用于控制 Cookie 有效期、安全性、使用范围的可选属性组成。这是一种客户端会话技术,用处是将数据保存到客户端。
2、实现原理下面通过一张图来说明 Cookie 的实现原理:
...
ServletRequest & ServletResponse
一、概述1、基本原理在使用 Servlet 开发 Java Web 应用程序时必不可少地要使用到其中的ServletRequest和ServletResponse,这两个对象都是通过方法参数的形式被我们使用的。那么这两个对象是如何产生的?又是如何被我们使用的?下面通过一张图来进行说明:
下面对上图中的内容进行解释:
首先 Tomcat 服务器会根据请求 URL 中的资源路径创建对应的 Servlet 对象
接下来 Tomcat 服务器会创建ServletRequest和ServletResponse对象(ServletRequest和ServletResponse是接口,因此实际上 Tomcat 创建的是这两个接口的实现类,这两个实现类由 Tomcat 提供,开发人员无需关心),ServletRequest对象中封装请求消息数据
之后 Tomcat 将ServletRequest和ServletResponse对象传递给 service 方法,并调用 service 方法
开发人员可以通过ServletRequest获取请求消息数据,通过ServletResponse对象设置响应消 ...
Servlet体系结构及ServletContext
一、体系结构我们通过一张图来了解一下 Servlet 的体系结构:
可以看到,抽象类GenericServlet实现了 Servlet 接口,而抽象类HttpServlet则继承了抽象类GenericServlet,下面我们将对这两个类进行详细介绍。
1、GenericServletGenericServlet类将 Servlet 接口中的其他方法做了默认空实现,只将 service 方法作为抽象方法。我们在自定义 Servlet 类时,可以继承GenericServlet类,实现其中的 service 方法即可。
1234567891011121314package cn.frankfang.servlet;import javax.servlet.GenericServlet;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import java.io.IOException;public class Ser ...
Servlet生命周期、过滤器及异常处理
一、生命周期Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:
Servlet 初始化后调用init ()方法。
Servlet 调用service()方法来处理客户端的请求。
Servlet 销毁前调用destroy() 方法。
最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
现在让我们详细讨论生命周期的方法。
1、初始化(init)init()方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。
1234@Overridepublic void init(ServletConfig servletConfig) throws ServletException { // 初始化代码}
默认情况下Servlet在第一次被访问时创建,但可以指定Servlet的创建时机,只需在web.xml文件中的<servlet/>标签内使用<load-on-startup/>标签来指定即可,配置如下所示:
123456789<!-- ...
Servlet简介及快速入门
一、Servlet简介1、什么是Servlet
A servlet is a small Java program that runs within a Web server.
Servlet(Server Applet)是 Java Servlet 的简称,是采用 Java 编写并运行在 Web 服务器中的小程序,本质上就是一个接口(interface),该接口定义了初始化 Servlet、服务请求和从服务器中删除 Servlet 的方法。Servlet 具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态 Web 内容。
2、Servlet的作用
由上图可知,Servlet 实际上起到了一个制定规则和约束的作用(这也是Java中接口的作用)。
3、Servlet中的方法在 Servlet 接口中定义了五个方法,下面用一张表格进行介绍:
方法
作用
void init()
由Servlet容器调用,以向Servlet指示Servlet正在投入服务
void service(HttpServletRequest req, HttpServletR ...
Tomcat概述与基本使用方法
一、Tomcat概述1、什么是TomcatTomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。
2、名称由来Tomcat 最初是由 Sun 的软件架构师詹姆斯·邓肯·戴维森开发的。后来他帮助将其变为开源项目,并由 Sun 贡献给 Apache 软件基金会。由于大部分开源项目 O’Reilly 都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为 Tomcat(英语公猫或其他雄性猫科动物),Tomcat的Logo兼吉祥物也被设计为一只公猫。
二、Tomcat的使用1、下载(1)访问Tomcat的官网:https://tomcat.apache.org,并在左侧的导航栏找到 Download 导航项
(2)选择需要下载的版本(这里我选择的是 Tomcat 9),并点击链接进入下载页,之后根据操作系统选择对应的版本下载即可
2、安装将下载好的压缩包解压到自选的安装目录即可 ...
Go语言简介及快速入门
一、Go语言简介1、什么是Go语言Go(又称Golang)是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go语言既能达到静态编译语言的安全和性能水平,又达到了动态语言开发维护的高效率。
罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于2007年9月开始设计Go,稍后Ian Lance Taylor、Russ Cox加入项目。Go于2009年11月正式宣布推出,成为开放源代码项目,并在 Linux 及 Mac OS X 平台上进行了实现,后来追加了 Windows 系统下的实现。在2016年,Go 被软件评价公司 TIOBE 选为“TIOBE 2016 年最佳语言”。 目前,Go每半年发布一个二级版本(即从a.x升级到a.y)。
2、Go语言的特点
Go语言从C语言中继承了很多理念,Go语言保留了指针,但可以自动地进行垃圾回收,而无需像C和C++需要手动进行垃圾回收
Go语言引入了包的概念,用于组织程序结构,Go语言的每个文件都要归属一个包,而不能单独存在
Go语言有垃圾 ...
Spark简介及快速入门
近年来,在大数据计算领域最火热的开源计算框架无疑是Spark,那么什么是Spark?Spark相比于其它框架又又哪些优势?本文将对这些问题一一进行解释。
一、Spark概述1、什么是Spark
Apache Spark™ is a unified analytics engine for large-scale data processing
Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎。
Hadoop MapReduce 由于其设计初衷并不是为了满足循环迭代式数据流处理,因此在多并行运行的数据可复用场景(如:机器学习、图挖掘算法、交互式数据挖掘算法)中存在诸多计算效率等问题。所以 Spark 应运而生,Spark就是在传统的 MapReduce 计算框架的基础上,利用其计算过程的优化,从而大大加快了数据分析、挖掘的运行和读写速度,并将计算单元缩小到更适合并行计算和重复使用的RDD计算模型。
2、Spark发展历史
2009年,Spark 框架诞生于 UC Berkeley AMP Lab (加州大学伯克利分校AMP实验室)
2010年,加州大学伯克利分校正 ...