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

时间:2022-09-19 16:44:18

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

目录

学习内容总结

Linux命令(sort/cat/split/join)

『sort』:sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

  • 语法:sort(选项)(参数)
  • 常用选项:
    • -b:忽略每行前面开始出的空格字符;
    • -c:检查文件是否已经按照顺序排序;
    • -d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
    • -f:排序时,将小写字母视为大写字母;
    • -i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符;
    • -k:排序时,指定本域的开头和结尾;
    • -m:将几个排序号的文件进行合并;
    • -M:将前面3个字母依照月份的缩写进行排序;
    • -n:依照数值的大小排序;
    • -o:将排序后的结果存入制定的文件;
    • -r:以相反的顺序来排序;
    • -t:指定排序时所用的栏位分隔字符;
    • +-:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
  • 参数:指定待排序的文件列表。
  • 注意:使用-k +<起始栏位>-<结束栏位>这一命令时,若“只”根据本域的第n个字符进行排序,则使用-k n,n

『cut』:cut命令用来显示行中的指定部分,删除文件中指定字段。

  • 语法:`cut(选项)(参数)
  • 常用选项:
    • -b:仅显示行中指定直接范围的内容;
    • -c:仅显示行中指定范围的字符;
    • -d:指定字段的分隔符,默认的字段分隔符为“TAB”;
    • -f:显示指定字段的内容;
    • -n:与“-b”选项连用,不分割多字节字符;
    • --complement:补足被选择的字节、字符或字段;
    • --out-delimiter=:指定输出内容是的字段分割符;
    • --help:显示指令的帮助信息;
    • --version:显示指令的版本信息。
  • 参数:指定要进行内容过滤的文件。
  • 注意:cut命令主要是接受三个定位方法:第一,字节(bytes),用选项-b;第二,字符(characters),用选项-c;第三,域(fields),用选项-f。如果需要提取中文,使用-b就会出现乱码情况。所以,当遇到多字节字符时,可以使用-n选项,-n用于告诉cut不要将多字节字符拆开。

『split』:可以将一个大文件分割成很多个小文件

  • 语法:split (选项)(输入(前缀))
  • 参数:
    • -b:值为每一输出档案的大小,单位为 byte。
    • -C:每一输出档中,单行的最大 byte 数。
    • -d:使用数字作为后缀。
    • -l:值为每一输出档的列数大小。
  • 注意:
    • 如果想用数字后缀可使用-d参数,同时可以使用-a length来指定后缀的长度

『join』:用来将两个文件中,将指定栏位内容相同的行连接起来。

  • 语法:join(选项)(参数1)(参数2)
  • 选项:
    • -a<1或2>:除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行;
    • -e:若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串;
    • -i或--ignore-case:比较栏位内容时,忽略大小写的差异;
    • -o:按照指定的格式来显示结果;
    • -t:使用栏位的分割字符;
    • -v<1或2>:更-a相同,但是只显示文件中没有相同栏位的行;
    • -1:连接[文件1]指定的栏位;
    • -2:连接[文件2]指定的栏位。
  • 参数:要进行合并操作的第一个文件参数和第二个文件参数。
  • 注意:如果行内容不匹配,则不能进行该操作,如:

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

返回目录

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

  • 『问题一』MySQL支持的SQL语法都有哪些?

  • 『问题一解决』

SQL是结构化查询语言,主要用于访问和处理数据库的计算机语言。

(1)MySQL的数据类型

MySQL的数据类型大致分为以下几类,数值类型、字符串类型、日期和时间类型。

(2)创建数据库

在创建数据库之前,必须先创建数据库,在MySQL中,创建数据库的代码如下:

create database wuzydb default character set utf8

以上代码创建了wuzydb数据库,并设置编码为utf8。

(3)创建表

表必须在数据库中创建,所以在创建表之前,需调用use wuzydb;

创建表:create table 表名(字段 字段类型...)

(4)对表中数据进行增删改查

insert插入:insert into 表名(字段1,字段2...)values(值1,值2...)

select查找:select * from 表名(查询所有数据);select 字段1,字段2...from 表名(查询某几个字段的数据)

update修改:update 表名 set 字段1=值1,字段2=值2...

delete删除:deleta from 表名

返回目录

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

  • 『问题一』

学习正则表达式的过程中,运行测试代码时出现了“Red Bar”,如下:

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

运行结果显示,"\"Hello\"".matches("([\"'])[^\"']*\1")为false。哪里出错了呢?

  • 『问题一解决』

把regex复制到正则表达式测试器上运行,结果是匹配的:

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

那么,问题只能出在这行代码上,而不是正则表达式本身。只有一种可能,就是没有正确使用Java中的转义字符,导致程序不能正确匹配。

再返回去看程序中的正则表达式,发现忽略了最后一个转义符。()表示将括号里的分组,后面的\1表示反向引用第一组,而在Java中,\本身就是转义符,表示忽略\后面的内容,所以,要想使用“反向引用”这个含义,必须再次使用\进行转义。再次运行,发现断言正确,说明我们的分析是正确的。

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

  • 『问题二』

在学习命令行时,参考资料经常使用/etc/passwd文件进行演示,那么,/etc/passwd以及/etc/shadow是什么文件呢:

  • 『问题二解决』

查阅相关资料了解到,在Linux操作系统中, /etc/passwd文件中的每个用户都有一个对应的记录行,记录着这个用户的一下基本属性。我们通过命令行cat /etc/passwd查看/etc/passwd文件内容:

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

我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

/etc/shadow文件格式与/etc/passwd文件格式类似,同样由若干个字段组成,字段之间用“:”隔开。但需要注意的是,/etc/shadow文件只有系统管理员才能够进行修改和查看:

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

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

/etc/shadow文件中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。文件中字段主要含义为:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

返回目录

代码托管

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

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

返回目录

上周考试错题总结

  • 『问题一』NIO2中,可以使用(D)中的方法取出文件系统根目录信息。

A .Path

B .DirectoryStream

C .FileStore

D .FileSystem

『考点』:FileSystemgetRootDirectorie方法可以取出文件系统根目录信息。对NIO各个方法还不够熟悉。

  • 『问题二』:正则表达式“(‘|”)(.*?)\1”匹配 “'Hello',"World””的结果是(BC)

A .不匹配

B .'Hello'

C ."World"

D .'Hello',"World"

『考点』:.*是贪婪量词,会尽量匹配更多;而本题中的.*?是懒惰量词,尽量匹配少。所以匹配结果为'Hello'"World"两个。另外,反向引用 \1 代表第一个()中的匹配内容。

  • 『问题三』:正则表达式“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")

『考点』:课本P491提到,java.util.regex.Pattern实例是正则表达式在JVM中的代表对象,需通过compile()方法来取得。在取得Pattern实例后,可以使用matcher()方法指定要比较的字符串。

  • 『问题四』: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循环不能遍历数组中的每一个元素?)(C)

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(以上都能遍历)

『考点』:长度length是成员变量,不是方法,所以不能加括号。C错误。

返回目录

结对及互评

结对对象:20145202马超
结对学习内容:解决对方学习过程中遇到的问题

返回目录

学习感悟及思考

本周学习最大的收获来自于实验和正则表达式的学习。实验的内容很丰富,在夯实基础的同时,也加深我们对知识的理解和掌握。

学习过程中遇到不少问题,畏难情绪时常让我产生退缩的念头。不过,唾手可得的知识真的有价值吗?我看未必。

以本周正则表达式的学习为例,一个非常简单的正则表达式用Java程序运行起来却不符合预期,带着疑惑请教老师,老师建议我先在regextester上跑通再运行程序。可是把程序中的正则表达式复制过去却是匹配的,仔细想了想,明白出错的原因在于忽略了Java中的转义符。

这个问题本可以直接回答我错误在哪里,老师却提供给我一种方法而不仅仅是一个答案。摸索的过程虽然比直接得到答案来的艰难,但授人以鱼不如授人以渔,今后再遇到相似的问题,就都可以自行解决了。

墨非定律告诉我们: 如果你认为事情会向坏的方向发展,那么事情一定会那样。所以,绝不说“不可能”,不断挑战自我才能更快地成长。

返回目录

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 16/16 1/1 18/18 初步认识了Java
第二周 219/235 1/2 28/46 学习了Java的基本语法知识
第三周 766/1001 1/3 23/69 了解对象与参考的关系,以及封装的概念与实现
第四周 984/1985 1/4 18/87 学习了继承与多态的关系,以及接口的多态操作
第五周 866/2851 1/5 12/99 学习了异常处理,学会使用Collection收集对象
第六周 664/3515 1/6 15/114 认识字节流和字符流的继承架构,学习线程与并行API
第七周 469/3984 1/7 13/127 认识Date与Calender
第八周 315/4299 1/8 15/142 学习了NIO、日志、正则表达式等内容,复习第六章“继承与多态”和“Linux 目录结构及文件基本操作”
第九周 553/4852 1/9 20/142 学习了数据库、反射与类加载器、自定义泛型枚举与注释等内容,复习常用命令join、cut、split和sort

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

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

  • 计划学习时间:15小时

  • 实际学习时间:20小时

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

返回目录

参考资料

20155303 2016-2017-2 《Java程序设计》第九周学习总结的更多相关文章

  1. 201521123027 &lt&semi;java程序设计&gt&semi;第九周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2.书面作业 Q1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什 ...

  2. 20145220java程序设计第九周学习总结

    20145220java程序设计第九周学习总结 教材学习内容总结 JBDC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商对接口直接操作,开发人员无须接触底层数据可驱动程序的差异 ...

  3. 201771010134杨其菊《面向对象程序设计java》第九周学习总结

                                                                      第九周学习总结 第一部分:理论知识 异常.断言和调试.日志 1.捕获 ...

  4. 201521044152&lt&semi;java程序设计&gt&semi;第一周学习总结

    本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...

  5. 20145304 刘钦令 Java程序设计第二周学习总结

    20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...

  6. 20145304 刘钦令 Java程序设计第一周学习总结

    20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...

  7. 201621123007 Java程序设计第一周 学习总结

    第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...

  8. 马凯军201771010116《面向对象与程序设计Java》第九周学习总结

    一.理论知识部分 异常.日志.断言和调试 1.异常:在程序的执行过程中所发生的异常事件,它中断指令的正常执行. 2.Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置. 3 ...

  9. 201521123063 JAVA程序设计 第二周学习总结

    1.本周学习重点(2.27-3.5) java中的数组 以二维数组为例,数组名为scores,则 (1)先声明数组 int[][] scores;或int scores[][];或int[] scor ...

  10. 《Java》第九周学习总结

    下载mysql 选择mysql的管理软件 idea可以直接连接 然后用库运行程序,但是没有截图,,因为想在navicat上试试,可惜速度太慢了 打开idea又很慢,所以明天再更新

随机推荐

  1. Laravel安装方法 &lpar;windows&rpar;

    Laravel安装方法(windows) 安装PHP 下载PHP7 http://windows.php.net/download#php-7.0 进入上述网站下载PHP7 选择zip包解压安装 配置 ...

  2. Logstash为什么那么慢?—— json序列化

    今天跟峡谷金桥聊天,询问起Logstash的性能,金桥提示说Logstash中json的序列化是浪费性能的一方面.于是便有了下面的测试: 第一步,造数据 首先需要造一份数据,数据可以通过logstas ...

  3. mySQL笔记1

    create table 表名( 列名 数据类型 是否为空(是否唯一|是否主键|是否外键) 列名 数据类型 …(最后一列不加逗号) )create database 数据库名 insert into ...

  4. &lbrack;Machine Learning&rsqb; 梯度下降(BGD)、随机梯度下降(SGD)、Mini-batch Gradient Descent、带Mini-batch的SGD

    一.回归函数及目标函数 以均方误差作为目标函数(损失函数),目的是使其值最小化,用于优化上式. 二.优化方式(Gradient Descent) 1.最速梯度下降法 也叫批量梯度下降法Batch Gr ...

  5. linux函数的阻塞与非阻塞IO及错误处理

    1.阻塞是指进程等待某一个事件的发生而处于等待状态不往下执行,如果等待的事件发生了则会继续执行该进程.调用系统阻塞函数可能会导致进程阻塞进入睡眠状态. 2.阻塞IO之read读取键盘输入数据 3.li ...

  6. layui弹出层之应用实例讲解

    从酒店管理系统到智能门锁及其现在的资源共享平台,layui框架,我们团队用的比较多的就是这个layui弹出层. layui弹出层,除了页面iframe层我们比较常用还有就是表单校验和其他相关的友好提示 ...

  7. MyLocationService

    package com.baidu.location.service; import android.app.Service;import android.content.Intent;import ...

  8. &lbrack;转&rsqb;How to get return values and output values from a stored procedure with EF Core&quest;

    本文转自:https://*.com/questions/43935345/how-to-get-return-values-and-output-values-from-a- ...

  9. post字符 特殊字符处理【转】

    今天和同事调试接口,由于产品设计的问题,传递的参数没有做任何的限制.同事就在传参数的时候加了些特殊字符到后台,但是后台打印的日志是 null... 然后上网搜了下解决办法:转 https://www. ...

  10. Shiro-Base64加密解密,Md5加密

    Shiro权限框架中自带的加密方式有Base64加密,MD5加密 在Maven项目的pom.xml中添加shiro的依赖: <dependency> <groupId>org. ...