NMID学习笔记

章节一

:各环境变量的意义

1.环境变量的意义

操作系统中具有特定名字的对象,用于储存一个路径,该路径指明某些文件、程序的完整路径;JAVA的环境变量便是指明jdk、jrm等文件的路径以便系统查找在编程过程中用到的相应的语法、函数所在的具体文件位置。

2.JAVA_HOME

储存Java的安装目录;听说有各规定就是当有软件需要用到Java时会直接在操作系统中找这个变量。

3.PATH

储存Java命令所在路径,即jdk下的bin目录所在路径,设置好PATH后可以在系统执行命令时使用javac/java等工具,所以PATH在JAVA_HOME之下。

4.CLASSPATH

储存Java的执行环境在哪些路径、目录之下,通常与improt、package、class有关,即jdk下的lib,也在JAVA_HOME之下。

:JDKJREJVM的区别

1.跨平台核心JVM

Java可以实现一处编写、多处运行,其原因就在于JVM,在不同的的操作系统中JVM通过适应于本系统的独立的JVM实现将代码编译为唯一的字节码然后在JavaAPI层面调用相同的设备实现同一功能,也就是先得到同一的指令集(字节流)然后解释自己的指令集到 CPU 的指令集或 OS 的系统调用。

2.运行环境JRE

包含底层的JVM实现(bin)、JVM工作需要的基本类库(lib),所以可以说是Java运行、开发时的环境。

3.开发工具JDK

工具包,Java开发的核心,包含编译器相关的文件(bin)、Java与JVM交互的头文件(include)、类库(lib)、运行环境(jre)。

   4.总结:Jdk中有jre,jre中有jvm,jvm与操作系统相连。

:流程

编写Java源文件

Javac命令将其编译为class文件(字节码)

JVM加载class文件

:class文件

Class文件与操作系统无关所以可以在不同操作系统中使用为Java程序提供独立于底层的二进制形式服务。

五:Git

1.基本知识

主要是管理GitHub,托管项目代码;

同时主要功能为管理代码的版本,便于用户查找以前版本;

本地有三个工作区域:

在工作区对文件修、添、改;

暂存区暂存修、添、改的文件方便再一次做进一步的修、添、改操作;

确认无误后将暂存区的文件提交到git本地仓库。

2.git管理本地仓库

创建文件夹:mkdir文件夹名

进入文件夹目录:cd 文件夹名/文件夹路径

初始化Git仓库(存储仓库所有信息):gitinit

退到上一级:

当前文件状况:gitstatus

创建文件:touch文件名

删除文件:rm 文件名

修改文件内容:vi 文件名

查看文件内容:cat 文件名

将文件从工作区转到暂存区:git

add 文件名

将暂存区中的文件删除:git

rm 文件名

确认暂存区中执行的操作保存到仓库:git commit -m”描述”

3.git管理远程仓库

从远程仓库中项目克隆到本地:git

clone 仓库地址

在本地工作区对文件进行操作后添加到本地仓库的暂存区;

确认无误后确定添加到本地仓库;

将本地仓库同步到远程仓库:gitpush

:对分支的理解

1.基本知识

分支是一次处理不同版本存储库的方法。

默认情况下,存储库有一个名为master的分支,该分支被视为最终分支。在将分支提交给master之前,我们使用分支进行实验和编辑。

当我在主分支上创建分支时,我正在按主分支在该时间点上的状态创建主分支的副本或快照。如果在我处理分支时其他人对主分支进行了更改,则可以引入这些更新。

:语法知识

1.基本组成

关键字、运算符、标识符、语句、注释、函数、常量与变量、数组。

2.关键字和标识符

关键字:(Java自带)

用于定义数据类型的关键字classinterface byte short int long float double char boolean void

用于定义数据类型值的关键字truefalse null

用于定义流程控制的关键字ifelse switch case default while do for break continue return

用于定义访问权限修饰符的关键字privateprotected public

用于定义类,函数,变量修饰符的关键字abstract final static synchronized

用于定义类与类之间关系的关键字extendsimplements

用于定义建立实例及引用实例,判断实例的关键字new this super instanceof

用于异常处理的关键字trycatch finally throw throws

用于包的关键字packageimport

其他修饰符关键字nativestrictfp transient volatile assert

标识符:(自定义)

遵循大小写严格、不能与关键字冲突、不能以数字开头

3.基本数据类型

数值型:byteshort int long float double

字符型:char

布尔型:boolean

4.引用数据类型

类class、接口interface、数组[]







章节二

一:简述类与对象的关系

1.类

事物的描述。是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。

2.对象

