数据库的作用特点与MySQL下载安装 数据库定义语言 , 可以用来创建一些数据库对象(database,table,user,view...)* DML : 数据库操作语言,用来操作数据库表,实现数据库基本操作。3. 在mysql的根目录中,创建一个my.ini的文件,并完成如下配置。
事务的详解 这样就保证了即使遇到数据库突然宕机等情况,当用户再次启动数据库的时候,数据库还能够通过查询回滚日志来回滚之前未完成的事务。万一在这两个操作之间突然出现错误比如银行系统崩溃或者网络故障,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。实现的,所有事务进行的修改都会先记录到这个回滚日志中,然后再执行相关的操作。我们知道如果想要保证事务的原子性,就需要在异常发生时,对已经执行的操作进行。事务属性可以理解成事务的一些基本配置,描述了事务策略如何应用到方法上。
MYSQL:内联接、左外联接、右外联接、并发事务带来哪些问题 在典型的应用程序中,多个事务并发运行,经常会操作相同的数据来完成各自的任务(多个用户对。不可重复读的重点是修改比如多次读取一条记录发现其中某些列的值被修改,幻读的重点在于新增。交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。据,那么在第一个事务中修改了这个数据后,第二个事务也修改了这个数据。束时,另一个事务也访问该数据。那么,在第一个事务中的两次读数据之间,由于第二个事务。指在一个事务读取一个数据时,另外一个事务也访问了该数。还没有提交的数据,那么另外一个事务读到的这个数据是。
数据库:什么是数据库 是一个数据存储的仓库,可以实现数据的持久化存储。最早我们使用File + IO实现数据的持久化。数据库底层按照一定的存储模型对数据进行组合,存储和管理更看重数据读写的性能,独立性,安全性,扩展性简而言之,比普通的IO操作更简单,功能更强大。
JAVA基础:枚举的特点及使用 枚举是jdk1.5提供的一个特性枚举是一个特殊的类,这个类的对象的数量是有限的。在定义枚举类的同时就已经确定了类对象及类对象的数量。枚举使用enum关键字定义在枚举类中的第一行,就需要提供枚举类的对象(名字)多个对象名之间使用逗号隔开。最后一个对象可以使用分号,也可以不用。强烈建议使用分号结束每一个对象都相当于public static final A a;(编码规范:常量的名字都大写)枚举类中也可以有属性,方法和构造方法,其中属性和方法与普通类没有任何区别。
JAVA注解:注解的作用,注解的语法,注解的使用,注解与反射的综合应用 jdk5提供了一个新的应用 Annotation, 注解, 注释与之前所学的注释的区别之前的注释:是给程序员看 ,让程序员知道程序(代码)有什么用,实现了什么功能今天的注解:是给编辑器或jvm看的。在编译和运行时提供一些信息,按照信息完成后续的工作我们在开发中经常使用。类似于xml配置文件的作用。
JAVA基础:反射的作用特点,反射获得类信息,返回操作对象 程序可以访问、检测和修改它本身状态或行为的一种能力在程序运行时,可以通过反射了解类的信息 和 使用类了解类的哪些信息呢?类的基本信息(类名,修饰符,实现接口,继承的父类,所属的包,使用的注解)类的构造方法信息 (修饰符,方法名,参数列表,异常声明,注意:没有方法体)类的属性信息(修饰符,属性类型,属性名)类的普通方法信息(修饰符,返回类型,方法名,参数列表,异常声明,注意:没有方法体)如何实用类?创建对象调用对象的方法调用对象的属性为什么要通过反射了解类信息,要操作类对象?
JAVA基础:并发编程特性 多线程是一种程序开发或设计环境并发编程是一种程序设计概念或设计目标,在多线程开发环境中,同一系列的程序设计与机制的使用确保多线程开发环境是稳定的,快速的,性能优秀的。并发编程具有3个特征原子性可见性有序性在多线程开发时,如果程序设计不是特别的完美,有可能会出现原子性问题,可见性问题,有序性问题我们就会尽可能的解决上述问题,使得我们的程序具有原子性,可见性,有序性。这样的程序开发就成为并发编程。
JAVA基础:网络编程三要素,TCP编程实现,UDP编程实现 之前编写的程序都是单机程序,所有的业务功能实现及数据存储都在一个主机上完成,我们称为单机程序我们在生活中使用的绝大多数的程序(应用,软件,app),都可以基于网络,与其他主机的程序进行数据交互,又不同的主机程序完成不同的业务功能。
JAVA基础:FutureTasck 和 Callable、Timer定时任务 是JDK1.5之后,在JUC工具包提供了一个多线程工具类在多线程应用中,a线程可以通过FutureTask和Callable了解b线程是否执行完毕以及b线程执行的结果。可以实现两个线程之间的通信。自定义线程类,实现Callable接口,重写call方法,该方法执行的功能就是之前线程run方法的功能,无非多了一个返回值即为线程执行结果Callable类型的线程,不能直接被Thread执行,需要使用FutureTask进行包装未来可以通过FutureTask获得执行的状态及执行的结果。
JAVA基础:Lock不同的锁形式 假设, 有n个线程同时访问同步资源,只有1个线程可以获得锁,其他n-1个线程进入同步队列,等待。当第一个线程释放锁资源后, 同步队列中那n-1个线程,会按顺序依次获得锁 (倒序 或 顺序)排它锁又称为 互斥锁,也称为 独享锁,当一个线程获得该锁, 其他线程无法获得锁,需要等待。当线程1进入同步代码段时,会记录线程1的信息,表示线程1获得了锁,同时锁状态0 - 1。如果之前记录的线程信息和当前进入的线程信息相同,说明重入,允许,同时状态1 - 2。这个新线程,直接进入同步队列,等待前面的线程释放锁。
JAVA基础: synchronized 和 lock的区别、synchronized锁机制与升级 synchronized是一个关键字, lock是一个接口,实际使用的是实现类synchronized通过触发的是系统级别的锁机制, lock是API级别的锁机制synchronized自动获得锁,自动释放锁。lock需要通过方法获得锁并释放锁synchronized可以修饰代码段和方法,lock只能修饰代码中synchronized无法判断是否获得锁,lock可以通过tryLock判断synchronized一旦阻塞无法中断,lock可以被中断。
JAVA基础:线程生命周期、中断线程的方法 在同步方法或同步代码段中,获得的是哪个对象的对象锁,才可以调用哪个对象的wait方法。插队,当前线程调用指定线程对象的join方法,将指定线程加入当前线程的执行序列。指定睡眠时间,时间过后,自动唤醒,唤醒后,线程进入就绪状态,准备争抢CPU。一个称为条件队列,当一个线程已经获得了对象锁,因为某些业务条件不支持,当线程1234按顺序争抢锁时,线程1获得锁, 线程234进入同步队列。一般多因为逻辑数据未达标,需要临时让出对象锁,让其他线程先执行。表示让出当前对象的对象锁,获得当前对象锁的当前线程处于等待状态。
JDk新日期类的使用 LocalDate , LocalTime , LocalDateTime 表示日期时间。//LocalDateTime默认的日期格式 yyyy-MM-ddTHH:mm:ss。//获得当前系统时间的日期对象。//获得指定时间的日期对象。* Instant, ZoneDateTime (新老日期转化)//获得不同的日期项。//间隔时间较长, 以年月日为间隔单位。//间隔时间较短,以时分秒为单位。## 1.5 新老日期类转化。## 1.1 新日期的创建。**一个日期加减数字****两个日期间隔**
JAVA基础:线程创建,启动,应用,线程同步,悲观锁乐观锁 程序: 一组静态的代码进程: 一个处于运行状态的程序。进程 = 执行内存 + 线程每当启动一个进程时,至少会有一个线程,称为:主线程线程:程序运行的过程中,真正用来执行程序功能的那个单元每当一个进程开启,都会产生一个主线程可以根据设计需求,由主线程产生更多的子线程,共同完成程序的执行过程。多线程的目的就是为了提高执行效率。
JAVA基础:忽略序列化,Properties集合类的使用 在对象序列化(写对象,输出对象)的过程中,有些对象属性不参与序列化有2种方式可以实现属性的忽略序列化static属性,不会参与序列化使用transient关键字修饰的属性,不会参与序列化。对象独享。
JAVA基础:数据流,数组流,对象流,序列化和反序列化 是过程流,是字节流,包括 DataInputStream , DataOutputStream主要作用是读写基本类型的数据使用普通的字节流输出97,最终输出的是1个字节使用Data数据流输出97,最终输出的是4个字节提供了一组读写不同基本数据类型的方法。
JAVA基础:流的作用与分类,文件字节流,字符流,缓冲流的使用及特点 IO流就是一组流动的数据,可以实现数据从一个地方移动到另一个地方IO 表示的InputStream 和 OutputStream , 称为 输入,输出流。可以实现文件的读写。IO随着关注的特点不同,有不同的分类按照数据流向分类,分为输入流 和 输出流输入和输出都是以Java程序为基准按照传递的数据类型分类,分为字节流 和 字符流字符流可以很好的解决中文数据传递的问题按照流的功能分类,分为 节点流 和 过程流节点流:可以直接与数据源对接。
JAVA基础:HashMap底层数组容量控制,TreeMap底层存取机制,位运算符,原码反码补码 List集合常用的实现类有3个 , ArrayList , LinkedList , Vector类似于我们之前的ArrayBox底层使用数组存储元素, 插入删除的效率低,检索的效率高当底层数组存储容量不足时,会进行扩容,每次扩容都是原数组的1.5倍使用无参构造器创建ArrayList集合时,首先提供的是一个默认0长度的数组(防止内存资源浪费)第一次add元素的时候,会创建一个10个长度的数组我们在开发中已经不怎么使用了Vector是ArrayList早期版本1.0。