09 2021 档案
摘要:9.23JavaWeb之JDBC获取数据库连接方式 JDBC程序的编写步骤 获取数据库连接 Driver接口实现类 特点: 支持多数据库连接 java.sql.Driver接口是所有JDBC驱动程序需要实现的接口 示例代码: package JDBCConnectionNo1;import org
阅读全文
摘要:9.23JavaWeb之JDBC进行CRUD操作 使用PreparedStatement实现 数据库连接的本质: 一个Socket连接,用于对数据库发出指令接收响应的 java.sql包当中定义了3种对数据库的调用方式: Statement:执行静态SQL语句,返回生成结果的对象 PrepatedS
阅读全文
摘要:9.22JDBC的概述 数据持久化(persistence) 作用: 将内存中的数据保存到硬盘上 持久化的实现大多通过关系数据库来完成 数据持久化的位置: 文件 >磁盘文件、XML数据文件等 数据库 其他 IO流将数据存入文件当中已经可以实现数据的持久化 Java中的数据存储技术 JDBC >直接访
阅读全文
摘要:9.22JavaWeb技术的概览 架构模型 C/S架构 >客户端/服务器架构 B/S架构 >浏览器/服务器架构 两种架构的优劣势 C/S架构的优势 服务端功能更新客户端也需要更新,要时刻保证和服务端的更新同步 客户端技术和服务端技术完全不一样 更好的用户体验 B/S架构的优势 不需要实时的更新客户端
阅读全文
摘要:9.20JavaWeb之FilterConfig接口 FilterConfig的实现方式 由容器实现 FilterConfig的作用 用于在过滤器初始化期间向其传递信息,容器将它作为参数传入过滤器的 init() 方法中。通过 filterConfig 对象就可以获得 Filter 的初始化参数。
阅读全文
摘要:9.20JavaWeb之ServletFilter(过滤器) 什么是Servlet过滤器? 对 Servlet 容器传给 Web 资源的 request 对象和 response 对象进行检查和修改的一个类 Filter的特点 不是 Servlet,不能直接访问 不能生成 request 对象和 r
阅读全文
摘要:9.20JavaWeb之FilterChain过滤器链(Servlet) 什么是FilterChain 再Web应用中部署多个Filter,拦截同一目标资源,组成Filter链(过滤器链) 特点: 滤器链中的每个过滤器负责特定的操作和任务,客户端的请求在这些过滤器之间传递,直到传递给目标资源。 Fi
阅读全文
摘要:9.19JavaWeb之ServletCookie 为什么需要Cookie? 原因: Http是一个基于请求和响应模式的无状态协议 什么是无状态协议? 协议对于事务处理没有记忆能力,服务器不能自动维护用户的上下文信息,无法保存用户状态 每次请求都是独立的,不会受到前面请求的影响,不会影响后面的请求
阅读全文
摘要:9.20Go之初始化内嵌结构体 内嵌结构体的初始化方法 结构体内嵌初始化时,将结构体内嵌的类型作为字段名像普通结构体一样进行初始化 类似匿名结构体的初始化方法,可以选择具体需要初始化的成员: 示例代码: package mainimport "fmt"/*定义三个结构体 */type Wheel
阅读全文
摘要:9.20JavaWeb之ServletSession 什么是Session以及Session产生的过程 什么是Session? 服务端会话技术 Session的产生过程: 浏览器访问 Web 服务器的资源时,服务器可以为每个用户浏览器创建一个 Session 对象 每个浏览器独占一个 Session
阅读全文
摘要:9.17JavaWeb之HttpServletResponse 什么是HttpServletResponse? 概念: Servlet API 中,定义的一个 HttpServletResponse 接口,它继承自 ServletResponse 接口 作用: 封装Http响应消息 >Respons
阅读全文
摘要:9.18JavaWeb之Servlet重定向 什么是重定向? 本质: 两次Http请求,有两个Request对象和Response对象 过程: 服务器在收到客户端请求后,会通知客户端浏览器重新向另外一个 URL 发送请求 重定向工作流程图 注意: 服务器端的 Web 资源返回一个状态码为 302 的
阅读全文
摘要:9.17JavaWeb之HttpServletRequest接口 HttpServletRequest请求对象的产生 概念: 浏览器 >Http协议 >服务器 >Servlet处理 处理流程图: 当 Servlet 容器将响应信息返回给客户端后,HttpServletRequest 对象和 Http
阅读全文
摘要:9.17JavaWeb之Servlet请求转发 为什么需要Servlet请求转发 原因: Web 应用在处理客户端的请求时,经常需要多个 Web 资源共同协作才能生成响应结果。 Serlvet 对象无法直接调用其他 Servlet 的 service() 方法 解决办法: 请求转发 请求包含(了解即
阅读全文
摘要:9.16InstallDocker 安装之前一定要确保网络配置有这三个东西 DNS1=8.8.8.8DNS2=114.114.114.114PEERDNS=no#重启网络配置 更新yum命令 sudo yum update Install using the repository(注册中心) yum
阅读全文
摘要:9.16VMwareInstallLinux 安装好Linux后配置静态IP 前提条件: 桥接模式,允许虚拟机访问外网,同时可以与局域网内的其他计算机进行通讯(包括本机); NAT模式,允许虚拟机访问外网,能与本机进行数据通讯,且能访问局域网内其他主机,但局域网内的其他主机不能访问该虚拟机; Hos
阅读全文
摘要:9.15JavaWeb之ServletContext接口 ServletContext对象的创建过程 过程: Servlet 容器启动时,会为每个 Web 应用(webapps 下的每个目录都是一个 Web 应用)创建一个唯一的 ServletContext 对象,该对象被称为“Servlet 上下
阅读全文
摘要:9.15JavaWeb之ServletConfig接口 什么是ServletConfig对象 概念: 容器初始化Servlet时为Servlet创建一个ServletConfig对象,将 ServletConfig 对象作为参数传递给 Servlet 。 作用: 通过 ServletConfig 对
阅读全文
摘要:9.15JavaWeb之Servlet虚拟路径匹配规则 虚拟路径匹配规则简介 特点: Servlet 容器接收到请求后,容器会将请求的 URL 减去当前应用的上下文路径,使用剩余的字符串作为映射 URL 与 Servelt 虚拟路径进行匹配 举例: URL 为http://localhost:808
阅读全文
摘要:9.15JavaWeb之控制Servlet启动优先级 什么是load-on-startup 概念: load-on-startup 是 web.xml 中的一个节点,是 servlet 元素的子元素 作用: 用来标记 Servlet 容器启动时是否初始化当前 Servlet 当前 Servlet 的
阅读全文
摘要:9.15JavaWeb之Servlet虚拟路径映射 什么是虚拟路径映射 概念: 客户端通过 URL 地址来访问 Web 服务器中的资源,Servlet 程序若想被外界访问,就必须被映射到一个 URL 地址上。 特点: 该 URL 地址和 Servlet 程序的物理路径(在硬盘上的存储位置)不一致,被
阅读全文
摘要:9.14JavaWeb之Servlet生命周期 什么是Servlet生命周期 Servlet生命周期是指: Servlet 从创建到销毁的过程 主要阶段: 初始化阶段 >init() 运行时阶段 >service() 销毁阶段 >destory() Servlet接口定义了三个方法:init()、s
阅读全文
摘要:9.14JavaWeb之@WebServlet注解 什么是WebServlet注解 概念: 为了简化 Servlet 的配置而产生的 作用: 使 web.xml 从 Servlet 3.0 开始不再是必选项了 @WebServlet注解的属性 作用: @WebServlet 将一个类声明为 Serv
阅读全文
摘要:9.14JavaWeb之Servlet的部署和访问 基于Servlet的特点分析Servlet的部署和访问 Servlet的特点: Servlet 没有 main() 方法,不能独立运行。但可以作为 JavaWeb 应用的一个组件被部署到 Servlet 容器中,由容器来实例化和调用 Servlet
阅读全文
摘要:9.14JavaWeb之Servlet三种创建方式 访问一个动态网页 概念: 每一个用户看到的界面都是不一样的 本质: 一个动态网页对应一个Servlet类。 通过web.xml配置文件 >使用URL路径将动态网页和Servlet类对应起来 >达到网页是动态的过程 过程: 浏览器 >URL路径 >S
阅读全文
摘要:9.14JavaWeb容器之Tomcat 下载Tomcat 官网地址: 点击跳转 注意: Tomcat基于Java进行开发,所以Tomcat版本和JDK版本需要匹配。 下载界面的一些注意的点: Tomcat容器的目录结构 子目录说明 bin 命令中心(启动命令,关闭命令……) conf 配置中心(端
阅读全文
摘要:9.13JavaWeb之Servlet容器 其他语言部署动态网站的前提条件 需要部署web服务器: 运行 PHP 网站一般选择 Apache 或者 Nginx; 运行 ASP/ASP.NET 网站一般选择 IIS; 运行 Python 网站一般选择内置的 WSGI 服务器模块——wsgiref。 什
阅读全文
摘要:9.13JavaWeb之Servlet是什么 Servlet与Java的关系 一句话概括Serverlet: 一种使用 Java 语言来开发动态网站的技术 Servlet的特点: Servlet 基于 Java,可以使用几乎全部的 Java API 理解Servlet Servlet 程序就是一个按
阅读全文
摘要:9.13Go之结构体之类型内嵌和结构体内嵌 类型内嵌和结构体内嵌的含义 概念: 结构体可以包含一个或多个匿名(或内嵌)字段 >这些字段没有显式的名字,只有字段的类型 类型也就是字段的名字。匿名字段本身可以是一个结构体类型,即结构体可以包含内嵌结构体。 这个概念在C当中也是一样的,这样的概念类似于Ja
阅读全文
摘要:9.13JavaWeb之Servlet技术 什么是Servlet技术 概念: 一种基于 Java 技术的 Web 组件,运行在服务器端,由 Servlet 容器管理 作用: 生成动态的 Web 内容 本质: Servlet程序本质上就是一个按照Serverlet规范编写的Java类,具有平台独立性
阅读全文
摘要:9.13Go之函数之事件的响应和处理 什么是事件系统是实现事件的响应和处理 概念: Go语言将类型的方法与普通函数视为一个概念 >调用者无须关心谁来支持调用,系统会自动处理是否调用普通函数或类型的方法 事件系统的基本原理 概念: 将事件派发者与事件处理者解耦 事件系统的基本原理 一个事件系统拥有的特
阅读全文
摘要:9.10Go之结构体之初始化结构体成员变量 成员变量初始化特点 结构体初始化时可以直接对成员变量进行初始化 形式: 键值对的形式(key value pair) 键值对形式的初始化适合选择性填充字段较多的结构体 多个值的列表形式适合填充字段较少的结构体 初始化结构体格式 使用"键值对"初始化结构体
阅读全文
摘要:9.10Go之结构体之构造函数 构造函数的特点 Go语言的类型或结构体没有构造函数的功能 可以使用结构体初始化的过程来模拟实现构造函数 多种方式创建和初始化结构体——模拟构造函数重载 本质: 构造一个结构体,在多个函数当中实例化该结构体 示例代码: 需求: 使用结构体描述猫的特性 根据猫的颜色和名字
阅读全文
摘要:9.10Go之结构体之实例化 什么是结构体 概念: 一种内存布局的描述 结构体本身是一种复合类型 >可以看成是变量的意思 使用结构体的特点 当结构体实例化时,才会真正的分配内存 只有当定义的结构体实例化以后才能使用结构体的字段 什么是结构体实例化 概念: 结构体实例化就是根据结构体定义的格式创建一份
阅读全文
摘要:9.9单链表之链表反转 单链表反转的四种经典算法 迭代反转链表 递归反转链表 头插法反转链表 就地逆置法反转链表 主要示例的是:不带头节点的链表反转 链表反转图示图解: 起始链表: 反转后链表: 迭代反转链表 具体实现: 设置三个指针,分别指向首元节点、首元节点直接前驱、首元节点后继 >beg、mi
阅读全文
摘要:9.8单链表之增、删、改、查 单链表操作分类 改 查 删 链表中插入元素 插入的分类: 插入到链表的头部(头节点之后),作为首元节点; 插入到链表中间的某个位置; 插入到链表的最末端,作为链表中最后一个数据元素; 插入需要执行的步骤: 步骤1:将新结点的 next 指针指向插入位置后的结点 步骤2:
阅读全文
摘要:9.9Go之结构体 什么是结构体 Go 语言通过用自定义的方式形成新的类型 结构体是类型中带有成员的复合类型 结构体和结构体成员来描述真实世界的实体和实体对应的各种属性 >有点类似"类"的概念 Go语言结构体的特点 可以被实例化,使用new或&构造的类型实例的类型是类型的指针。 >非常重要 结构体的
阅读全文
摘要:9.9Go之函数之函数底层实现 为什么函数是语言的一个核心元素 由基于堆栈的程序执行模型决定的 分析函数底层实现的两种方式 语言编译器源码 反汇编 需要有一定的汇编基础 本章会用到的一些汇编指令 Go语言编译器特点: 产生的汇编代码是中间抽象态,不是对机器码的映射 有些寄存器真实存在,有些是抽象的寄
阅读全文
摘要:9.9Go语言内存缓存 什么是内存缓存 概念: 在内存中缓存并重复利用缓存从而避免重复执行相同计算的方式称为内存缓存 普通方法实现斐波那契数列不加内存缓存计算时间 package mainimport ( "fmt" "time")/*实现一个斐波那契数列,使用递归的方法 */func fib(
阅读全文
摘要:9.8线性表之单链表 链表的概念 链表,别名:链式存储结构 链表的特点: 不限制数据的物理存储状态 存储的数据物理位置是随机的不是连续的 每个数据存储时都配备一个指针,用于指向自己的直接后继元素 >前驱和后继 使用链表存储数据{1,2,3}图示: 链式存储结构 数据元素随机存储,并通过指针表示数据之
阅读全文
摘要:9.8Go之函数之宕机恢复(recover) recover的概念 Recover 是一个Go语言的内建函数,可以让进入宕机流程中的 goroutine 恢复过来 特点: recover 仅在延迟函数 defer 中有效,在正常的执行过程中,调用 recover 会返回 nil 并且没有其他任何效果
阅读全文
摘要:9.8Go之函数之计算执行时间 计算函数执行时间应用场景 对比和基准测试 作用: 衡量函数性能的一个重要指标 计算函数执行时间的方法 在函数执行之前设置一个起始时间,并在函数运行结束时获取从起始时间到现在的时间间隔 时间间隔就是运行时间 Go语言中的time包下提供了Since()函数来获取: 源码
阅读全文
摘要:9.8Go之函数之宕机(panic) 宕机的概念 宕机是Go语言再运行期检查出的异常(不是在编译期) >如数组访问越界、空指针引用等 当宕机发生时: 程序会中断运行,并立即执行在该 goroutine(可以先理解成线程)中被延迟的函数(defer 机制) 程序崩溃、输出日志信息(panic valu
阅读全文
摘要:9.7顺序表之增、删、改、查 向顺序表中增数据 插入到顺序表头 插入到顺序表中间部分 插入到顺序表尾部,作为最后一个元素 插入元素的特点 步骤: 检查传入的索引是否合法 判断顺序表是否有多余的存储空间提供给插入的元素,如果没有,需要申请 将元素整体向后移动一格或者直接在后一位直接插入 插入元素图示:
阅读全文
摘要:9.7线性表之顺序表 顺序表的概念 顺序表是线性表的一种 用于存储"一对一"的数据 顺序表称顺序存储结构 顺序存储结构的特点 将具有 '一对一' 逻辑关系的数据按照次序连续存储到一整块物理空间上 顺序存储结构示意图: 顺序表存储数据使用的就是数组 顺序表的初始化 使用顺序表存储数据时需要实现申请的:
阅读全文
摘要:9.7Go之函数之递归函数 什么是递归函数 递归函数指的是在函数内部调用函数自身的函数 构成递归函数的条件 一个问题可以被拆分成多个子问题 拆分前的原问题与拆分后的子问题除了数据规模不同,但处理问题的思路是一样的 不能无限制的调用本身,子问题需要有退出递归状态的条件 >如果没有会造成内存溢出 斐波那
阅读全文
摘要:9.7Go之函数之处理RuntimeError Go的错误处理思想以及设计 一个可能造成错误的函数,需要返回值中返回一个错误接口(error),如果调用是成功的,错误接口将返回 nil,否则返回错误 >Go语言中函数的调用一定会返回调用结果err 在函数调用后需要检查错误,如果发生错误,则进行必要的
阅读全文
摘要:9.7Go之函数之defer(延迟执行语句) defer的特点 defer 语句会将其后面跟随的语句进行延迟处理 在一个函数中先被 defer 的语句最后被执行,最后被 defer 的语句,最先被执行 作用场景: 用于释放某些已分配的资源。如互斥锁、关闭文件等 defer的用法类似于java里面的f
阅读全文
摘要:9.6计算机网络和因特网 计算机网络的定义 定义: 两台以上,具有独立操作系统的计算机通过某些介质连接成相互共享软硬件资源的集合体(资源共享是最终目的) 使这些计算设备能够通信 提供的功能: 连通性 共享 什么是Internet? 由网络构成的网络 >计算机网络是由多个设备构成的集合体,多个集合体在
阅读全文
摘要:9.6数据结构之线性表 什么是线性表 全名: 线性存储结构 理解: 把所有数据用一根线儿串起来,再存储到物理空间中 特点: 数据具有一对一的关系 线性表将数据存储到物理空间的方式 连成一串,连续的存储到一块内存地址连续的空间种 连成一串,分散的放到内存中 >通过节点指向,形成链表 两种存储方式的示例
阅读全文
摘要:9.6数据结构入门 什么是数据结构 研究数据的存储方式。 目的: 方便后期对数据再利用 数据结构的核心内容: 数据在计算机存储空间的存放,决不是胡乱的,这就要求我们选择一种好的方式来存储数据 变量可以理解为数据结构的一种,但是如果数据很多并且数据之间是有关联的为每一个数据声明一个变量就十分的浪费存储
阅读全文
摘要:9.6Go之函数之可变参数 可变参数的概念 概念: 可变参数是指: 传入的参数类型可变 传入的参数数量可变 传入参数数量可变 特点: 以切片举例,通常我们指传入参数的值的数量可变 在Go语言中提供了一种语法糖(syntactic sugar)...type这种语法对语言的功能并没有影响,能够增加程序
阅读全文
摘要:9.6Go之函数之闭包 闭包的概念 什么是闭包? 闭包就是能够读取其他函数内部变量的函数。通过变量的定义域可以理解为:定义在其他函数内部的函数。 本质上闭包是将函数内部和函数外部连接起来的桥梁 闭包的特点 闭包包含自由(未绑定到特定对象)变量,这些变量不是在这个代码块内或者任何全局上下文中定义,而是
阅读全文
摘要:9.1Go之分支结构和循环结构 Go的分支结构的特点 特点: Go的分支和其他语言的分支并没有什么两样 if variable { }/**/if { }else if{ }else{ } 测试某个条件(布尔型或逻辑型)的语句,根据条件结果执行代码块里面的语句 特殊写法 特点: 将返回值与判断放在
阅读全文
摘要:9.1Go之函数变量和返回值 Go中函数变量的特点 在Go语言中,函数也是一种类型,可以和其他类型一样保存在变量中 示例代码: 定义了一个函数变量 f,并将一个函数名为 fire() 的函数赋给函数变量 f,这样调用函数变量 f 时,实际调用的就是 fire() 函数 package mainim
阅读全文
摘要:9.1Go之函数之函数声明 Go语言函数的特点 特点: 在Go语言当中函数构成了代码执行的逻辑结构。 函数的基本组成为:关键字 func、函数名、参数列表、返回值、函数体和返回语句 每一个程序都包含很多的函数,函数是基本的代码块 Go语言是编译型语言,所以函数编写的顺序是无关紧要的 Go语言中的三种
阅读全文