正文该类事物的实例。在Java中通过new进行创建。是一个真实世界中的实体,对象与实体是一一对应关系的,意思就是现实世界的每一个实体都是一个对象,所以对象是一个具体的概念。对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。;

3.区别

a).类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为。就好像“Person(人)”这个类,它虽然可以包含很多个体,但它本身不存在于现实世界上。

b).

对象是类的一个具体。它是一个实实在在存在的东西。类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间中。

c).

对象是一个动态的概念。每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为。对象的属性可以随着它自己的行为而发生改变。;

二:封装的概念

1.基本概念

正文封装是面向对象的方法遵循的一个重要原则,有时也叫做数据隐藏。

从形式上看,封装将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现形式。

对象中的数据称为实例域,操纵数据的过程叫做方法,对于每个特定的对象,都有一组特定的实例域值。这些值的集合就是这个对象的当前状态.无论何时,只要向对象发送一个消息,它的状态就有可能发生改变。

封装的关键在于不能让类中的方法直接地访问其他类的实例域。程序仅通过对象的方法,与对象数据进行交互。这意味着一个类可以全面地改变存储数据的方式,只要仍旧使用同样的方法操作数据,其他对象就不知道所发生的变化

三:对构造函数的理解

1.概念

构造函数是一种特殊的函数。其主要功能是用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。构造函数与类名相同,可重载多个不同的构造函数。在JAVA语言中,构造函数普遍被称之为构造方法。;

2.特点

a).构造方法的方法名必须与类名相同。

构造方法没有返回值类型,可以有return,但是不能有返回值,在这里只是表示结束,并不是返回的表示,一般也不使用return。

b).构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。

c).一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造方法,这个构造方法不执行任何代码。

d).构造方法可以重载,以参数的个数,类型,顺序。

3.理解

构造一个新对象的方法。

四:JAVA能不能多继承,若不能,怎么处理这种问题

1.不能

其问题在于子类的功能由谁实现,使用时能否准确定位是谁做。子类继承父类,没有重写方法,调用的是父类的功能;假如可以继承多个父类,那么当父类A,B中有同样的方法或参数时,子类C调用父类方法或属性时很难判断要调用谁;

2.二解决方法

通过接口,接口不同,接口没有方法体,也就是没有功能,功能是实现类来做的,因此不用考虑让谁做的问题;定义的属性也是常量,要通过接口名来调用

五:单例设计模式的理解

1.概念

一个类中只提供一个实例对象让外面访问。;

2.实现方法

a).在类初始化时,已经自行实例化;

b). 在第一次调用的时候实例化

c). 将类名注册,下次从里面直接获取

3.理解

由类的访问模式定义的编程设计模式;

六:解释下这句代码什么意思

public static void main(String[] args)

1.答:

A)、String[] args:字符串数组,接收程序执行时来传进来的参数;

B)、public:程序访问权限,表示该程序在任何场合都可以被引用;

C)、static:表示方法是静态的,不依赖类的对象,是属于类的;

D)、void:表示方法无返回值;

 

七:UML类图

1.作用:

识别出所有必须的类,并分析这些类之间的关系。

2.知识:

a)类图中包含类之间的关系分别有有关联、聚合、组合、泛化、依赖,

b)聚合表示整体与部分的关系;

c)关联是模型元素之间的一种语义联系,是类之间的一种很弱的联系

d)组合表示类之间整体和部分的关系

e)泛化定义了一般元素和特殊元素之间的分类关系,类之间的这种泛化关系也就是继承关系。

,                       






章节三

一:线程 进程区别

4.进程

进程是程序资源分配的最小单元,是程序在系统上的一次动态执行、运行过程,它经历了从代码加载、执行到执行完毕的一个完整过程,是一个能独立运行的单位,它有自己的独立资源和私有的地址空间;

5.线程

线程是程序执行的最小单元,是进程的一个实体,是cpu调度和分派的基本单位,它是比进程更小的能独立运行的基本单位;

6.总结

线程在进程当中,进程标识一个完整程序,所以进程之间无明显联系;线程直属于cpu,是进程中的基本单位,所以线程之间可以共享内存

二:实现线程几种方式

1.Thread类

通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放入其中;

2.Runnable接口

实现Runnable接口,实例化Thread类;

 

三:Thread类中的start()

run()方法的区别

区别:

Run在原来的线程中调用,start启动新的线程;start内部调用run方法。

四:什么是线程安全?Vector是一个线程安全类吗?

1.线程安全:

多线程编程时的计算机程序代码的一个概念,线程安全的代码会通过同步机制保证各个线程都都可以正确且正常的执行,因此如果单线程每次运行的结果与单线程运行时的结果一致,且其它的变量的值也与预期一致时便是线程安全的;

