20172305 2017-2018-2 《程序设计与数据结构》第十一周学习总结
教材学习内容总结
本周内容主要为Java和Android开发学习指南的23章--26章的内容:
第23章
1.Java是开发Android应用程序的默认语言,但Android应用程序不一样于Java应用程序在Java虚拟机上运行。php
2.Android4.4是Dalvik和ART的转折点和分水岭。html
- Dalvik是Google公司本身设计用于Android平台的虚拟机。Dalvik虚拟机是Google等厂商合做开发的Android移动设备平台的核心组成部分之一。它能够支持已转换为 .dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik 通过优化,容许在有限的内存中同时运行多个虚拟机的实例,而且 每个Dalvik 应用做为一个独立的Linux 进程执行。独立的进程能够防止在虚拟机崩溃的时候全部程序都被关闭。
- 在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。这个过程叫作预编译(AOT,Ahead-Of-Time)。这样的话,应用的启动(首次)和执行都会变得更加快速。
3.在Android5.0以前,apk文件运行于Dalvik之上。在Android5.0及其之后的版本中,在安装应用程序的时候,apk中的dex文件被转为机器码。java
4.Android是向后兼容的,针对较早的版本编写的应用程序,老是可以在新的版本上运行。node
5.每一个应用程序都必须有一个清单,用于描述该应用程序。清单以XML文件的形式给出,并包含下列几项:mysql
1.运行该应用程序所需的最小API Levellinux
2.应用程序的名称android
3.当用户在其手机或平板电脑的主屏幕上触碰该程序的图标时,将会打开的第一个活动(窗口)c++
4.是否容许从其余的应用程序调用你的应用程序组件git
5.对于在目标设备上安装的应用程序,用户必须保证一组什么样的许可。若是用户不能保证全部的必须的许可,将不会安装该应用程序。web
第24章
- 1.Project窗口中有两个主要的节点,app和Gradle Scripts
2.app节点包含了应用程序中全部的组件
mainfests.包含了一个AndroidMainfest.xml文件,它描述了应用程序
- java.包含了全部的java应用程序和测试类
res.包含了资源文件,其中还包括了drawable(图像),layout(布局文件),menu(菜单文件),mipmap(app图标),values(字符串和其余值)
- 3.Gradle Scripts节点包含了Gradle构建脚本,供Android Studio构建你的项目
- 4.在Android Studio运行一个Android应用程序的时候,一个apk文件将会自动构建和签名。这个文件将会命名为app-debug.apk,而且存储在项目目录下的app/build/outputs/apk目录中。
- 5.Android Studio中所看不到的,是一个名为R的通用的Java类,能够在项目的app/build/generated/source目录下找到它。
第25章
活动的生命周期
7个方法:
1.onCreate()每一个活动都会有的方法,在活动第一次被建立的时候调用
2.OnStart这个活动在活动由不可见变为可见的时候调用
3.OnResume这个方法在活动准备好和用户进行交互的时候调用,此时的活动必定位于返回栈的栈顶,而且处于运行状态。
4.. onPause()这个方法在系统准备去启动或者恢复另外一个活动的时候调用。 咱们一般会在这个方法中将一些消耗 CPU 的资源释放掉,以及保存一些关键数据,但这个方法的执行速度必定要快,否则会影响到新的栈顶活动的使用。
5.onStop()这个方法在活动彻底不可见的时候调用。它和 onPause()方法的主要区别在于,若是启动的新活动是一个对话框式的活动,那么 onPause()方法会获得执行,而 onStop()方法并不会执行。
6.onDestroy()这个方法在活动被销毁以前调用,以后活动的状态将变为销毁状态。
7.onRestart()这个方法在活动由中止状态变为运行状态以前调用,也就是活动被从新启动了。
三个阶段:
1.开始Activity:在这个阶段依次执行3个生命周期的方法,分别是:onCreate、onStart和onResume方法
2.Activity从新得到焦点:若是Activity从新得到焦点,会依次执行3个方法,onRestart、onStart和onResume
3.关闭Activity:当Activity被关闭时系统会依次执行3个方法,onPause、onStop和onDestory。
第26章
- 1.微件,微件(Widget)技术,被用于行业网站建设,是对建站和维护的革命性变化。其拼装、拽拖、所见即所得的操做方式,大大下降了行业网站建设的成本和门槛。
- 2.Toast是Android中用来显示显示信息的一种机制,Toast是没有焦点的,并且Toast显示的时间有限,过必定的时间就会自动消失。并且Toast主要用于向用户显示提示消息。
- 3.通知通知是出如今状态栏里的一条消息,通知是持久的,而且保持显示,直到关闭通知或是关闭设备。
教材学习中的问题和解决过程
- 问题1:SQL语言
- 问题1解决方案:SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。SQL语言是一种交互式查询语言,容许用户直接查询存储数据,但它不是完整的程序语言,如它没有DO或FOR 相似的循环语句,但它能够嵌入到另外一种语言中,也能够借用VB、C、JAVA等语言,经过调用级接口(CALL LEVEL INTERFACE)直接发送到数据库管理系统。
- 问题2:Android和IOS的区别
- 问题2的解决方案:IOS和安卓最大的区别在于自己所应用的设备不一样。IOS系统主要是应用在iPhone、IPad、itouch设备上的操做系统,安卓系统主要是应用在安卓智能手机上的操做系统。Android平台能够作的事情远远比iOS多, 能够作电话管理,地址簿,短信管理,能够本身跑后台service。 替换掉系统的组件也能够,还能够跑其余系统的Runtime。而IOS是被Apple严格控制的系统,IOS的每款软件都是通过苹果公司的检测、优化,安全性高。
代码调试中的问题和解决过程
- 问题1:课堂实践对数据库的导入、导出和查询
问题1解决方案:两种不一样使用jdbc方式连接数据库的,不是很清楚"jdbc:mysql://localhost/" +"test?user=root&password="什么意思,也就照着作了。
- getConnection(String url, String user, String password)试图创建到给定数据库 URL 的链接。
Connection conn = null;
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/" +"test?user=root&password=");
Connection conn = DriverManager.getConnection(url, user, passwd);
Statement statement = conn.createStatement()
对于实践的操做,也处于尚未读懂代码就开始操做了,看了老师的代码,感受这三行有关,因此就把每步的SQL语句写了进去,用了一堆的Alt+Enter产生了try-catch语句,而后运行就出来了。
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery("SELECT * FROM Student");
DatabaseModification.showResults("Student", rset);
Connection.createStatement() 建立一个 Statement 对象来将 SQL 语句发送到数据库。
其中,executeQuery()方法会把数据库响应的查询结果存放在ResultSet类对象中供咱们使用,而后就在Java环境中实现了调用数据库中的内容了。
- 问题2:安装Android Studio中Hello World在物理机上运行
问题2解决方案:对于这个问题,OPPOr9就能够应用,而个人OPPOr11就不行,找过解决方案,可是毫无做用,好在能够在虚拟手机上使用。不清楚为何,并且我在别的Android Studio中也是过,也是一样的效果。一直在闪退。
无相关代码
上周考试错题总结
- 错题1:The following method should return true if the int parameter is even and either positive or 0, and false otherwise. Which set of code should you use to replace ... so that the method works appropriately?(若是int参数是偶数或者是正数或0,那么下面的方法应该返回true,不然返回false。您应该使用哪一组代码来替换……那么这个方法是否合适呢?)
public boolean question3(int x) { ... }
- A.if (x = = 0) return true;else if (x < 0) return false;else return question3(x - 1);
- B.if (x = = 0) return false;else if (x < 0) return true;else return question3(x - 1);
- C.if (x = = 0) return true;else if (x < 0) return false;else return question3(x - 2);
- D.if (x = = 0) return false;else if (x < 0) return true;else return question3(x - 2);
- E.return(x = = 0);
- 错误解析:该方法将递归调用从x减去2,直到x == 0或x < 0。若是x = 0,那么x - 2 * i == 0(对于某个int值i)或x == 2 * i,因此x必须是偶数。不然,递归会在x < 0时结束,也就是说原来的x是奇数或小于0。
- 错题2:Which of the following is considered an Abstract Data Type?(下列哪种被认为是抽象数据类型?)
- A.array
- B.reference variable
- C.any of the primitive types (e.g., int, double, char)
- D.vector
- E.all of the above
- 错误解析:抽象数据类型包括数据结构的操做和访问数据结构的方法。在这些列表中,只有向量结合了这两个。数组是一个数据结构,但没有方法(例如插入方法或搜索方法),而引用变量和基本类型是数据,而不是数据结构。
- 错题3:Abstract Data Types have which of the following object-oriented features?(抽象数据类型具备如下哪一个面向对象特性?)
- A.information hiding
- B.inheritance
- C.polymorphism
- D.message passing
- E.all of the above
- 错误解析:全部这些答案都是面向对象的特性。一个抽象的数据类型封装了一个数据结构和处理数据结构的方法,这样信息隐藏就会被保存下来。所以,全部ADT都利用信息隐藏,使得数据结构不能直接从ADT外部进行操做,可是其余面向对象的特性是不须要的。
- 错题4:One operation that we might want to implement on a Stack and a Queue is full, which determines if the data structure has room for another item to be added. (咱们可能但愿在堆栈和队列上实现的一个操做是full,这决定了数据结构是否有空间来添加另外一个项目。) This operation would be useful
- A.only if the Queue or Stack is implemented using an array
- B.only if the Queue or Stack is implemented using a linked list
- C.only for a Queue
- D.only for a Stack
- E.none of the above, a full operation is not useful at all
- 错误解析:因为数组是一个静态大小的对象,若是它被填充,那么任何添加类型的操做,不管是列表插入、队列队列仍是堆栈推送,都应该被阻止。这能够经过第一次检查肯定结构是否完整来肯定。若是数据结构是使用链表实现的,那么就没有必要这样作,由于(咱们假设)老是有可用的动态内存来添加新元素。
- 错题5:In a linked list in Java(在Java中的链表中)
- A.the link is an object
- B.the link is a node
- C.the link is a reference
- D.the link is an int
- E.the link is a class
- 错误解析:在链表中,连接是对下一个节点的引用。一个是经过检查引用的内容来“取消引用”连接。节点对象。对象是类的实例。节点的数据部分极可能是int类型的,也多是其余类型的数据。
- 错题6:An Abstract Data Type is a data structure, that is, it is the listing of the instance data and the visibility modifiers for those instance data.(抽象数据类型是一种数据结构,即实例数据的列表和这些实例数据的可见性修饰符。)
- 错误解析:抽象数据类型包括数据结构,但也包括用于访问和操做数据结构的方法。
- 错题7:The push and enqueue operations are essentially the same operations, push is used for Stacks and enqueue is used for Queues.(push和enqueue操做本质上是相同的操做,push用于栈,enqueue用于队列)
- 错误解析:虽然这两个操做都是各自抽象数据类型的 "add"或"insert" 操做,但它们的不一样之处在于push老是在堆栈的顶部(或前部)添加,而enqueue老是在队列的后部添加。
- 错题8:An array is a List Abstract Data Type.(数组是一个列表抽象数据类型。)
- 错误解析:这个数组是一个数据结构,能够用来存储一个值列表,可是数组没有已经实现的操做来执行列表操做,好比添加到末尾,或者删除一个给定的值。
- 错题9:A linked list that contains 6 Nodes will have 6 reference pointers.(一个包含6个节点的链表将有6个引用指针。)
- 错误解析:为了访问链表,至少须要有第7个引用指针,一个引用链表中的第一个项的引用指针。
- 错题10:Trees and graphs, because they are dynamic in nature, cannot be implemented using Java arrays.(因为树和图形本质上是动态的,所以不能使用Java数组实现它们。)
- 错误解析:虽然是事实,任何给定的有一个固定大小的数组,所以最大电流的大小(节点数)的树或图仅限于其底层数组的大小,能够分配一个更大的数组,将原始数组中的元素复制到新数组,并继续以这种方式实现扩张。这种技术之因此成功,是由于Java数组是对象,访问全部对象的机制是经过引用实现的。在大多数其余语言(如C、c++、c#、Pascal等)中,数组都不是对象,所以这种技术将会失败。
- 错题11:The only difference between a stack and a queue is that stacks operate using FIFO and queues operate using LIFO.(堆栈和队列之间的惟一区别是堆栈使用FIFO操做,队列使用LIFO操做。)
- 错误解析:这就是反了。栈使用first-in-last-out (LIFO)操做,队列使用first-in-first- first-out (FIFO)操做。
- 错题12:一个具备执行权限的目录能够被打开并查看内部文件。
- 错误解析:一个目录同时具备读权限和执行权限才能够打开并查看内部文件。
- 错题13:Linux Bash中,可使用chomd 777 pdds命令修改文件pdds的权限,并使得其拥有者、拥有者所在的组和其余用户都拥有所有权限。
- 错误解析:chmod 777 pdds,不是 chomd 777 pdds
- 错题14:Linux Bash中,使用apt-get search tree命令来查找是否系统装有软件tree。
- 错误解析:apt-cache search tree
- 错题15:Linux Bash中,使用grep查找当前src目录下全部包含main函数的文件,并要求显示出现行号的命令是grep –n main /src
- 错误解析:grep –rn main /src
- 错题16:在Ubuntu中,使用vim编辑器时,想要移动光标,除方向键以外,还能够依次使用hjkl键进行上下左右的移动。
- 错误解析:上下左右顺序依次是kjhl
考试内容正好都是本身会的内容,才会有26分的成绩,可是脱离理论的考试,实际的代码操做比起来估计本身就不会有这样的分数了。此外,我把有关第13章&Linux命令的考试题也加入了,因为本身有点着急,错误量比较大,关于Linux命令的内容还不是很会,因此就是一个劲的在网上找解析,暴露出我关于Linux命令内容的不足,须要好好复习了。
结对与互评
点评(王禹涵)
- 博客中值得学习的或问题:
- 代码中值得学习的或问题:
- 基于评分标准,我给本博客打分:11分。
- 得分状况以下: - 正确使用Markdown语法(加1分)
- 模板中的要素齐全(加1分)
- 教材学习中的问题和解决过程, 四个问题加4分
- 代码调试中的问题和解决过程, 一个问题加1分
- 感想,体会不假大空的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 代码规范加1分
- 有动手写新代码的加1分
点评(方艺雯)
- 博客中值得学习的或问题:
- 代码中值得学习的或问题:
- 基于评分标准,我给本博客打分:11分。
- 得分状况以下:
- 正确使用Markdown语法(加1分)
- 模板中的要素齐全(加1分)
- 教材学习中的问题和解决过程, 二个问题加2分
- 代码调试中的问题和解决过程, 三个问题加3分
- 感想,体会不假大空的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 代码规范加1分
- 有动手写新代码的加1分
互评对象
感悟
终于把那本厚厚的java书给学完了,本周不但要弄那个XAMPP的数据库,一脸懵逼的弄彻底过程,对于操做数据库的部分,彻底借鉴了老师的代码,仅仅理解了重要的那几行(就是按要求调数据库的内容而已),不是很明白,好在之后会学数据库的内容,也就没有太大下功夫。此外还要下载Android Studio软件,下载的过程仍是相对顺利,只不过费了我好几个G的流量,莫名的心疼。在下载的过程当中,要求下了不少的内容,本身也不知道是什么,也就按照要求进行。最后,产生了本身的新一代手机,能够打电话(永远打不通),能够听音乐,还能够发QQ消息,就是没有实体的物质感受,并且运行出了Hello World的语句,可是在物理手机上就莫名的闪推,这是在暗示我要换手机么?(正合我意。。。),
学习进度条
目标 |
5000行 |
30篇 |
400小时 |
|
第一周 |
136/136 |
1/1 |
15/15 |
|
第二周 |
570/706 |
1/2 |
20/35 |
|
第三周 |
613/1319 |
1/3 |
23/58 |
|
第四周 |
1249/2568 |
1/5 |
30/88 |
|
第五周 |
904/3472 |
1/6 |
30/118 |
|
第六周 |
904/3472 |
1/7 |
30/118 |
|
第七周 |
904/3472 |
1/7 |
30/178 |
|
第八周 |
904/3472 |
2/9 |
45/223 |
|
第九周 |
253/6016 |
2/10 |
55/278 |
|
第十周 |
958/6974 |
1/11 |
55/333 |
|
第十一周 |
0/6974 |
4/15 |
50/383 |
|
参考资料