zoukankan      html  css  js  c++  java
  • 20145229吴姗珊 《Java程序设计》第6周学习总结

    20145229吴姗珊 《Java程序设计》第6周学习总结

    教材学习内容总结

    第十章 输入输出

    1.java将输入输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象
    2.输入串流代表对象为java.io.Inputstream实例,输出串流代表对象为java.io.OutputStream实例
    3.FileInputStream是InputStream的子类,可以指定文件名创建实例,创建文档开启可用来读取数据,FileOutputStream是OutputStream的子类,可以指定文件名创建实例,创建文档开启可用来写出数据;不使用时都要用close()方法关闭文档
    4.标准输出可以重新导向至文档,只要执行程序时使用>将输出结果导向至指定文档。可以使用System的setOut()方法指定printStream实例,将结果输出至指定的目的地
    5.read():InputStream 的 read() 方法,每次会尝试读入 byte 数组的数据,并返回实际读入的字节,只要不是 -1,就表示读取到数据
    6.•write():OutputStream 的 write() 方法,指定要写出的 byte 数组、初始索引与数据长度
    7.FileInputStream:可以指定文件名创建实例,一旦创建文档就开启,接着就可用来读取数据,主要操作 InputStream 的 read() 抽象方法,使之可以从文档中读取数据
    8.FileOutputStream:可以指定文件名创建实例,一旦创建文档就开启,接着就可用来写出数据,主要操作 InputStream 的 write() 抽象方法,使之可以写出数据至文档
    9.DataInputStream与DataOutputStream:装饰InputStream、OutputStream、DataInputStream、DataOutputStream 提供读取、写入 java 基本数据类型的方法
    10.想要将这些字节数据转换为对应的编码字符,可以使用InputStreamReader、OutputStreamWriter对串流数据打包
    11.BufferedReader、BufferedWriter可对Reader、Writer提供缓冲区作用,在处理字符输入/输出时,对效率也会有所帮助

    第十一章

    1.单线程程序:启动的程序从 main() 程序进入点开始至结束只有一个流程
    多线程程序:程序有多个流程
    2.如果想要为JVM加装CPU,就是创建Thread实例,要启动额外CPU就是调用Thread实例的start()方法,额外CPU执行流程的进入点,可以定义在Runnale接口的run()方法中。
    3.Thread:如果想要加装主线程,就要创建 Thread 实例,要启动额外的主线程就是调用 Thread 实例的 start() 方法
    4.Daemon线程主线程会从main()方法开始执行,直到main()方法结束后停止JVM。setDeamon()方法用来设定一个线程是否为Daemon线程
    5.在 java 中,任何线程可执行的流程都要定义在 Runnable 的 run() 方法,Thread 类本身也操作了 Runnable 接口
    6.如果一个 Thread 被标示为 Daemon 线程,在所有的非 Daemon 线程都结束时,JVM 自动就会终止
    7.从 main() 方法开始的就是一个非 Daemin 线程,可以使用 setDaemon() 方法来设定一个线程是否为 Daemon 线程
    8.被标示为synchronized的区块将会被监控,任何线程要执行synchronize区块都必须先取得指定的对象锁定。由于线程无法取得锁定时会造成阻断,不正确地使用synchronize有可能造成效能低下,另一个问题则是死结
    9.lock接口主要操作类之一为ReentrantLock,可以达到synchronized的作用
    10.ReadWriteLock接口定义了读取锁定与写入锁定行为,可以使用readLock()、writeLock()方法返回Lock操作对象
    11.Condition接口用来搭配Lock,最基本用法就是达到Object的wait()、notify()、notifyAll()方法的作用。Condition的await()、signal()、signalAll()方法,可视为Object的wait()、notify()、notifyAll()方法的对应
    12.CopyOnWriteArraySet 操作了 List 接口,这个类的实例在写入操作时,内部会建立新数组,并复制原有数组索引的参考,然后在新数组上进行写入操作,写入完成后,再将内部原参考旧数组的变量参考至新数组
    13.BllockingQueu 是 Queue 的子接口,新定义了 put() 与 take() 等方法,线程若调用 put() 方法,在队列已满的情况下会被阻断,线程若调用 take() 方法,在队列为空的情况下会被阻断

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

    教材P340页解决竞速情况的时候,在加上synchronized关键字后,原因是什么

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

    这周也就是照着书上敲代码,除了一些基本的问题就不会有什么其他的问题了

    本周代码托管截图





    其他(感悟、思考等)

    这周主要集中在第十章,第十一章初步的学习,然后敲了一系列代码,博客每周都要写,逐渐成为了一种习惯,也成为了生活不可或缺的一部分,希望继续努力

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 100/100 1/1 15/15
    第二周 100/100 1/1 17/17
    第三周 100/100 1/1 17/17
    第四周 300/300 1/1 15/15
    第五周 390/390 1/1 17/17
    第六章 416/416 1/1 16/16

    参考资料

  • 相关阅读:
    Git远程仓库
    Git操作
    Git理论基础
    Git的配置
    什么是Git
    oracle session_cached_cursors 与 open_cursors参数详解及配置语句
    Jersey的Filter详解
    Spring如何自动注入一个接口多个实现实例
    mave常用设置
    Windows系统-删除指定服务
  • 原文地址:https://www.cnblogs.com/20145229ss/p/5373260.html
Copyright © 2011-2022 走看看