目录
每日学习纲要
12.23
- 复习JAVA的类部分知识
- 学习网络编程的基础知识
12.24
- 复习数据库理论基础知识
- 学习Oracle数据库教程
12.25
- 安装并配置SQL和Oracle环境
- 学习Socket相关知识,尝试进行不同的程序之间的通信。
12.26
- 学习Oracle数据库教程
- 复习JAVA的对象部分知识。
学习内容总结
1. JAVA 类与对象
1.1 引用
一个变量的类型是类类型,而非基本类型,那么该变量又叫做引用。引用类似C语言中的指针。当一个对象被创建出来,我们并没有办法访问它,为了访问这个对象,使用引用来指代这个对象。
Student john = new Student();
john这个变量是Student类型,又叫做引用,=在这里表示指向,意味着jahn这个引用代表右侧创建的对象。
与C语言类似,如果一个对象没有被引用,那么便无法被找到。多个引用可以指向同一个对象,但单个引用不可指向多个对象。
1.2 继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。继承具有以下特点:
-
子类拥有父类非私有( private) 的属性、方法。
-
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
-
子类可以用自己的方式实现父类的方法。
-
Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 B 类继承 A 类,C 类继承 B 类,所以按照关系就是 B 类是 C 类的父类,A 类是 B 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
-
提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。
1.3 重载
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用于构造函数的重载。重载具有以下规则:
- 被重载的方法必须改变参数列表(参数个数或类型不一样);
- 被重载的方法可以改变返回类型;
- 被重载的方法可以改变访问修饰符;
- 被重载的方法可以声明新的或更广的检查异常;
- 方法能够在同一个类中或者在一个子类中被重载。
- 无法以返回值类型作为重载函数的区分标准。
1.4 构造方法
通过一个类创建一个对象,这个过程叫做实例化,实例化是通过调用构造方法(又叫做构造器)实现的。构造方法和它所在类的名字相同,但构造方法没有返回值。通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。
不管是否自定义构造方法,所有的类都有构造方法,因为 Java 自动提供了一个默认构造方法,默认构造方法的访问修饰符和类的访问修饰符相同(类为 public,构造函数也为 public;类改为 protected,构造函数也改为 protected)。一旦定义了自己的构造方法,默认构造方法就会失效。
与普通方法一样,构造方法也可以重载。
1.5 this
this这个关键字,相当于普通话里的“我”,即代表当前对象。通过this关键字可以访问对象的属性。如果要在一个构造方法中,调用另一个构造方法,可以使用this()
1.6 传参
变量有两种类型 基本类型 和 类类型。参数也是变量,所以传参分为 基本类型传参 和 类类型传参。
基本类型传参在方法内,无法修改方法外的基本类型参数。如果一个变量是基本类型 = 表示赋值的意思。如果一个变量是类类型 = 不再是赋值,而是表示指向。
类类型又叫引用,因此类类型传参实际上是使引用指向新的对象。
1.7 包(package)
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间比较接近的类,可以规划在同一个包下,便于使用。包的作用如下:
-
把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
-
如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
-
包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。
1.8 访问修饰符
成员变量有四种修饰符
- private 私有的
- package/friendly/default 不写
- protected 受保护的
- public 公共的
关系如下图所示:
到底什么情况该用什么修饰符呢?
- 属性通常使用private封装起来
- 方法一般使用public用于被调用
- 会被子类继承的方法,通常使用protected
- package用的不多,一般新手会用package,因为还不知道有修饰符这个东西
再就是作用范围最小原则,简单说,能用private就用private,不行就放大一级,用package,再不行就用protected,最后用public。 这样就能把数据尽量的封装起来,没有必要露出来的,就不用露出来了
1.9 类属性
当一个属性被static修饰的时候,就叫做类属性,又叫做静态属性。当一个属性被声明成类属性,那么所有的对象,都共享一个值。
如果一个属性,每个对象都不一样,那么这样的属性就应该设计为对象属性,因为是跟着对象走的,每个对象都是不同的如果一个属性,所有的子类都共享,都是一样的,那么就应该设计为类属性。
1.10 类方法
类方法: 又叫做静态方法。对象方法: 又叫实例方法,非静态方法。访问一个对象方法,必须建立在有一个对象的前提的基础上。访问类方法,不需要对象的存在,直接就访问。
静态方法是在类中使用staitc修饰的方法,在类定义的时候已经被装载和分配(注意类定义的时候静态方法已经被装载和分配!这个时候还没有非实例化对象,当然就不能调用非静态方法)。而非静态方法是不加static关键字的方法,在类定义时没有占用内存,只有在类被实例化成对象时,对象调用该方法才被分配内存。
1.11 属性初始化
属性初始化分为类属性初始化和对象属性初始化。
对象属性初始化有3种:
- 声明该属性的时候初始化
- 构造方法中初始化
- 初始化块
类属性初始化有2种:
- 声明该属性的时候初始化
- 静态初始化块
优先级为:静态(类)初始化 总是先于 对象(成员)属性初始化调用,构造方法中初始化 总是最后一个调用。 初始化块 与 属性声明时初始化的调用顺序取决于代码的先后顺序。
2.网络编程基础
2.1 网络基础
网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。
java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细节。可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。
java.net 包中提供了两种常见的网络协议的支持:
-
TCP:TCP(英语:Transmission Control Protocol,传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP 层是位于 IP 层之上,应用层之下的中间层。TCP 保障了两个应用程序之间的可靠通信。通常用于互联网协议,被称 TCP / IP。
-
UDP:UDP (英语:User Datagram Protocol,用户数据报协议),位于 OSI 模型的传输层。一个无连接的协议。提供了应用程序之间要发送数据的数据报。由于UDP缺乏可靠性且属于无连接协议,所以应用程序通常必须容许一些丢失、错误或重复的数据包。
2.2 Socket 编程
使用 Socket(套接字)可以进行不同的程序之间的通信。客户端程序创建一个套接字,并尝试连接服务器的套接字。
当连接建立时,服务器会创建一个 Socket 对象。客户端和服务器现在可以通过对 Socket 对象的写入和读取来进行通信。
java.net.Socket 类代表一个套接字,并且 java.net.ServerSocket 类为服务器程序提供了一种来监听客户端,并与他们建立连接的机制。参考以下文章:
ServerSocket详解 - 简书 (jianshu.com)https://www.jianshu.com/p/665994c2e784
3.Oracle数据库基础
3.1 数据库定义
DB的全名是database,即数据库。
总的来说,数据库是以特定方式存储、能与多个用户共享、具有尽量小的信息冗余、与程序相互独立的数据集合。
3.2 数据库管理系统
数据库管理系统(databasemanagementsystem)是位于用户与操作系统间的一层数据管理方法,用以科学地组织和储存数据、高效地提取和维护数据。
3.3 为什么使用数据库
由于传统式的io流文件储存数据有很多缺点:
- 文件储存数据效率低;
- 数据存取的操作非常繁杂;
- 一般只有储存小量字符串数据。
这些弊端的存在导致了数据库的出现,利用数据库储存数据就可以很好地规避它们。
3.4 数据库的种类
数据库有两种类型,分别是关系型数据库和非关系型数据库。
- 关系型数据库:Oracle、DB2、MicrosoftSQLServer、MicrosoftAccess、MySQL等。
- 非关系型数据库:NoSql、Cloudant、MongoDb、redis、HBase等。
关系型数据库的优点:
- 能够复杂查询:可以用SQL句子便捷的在一个表及多个表之间做复杂的数据查询。
- 事务支持性优秀:能够实现对于安全性要求很高的数据访问。
非关系型数据库的优点:
- 性能好:NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,并且不用通过SQL层的解析,因此性能表现优异。
- 可扩展性好:同样也是基于键值对,数据间耦合度低,因此很容易水平扩展。
3.5 Oracle实例基本操作
利用Database Configuration Assistant对数据库进行创建删除等配置,注意可能带来的注册表问题。
利用sql*plus与oracle进行交互。注意利用exit/quit 退出,不要直接关闭窗口。
Oracle数据库实例的启动过程分为3步骤,分别是启动实例、加载数据库、打开数据库。sql*plus中命令为:
STARTUP [nomount | mount | open | force] [resetrict] [pfile=filename]
关闭数据库实例也分为3个步骤,分别是关闭数据库、卸载数据库、关闭Oracle实例。sql*plus中命令为:
SHUTDOWN [normal | transactional | immediate | abort]
3.6 Oracle体系结构
Oracle数据库服务器
由两个部分组成:
- 实例:实例是数据库启动时初始化的一组进程和内存结构
- 数据库:数据库则指的是用户存储数据的一些物理文件
实例是暂态的,是一组逻辑划分的内存结构和进程结构,会随着数据库的关闭而消失,而数据库其实就是一堆物理文件(控制文件,数据文件,日志文件等等)是永久存在的(除非磁盘损坏)。数据库和实例通常是一对一的,这种结构我们成为单实例体系结构;当然还有一些复杂的分布式的结构,一个数据库可以对多个实例,如Oracle的RAC。
逻辑存储结构
数据库-->表空间-->段-->数据区-->数据块
数据块:
- 最小逻辑单位,也是执行数据库输入输出操作的最小存储单位
- 数据块有标准大小,初始化参数DB_BlOCK_SIZE中。另外,Oracle支持在同一个数据库中使用多种大小的块,与标准块大小不同的块就是非标准块。
数据区:
- 一组(可为一个)连续的数据块所构成的
- 存储分配的最小单位
- 目的是用来保存特定数据类型的数据
数据段:
- 一个独立的逻辑存储结构
- 是为特定的数据对象(如表、索引、回滚等)分配的一系列数据区。
- 目的是用来保存特定对象。
- 通常有以下4种类型的段:1.数据段 2.索引段 3.回滚段 4.临时段
物理储存结构
- 数据文件
- 控制文件
- 日志文件
- 服务器参数文件
- 密码文件、警告文件和跟踪文件
服务器结构
- 系统全局区(SGA)
- 程序全局区(PGA)
- 前台进程
- 后台进程