• 20145118 《Java程序设计》第6周学习总结


    20145118 《Java程序设计》第6周学习总结

    教材学习内容总结

    1.数据依靠串流在目的地与来源地之间传输,无论来去如何,只要取得InputStream或OutputStream的实例,其余操作都是一致的.

    2.数据传输时即使不知道来去也可传输,依靠通用的dump()方法.结束时用close()方法关闭串流.

    3.InputStream/OutStream < java.ic.Closeable < java.lang.AutoCloseable

    4.读入需要read(),读取需要write().
    例:从网站中读取某个网页并另存为文档:

    package cc.openhome
    
    import java.io.*;
    import java.net.URL;
    
    public class Download {
        public static void main(String[] args) throws TOException {
            URL url = new URL(args[0]);
            InputStream src = url.openStream();
            OutputStream dest = new FileOutputStream(args[1]);
            TO.dump(src, dest);
        }
    }
    

    5.串流继承架构 脑中要有详细的书中图片的印象.

    6.打包器类可以为输入和输出的数据做加工处理,顺序是要输出前加工再输出,以及在已经读取之后进行加工.

    7.在输出和读取时,可充分利用缓冲区来提高效率.

    8.Reader()用来读取字符数据, Writer()用来输出字符数据.掌握Reader(),Writer()常用类继承架构!

    9.多线程程序是指拥有多个流程的程序.

    10.JAVA中main()以外的独立流程是从run()后开始进行的.通过创建Thread实例来执行run方法.除此之外,还可以通过继承Thread类来重新定义run方法.两者相比,第一种更有弹性.

    new TortoiseThread(10).start();
    new HareThread(10).start();
    

    (继承Thread类重新定义run方法.)

    11.使用setDaemon()来设定一个线程是否为Dacmon线程.

    12.线程在那个群组中产生就会归入哪个线程群组,当然也可以通过指定来自定义,但一旦归入某个群组就无法再更换!

    13.线程完成run()方法后就会进入Dead,进入(或者已经调用过start()方法)的线程,不可以再次调用start()方法,否则会抛出错误。

    13.尽可能让线程跑完自身流程,而不用stop来强制跳出.同理,线程的暂停重启也要视情况使用,不可滥用.

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

    本周学习内容中有很多需要牢记的规则细节,也碰到了不熟悉的名词概念,通过教材上的资料网址,我了解到纯文本文档是指只包含纯文字的文件,这些文字没有任何格式.编码是指将一种信息从这种格式转换到另一种格式的过程.

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

    通过看书我了解到如果在join()中指定时间,则可在时间过后自觉跳出B流程继续执行A流程,我觉得这个是在我们日常生活中利用率较高的一种方法,引起了我的兴趣,所以我上网找了一些优秀的代码,在此记录一下:

    public class TimeoutThread extends Thread{
      /**
      * 计时器超时时间
      */
      private long timeout;
      /**
      * 计时是否被取消
      */
      private boolean isCanceled = false;
      /**
      * 当计时器超时时抛出的异常
      */
      private TimeoutException timeoutException;
      /**
      * 构造器
      * @param timeout 指定超时的时间
      */
      public TimeoutThread(long timeout,TimeoutException timeoutErr) {
      super();
      this.timeout = timeout;
      this.timeoutException = timeoutErr;
      //设置本线程为守护线程
    
      this.setDaemon(true);
      }
      /**
      * 取消计时
      */
      public synchronized void cancel()
      {
      isCanceled = true;
      }
      /**
      * 启动超时计时器
      */
      public void run()
      {
      try {
      Thread.sleep(timeout);
      if(!isCanceled)
      throw timeoutException;
      } catch (InterruptedException e) {
      e.printStackTrace();
      }
      }
      }
    

    本周代码托管截图

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

    这周开始了JAVA实验课程,在自己调试代码时可能很小的一个问题都需要花费很长的时间,从十几个bug一直修改,但最后却很有成就感,学习难度日益增大,希望自己能保持一个较好的心态.

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积 学习时间(新增/累积) 重要成长
    目标 5000行 20篇 200小时
    第一周 100/100 1/1 7/10
    第二周 200/100 1/1 7/10
    第三周 400/100 1/1 9/10
    第四周 400/200 1/1 7/10
    第五周 500/200 1/1 9/10
    第六周 400/200 2/1 15/10

    参考资料

  • 相关阅读:
    [LeetCode] Minimum Depth of Binary Tree
    [LeetCode] Symmetric Tree
    [Leetcode] Same Tree
    [LeetCode] Binary Tree Preorder/Inorder/Postorder Traversal
    [LeetCode] Copy List with Random Pointe
    [LeetCode] Largest Rectangle in Histogram
    [LeetCode] Longest Valid Parentheses
    SQL Server 2005 数据库复制(转载)
    Nginx 大文件上传解决方案(500M以上)
    百度WebUploader 大文件上传解决方案(500M以上)
  • 原文地址:https://www.cnblogs.com/cy1123/p/5376408.html
Copyright © 2020-2023  润新知