2.Vector:

Vector通过同步的方法,使多个线程不可能同时访问Vector中的数据,只能一个一个访问,不会出现数据混乱的现象,所以线程安全;

五:如何在两个线程间共享数据?什么是生产消费者模型?

1.线程间的数据共享:

如果每个线程执行相同的代码,那么可以使用runnable对象,runnable里面的数据共享;如果每个线程执行的代码不同,则需要两个Runnable,通过内部类方法,将共享数据写在内部类中,提供每个线程不同的方法,构建实例,通过构造方法传递的对象,进行数据共享;或者通过外部类方法,将共享数据提供在外部类的成员变量中,提供外部类的不用线程的方法,在Runnable中调用外部类的方法或者变量,以此实现数据共享。

2.消费者模型

在一个系统中存在生产者、消费者两种角色,通过内存缓冲区进行通信,生产者生产数据,消费者将数据做成产品;生产者生产数据到缓冲区中,消费者从缓冲区中取数据。

如果缓冲区已经满了,则生产者线程阻塞。

如果缓冲区为空,那么消费者线程阻塞

六:什么是线程池?为什么要使用它?

1.线程池:

一种线程使用模式;

线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。

2.线程池优点:

线程池可以通过重用已存在的线程降低系统资源消耗,降低线程创建和销毁造成的消耗;提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;方便线程并发数的管控。因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换(cpu切换线程是有时间成本的(需要保持当前执行线程的现场,并恢复要执行线程的现场))。提供更强大的功能,延时定时线程池。

七:多线程中调用wait()sleep()方法有什么不同?

1.Wait()

Object类的方法,可以中断线程的运行,使本线程等待,暂时让出CPU的使用权,并允许其他线程使用这个同步方法。其他线程如果在使用这个同步方法时不需要等待,那么它使用完这个方法的同时,应该用notifyAll()方法通知所有由于使用了这个同步方法而处于等待的线程结束等待,曾中断的线程就会从刚才中断处继续执行这个同步方法(并不是立马执行,而是结束等待),并遵循“先中断先继续”的原则。

2.sleep()

Thread类的方法,线程通过调用该方法,进入休眠状态主动让出CPU,从而CPU可以执行其他的线程。经过sleep指定的时间后,CPU回到这个线程上继续往下执行。;

3.区别:

sleep()方法的主要作用是让线程暂停一段时间,时间一到则自动恢复,不涉及线程间的通信,也不会释放锁,可以放在任何地方使用,但sleep()方法必须捕获异常;

调用wait()方法后,线程会释放掉它所占用的锁,从而使线程所在对象中的其他synchronized数据可被别的线程使用,用于线程间的通信,必须放在同步控制方法或者同步语句块中使用,不需要捕获异常。

八:synchronizedReentrantLock 有什么不同?

1.synchronized

Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。当两个并发线程访问同一个对象object中的这个加锁同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。然而,当一个线程访问object的一个加锁代码块时,另一个线程仍可以访问该object中的非加锁代码块。;

2.ReentrantLock

ReentrantLock类,实现了Lock接口,是一种可重入的独占锁,具有与使用 synchronized 相同的一些基本行为和语义,但功能更强大。ReentrantLock内部通过内部类实现了AQS框架的API来实现独占锁的功能;

3.区别:

Synchronized是java语言的关键字,是原生语法层面的互斥,需要jvm实现,使用比较方便简洁;

ReentrantLock是JDK 1.5之后提供的API层面的互斥锁,需要lock()和unlock()方法配合try/finally语句块来完成,锁更灵活;

优化以后的Sunchronized的性能与ReenTrantLock差不多。

锁机制

4.悲观锁

是一种对数据的修改持悲观态度的并发控制方式,悲观锁总是假设其它线程在读取数据时候会更改数据,因此进行加锁操作,当其他线程想要访问数据时候都将线程阻塞挂起。synchronized的实现就是悲观锁的例子。悲观锁采用的悲观并发控制实际上是先取锁再访问的保守策略,能对数据处理的安全提供保障,只是效率有所降低。适用于写多读少的场景。

5.乐观锁

乐观锁则假设数据一般不会造成冲突,只在数据更新时才对数据是否冲突进行检测,如果冲突则返回给用户异常信息,让用户决定如何去做,适用于读多写少的场景。
乐观锁的实现步骤为:冲突检测和数据更新。乐观锁中的CAS(比较与交换)概念为解决多线程并行情况下使用锁造成损耗的一种机制。


参考文案



章节四

一:集合的理解

7.简介

