20162308 2016-2017-2 《程序设计与数据结构》第6周学习总结

教材学习内容总结

  1. 类的继承
  2. 代码复用
  3. 抽象类 abstract
  4. 方法重载 Override
  5. 多线程 Multi-Threading

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

  • 1 关于多重继承
  • 一致认为,在面对对象中添加多重继承的特性对程序员来说,至少是像我这样没什么经验的初学者来说,是一件非常困难的事。继承应该是一种"is-a"的逻辑,那么多重继承在这个角度上来说就是不合逻辑的。所以,万幸,Java没有在设计的时候引入这个特性。
  • 2 线程、进程 (Thread & Process)
  • 阅读材料:
    线程和进程的区别是什么?
    《Java编程思想》
  • 去年,好想也是四月初的时候,当时我在杭电面试,当时说到了自己设计的爬虫中实现了 Producer- Consumer 的多线程模型,然后那几个老师就问我线程和进程有什么区别。那个时候,我自己其实也搞不懂线程和进程有什么区别,我就瞎扯了几句。回去以后,自己查了一些资料,也对进程和线程有了一些理解。进程是CPU资源分配的最小单位,线程是依附于进程而存在的调度,一个进程中可以存在多个线程。

    利用对象,可将一个程序分割成相互独立的区域。我们通常也需要将一个程序转换成多个独立运行的子任务。像这样的每个子任务都叫作一个“线程”(Thread)。编写程序时,可将每个线程都想象成独立运行,而且都有自己的专用CPU。一些基础机制实际会为我们自动分割CPU的时间。我们通常不必关心这些细节问题,所以多线程的代码编写是相当简便的。 这时理解一些定义对以后的学习狠有帮助。“进程”是指一种“自包容”的运行程序,有自己的地址空间。 “多任务”操作系统能同时运行多个进程(程序)——但实际是由于CPU分时机制的作用,使每个进程都能 循环获得自己的CPU时间片。但由于轮换速度非常快,使得所有程序好象是在“同时”运行一样。“线程” 是进程内部单一的一个顺序控制流。因此,一个进程可能容纳了多个同时执行的线程。 多线程的应用范围很广。但在一般情况下,程序的一些部分同特定的事件或资源联系在一起,同时又不想为 它而暂停程序其他部分的执行。这样一来,就可考虑创建一个线程,令其与那个事件或资源关联到一起,并让它独立于主程序运行。一个很好的例子便是“Quit”或“退出”按钮——我们并不希望在程序的每一部分代码中都轮询这个按钮,同时又希望该按钮能及时地作出响应(使程序看起来似乎经常都在轮询它)。 ——《Think in Java》

//example: using class Thread
//SimpleThread.java
public class SimpleThread extends Thread{private int countDown = 5;private static int threadCount = 0;private int threadNumber = ++threadCount;public SimpleThread(){System.out.println("Making" + threadNumber);}public void run(){while(true){System.out.println("Thread " + threadNumber + "(" + countDown + ")");if(--countDown == 0)return;}}public static void main(String[] args) {for(int i = 0; i < 5; i++)new SimpleThread().start();System.out.println("All Threads Started");}
}
//example: using interface Runable
//SimpleRunable.java
class MyRunable implements Runnable{private String name;MyRunable(String name){this.name = name;}@Overridepublic void run() {try {Thread.sleep(1000);System.out.println(name + "+1s");Thread.sleep(1000);System.out.println(name + "+2s");} catch (Exception e) {System.out.println("Against Basic Law");}}
}
public class SimpleRunable{public static void main(String[] args) {MyRunable mr1 = new MyRunable("T1");MyRunable mr2 = new MyRunable("T2");Thread t1 = new Thread(mr1);Thread t2 = new Thread(mr2);t1.start();t2.start();}
}

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

  • 多线程的程序运行时运行太快,不能观察到顺序。
  • 使用Thread.sleep(Math.Random() * 1000)来减慢速度。

代码托管

  • 代码提交过程 & 代码量截图:

上周考试错题总结

没有考试

结对及互评

张师瑜的博客注意学习方法,书上的代码关键是理解,理解了再根据书上的思路,自己敲一遍。

其他(感悟、思考等,可选)

  • 关于代码复用
  • 代码复用是一件能够很大的提高生产力的工作,通过梳理程序的逻辑结构,建立清晰合理的面对对象模型,实现接口或继承抽象类,来实现需求。也就是说,不要重复造轮子。利用已有的代码,应用到当前的需求中,提高效率。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 26/26 1/1 7/7
第二周 81/107 1/2 8/15 String类型的使用
第三周 80/187 1/3 5/20 位运算
第四周 300/487 1/4 8/28 动态数组和迭代器
第五周 132/619 1/5 18/46 OOP编程导论
第六周 90/709 1/6 5/51 多线程
  • 计划学习时间:5小时

  • 实际学习时间:8小时

参考资料

  • 《Java程序设计与数据结构教程(第二版)》

  • 《Java程序设计与数据结构教程(第二版)》学习指导

转载于:https://www.cnblogs.com/pingch/p/6682414.html

