一 JDBC简介html
JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操做,开发人员无须接触底层数据库驱动程序的差别性java
JDBC标准分为两个部分:JDBC应用程序开发者接口、JDBC驱动程序开发者接口git
厂商在操做JDBC驱动程序时,依照操做方式能够将驱动程序分红四类正则表达式
- Tpye 1:JDBC-ODBC Bridge Driver 驱动程序将JDBC调用转换为对ODBC驱动程序的调用,由ODBC驱动程序操做数据库 - Tpye 2:Native API Driver 驱动程序会以原生方式调用数据库提供的原生连接库 - Tpye 3:JDBC-Net Driver 驱动程序会将JDBC方法调用转换成特定的网络协议调用 - Tpye 4:Native Protocol Driver 驱动程序将JDBC调用转换成数据库特定的网络协议与数据库进行沟通操做
链接数据库
sql
Statement、ResultSet: Conection是数据库链接的表明对象,接下来必须取得java.sql.Statement操做对象 调用clearstatement清除设置的参数,以后就能再次使用这个PreparedStatement实例数据库
二 JDBC进阶数组
使用DataSource取得联机:messageDAO依赖于 javax.sql.DataSource接口,能够经过定义的getConnection()方法取得Connection缓存
使用ResultSet卷动、更新数据:ResultSet不只可使用previous() first()、last()等方法先后移动数据,还能够调用updateXXX()、updateRow()网络
批次更新:仅仅用在更新操做,且批次更新的限制是SQL不能是SELECTide
交易:四个基本要求(ACID) 原子性(Atomicity) 一致性(Consisitency) 隔离行为(Isolathion) 持续性(Durability)
三.反射与类加载器
一个命令对应一个进程
当咱们启动一个Java程序,即启动一个main方法时,都将启动一个Java虚拟机进程,无论这个进程有多么复杂。而不一样的JVM进程之间是不会相互影响的。这也就是为何说,Java程序只有一个入口——main方法,让虚拟机调用。而两个mian方法,对应的是2个JVM进程,启动的是两个不一样的类加载器,操做的其实是不一样的类。故而不会互相影响。
类加载
当咱们使用一个类,若是这个类还未加载到内存中,系统会经过加载、链接、初始化对类进行初始化。
一、类加载:指的是将类的class文件读入JVM,并为之建立一个Class对象。
二、类链接:指的是把类的二进制数据合并到JRE中,这又分为3个阶段:
a)、校验:检查载入Class文件数据的正确性。
b)、准备:给类的静态变量分配存储空间,并进行默认初始化。
c)、解析:将类的二进制数据中的符号引用替换成直接引用。
三、初始化:对类的静态变量、静态初始化块进行初始化。
(注意:一个final类型的静态属性,若是在编译时已经获得了属性值,那么调用该属性时,不会致使该类初始化,由于这个至关于使用常量;
使用ClassLoader()方法,只是加载该类,并未初始化。)
3、类加载器。
类加载器就是负责将.class文件加载到内存中,并为之生成对应的java.lang.Class对象,它负责加载全部的类,而一旦一个类被加载入JVM中,就不会被再次载入了。
在Java中,一个类用其全限定类名(即包名+类名)做为标识。
而在JVM中,一个类用其全限定类名和其类加载器做为标识。
JVM运行时会产生3个ClassLoader,分别为:BootstrapClassLoader(根类加载器)、ExtClassLoader(扩展类加载器)和AppClassLoader(系统类加载器)。UML结构以下:
4、类加载机制。
JVM的类加载机制主要有以下三种机制:
一、全盘负责:当一个类加载器负责加载某个Class的时候,该Class所依赖的和引用的其余Class也将由该类加载器负责载入。
二、父类委托:先委托父加载器试图加载该类,只有在父加载器没法加载该类时才从本身的类路径中查找并装载该类。
三、缓存机制:缓存机制保证全部被家加载过的类都会被缓存,当程序中须要使用某个Class时,类加载器先从缓存中搜寻。缓存中搜寻不到,才会从新读取该类对应的二进制数据,并建立对应的Class对象。
(注意:类加载器之间的父子关系,并非类继承上的父子关系,而是类加载器实例之间的关系)
重写ClassLoader的loadClass打破双亲委托,findClass遵循双亲委托,defineClass方法将字节码转换成Class对象,并校验有效性,该方法是final方法。
补充:URLClassLoader是系统类加载器和扩展类加载器的父类(除根类加载器以外的全部加载器都是ClassLoader子类的实例,根加载器是JVM自身实现的),它既能够从本地文件获取二进制文件加载类,也能够从远程主机获取二进制文件加载类
5、反射
在运行状态中,对于任意一个类,都可以知道这个类的全部属性和方法;对于任意一个对象,都可以调用它的任意一个方法和属性。
问题:区分不了幻读与没法重复的读取,隔离层级“可重复读取”、“可循序”
解决过程:结合教材的图解,“可重复读取”针对两次交易读取数据不一致,同一交易读取数据必须相同的状况,“可循序”针对同一交易期间读取到的数据不一致,在数据不一致时,交易能够照顺序逐一进行
没有发现代码调试上的问题。
https://git.oschina.net/bestiisjava2017/nhx20155309-Java
结对对象:
20155220 吴思其http://www.cnblogs.com/20155220wsq/p/6718224.html
互评对象:
20155314 刘子健http://www.cnblogs.com/crazymosquito/p/6711316.html#3670478
20155336 虎光元http://www.cnblogs.com/hxl681207/p/6709628.html
20155223 苏黄永郦http://www.cnblogs.com/battlefieldheros/p/6711388.html
20155230 张瑞琦http://www.cnblogs.com/J1n233/p/6719877.html
1.Linux中使用rm删除文件时,若是想忽略提示,直接删除文件,可使用()选项强制删除。
A .
-r
B .
-R
C .
-c
D .
-f
答案是d
2.Linux中使用cp命令拷贝目录时要加上()选项。
A .
-r
B .
-directory
C .
-all
D .
-R
答案是ad
3.Linux中获取当前路径的绝对路径的命令是()?
A .
cd
B .
passwd
C .
tree
D .
pwd
答案是d
4.NIO2中,可使用()中的方法取出文件系统根目录信息。
A .
Path
B .
DirectoryStream
C .
FileStore
D .
FileSystem
答案是d
5.Java NIO中与InputStream/OutputStream相对应的接口是(),用来链接数据节点。
A .
Channel
B .
Buffer
C .
Path
D .
FileStore
答案是a
6.正则表达式 zo* 匹配()
A .
z
B .
zo
C .
zoo
D .
zooooooooooooooooooooooooooo
答案是abcd
7.正则表达式 r.t 可以匹配字符串()
A .
rat
B .
rt
C .
rut
D .
root
答案是ac
8.正则表达式“r.t”匹配字符串“rat”的Java 代码表达式是()
A .
"rat".matcher("r.t")
B .
"r.t".matcher("rat")
C .
Pattern.compile("rat").matcher("r.t")
D .
Pattern.compile("r.t").matcher("rat")
答案是d
9.Suppose we have an array of String objects identified by the variable names. Which of the following for loops will not correctly process each element in the array.(假如咱们有一个名为names的String对象数组,下面哪一个for循环不能遍历数组中的每个元素?)
A .
for(int i = 0; i < names.length; i++)
B .
for(String name : names)
C .
for(int i = 0; i < names.length(); i++)
D .
none of these will correctly process each element(以上都不能遍历)
E .
all of these will correctly process each element(以上都能遍历)
答案是c
10.能够经过Logger logger = new Logger(); 来产生Logger对象。
A .
True
B .
False
答案是b
不知不觉课本上的内容已经接近了尾声。可是感受本身对于java课程的了解还只是杯水车薪。在java路上还有很长一段路要走。正如同每周的小测验就算是本身感受掌握得很好,但是结果仍是不尽如人意。因此书本身准备再翻阅一遍,但愿以后本身对java的理解能更深。
代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
目标 5000行 30篇 400小时
第一周 50/100 1/1 24/24
第二周 250/300 1/2 30/54
第三周 552/852 1/3 16/60
第四周 717/1569 1/4 10/70
第五周 495/2064 1/5 6/76
第六周 754/2818 1/6 7/82
第七周 679/3493 2/8 5/87
第八周 302/3795 3/8 6/90
预计学习时间6小时 实际学习时间3小时