因为数组只能存放同一类型的数据,且长度固定在实际编程中会存在一些麻烦,所以集合应运而生;不存储对象而是用于存放对象的引用,所以可以以引用类型存放不同的类型且不限数量。Java集合框架主要包括两种:储存元素的集合Collocation和储存键值对映射的图Map。

8.List:

继承于Collocation,属于集合的一种,是有序的队列,List中每一个元素有一个索引,第一个索引值为0,List中允许有重复的元素;

9.Set:

继承于Collocation,是不包括重复元素的集合的一种,维持内部排序,所以随机访问没有意义;

10.Map:

是由一系列键值对组成的图,提供了键值Key到Value的映射,且该映射一一对应,不允许多对一,允许一对多;

二:Hashtable

1.简介

实现Map接口的类,以哈希表数据结构实现,每个键、值都是一个对象,采用拉链法实现哈希表,性能不如HashMap;

三:TreeMap

1.简介

有序散列表,实现SortedMap接口,储存K-V键值对,底层通过红黑树实现,可以实现元素的自动排序。

四:HashMap

1.简介

实现Map接口的类,以哈希表数据结构实现,通过哈希函数将元素的键值转化为索引,为快速查询而设计的;

五:三者的异同

1.相同点

都对Map接口进行了实现;

2.相异点

Hashtable是线程安全的、同步的,不支持null和空值,同步导致开销大;HashMap大体与Hashtable一致,但HashMap支持null和空值,不是同步的开销较小;treeMap是基于红黑树实现的可以进行排序、顺序访问的Map

六:IO基本操作 ,可以找下IO文件操作的模板代码

1.简介

JavaIO包中有五个类(File、InputStream、OutPutStream、writer、reader)和一个接口,类中除了File之外全部属于抽象类,那些抽象类有很多复杂且麻烦的子类,且这些类在使用完成后需要手动关闭流。字符流只能用来复制纯文本文件,字节流可以复制所以类型的文件。

2.IO基本操作

创建与指定路径文件相连的输入流,输出流,用于读写文件:

FileInputStream(File

file||String name);

FileOutputStream(File

file||String name);

创建缓冲输入流、输出流,用于缓存字节数据的字节流:

BufferedInputStream(InputStreamin,null||int

size);

BufferedOutputStream(InputStreamin,null||int

size);

创建读取、写入字符的字符流:

FileReader(File file||String name);

FileWriter(File file||String name);

创建文本缓冲输入流、输出流,用于缓存字符数据的字符流:

BufferedReader(Reader

in,null||int size);

BufferedWriter(Reader

in,null||int size);

字节流转字符流:

InputStreamReader(InputStream

in,null||Charset

cs);

字符流转字节流:

OutputStreamWriter(OutputStream

out,null||Charset

cs);

从流中读取下一个字节,返回字节值,若读到流尾返回-1:

Read(byte[] b,null||-int off,int

len-);

将字节写入流中:

Read(byte[] b,null||-int off,int

len-);

关闭流:

Close();

刷新:

Flush();

七:网络编程中TCPUDP协议开发的基本流程,网上也有很多Demo代码

1.TCP(C/S模式):

TCP通过连接的方式进行通信数据以流的形式传送,流程如下:

a.创建服务器端,设定服务器端口和ip地址;

b.创建客户端,设定服务器的端口和ip地址以及本地端口;

c.客户端通过Socket对象将数据以流的形式在网络中传输;

d.服务器端通过ServerSocket对象监听客户端的连接;

e.服务器端通过Socket对象获取客户端发来服务器端通过Socket对象反馈信息回客户端;

f.关闭套接字;

2.UDP(交互式):

UDP以无连接的方式进行通信数据以数据报的形式传送:

a. 创建UdpSocket用于发送接收数据;

b. 创建数据包DatagramPacket储存数据;

c. 调用DatagramSocket方法发送、接收数据包;

d. 若接收到报文则通过调用数据包的方法获取接收到的数据;

e. 关闭套接字;







章节五

一:SQL基本语句

1.基本概念

     数据库:操作数据的集合;

     SQL语句:管理数据库的命令,大小写不敏感;

     DDL:数据定义语言,对数据库内部的对象进行创建;

     DML:数据操纵语言,实现对数据库进行增删改查等操作;

     DCL:数据控制语言,定义数据库相应对象的访问权限和安全级别。

2.数据库相关

语句语义


数据库操作:


Create database创建数据库

Show create database查看数据库

Show database查看所有数据库

Create database db character set ‘’创建指定字符集

Drop database删除数据库

Use使用数据库


表相关:


create table t1(id,name)创建表

show create table t1查看单个表属性

show tables查看所有表

create table t1(id,name) engine=‘’ charset=