《程序设计与数据结构》第6周学习总结相关推荐

  1. 20172304 《程序设计与数据结构》第九周学习总结

    20172304 <程序设计与数据结构>第九周学习总结 教材学习内容总结 本章是第十五章,主要介绍了图的概念. 首先我来介绍一下图的基本结构. 从逻辑上讲,图是由边和结点组成的,在我的理解 ...

  2. 20162302 《程序设计与数据结构》第一周学习总结

    20162302 2017-2018-1 <程序设计与数据结构>第一周学习总结 教材学习内容总结 很多情况下时间和空间不可兼得.在不同的情况下,要么用时间换空间,要么用空间换时间. 引出算 ...

  3. 20172315 2017-2018-2 《程序设计与数据结构》第九周学习总结

    学号 2017-2018-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常是定义一个非正常情况或错误的对象,由程序或运行时环境抛出. 异常与错误不同,错误代表不可恢复的问题 ...

  4. 20172304 《程序设计与数据结构》 第二周学习总结

    20172304 <程序设计与数据结构>第二周学习总结 教材学习内容总结 本周主要学习了第三章和第四章的内容 第三章 集合概述--栈 3.1集合 集合是一种聚集组织了其他对象的对象. 集合 ...

  5. 20162329张旭升 2016-2017-2 《程序设计与数据结构》第九周学习总结

    20162329张旭升 2016-2017-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 1.建立数据库连接:我们是通过老师给的XAMPP程序来配置自己的数据库,然后根据教程 ...

  6. 20162329 2017-2018-1 《程序设计与数据结构》第九周学习总结

    第九周学习总结 一.学习目标 二叉查找树的理解 二叉查找树的实现 平衡二叉查找树 哈夫曼树的实现 堆的理解 堆的实现 二.学习内容 1.二叉查找树 思路: 二叉查找树与一般二叉树的区别在于,二叉查找树 ...

  7. 20162303《程序设计与数据结构》第一周学习总结

    学号 2016-2017-2 <程序设计与数据结构>第1周学习总结 教材学习内容总结 本周学习了基本的JAVA知识,虽然比较基础,但是在实际过程中还是出现了许许多多的问题,代码一遍遍的敲错 ...

  8. 20162330 2017-2018-1《程序设计与数据结构》第二周学习总结

    2017-2018-1 学习总结目录: 1 2 3 5 6 7 9 10 11 12 目录 0. 本周学习内容总结 0.1 Comparable接口与Comparator接口的使用 0.2 泛型方法设 ...

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

    教材学习内容总结 本周学习第十一章异常和第十二章 第十一章-异常 异常是一个定义非正常情况或错误的对象,由程序或运行时环境抛出,可以根据需要进行相应的捕获和处理. 错误和异常都是对象,代表非正常情况或 ...

  10. 20172314 2018-2019-1《程序设计与数据结构》第一周学习总结

    教材学习内容总结 概述 软件工程:是一门关于高质量软件开发的技术和理论的学科,用来控制开发过程,实现高质量的软件. 软件工程的目标:正确性.可靠性.健壮性.可用性.可维护性.可重用性.可移植性.运行效 ...

最新文章

  1. C 语言编程 — GDB 调试工具
  2. 【运筹学】整数规划 ( 整数规划示例 | 整数规划解决的核心问题 )
  3. HDOJ 1509 Windows Message Queue
  4. Java私有,受保护,公共和默认
  5. iview tag 标签点击事件
  6. 智慧数字门店管理系统、PAD、门店系统、收银开单、预约服务、会员管理、账单管理、数据统计、商品、库存、美容美体、美甲美睫、医疗美容、美发造型、医疗诊所、中医理疗、宠物服务、美业、经营业务、售卡、交班
  7. 转:HTTP ---HTTP头的编码问题(Content-Disposition)
  8. 大学的c语言编译器,有多少大学还在用Turbo C做编译器
  9. 昨天买的电动车今天上牌了
  10. 无法启动此程序因为计算机中丢失msvcp140d,msvcp140.dll文件丢失修复工具
  11. java短信验证码功能发送的验证码如何校验_Java实现短信发送验证码功能
  12. 【英语四六级-必背单词】高中英语单词 (E)-MP3试听与下载
  13. 人工神经网络在肺结核诊断中应用的研究进展
  14. 如何提高场馆的二次成交率?
  15. 在Ubuntu 18.04 Bionic Beaver上安装Wine
  16. 现代计算机系统必须配置的核心,第一章 计算机系统概述
  17. Mach3寻边和对刀代码
  18. C++ Reference: Standard C++ Library reference: C Library: cstdio: fgetc
  19. Blender教程之魔方全自动特效教学
  20. 我的物联网项目之下单渠道

热门文章

  1. Android JNI开发生成.h头文件问题(转)
  2. WCF:Maximum number of items that can be serialized or deserialized in an object graph is '65536'.
  3. 2018,10,19模拟赛
  4. 条款20:为指针的关联容器指定比较类型
  5. MyEclipse+Tomcat web项目改名
  6. 网络 http服务器-v1-多线程版本
  7. tp数据库表大写命名的一些问题
  8. Wigner-Ville分布算法的C++实现
  9. 政府数据集中异地备份概述
  10. 最新Kernel 2.6.29正式版发布啦