20172323 2017-2018-2《程序设计与数据结构》第十一周学习总结

教材学习内容总结

23章-Android简介html

  • Android操做系统是一种多用户的Linux系统,一个应用程序和其余App隔离开来运行的。
  • Java是开发Android应用程序的默认语言。
  • Android4.4是Dalvik和ART的转折点和分水岭
  • Android是向后兼容的
  • 4种Android应用程序组件
名称 介绍
活动(Activity) 包含用户交互组件的一个窗口
服务(Service) 在后台长时间运行的操做
广播接收者(Broadcast receiver) 一个监听器,负责对系统或应用程序声明做出响应
内容提供者(Content provider) 管理要和其余应用程序分享的一组数据的一个组件
  • 意图是一条消息,发送给系统或另外一个应用程序,以要求执行一个动做
  • 每一个应用程序都必须有一个清单,描述该应用程序
  • Android版本

24章-初识Androidjava

  • 应用程序结构:Project窗口中有两个主要的节点。app节点包含了应用程序中全部的组件,Gradle Scripts节点包含了Gradle构建脚本。
    • app节点包含mainfests,java,res三个节点
  • Android清单:用来描述应用程序。
    • 清单文件是一个XML文档,使用mainfest做为其根元素。mainfest元素的package属性为应用程序指定了一个惟一的标识符。Android工具根据这一信息生成相应的Java类
    • application元素描述了应用程序,它包含了一个或多个activity元素。应用程序一般有一个主活动,充当应用程序的入口点。
  • apk文件
    • Android应用程序打包为一个apk文件。自动生成的apk文件包含调试信息,可以以调试模式运行
    • 即使应用程序有多个Java文件,也只有一个classes.dex文件
  • 调试应用程序
    • 使用日志消息调试一个应用程序。Android框架提供了android.util.Log类用于记录日志消息
    • 在LogCat中,不一样日志级别的消息以不一样颜色来显示且每条消息都有一个标签。

25章-活动android

  • 活动的生命周期
    • 启动一个活动意味着要显示一个窗口,应用程序所建立的第一个窗口,叫做主活动。经过在应用程序清单文件中声明来指定主活动
    • application元素定义的活动下,使用inter-filter元素声明为主活动,其必须包含MAIN的action和LAUNCHER的category
    • 能够经过startActivity方法传递一个意图启动一个新的活动

26章-UI组件vim

  • 使用UI工具所作的事情,都会反映到布局文件中,以XML元素的形式体现出来
  • Toast是一个小的弹出对话框,用于显示一条消息做为给用户的反馈。
  • AlertDialog也是一个为用户提供反馈的窗口,但它会一直显示直至失去焦点。
  • 通知是出如今状态栏的一条消息,通知是持久的,而且将保持显示

教材学习中的问题和解决过程

  • 问题1:apk文件的签名是什么意思?
  • 问题1解决方案:计算机中所说的签名和生活中所说的签名在本质上是同样的,Android系统要求每个Android应用程序必需要通过数字签名才可以安装到系统中,也就是说若是一个Android应用程序没有通过数字签名,是没有办法安装到系统中的!Android经过数字签名来标识应用程序的做者和在应用程序之间创建信任关系,不是用来决定最终用户能够安装哪些应用程序。这个数字签名由应用程序的做者完成,并不须要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。
  • 问题2:在解释清单文件中的元素时,activity元素的name属性能够是一个彻底限定名称?
  • 问题2解决方案:查找了不少地方都没有完全搞懂这个名词在这里的意思,可是我找到了该名词在c语言中的定义,应该是能够借鉴的吧。数组

    每一个命名空间和类型都具备一个彻底限定名(fully qualified name),该名称在全部其余命名空间或类型中惟一标识该命名空间或类型。数据结构

