安卓学习记录03
一. 安卓部分
5月5号到7号
1. 学习了安卓中的数据库SQLite的增删改查德操作,有两种实现的方式,一种是调用execSQL(sql)对数据库进行操作,一种是用api提供的insert(),delete(),update(),query()的方法对数据库进行操作。
2. 学习了ContentProvider,ContentResolver的功能和使用,但是只是初步的了解,还需要再进一步的俄研究,现在对他们的了解是,ContentProvider负责把数据都暴露出来,ContentResolver负责把暴露出来的数据进行操作,同时还引入了安卓对Uri的操作提供的两个类:UriMatcher,ContentUris。
3. 总结:这部分内容很像JDBC的内容,都是对数据库的数据进行操作,安卓中也有事务这一概念,今天对事务的了解更进一步了,之前只是会使用事务,现在也明白了它为什么要使用事务?因为使用事务之后,我们对数据库的数据的一些操作如果正常的运行,使用事务之后,操作后的数据就会永久的保存在磁盘中,那如果运行中有异常,使用事务就会把数据回滚到没有进行任何操作之前的状态,从而不会导致数据的错误。此外,事务的使用还可以大大的减少运行的时间,比如同时向数据库中添加10000条记录,使用事务所耗用的时间大约是没使用事务的九分之一。
二. 算法部分
1. 用2*1的小矩形横着或者竖着摆放更大的矩形,问用n个2*1的小矩形无重叠的覆盖一个2*n的大矩形,总共有多少种方法
public classZifu {
4. publicstaticvoidmain(String[]args){
5. inti =RecCover(4);
6. System.out.println(i);
7.
8. }
9.
10. publicstaticintRecCover(inttarget){
11. if(target
12. return 0;
13. }elseif(target
14. return 1;
15. }elseif(target
16. return 2;
17. }else{
18. returnRecCover(target - 1) +RecCover(target
19. }
20. }
21. }
22. 注意:说明target为0时,如果第一次是2*1摆放的,那么摆放方法一共有target(n-1),如果第一次是1*2摆放的,那么摆放的方法是target(n-2)。
2.在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下的顺序排序.请完成一个函数,输入这样一个二维数组,和一个整数,判断数组中是否含有该整数.
public classZifu {
public static void main(String[] args) {
System.out.println(find(newint[][]{{1, 2, 3}, {4, 5,6}, {7, 8, 9}}, 0));
}
public static boolean find(int[][]array ,inttarget){
int rowCount = array.length;
int colCount = array[0].length;
int i, j;
for(i =rowCount - 1,j = 0;i>0 &&j<colCount;){
if(target ==array[i][j])
returntrue;
if(target <array[i][j]){
i
continue;
}
if(target >array[i][j]){
j++;
continue;
}
}
return false;
}
}
注意:java中的二维数组,arry.length的大小是二维数组的行数,arry[0].length的大小是二维数组的列数。