‘’创建表指定引擎和字符集


修改表:


rename table t1 to t2修改表名

alter table t1 engine= ‘’ charset= ‘’修改表属性

alter table t1 add age int first/after xx添加表字段

alter table t1 drop age删除表字段

alter table t1 change age newAge int修改表字段名和类型

alter table t1 modify age int first/after

xx修改表类型和位置

drop table t1删除表


数据相关:


insert into t1 values()增

insert into t1’’ values()

insert into t1 values(),()

insert into t1() values(),()

delete from t1 where id=10删

update stu set mid=x where age=y and name=

"";改

select * from t1 where id查

select name from t1

select * from t1


服务器相关:


Service mysqld start启动MySQL服务器

Mysql -u ‘’/root -p连接服务器

\h显示帮助内容

\c清除命令行

 二:数据库五大范式范式

1.数据库范式

设计数据库时为了使数据库为合理的关系型数据库,需要遵从不同的规范要求,这些不同的规范要求被称为范式,满足规范祭祀说属于对应范式,范式越高数据库冗杂越小。

2.第一范式(1NF)

原子型,每一列的字段不可分割。每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者重复的属性。消除非主键属性对键的部分函数依赖。

3.第二范式(2NF)

主键,第二范式在满足第一范式的前提下建立起来的,即每个表中都要有一个主键,这个主键关键字段与其它非主键字段紧密相连,可以说依赖这个主键。非主属性非部分依赖于主关键字。消除非主属性对键的传递函数依赖。

4.第三范式(3NF)

外键,要求非主键列互不依赖,一个数据库表中不包含已在其他表中已包含的非主关键字信息,如果需要只需把另一张表的关键字作为外键保存在需要的表中。消除主属性对键的部分和传递函数依赖。

5.第四范式(BCNF)

禁止主键列和非主键列一对多关系不受约束。消除非平凡且非依赖的多值依赖。

6.第五范式(4NF)

将表分割成尽可能小的块,为了排除在表中所有的冗余。

三:JDBC的执行步骤

1.JDBC概念

JAVA数据库连接,是JAVA语言中用来规范客户端程序如何来访问数据库的运用接口,提供诸如查询和更新数据库中数据的方法。

2.执行步骤

加载驱动Class.forName(“com.mysql.jdbc.Driver”)不会产生依赖

System.setProperty(“jdbc.drivers”,“driver1:driver2”); 注冊不太方便

DriverManager.registerDriver(com.mysql.jdbc.Driver);产生依赖

建立连接Connectionconn  =DriverManager.getConnection(url,user,password);

URL:子协议:子名称//主机名:port/数据库名?属性名=属性值&

User:登录数据库的username;password:登录数据库的密码,为空就填“”

创建运行对象Statementst = connection.createStatement();

子类PreparedStatement能够对SQL语句进行预编译防止SQL注入

孙子类CallableStatement主要用于运行SQL存储过程

运行SQL语句ResultSet 

rs =st.executeQuery(sql);用于运行实现查询功能的语句,返回结果集

int flag = st.executeUpdate(sql);用于运行实现增删改查功能的语句,返回整型

处理运行结果ResultSet通过游标操作,游标是一个可控制的、能够指向随意一条记录的指针。

释放资源Close();数据库资源不关闭,其占用的内存不会被释放,徒耗资源,影响系统

 四:什么是事务

1.事务概念

事务是访问数据库的一个操作序列,数据库运用系统通过事务集来完成对数据库的存取,使得数据库从一种状态转换为另一种状态。

2.事务特点

必须事务必须服从ISO/IEC所制定的ACID原则。即原子性、一致性、隔离性和持久性。

五:事务的四个特性

1.原子性

不可分割性,事务要么全部被执行,要么就全部不被执行。如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生转换;如果有子事务失败,则其他子事务的数据库操作被回滚,即数据库回到事务执行前的状态,不会发生状态转换。

2.一致性

事务的执行使得数据库从一种正确状态转换成另一种正确状态。

3.隔离性

在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,即在事务正确提交之前,它可能的结果不应显示给任何其他事务。

4.持久性

事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。

六:事务的隔离级别

1.并发事务存在的问题

脏读:指事务A读到了事务B还没有提交的数据;

幻读:在一个事务操作里面发现了未被操作的数据;

不可重复读:一个事务里面读取两次某个数据,但结果数据不一样;

2.隔离的基本概率

隔离已解决并发存在的问题,事务隔离级别越高,在并发下会产生的问题就越少。因为通过消耗性能解决问题,所以设立事务隔离级别,以便不同的项目根据各自情况选择合适的事务隔离级别。

3.隔离等级