大体应该是每个命名空间的独特的标识之类的意思吧???app

  • 问题3:显式意图和隐式意图的具体理解
  • 问题3解决方案显式意图:调用Intent.setComponent()Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪一个组件。
    隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动做(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。
  • 问题4:关于活动的生命周期的理解
  • 问题4解决方案
    框架

    • onCreate()这个方法在活动第一次建立的时候会被调用。
    • onStart()这个活动由不可见进入可见的时候调用
    • onResume()当活动准备好和用户进行交互的时候调用编辑器

      举例,如今许多同窗在一块儿赛跑,老师说,下一组要跑步的走到起跑线,准备跑。此时就是onResume(),此时的活动必定位于前台,学生必定站在了跑道上,一个道理。ide

    • onPause()当前活动须要去启动另外一个活动,或者恢复另外一个活动的时候去调用。这个方法中,咱们能够将一些CPU资源等释放掉,由于当你不在前台了,处于暂停或者中止甚至是销毁状态了,就应该让出一些资源,减小系统的负担。
    • onStop()活动彻底不可见的时候调用
    • onDestroy()这个很好理解,活动被销毁了,按返回键了,或者finish等
    • onRestart()由中止状态变为运行状态了,被调用。若是是暂停状态变为运行状态,是不会被调用的。

代码调试中的问题和解决过程

  • 问题1:第一次使用AS,生成一个新的project,可生成的文档就出现了如图的问题--显示R类标红

    而后我想直接忽略此错误强制运行,在点击运行按钮后,就出现了这样的提示

    显示我没有安装SDK,可事实上我确实安装了SDK,因而将错误提示在网上搜索,就提示我经过点击File-->Project Structure-->Build Tools Version配置一下就行了,如图

    其中的原理就不太懂了,再次运行AS又运行了老久,貌似下载安装了许多东西

    但好在最后运行成功了

上周考试错题总结

  • 错题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?

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为0,则最初的x必为偶数;若x<0,则x最初为奇数或是小于零

  • 错题2:Which of the following is considered an Abstract Data Type?
    A .数组
    B .参考变量
    C .任何数据类型(例如int、Double、char)
    D .矢量
    E .以上全部
  • 解析抽象数据类型包括数据结构操做和访问数据结构的方法,其中只有向量将二者结合在一块儿,数组是数据结构,但没有方法(例如插入方法或搜索方法),而引用变量和原始类型是数据而不是数据结构。

  • 错题3:Abstract Data Types have which of the following object-oriented features?
    A .信息隐藏
    B .继承
    C .多态
    D .讯息传递
    E .以上全部
  • 解析以上这些答案都是面向对象的特征类型,抽象数据类型封装了数据结构和操做数据结构的方法,从而保留了信息隐藏,所以,全部ADT都使用信息隐藏,所以不能直接从ADT外部操做数据结构,而不须要其余面向对象的特性。

  • 错题4:Which of the following criticisms of an array is applicable to a Java array?
    A .访问随机元素是一种效率低下的结构。
    B .它只支持先入先出的访问类型。
    C .它的大小是固定的(静态的)。
    D .它不能用于建立抽象数据类型,如队列或堆栈
    E .以上全部
  • 解析当数组被实例化时,Java中任何数组的大小都是固定的。若是在向数组中添加元素时,数组被填充,数组自己就不能改变大小。若是旧数组元素被移动到新数组中,就能够建立新数组,但这是效率低下的。

  • 错题5: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. This operation would be useful
    A .只有当队列或堆栈使用数组实现时
    B .只有当队列或堆栈使用连接列表实现时
    C .只适用于队列
    D .只适用于堆栈
    E .以上任何一项操做都是没有用的。
  • 解析数组是一个静态大小的对象,若是它被填充满,那么任何添加的操做,不管是列表插入、队列仍是堆栈推送,都会被阻止。这能够经过事先检查结构是否为满来肯定。若是数据结构是使用连接列表实现的,这是没必要要的,由于(咱们假设)将始终有动态内存可用于添加新元素。

  • 错题6:In a linked list in Java
    A .连接是一个对象。
    B .连接是一个节点。
    C .连接是一个引用。
    D .连接是int型。
    E .连接是一个类。
  • 解析这道题的错误点在于没有把linked list和link区分开来。在链表中,连接是对下一节点的引用。

  • 错题7:A linear data structure
    A .每一个节点老是有一个以上的连接。
    B .有时表示为树或图。
    C .每一个节点只能有一个连接
    D .几乎老是保持排序顺序,不管是升序仍是降序。
    E .以上都不是
  • 解析一个线性数据结构中每一个节点只有一个连接。以树或图的形式显示的数据结构不是线性的,它们至少是二维的,没有任何使线性数据结构保持任何类型的顺序的要求。

  • 错题8:The push and enqueue operations are essentially the same operations, push is used for Stacks and enqueue is used for Queues.
  • 解析进栈和出栈操做老是在堆栈的顶部进行,而队列操做老是在队列的后面添加。因此该说法错误

  • 错题9:An array is a List Abstract Data Type.
  • 解析数组是一种数据结构,可用于存储值,但该数组没有已实现的执行列表操做的操做因此该说法错误

  • 错题10:A linked list that contains 6 Nodes will have 6 reference pointers.
  • 解析为了访问连接列表,至少须要有第7个引用指针因此该说法错误

  • 错题11:It is possible to restrict the type of object which is stored within a Java collection by using a generic type when the collection is declared.(在声明集合时,可使用泛型类型来限制存储在Java集合中的对象的类型。)
  • 解析泛型提供了一种方法来指定集合被限制到的对象的类型因此是正确的

  • 错题12:Trees and graphs, because they are dynamic in nature, cannot be implemented using Java arrays.
  • 解析虽然数组有固定的大小,但能够将原数组分配到更大的数组中去,从而经过这种方式来实现数组的扩展,因此该说法是错误的

  • 错题13:The only difference between a stack and a queue is that stacks operate using FIFO and queues operate using LIFO.
  • 解析堆栈使用先入后出(LIFO)操做,而队列使用先进先出(FIFO)操做。

  • 错题14:Linux Bash中,使用sudo apt-get upgrade命令能够更新系统。
  • 解析此题正确

  • 错题15:一个具备执行权限的目录能够被打开并查看内部文件
  • 解析一个目录同时具备读权限和执行权限才能够打开并查看内部文件.

  • 错题16:Linux Bash中,使用apt-get search tree命令来查找是否系统装有软件tree。
  • 解析应该使用apt-cache search tree

  • 错题17:Linux Bash中,使用rm –r /dky/D*命令强制删除/dky目录下全部D开头的文件。
  • 解析应该使用rm –f /dky/D*

  • 错题18:Linux Bash中,查找五天以内src目录中删除的文件的命令是find /src/ -ctime -5
  • 解析此题正确

  • 错题19:Linux Bash中,使用grep查找当前src目录下全部包含main函数的文件,并要求显示出现行号的命令是grep –n main /src
  • 解析应该使用grep –rn main /src

  • 错题20:在Ubuntu中,使用vim编辑器时,想要移动光标,除方向键以外,还能够依次使用hjkl键进行上下左右的移动。
  • 解析没有想到栽在了顺序之上,上下左右顺序依次是kjhl

  • 错题21:在Linux Bash中,find命令的 -cmin n参数表示查找在过去n天内被修改过的文件。
  • 解析参数n解释有误

  • 错题22:在Linux Bash中,为全部人对file1.txt文件添加写入权限的命令是chmod o+w filel.txt或者 chmod 666 filel.txt.
  • 解析chmod a+w filel.txt 或者 chmod 666 file, a+w 和 o+w 有所区别。

结对及互评

  • 博客中值得学习的或问题:
    • 教材学习内容总结详细,遇到的问题也有详实的解决过程,看得出来是用心在作
  • 代码中值得学习的或问题:
    • 这周的代码编写几乎是从零开始的,可是两位同窗的代码都还不错
  • 基于评分标准,我给谭鑫的博客打分:10分。
    得分状况以下:正确使用Markdown语法(加1分)
    模板中的要素齐全(加1分)
    教材学习中的问题和解决过程, 两个问题加2分
    代码调试中的问题和解决过程, 两个问题加2分
    感想,体会不假大空的加1分
    点评认真,能指出博客和代码中的问题的加1分
    代码规范加1分
    有动手写新代码的加1分
  • 基于评分标准,我给方艺雯的博客打分:11分。
    得分状况以下:
    正确使用Markdown语法(加1分)
    模板中的要素齐全(加1分)
    教材学习中的问题和解决过程, 二个问题加2分
    代码调试中的问题和解决过程, 三个问题加3分
    感想,体会不假大空的加1分
    点评认真,能指出博客和代码中的问题的加1分
    代码规范加1分
    有动手写新代码的加1分

    点评过的同窗博客和代码

  • 本周结对学习状况
    • 20172305
    • 20172314
    • 结对学习内容
      • 学习教材第23-26章(Java和Android开发学习指南)

其余

本周主要开始学习安卓方面的知识,原本内容并非特别多,难度也不是很大,但在实验中AS出现了一系列棘手的问题,并且直到如今也没有获得解决,因此这周特别难过。不过好在快结束了,胜利就在前方!另外值得注意的是,本周的测试错题过多,尤为是关于Linux的操做命令,几乎是一窍不通啊。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 117/117 1/1 19/19
第二周 289/406 1/2 21/40
第三周 403/809 2/4 22/62
第四周 1783/2592 1/5 35/97
第五周 770/3362 1/6 25/122
第六周 734/4096 1/7 25/147
第七周 687 / 4783 1/8 25/172
第八周 824/5607 2/10 30/202
第九周 764/6371 2/12 30/432
第十周 540/6911 2/14 20/452
第十一周 ??? 2/14 20/472
  • 计划学习时间:20小时

  • 实际学习时间:20小时

参考资料

相关文章
相关标签/搜索