03.Spring框架的诞生
Spring框架 概述 开源 轻量级 生态完善 Spring Framework BeanFactory 不常用了,但是是底层 ApplicationContext 称为Spring容器,内部封装了BeanFactory,比BeanFactory功能更丰富更强大,使用ApplicationContext进行开发时,xml配置文件的名称习惯写成applicationContext.xml 与BeanFactory的关系 这部分可结合源码看 继承体系
02.IoC、DI和AOP思想的提出
IoC、DI和AOP思想的提出 框架的出现
01.传统JavaWeb开发的困惑
传统Javaweb开发困惑及解决方案
03.后端Web开发
后端Web开发 Maven 一款用于管理和构建java项目的工具 Apache Maven 作用 依赖管理 方便快捷的管理项目依赖的资源(jar包), 避免版本冲突问题 统一项目结构 提供标准的统一的项目结构 项目构建 标准跨平台的自动化项目构建方式 介绍 安装与配置 Maven坐标 什么是坐标? Maven中的坐标是资源的唯一标识, 通过该坐标可以唯一定位资源位置 使用坐标来定义项目或引入项目中需要的依赖 Maven坐标主要组成 group: 定义当前Maven项目隶属组织名称 (通常是域名反写) artifactId: 定义当前Maven项目名称 (通常是模块名称) version: 定义当前项目版本号 依赖管理 依赖配置 依赖传递 依赖具有传递性 直接依赖: 在当前项目中通过依赖配置建立的依赖关系 间接依赖: 被依赖的资源如果依赖其他资源, 当前项目间接依赖其他资源 排除依赖 主动断开依赖的资源, 被排除的资源无需指定版本 依赖范围 生命周期 ...
02.前端Web开发
前端Web开发 查询文档 Web标准 三个组成部分 HTML: 负责网页的结构(页面元素和内容) CSS: 负责网页的表现(页面元素的外观, 位置等页面样式, 如: 颜色, 大小等) JavaScript: 负责网页的行为(交互效果) HTML 超文本标记语言 超文本: 超越了文本的限制, 比普通文本更强大. 除了文字信息, 还可以定义图片, 音频, 视频等内容 标记语言: 由标签构成的语言 HTML标签都是预定义好的. 例如: 使用展示超链接, 使用展示图片, 展示视频 HTML代码直接在浏览器中运行, HTML标签由浏览器解析 HTML结构标签 12345678<html> <head> <title>标题</title> </head> <body> </body></html> 图片标签: <img> src : 指定图像的url (绝对路径 /...
01.入门介绍
入门介绍 web网站开发模式 前后端分离模式 分离模式
07.C++11新特性
C++11新特性 auto decltype :求表达式的类型 智能指针 #include <memory> shared_ptr 可以托管一个new运算符返回的指针 shared_ptr<T> ptr(new T) 此后ptr就可以像T*类型的指针一样来使用, 即*ptr就是用new动态分配的那个对象, 且不必操心释放内存的事 多个shared_ptr对象可以同时托管一个指针, 系统会维护一个托管计数. 当无shared_ptr托管该指针时, delete该指针 shared_ptr对象不能托管指向动态分配的数组的指针, 否则程序运行会出错 右值引用和move语义 右值引用 123class A{ }A& r = A(); // errorA&& r = A(); //...
06.文件操作与模板
文件操作 使用/创建文件的基本流程 打开文件 -> 读写文件 -> 关闭文件 函数模板 1234567891011template<class 类型参数1, class 类型参数2, ...>返回值类型 模板名 (形参表){ 函数体}template <class T>void Swap(T& x, T& y) { T tmp = x; x = y; y = tmp;} 编译器根据类型参数自动生成相应函数 函数模板可以重载 C++编译器遵循以下优先顺序 先找参数完全匹配的普通函数(非由模板实例化而得的函数) 再找参数完全匹配的模板函数 再找实参经过自动类型转换后能够匹配的普通函数 上面的都找不到, 则报错 类模板 1234template <类型参数表>class 类模板名 { ...
05.多态与虚函数
多态和虚函数的基本概念 虚函数 virtual 只用在类定义里的函数声明中, 写函数体时不用 构造函数和静态成员函数不能是虚函数 多态 派生类指针可以赋给基类指针 通过基类指针调用基类和派生类中的同名虚函数时 若该指针指向一个基类的对象, 那么被调用的是基类的虚函数 若该指针指向一个派生类的对象, 那么被调用的是派生类的虚函数 在非构造函数和非析构函数中调用虚函数, 是多态 多态实现原理 编译时不能确定, 运行时才能确定 动态联编 多态会有空间和时间上的额外开销 虚析构函数 在删除一个指向派生类的基类指针时, 只会调用基类的析构函数, 这会导致内存泄漏 解决方法 把基类的析构函数声明为virtual 派生类的析构函数virtual可以不进行声明 通过基类的指针删除派生类对象时 首先调用派生类的析构函数 然后调用基类的析构函数 类如果定义了虚函数, 则最好将析构函数也定义成虚函数 纯虚函数和抽象类 纯虚函数: 没有函数体的虚函数 virtual void print() = 0; 抽象类:...
04.继承与派生
继承与派生 123class 派生类名: public 基类名 { ...}; 派生类对象的内存空间 派生类对象的体积等于基类对象的体积, 再加上派生类对象自己的成员变量的体积. 在派生类对象中, 包含着基类对象, 而且基类对象的存储位置位于派生类对象新增的成员变量之前 派生类中和基类同名同参数表的方法 – 覆盖 (不是重载) 复合关系和继承关系 复合关系 类C中 “有” 成员变量k, k是类D的对象, 则C和D是复合关系 一般逻辑上要求: D对象是C对象的固有属性或组成部分 不能循环定义(我中有你, 你中有我) 基类/派生类同名成员和protected访问范围说明符 基类的 private成员 可被下列函数访问 基类的成员函数 基类的友元函数 基类的 public成员 可被下列函数访问 基类的成员函数 基类的友元函数 派生类的成员函数 派生类的友元函数 其他函数 基类的 protected成员 可被下列函数访问 基类的成员函数 基类的友元函数 派生类的成员函数可以访问当前对象的基类的保护成员...