DEFAULT默认隔离级别

READ_UNCOMMITTED无法解决脏读、不可重复读、幻读中的任何一种

READ_COMMITED防止脏读,但是无法限制不可重复读和幻读

REPEATABLE_READ解决了脏读、不可重复读的问题,但是幻读的问题还是无法解决

SERLALIZABLE解决了脏读、不可重复读和幻读问题

七:索引的类别和每种索引的创建方式

1.索引类别

        单列索引:主键索引、唯索引、普通索引;

组合索引:包含两个或两个以上的索引

2.索引的创建方式

主键索引不允许有空值

唯索引CREATEUNIQUE INDEX account_UNIQUE_Index ON  `award`(`account`);

普通索引CREATEINDEX account_Index ON `award`(`account`);

ALTER TABLE award ADD INDEXaccount_Index(`account`)

组合索引CREATEINDEX nickname_account_createdTime_Index ON  `award`(`nickname`,`account`, `created_time`);

 八:聚簇索引和非聚簇索引的区别

1.聚簇索引

表数据按照索引的顺序来存储的,索引项的顺序与表中记录的物理顺序一致。其叶子结点即存储了真实的数据行,不再有另外单独的数据页。 在一张表上最多只能创建一个聚集索引,因为真实数据的物理顺序只能有一种。

2.非聚簇索引

表数据存储顺序与索引顺序无关。其叶结点包含索引字段值及指向数据页数据行的逻辑指针,其行数量与数据表行数据量一致。

3.其它

聚簇索引为稀疏索引,数据页上一级的索引页存储的是页指针,而不是行指针;

非聚簇索引则是密集索引,在数据页的上一级索引页它为每一个数据行存储一条索引记录。

九:BB+树的区别

1.B树

每个节点最多包含m个孩子,m称为b树的阶,m的大小取决于磁盘页的大小。关键字集合分布子啊整棵树中;任何一个关键字出现且只出现在一个结点中;搜索有可能在非叶子结点结束;其搜索性能等价于在关键字全集内做一次二分查找;

2.B+树

有n棵子树的非叶子结点中含有n个关键字(b树是n-1个),关键字不保存数据,只用来索引,所有数据都保存在叶子节点(b树是每个关键字都保存数据);

叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。

所有的非叶子结点可以看成是索引部分,结点中仅含其子树中的最大(或最小)关键字;

通常在b+树上有两个头指针,一个指向根结点,一个指向关键字最小的叶子结点;

同一个数字会在不同节点中重复出现,根节点的最大元素就是b+树的最大元素;







章节六

一:HTML基础知识

1.HTML简介

HTML为一种标记语言而非编程语言,而标记语言是一套标记标签,HTML用标签来描述网页是一种用于创建网页的标准标记语言,HTML文档中包含了HTML标签以及文本内容由浏览器解析,所以同时HTML文档又叫做web页面;

2.HTML标记构成

HTML元素:

 主要指标题、段落、链接、图像等构成整个HTML文档的框架;元素之间可以嵌套;

HTML属性:

HTML属性定义HTML元素的对应特征例如颜色、大小,布局等属性;

二:HTML超链接有哪些

内部链接;外部链接;空链接;描点链接;

三:HTML创建表格

表格由标签table定义,标签tr创建行,td创建单元格。

四:HTMLFrom表单

1.简介

由标签form定义,用于创建供用户输入的HTML表单,一个form元素可以包含一个或多个表单元素;

2.表单元素

Input、tetarea、button、select、option、optgroup、fieldset、label;

五:SCC(层叠样式)

1.简介

层叠样式表,一种用来表现HTML或XML等文件样式,可以静态地修饰网页,可以配合各种脚本语言动态地对网页各元素进行格式化。

2.层叠概念

对一个元素多次设置同一个样式,将使用最后一次设置的属性值,后来的样式将对前面的样式设置进行重写,在浏览器当中看到的将是最后设置的样式效果。

六:CSS复合选择器

1.后代选择器

后代选择器又称为包含选择器,用来选择元素或元素组的后代,其写法是把外层标签写在前面,内层标签写在后面,中间用空格分割。当标签发生嵌套时,内层标签就成为外层标签的后代。

2.子元素选择器

子元素选择器只能选择作为某元素子元素的元素。其写法就是把父级标签写在前面,子级标签写在后面,中间跟一个空格进行连接,且符号左右两侧各保留一个空格。

3.属性选择器

选择标签带有某些特殊属性的选择器。

4.伪元素选择器

用于向某些选择器添加特殊效果,比如给链接添加效果,比如选择指定下标的元素,需要注意的是伪元素选择器有链接伪类,结构伪类。

