在并发访问情况下,可能会出现脏读、不可重复读和幻读等读现象,为了应对这些问题,主流数据库都提供了锁机制,并引入了事务隔离级别的概念。
数据库的锁机制
Java多线程通信
正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了。
equal()和hashCode()比较
equal()反映的是对象或变量具体的值,即两个对象里面包含的值–可能是对象的引用,也可能是值类型的值。
而hashCode()是对象或变量通过哈希算法计算出的哈希值。
之所以有hashCode()方法,是因为在批量的对象比较中,hashCode要比equals来的快,很多集合都用到了hashCode,比如HashTable。
Object类及其常用方法
Object类是一个特殊的类,是所有类的父类,如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类。Object类中三个常用的方法: toString()
、equals()
、hashCode()
。
MySQL事务及其四个特性
事务概念引入
现实生活中,我们往往经常会进行转账操作,转账操作可以分为两部分来完成,转入和转出。只有这两部分都完成了才可以认为是转账成功。在数据库中,这个过程是使用两条语句来完成的,如果其中任意一条语句出现了异常没有执行,则会导致两个账号的金额不同步,造成错误。
为了防止上面可能出现的情况,MySQL引入了事务,所谓事务就是针对数据库的一组操作,它可以由一条或多条SQL语句组成,同一个事务的操作具备同步的特点,如果其中有一条语句不能执行的话,那么所有的语句都不会执行,也就是说,事务中的语句要么都执行,要么都不执行。
Java多线程
Java多线程实现方式主要有四种:
继承Thread类,重写run方法、实现Runnable接口,重写run方法,实现Run nable接口的实现类的实例对象作为Thread构造函数的target、实现Callable接口通过FutureTask包装器来创建Thread线程、使用ExecutorService、Callable、Future实现有返回结果的多线程(线程池)。
其中前两种方式线程执行完后都没有返回值,原因很简单,通过重写run方法,run方式的返回值是void,所以没有办法返回结果。后两种是带返回值,通过Callable接口,就要实现call方法,这个方法的返回值是Object,所以返回的结果可以放在Object对象中。
ArrayList和LinkedList的区别
ArrayList
和LinkedList
是常用的两种存储结构。
Java虚拟机的架构
重置MySQL密码
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
一般这个错误是由密码错误引起的,解决的方法自然是重置密码。
cookie和session的区别
对于许多人来说,都知道的是,cookie是存储在客户端的,可以用来放需要长期使用的内容,例如用户密码、用户账户等等,服务器是可以获取到cookie的内容的;而session则是存储在服务器端,通过唯一的session_id来区别用户,用于保存用户的登录状态和请求等,客户是不能获取到其内容的。这对于许多人来说都是比较基础的内容,也是表现形式上的区别,在这里我们深入的了解一下两者。