zoukankan      html  css  js  c++  java
  • 20155331 2016-2017-2 《Java程序设计》第6周学习总结

    20155331 2016-2017-2 《Java程序设计》第6周学习总结

    教材学习内容总结

    输入/输出基础

    很多实际的Java应用程序不是基于文本的控制台程序。尽管基于文本的程序作为教学实例是很出色的,它们无法胜任JAVA在实际中的重要应用。Java对外设输入/输出的支持也是有限的,并且用起来有些笨拙——甚至是在简单的例子程序中。基于文本的控制台输入/输出对于Java程序并不是十分重要。

    Java 提供了与文件和网络相关的强大的和灵活的输入/输出支持,Java的输入/输出系统是紧密相连并且是具有一致性的。

    字节流:从InputStream和OutputStream派生出来的一系列类。这类流以字节(byte)为基本处理单位。

          InputStream、OutputStream
    
          FileInputStream、FileOutputStream
    
          PipedInputStream、PipedOutputStream
    
          ByteArrayInputStream、ByteArrayOutputStream
    
          FilterInputStream、FilterOutputStream
    
          DataInputStream、DataOutputStream
    
          BufferedInputStream、BufferedOutputStream
    

    字符流:从Reader和Writer派生出的一系列类,这类流以16位的Unicode码表示的字符为基本处理单位。

        Reader、Writer
    
        InputStreamReader、OutputStreamWriter
    
        FileReader、FileWriter
    
        CharArrayReader、CharArrayWriter
    
         PipedReader、PipedWriter
    
         FilterReader、FilterWriter
    
         BufferedReader、BufferedWriter
    
         StringReader、StringWriter
    

    线程

    在java中,如果想在main()以外独立设计流程,可以撰写类操作java.lang.Runnable接口,流程的进入点是操作在run()方法中。
    在java中,从main()开始的流程会由主线程执行,可以创建Thread实例来执行Runnable实例定义的run()方法。

    Thread与Runnable

    JVM是台虚拟计算机,只安装一颗称为主线程的CPU,可执行main()定义的执行流程。如果想要为JVM加装CPU,就是创建Thread实例,要启动额外CPU就是调用Thread实例的start()方法,额外CPU执行流程的进入点,可以定义在Runnale接口的run()方法中。

    并行API
    Lock、ReadWriteLock与Condition

    1、使用Lock
    lock接口主要操作类之一为ReentrantLock,可以达到synchronized的作用。
    为了避免调用Lock()后,在后续执行流程中抛出异常而无法解除锁定,一定要在finally中调用Lock对象的unlock()方法。
    Lock接口还定义了tryLock()方法,如果线程调用tryLock()可以取得锁定会返回true,若无法取得锁定并不会发生阻断,而是返回false。

    2、使用ReadWriteLock
    ReadWriteLock接口定义了读取锁定与写入锁定行为,可以使用readLock()、writeLock()方法返回Lock操作对象。ReentrantReadWriteLock是ReadWriteLock接口的主要操作类,readLock()方法会返回ReentrantReadWriteLock.ReadLock实例,writeLock()犯法会返回ReentrantReadWriteLock.WriteLock实例。

    3、使用StampedLock
    StampedLock类可支持了乐观读取操作。也就是若读取线程很多,写入线程很少的情况下,你可以乐观地认为,写入与读取同时发生的机会很少,因此不悲观的使用哇暖的读取锁定,程序可以查看数据读取之后,是否遭到写入线程的变更,再采取后续的措施。

    4、使用Condition
    Condition接口用来搭配Lock,最基本用法就是达到Object的wait()、notify()、notifyAll()方法的作用。Condition的await()、signal()、signalAll()方法,可视为Object的wait()、notify()、notifyAll()方法的对应。

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

    一个线程在运行,怎么才能人工的将其停止?

    用 void interrupt() 中断线程。
    public static void yield() 暂停当前正在执行的线程对象,并执行其他线程。

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

    为什么输出结果是:
    a
    k=a

    而不是
    a
    k=a
    a

    答:最后一个 System.out.write(k);
    把k写进了缓冲区 但是没有输出语句。
    只要在最后边加一个打印语句
    System.out.println();
    就能把缓冲区的内容打印出来了
    第一个k并不是 System.out.write(k); 产生的效果,而是System.out.println(" k="+k+" "); 前边的 println打印的 然后又换行 执行的打印
    k = k
    这行代码 等同于
    System.out.println();
    System.out.print(" k="+k+" ");

    write和println是配对工作的,写进缓冲区 让后输出。

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

    师的教导,我对java有了初步的认识和了解。学习java首先主要是学习了Java的程序结构,包括了循环、数组、类和方法以及字符串处理等内容。在学习期间,上课认真听老师的讲解,特别是课后练习和上机的题目,以及老师提供给我们的有关学习编程语言的方法和技巧,对于我巩固所学的理论知识有很大的帮助。现在我也只是刚刚开始学习Java语言,所以想真正掌握Java技术,以后还会有很长的一段过程需要我们更加努力地去学习。毕竟,知识需要靠积累才能真正掌握。

    结对及互评

    评分标准

    正确使用Markdown语法(加1分):

    不使用Markdown不加分

    有语法错误的不加分(链接打不开,表格不对,列表

    模板中的要素齐全(加1分)不正确...)

    排版混乱的不加分

    缺少“教材学习中的问题和解决过程”的不加分

    缺少“代码调试中的问题和解决过程”的不加分

    代码托管不能打开的不加分

    缺少“结对及互评”的不能打开的不加分

    缺少“上周考试错题总结”的不能加分

    缺少“进度条”的不能加分

    缺少“参考资料”的不能加分

    教材学习中的问题和解决过程, 一个问题加1分

    代码调试中的问题和解决过程, 一个问题加1分

    本周有效代码超过300分行的(加2分)

    一周提交次数少于20次的不加分

    其他加分:

    周五前发博客的加1分

    感想,体会不假大空的加1分

    排版精美的加一分

    进度条中记录学习时间与改进情况的加1分

    有动手写新代码的加1分

    课后选择题有验证的加1分

    代码Commit Message规范的加1分

    错题学习深入的加1分

    点评认真,能指出博客和代码中的问题的加1分

    结对学习情况真实可信的加1分

    扣分:

    有抄袭的扣至0分

    代码作弊的扣至0分

    迟交作业的扣至0分

    点评模板:

    博客中值得学习的或问题:

    xxx

    xxx

    ...

    代码中值得学习的或问题:

    xxx

    xxx

    ...

    基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

    参考示例

    上周博客互评情况

    20155218

    20155336

    20155320

    20145209

    20155314

  • 相关阅读:
    census 安全处理模式
    基于squid 暴露k8s 服务
    nginx 动态模块问题
    juicefs 多s3 bucket 使用
    k8s 数据卷需要很长时间才能挂载成功
    一种基于s3 管理haproxy 配置的模式
    WebSub 互联网分布式\订阅标准
    maven 多模块父模块问题deploy 问题
    nginx 作为s3 的gateway
    juicefs 单机试用
  • 原文地址:https://www.cnblogs.com/dd1174751354/p/6660230.html
Copyright © 2011-2022 走看看