5.交集选择器

有两个选择器构成,找到的标签需要满足两个选择器。

6.并集选择器

若某些选择器定义的样式完全相同,或部分相同,就可以利用并集选择器为他们定义相同的CSS样式。

七:SCC文字效果

枚举:

文本阴影;模糊效果;卡片效果;

八:用CSS设置图像效果

设置图片边框

设置图片大小及收缩

图文混排;

设置图片与文字的对齐方式



  注:相关操作博客地址如下

https://blog.csdn.net/wtyicy/article/details/80293109?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase


九:用CSS设置背景颜色和背景图像

1.设置背景颜色

Background-color:颜色;

2.设置背景图像

Background-image:url(地址)

3.设置背景图像平铺

Background-repeat:平铺方式

4.设置背景图像位置

Background-position:位置

5.设置背景图片位置固定

Attachment:fixed

十:盒模型

1.简介

所有HTML元素都可以看作是盒子,CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

十一:用CSS设置样式

1.直接设置style的属性

某些情况用这个设置!important值无效,如果属性有'-'号,就写成驼峰的形式(如textAlign)  如果想保留 - 号,就中括号的形式

element.style['text-align']= '100px';

element.style.height= '100px';

2.直接设置属性(只能用于某些属性,相关样式会自动识别)

element.setAttribute('height',100);

element.setAttribute('height','100px');

3.设置style的属性

element.setAttribute('style','height: 100px!important');

4.使用setProperty

element.style.setProperty('height','300px','important');

5.改变class

因JS获取不到css的伪元素,所以可以通过改变伪元素父级的class来动态更改伪元素的样式

element.className= 'blue';

element.className+= 'blue fb';

6.设置cssText

element.style.cssText= 'height: 100px!important';

element.style.cssText+= 'height: 100px!important';


十二:JavaScript简介

1.简介

JavaScript用于HTML、web,更广泛用于服务器、PC、笔记本、平板电脑和智能手机等设备;是一种轻量级的编程语言;是可插入到HTML页面的编程代码;JavaScript插入到HTML页面后可由所有的现代浏览器执行;

会随网页中一些控件的调用触发。

2.功能

增强用户和HTML页面的交互过程,可以控制HTML元素,让页面有一些动态的效果,增强用户体验。

十三:基本语法

1.数据类型

A.原始数据类型:

Number:整数、小数;

String:字符串,如 “abc”;

Boolean:true和false;

Null:空,一个对象为空的占位符;

Undefined:未定义的类型,在未被初始化时默认的类型;

B.引用数据类型:

对象。

2.变量

一小块储存数据的内存空间,但也分两种,

一种定义了空间将来储存的数据数据类型且只能储存固定类型数据的强类型;

一种是不定义空间将来的储存数据类型,可以存放任意类型的弱类型。

3.内部JS

定义<script>,标签体内容就是js代码。

4.外部JS

定义<script>,通过src属性引入外部的js文件。

十四:JavaScript数组

1.概念

数组是一种特殊的变量,能够一次存放一个以上的值,并且可以通过引用索引号来访问这些值。JavaScript变量可以是对象,数组是特殊类型的对象,所以相同数组中可以存放不同的类型的变量,可以保存对象、函数甚至嵌套一个数组。

2.操作

操作实现

创建数组Var 数组名=[*,*,*];

Var 数组名= new Array(*,*,*);

访问数组元素Var

name = 数组[小标];

修改元素值Cars[下标] = ‘’

获取数组元素数目.length;

添加元素.push(“元素”);

 十五:JavaScript对象

1.概念

对象也是变量,但是对象包含很多值,是被命名值的容器;对象存在方法,方法是在对象上执行的动作,方法以函数定义的形式被储存在属性里面。总的来说对象拥有能够被访问的属性、方法。

十六:JavaScript对象函数

1.概念

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块;JavaScript中的所有事物都是对象,函数也是如此,且函数在JS中会大量运用

十七:JavaScriptDOM(document)节点

1.概念

在HTML中一切都是节点,所有节点都是object,而整个HTML文档就是一个文档节点。

DOM为文档对象模型,为文档提供了结构化表示,并定义了如何通过脚本来访问结构,目的其实就是为了能让js操作html元素而制定的一个规范;DOM就是由节点组成。

HTML加载完毕后,渲染系统会在内存中把HTML文档生成一个DOM树,getElementByld获取内存中DOM上的元素节点,然后操作的时候修改的是该元素的属性。

2.操作

操作实现

创建节点var node=document.createTextNode("");

var node = document.createElement(“”);

插入节点父节点.appendChild(子节点);

父节点.insertBefore(子节点);

