赞
踩
Java中的基本数据类型:
String不是基本数据类型,它本身是个对象,是final修饰的Java类,是引用类型
Java中变量分为基本数据类型和引用数据类型:
引用数据类型:类class 接口 interface 和数组
引用双括号括起来的都是String对象;
双括号括起来的字符串,是不可变的,也就是说"abc"自出生到最终死亡,不可变,不能变成"abcd",也不能变成"ab";
双括号括起来的字符串,例如"abc""def"都是直接存储在 “方法区”的“字符串常量池”当中。
对字符串进行修改的时候,需要使用StringBuffer(线程安全)和StringBuilder类。 和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次的修改,并且不产生新的未使用的对象。但StringBuilder有速度优势,一般多数情况使用StringBuilder类。
反射就是将Java类中的各种成分映射成一个个的Java对象,并且可以进行操作。
生成class对象的三种方式
Class c = People.class;
Class.forName("People");
People p = new People();
Class c = p.getClass();
迭代器是行为型设计模式
提供了一种方法来遍历一个聚合的容器(集合)中的各个元素,而不用暴露其内部的表示。
对于容器的访问而不需要关注容器内部的实现细节,可以使用迭代器,需要具备功能
线程安全类如何实现:Java中大部分类都是不安全的,除了两种:
不可变类,不可变类就是指,在这个类中,一旦它的对象被创建出来,在其整个生命周期中,它的成员变量就不能被修改;
类中带有synchronized关键字的类,这个关键字就是为了使这个类变成线程安全的。
SQL标准定义了四种隔离级别:
1、读取未提交 Read-Uncommited
最低隔离级别,允许读取尚未提交的数据变更,可能导致脏读、幻读和重复读。
2、读取已提交:Read-Committed(RC)
允许读取并发事务中已经提交的数据,可以阻止脏读,但是幻读和不可重复读仍然可能发生。
3、可重复读:Repeatable-READ(RR)
对同一个字段的多次读取结果都是一致的,除非数据被事务自身修改。可以组织脏读和不可重复读,但幻读仍可能发生。
4、串行化:Serializable
最高的隔离级别,完全服从ACID的隔离级别,所有的事务依次逐个执行,这样事务之间就完全不可能出现干扰,即串行化可以防止脏读、不可重复读和幻读。
通过select @@tx_isolation;可以查看隔离级别:
mysql> select @@tx_isolation;
+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
+-----------------+
默认不可重复读
隔离级别如何实现?
读取已提交和可重复读采用的是排他锁(行锁);
读取已提交隔离级别是在读(写)之前加锁,在读(写)之后解锁,而不是等事务结束解锁,存在不可重复读的问题;
可重复读隔离级别整个事务都处于加锁状态,只有事务结束才解锁,但还存在幻读,因为使用的是行锁,可以增加行等一些行为;
串行化使用的是表锁,锁定的是整张表才能解决幻读问题。
脏数据(Dirty READ):即A事务读取到B事务尚未提交的更改数据
当一个事务正在访问数据并且对数据进行修改,而这个操作还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了该数据,因为数据还没有提交到数据库中,那么另一个事务读到的数据就是脏数据,依据脏数据所有操作是不正确的。
不可重复读(UnrepeatableRead):即一个事务内两次读取的同一个数据是不一样的
A事务内多次读取同一个数据,在这个事务还没有结束时,B事务也访问该数据,A事务在两次读事务之间,B事务修改了该数据,A事务再次读取数据可能和第一次读取的不太一样。一个事务内两次读取的数据是不一样的,因此称为不可重复读。
幻读(phantom Read):即A事务读取到B事务提交的新增数据
A事务读取几行数据,接着B事务插入了一些数据,在随后的查询中,A事务会发现一些原来不存在的记录,好像发生了幻觉一样,所以称之为幻读。
不可重复读和幻读区别 : 不可重复的一般针对的是行级别的数据的更改,重点是修改了数据;幻读一般针对表级别的新增/删除数据,在统计事务中,两次读取的数据统计不一样,重点在于新增或者删除。
一个事务是由一条或者多条对数据库操作的SQL语句组成的一个不可分割的单元,只有当事务中的所有的操作都正常执行完了,整个事务才会被提交到数据库,如果有部分事务处理失败,那么事务就要回滚到最初的状态,因此,事务要么全部执行成功,要么全部失败。
开启事务: begin 或者 start transaction
事务回滚: rollback
如果事务执行的过程中有操作执行失败就会回滚到最初始的状态。
线性表是逻辑结构,顺序表和链表是存储结构
线性表包括顺序存储和链式存储;
顺序存储 ----- 顺序表
链式存储 -----单链表、双链表、循环链表
顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构,线性表采用顺序存储的方式就称之为顺序表。顺序表是将表中的节点依次存放在计算机内存中一组地址连续的存储单元中。
插入操作: 移动元素时,要从后往前操作,不能从前往后操作,不然元素会被覆盖的。
删除元素: 移动元素时,要从前往后操作。
顺序表的特点:
顺序表存储数据的效率分析:
使用引用将存储数据元素的那些单元依次串联在一起,这种方法避免了数组中用连续的内存存储单元进行数据存储的特点,因而在插入或者删除时不再需要移动元素来腾出空间或者填补空缺,需要作出的改变就是在每一个单元中设置引用用来表示元素之间的逻辑关系,因而每个单元有两个作用域,一个是用于数据元素的存储,一个是用于指向下一个单元的引用,这种具有一个数据域和多个引用域的存储单元称为节点。
指执行算法所需要的计算工作量;
指执行算法所需要的内存空间;
HTTP状态码的英文HTTP Status Code。状态码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
1XX:指示信息 – 表示请求已接收,继续处理;
2XX: 成功 – 表示请求已被成功接收,理解
3XX:重定向 – 要完成请求必须进行更进一步的操作
4XX:客户端错误 – 请求有语法错误或请求无法实现
5XX:服务器端错误 – 服务器未能实现合法的请求
常见状态码状态描述:
200 OK:客户端请求成功
400 Bad Request :客户端请求有语法错误,不能被服务器解析
401 Unauthorized :请求未经授权,这个状态码必须和WWW-Authenticate 报头域一起使用
403 Forbidden : 服务器收到请求,但是拒绝服务
404 Not Found : 请求资源不存在,例如:输入错误的URL
500 Internal Server Error : 服务器发生不可预期的错误
503 Server Unavaliable : 服务器当前不能处理客户端的请求,一段时间后可能恢复
传输层协议:TCP协议 、 UDP协议 、 SCTP协议
成员变量 = 实例变量+静态变量
被final关键字修饰的方法是最终方法,子类可以继承使用,但不能修改;
被final关键字修饰的变量是常量,一旦赋值,不可被修改,而且必须在初始化对象的时候赋值;
成员变量: final修饰的成员变量必须在声名的时候初始化或者在构造器中初始化,否则就会报编译错误;
局部变量: final修饰的局部变量必须声明时赋值,如果不赋值,虽然声明是不会出错,但调用时会编译出错;
方法参数: 如果final关键字修饰方法参数时,方法中是不能改变该参数的;
final关键字大多修饰基本数据类型(实际变量值不变),如果修饰引用数据类型决定的是变量不再指向另一个对象(引用地址不变),对象的内容是可以更改的;
final关键字修饰变量,(常量)要求全部的字母大写
存储位置不同:
静态成员变量:位于“方法区”,无论多少个对象该变量在内存中都只有一份;
非静态成员变量:位于“堆空间”,每new一个对象创建一份,因此有多少个对象该变量在内存就有多少份;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。