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

    教材学习内容总结

    SRP高内聚
    开发工作原则:对扩充开发,对修改封闭。(对模块的行为可以扩充;模块的源代码不可更改)
    OO设计
    依赖倒置原则:高层模块不依赖于

    Linux视频笔记

    • 安装时的说明(非ubuntu)

    Java视频笔记

    命令行运行程序

    • public

    对于以下代码

    class Demo
    {
        public static void main(String[] args)
    {
    System.out.println("Hello,little box!");
    }
    }
    

    在class前加了public后,类名和Java文件名一致。

    参考:视频day1-7

    • 漏写东西

    • 主函数名输错

    设置环境变量

    • 在别的地方执行Java程序

    所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改。

    原理:当执行Demo时,Java命令启动虚拟机,虚拟机先从classpath路径下寻找Demo,如果已经有了就执行。虚拟机先找环境变量再找当前目录。故,就算两者有同名程序也会先找classpath的。

    • 配置classpath时最后一个字符如果是分号,表示在classpath所指的路径下找不到目标文件时再在当前路径下再找一次。如果没有分号,则仅在classpath所指的路径下寻找。
      eg.
    set classpath=c:;d:
    //在C盘下寻找,如果没找到,再在D盘下寻找
    set classpath=.;c:;d:
    //"."本身就代表当前路径,所以一行的意思是:现在当前路径下找一次(输入此命令行时的路径),然后是按照套路找后面的。
    set path=.;c:;d:;%path%
    //在原基础上添加路径
    

    此修改环境变量是指用现在的内容去覆盖以前的内容

    set classpath=
    

    表示对环境变量清空

    再用

    set classpath
    

    查看时就会发现“环境变量classpath没有定义”

    • 如果是可执行文件,用path,如果是java文件,用classpath。
      path是先找当前路径

    以上只是临时配置的,如果想要一劳永逸,则参考:
    如何配置环境变量Windows10

    参考:视频day1-8至day1-9;

    Windows 如何在cmd命令行中查看、修改、删除与添加环境变量 ;

    如何在cmd命令行中查看、修改、删除与添加环境变量;

    如何配置环境变量Windows10

    语法

    • 标识符

    1.由大小写英文字母 数字0-9 _ $

    2.不可以数字开头

    3.不可使用关键字(main虽然不是关键字,但却是被虚拟机识别的一个名称)

    • 十六进制以0x开头

    • 变量与常量

    • 输出(println)

    public class shuChu {
        public static void main(String[] args) {
            int a = 3,b;
            b = a++;
    
            System.out.println("a="+a+"
    "+"b="+b);
            /*输出:
            a=4
            b=3
            */
            System.out.println("5+5"+5+5);
            //  +  相当于连接符
            //输出:   5+555   因为相当于“5+5”用+与第三个5连接
            System.out.println("5+5="+(5+5));
            //输出:    5+5=10
        }
    }
    
    

    学至:视频day2-10;

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

    说明:以我个人的能力,我再之前的学习方式实在是不可行了。故此调整学习顺序,我重头开始学习Java。这一次以看视频为主(从以前老师发的链接里翻到的视频--传智播客_Java培训_毕向东_Java基础,如果一时翻不到资源的同学可以找我拷哟~)

    感谢老师给我们提供了很多全面的学习资料!!!

    • 问题1:在临时设置环境变量时如何删除其中个别环境变量
    • 问题1解决方案:并未查到直接删除某一项的功能,但是想到了一个折中的办法。先将目前的某环境变量比如path显示出来,然后复制下来,手动修改,再拿这个版本进行重写(set),这样不仅可以删除,还可以调整顺序,在不同地方进行改写。
    • 问题2:配置环境变量时,如果地址改变,就需要再去重新在诸多路径里找到其中的并修改,有些麻烦并且容易出错,有什么好办法吗?
    • 问题2解决方案:
      将路径中容易改变的部分提取出变成一个新的环境变量,比如叫haha,
      用%haha%动态地获取haha的值,以后修改该haha的值就行。

    参考:视频day1-5

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

    问题1:
    课上的编程:

    问题1解决方案:
    ArrayIndexOutOfBoundsException:用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。
    于是我算了一下,把下标修改正确了。
    不过在搜索的时候还是不大明白“ArrayIndexOutOfBoundsException:”后面的8是啥意思。然后我的阅读理解小能手-结对小伙伴发现:那个数字代表数组长度。

    • 问题2:在我更新了虚拟机之后,我的Windows下的idea竟然出现了无法git commit

    • 问题2解决方案:
      然后我想重新配置一下码云的地址重来,结果弄错成了clone……只好重走一遍,没想到我在自己常用的2号项目上操作的,结果把代码都clone到了之前废弃的1号项目里,两个项目名称只有5325后面下划线的长度的区别

    然后我重新把整个一套程序又走了一遍,重新配置各种……

    测试与码云的连接性, 在码云上推成功了

    我尝试运行程序,显示:
    找不到或无法加载主类

    将JDK SDK都配置过也是无用,故在命令行运行了一遍

    出现了无法加载主类和编码错误

    无奈的我想打开原来的项目去看看我之前的怎么配置来着。

    我的直觉告诉我要再测一次能不能commit,于是我这么做了

    确实能commit,但是……出现了这个,场面一度十分的尴尬……

    吓得我搜到了一波资料:
    Git Community Book 中文版

    于是我选择了Merge

    后来这个程序就多了一些后缀

    将后缀删去,重新push一遍,成功,但是,红色标识所处与之前接触到的不同,并且无法添写,只能加个回车啥的。

    后来由“光标问题”搜到了受不了了,intellij idea 光标问题 求解决。
    原来我的问题是:insert-改写模式,再次点击了Insert键就恢复了,这种模式让我想起了vim,结果真的有ideavim这种东西……惊!

    IdeaVim插件使用技巧IDEA Intellij小技巧和插件

    代码托管

    (statistics.sh脚本的运行结果截图)
    Chmod +x statistics
    ./statistics

    上周考试错题总结

    1.Linux中获取当前路径的绝对路径的命令是()?
    A .
    cd
    B .
    passwd
    C .
    tree
    D .
    pwd
    答案:D

    解析:使用 cd 命令可以切换目录,在 Linux 里面使用 . 表示当前目录,.. 表示上一级目录(注意,我们上一节介绍过的,以 . 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用 ls -a 命令查看隐藏文件), - 表示上一次所在目录,~ 通常表示当前用户的 home 目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。
    passwd 修改用户登录口令,tree给出目录树结构。

    2.NIO2中,可以使用()中的方法取出文件系统根目录信息。
    A .
    Path
    B .
    DirectoryStream
    C .
    FileStore
    D .
    FileSystem

    答案:D

    解析:FileSystem的getRootDirectorie方法

    3.正则表达式”(‘|”)(.*?)1”匹配 “'Hello',"World””的结果是()
    A .
    不匹配
    B .
    'Hello'
    C .
    "World"
    D .
    'Hello',"World"

    答案:BCD

    解析:反向引用 1 代表第一个()中的匹配内容

    4.abc? 匹配( )
    A .
    ab
    B .
    abc
    C .
    abcc
    D .
    abccc

    答案:AB

    解析: ? 重复0或1次……

    5.正则表达式 zo* 匹配()
    A .
    z
    B .
    zo
    C .
    zoo
    D .
    zooooooooooooooooooooooooooo

    答案:ABCD

    解析:* 可以是0次

    6.正则表达式“r.t”匹配字符串“rat”的Java 代码表达式是()
    A .
    "rat".matcher("r.t")
    B .
    "r.t".matcher("rat")
    C .
    Pattern.compile("rat").matcher("r.t")
    D .
    Pattern.compile("r.t").matcher("rat")

    答案:D

    解析:p491

    7.要使Logger日志输出到控制台,需要使用()类
    A .
    Handler
    B .
    ConsoleHandle
    C .
    StreamHandler
    D .
    FileHandler

    答案:B

    解析:p475

    8.可以通过Logger logger = new Logger(); 来产生Logger对象。
    A .
    True
    B .
    False

    答案:B(当时手抽点错了)

    9.Date 的 API 有许多方法都不再建议使用,应改用哪个类别的相关方法取
    代?
    空白部份指定哪些型态可以通过编译?
    A .
    DateFormat
    B .
    TimeStamp
    C .
    Time
    D .
    Calendar

    答案:D

    10.Suppose we have an array of String objects identified by the variable names. Which of the following for loops will not correctly process each element in the array.(假如我们有一个名为names的String对象数组,下面哪个for循环不能遍历数组中的每一个元素?)

    A .
    for(int i = 0; i < names.length; i++)
    B .
    for(String name : names)

    C .
    for(int i = 0; i < names.length(); i++)

    D .
    none of these will correctly process each element(以上都不能遍历)
    E .
    all of these will correctly process each element(以上都能遍历)

    答案:C

    解析:由于语法错误,选择C不会正确处理每个元素。长度变量不是一个方法,因此在它后面没有括号。选择B是使用foreach循环来处理数组的例子,和选择是一个正确的循环

    11.Which of the following array declarations are invalid? (下面哪个数组声明是不合法的)
    A .
    int[] grades = new int[5];

    B .
    int grades[] = new int[5];
    C .
    int[] grades = { 91, 83, 42, 100, 77 };
    D .
    all of the above are valid(以上三个都合法)

    E .
    none of the above are valid(以上三个都不合法)

    答案:D

    解析:所有这三个都是有效的数组声明。选择B使用另一种语法。选择C使用初始化列表初始化数组。

    12.In Java, array indexes always begin at ________________ .(Java中,数组索引从______开始)
    A .
    -1
    B .
    0
    C .
    1
    D .
    2
    E .
    you can declare an array to have any indexes you choose(可以任意指定)

    答案:B

    结对及互评

    评分标准

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

      • 不使用Markdown不加分
      • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
      • 排版混乱的不加分
    2. 模板中的要素齐全(加1分)

      • 缺少“教材学习中的问题和解决过程”的不加分
      • 缺少“代码调试中的问题和解决过程”的不加分
      • 代码托管不能打开的不加分
      • 缺少“结对及互评”的不能打开的不加分
      • 缺少“上周考试错题总结”的不能加分
      • 缺少“进度条”的不能加分
      • 缺少“参考资料”的不能加分
    3. 教材学习中的问题和解决过程, 一个问题加1分

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

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

      • 一周提交次数少于20次的不加分
    6. 其他加分:

      • 周五前发博客的加1分
      • 感想,体会不假大空的加1分
      • 排版精美的加一分
      • 进度条中记录学习时间与改进情况的加1分
      • 有动手写新代码的加1分
      • 课后选择题有验证的加1分
      • 代码Commit Message规范的加1分
      • 错题学习深入的加1分
      • 点评认真,能指出博客和代码中的问题的加1分
      • 结对学习情况真实可信的加1分
    7. 扣分:

      • 有抄袭的扣至0分
      • 代码作弊的扣至0分
      • 迟交作业的扣至0分

    点评模板:

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

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

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

    • 参考示例

    点评过的同学博客和代码

    • 本周结对学习情况

    - 结对学习内容
        - 第二次实验时遇到有疑惑时互相尽力解答,以及分享StarUML教程;
        - 课本第十六、十七、十八章
    

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

    我觉得这学期的学习非常锻炼我的心智。

    开始学习的时候感觉像是走在悬崖上的无数玻璃栈道的其中一条上,脚下空空,前路茫茫,抬头一看,没有方向。花很多时间艰难地学习了学习指导,看了书,敲了代码,但是考得一塌糊涂。想想到底也是我学习方法的不对,调整了学习方式,不变的是糟糕的“什么都不会,考到的都迷茫”极度不踏实感。

    后来有好多周,几乎每周都有非常耗时间的工作,我身心疲惫,更不愿面对Java了。

    我必须直面自己的懦弱,承受长时间消极给我带来的后果。

    坦言,就我个人情况而言,目前的学习状况只因我个人。老师尽心尽力,我却做不到踏踏实实。

    对我自己的学习弱点进行以下分析:

    1. 看书学习能力太弱,经常性的看不懂,理解错误。
    2. 认为对知识的掌握程度和实际对知识的掌握程度相差太远。(以为会了实际并不牢靠)
    3. 动手操作能力不足。

    目前想到的解决方案:

    1. 因为时间紧迫,我选择放弃以书为主的学习方式,选择以看视频为主的学习方式,尽快掌握知识。但是可能就无法跟上考试的考点,成绩依旧会一塌糊涂,但是我目前最想的是先一点点掌握牢靠知识,应该到后期就会好很多。(一切都是自己作的死)
    2. 我能怎么办,只能笨鸟勤飞啊。幸运的是老师提供的和网上的资料挺多的。

    其实我最讨厌的,是不优秀的自己。

    经过很长时间的情绪病期之后,豁然间变得迷之容易开心,迷之积极。

    冷静地思考了一段时间,看清了些,也放下了很多东西。

    回过头来想想,朋友们是多么温柔、耐心又热心。以前在抱大腿的时候因为自己的无能耽误了他们那么多精力与时间,很愧疚,却傻傻地不知道如何是好。

    我总是注意到很多不该注意的东西,等到对于主要的东西就没有足够的力气了。

    如果自己也能成为靠谱的大神的话,就有能力去助一臂之力了吧。

    温柔与美色不可辜负啊。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 16篇 400小时
    第一周 9/9 1/1 19/19 熟练下载安装技能,锻炼解决问题能力
    第二周 185/194 1/2 16/35 下载并熟悉IDEA,练习使用码云、git的技能。
    第三周 488/535 1/3 18/53 花了更少时间磨合软件,学习更顺利
    第四周 366/901 2/5 18/71 继承、多态、行为
    第五周 611/1512 1/6 14/67 异常处理、Collection与Map
    第六周 337/1849 1/7 16/73 输入与输出、线程与并行API
    第七周 459/2308 2/9 15/88 Lambda、时间与日期
    第八周 554/2862 1/10 16/104 NIO与NIO2&通用API
    第九周 484/3346 2/12 32/135 从头开始

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:20小时

    • 实际学习时间:32小时

    • 改进情况:

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    sqlserver把小数点后面多余的0去掉
    C#使用Linq对DataGridView进行模糊查找
    winform dataGridView DataGridViewComboBoxColumn 下拉框事件
    JGit与远程仓库链接使用的两种验证方式(ssh和https)
    Quartz不用配置文件配置启动
    SpringBoot之退出服务(exit)时调用自定义的销毁方法
    Java注解Annotation
    Java自定义数据验证注解Annotation
    我的ehcache笔记
    Java中泛型Class<T>、T与Class<?>
  • 原文地址:https://www.cnblogs.com/GDDFZ/p/6753238.html
Copyright © 2011-2022 走看看