删除节点父节点.removeChild(子节点);

nodel.parentNode.removeChild(node1);

复制节点cloneNode(复制对象)

.cloneNode(true);

node.属性= “”;

node.setAttribute(属性名,属性);

删除节点属性node.removeAttribute(属性名);

十八:HTML

CSS JavaScript三者的联系

1.HTML

     决定网络的结构和内容;

2.CSS

     设计网页的表现形式,设计样式;

3.JavaScript

     控制网页的行为、事件;







章节七

一、Maven项目

1.Maven简介

强大的构建工具,可以自动化构建过程:从清理、编译、测试到生成报告、打包部署;

项目管理工具,能运行报告、生成站点、标准化以便项目成员之间交流,知识积累;

一个项目对象模型、一组标准集合、一个项目生命周期、一个依赖管理系统、一个运行项目生命周期阶段中插件目标逻辑的软件;

当使用Maven的时候,项目会被一个明确定义了的项目对象模型描述。

总的来说Maven项目是借助Maven搭建的项目,在搭建过程中一些繁琐的工作由插件Maven完成。

二、Tomcat

1.简介

免费开源的轻量级Web运用服务器,很好的体现了Servlet、JSP规范。

三、Servlet

1.简介

运行在Web服务器上的程序,作为来自Web浏览器或者其它HTTP客户端的请求和HTTP服务器上的数据库或者运用程序之间的中间层;

使用Servlet可以收集来自网页表单的用户的输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

2.Servlet任务

读取显示数据:客户端发送的网页HTML表单、applet/自定义的HTTP客户端程序表单;

读取隐式的 HTTP请求数据:包括客户端(浏览器)发送的 cookies、媒体类型和浏览器能理解的压缩格式等;

处理数据并生成结果:这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用Web 服务,或者直接计算得出对应的响应;

发送显式的数据:发送文档到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel等;

发送隐式的 HTTP响应:包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。

四、Servlet生命周期

1.简介

Servlet生命周期可被定义为从创建直到毁灭的整个过程。

2.过程

Init()初始化、service()处理请求、destroy()终止、JVM的垃圾回收器回收

五、RequestResponse

1.Request

        获取浏览器发过来的参数,请求方式:


2.Response

        用于向浏览器写东西,格式:


3.小结

Web服务器收到客户端的Http请求,会针对每一次请求,分别建立一个用于代表请求的request对象和代表响应的response对象:当需要获取客户机提交的数据时找request对象;当需要向客户机输出数据时找response对象。

六、CookieSession

1.Cookie

会话跟踪机制,记录一个用户的所有请求操作;服务器端通过发送response控制客户端浏览器跟踪用户的会话。

2.Session

服务器端使用的一种记录客户端状态的机制,比Cookie简单,只是增加了服务器的存储压力;

七、FilterListener

.Filter

1.过滤器-Filter

可以插入的Web组件,能够对Servlet容器的接收到的客户端请求和向客户端发出的响应对象进行截获,但自身不产生请求和响应,只提供过滤功能。过滤器支持对Servlet程序和JSP页面的基本请求处理功能,如日志、性能、安全、会话、处理、XSLT转换。

2.Filter的作用

        查询请求并做出响应的行动;

        阻塞请求对-响应对,使其不能进一步传递;

        修改请求头和内容,用户可以提供自定义的请求;

修改响应头和内容,用户可以通过提供定制的响应版本实现;

与外部资源进行交互;

3.创建Filter步骤

        创建一个实现了javax.servlet.Filter的类;

        重写init()方法,读入初始化参数,申请所需资源;

        重写doFilter()完成过滤操作;

        使用FilterChain参数的doFilter()方法后传请求;

对响应的servlet程序注册过滤器,在部署文件中对过滤器进行配置。

.Listener

1.监听器-Listener

监听Web运用的上下文环境信息、Servlet请求信息、Servlet会话信息、并自动根据不同的情况,在后台调用相应的处理程序。

八、HTTP协议

1.超文本传输协议

        基于面向连接的C/S模式,主要包括但不限于:

        客户与服务器建立连接;

        客户向服务器提出请求;

服务器接收请求,并根据请求返回相应的文件作为应答;

客户与服务器关闭连接;

2.HTTP报文格式



九、POSTMAN的使用

1.Get请求

  2.Post请求

        提交表单、json、xml、二进制文件。

3.Collections

        将多个接口请求放在一起,集中管理。

十、JSON

1.简介

一种轻量级的数据交换格式,独立于编程语言、语法,易于阅读和编写,同时易于机器解析和生成,本质是一个字符串。


哈哈哈哈,还挺有成就感,哈哈哈哈哈

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容