zoukankan      html  css  js  c++  java
  • 预备作业:课程基础

    20182316胡泊 2019-2020-1 《数据结构与面向对象程序设计》第0周学习总结

    1.预备作业

    你对专业的认识和期望是什么?

    • 百度百科中对于信息管理与信息系统专业的概述是这样的“集信息技术与管理科学于一体、实践性和创新性很强的交叉学科”。
      • 经过我自己一年来的学习,我对这个专业也有了一些自己的理解。
        首先是我们专业不同于计算机专业,比他们多了文科的部分,也多了一些人文精神。
      • 又不同于文科专业,因为我们还是要靠技术吃饭的,无论是考研还是工作,这都是显露在外面的、最重要的能力。
      • 而当职位越来越高,成为一个真正的管理者时,技术已经不是限制的因素了,管理能力与相关理论知识就成为了主要限制因素。
    • 我的期望就是能够在大学期间充实自己,无论是能力还是内心,学到一些我认为对自己以后工作或生活有用的东西,使我的专业能够帮助我更好的发展。

    上学期C语言总代码量大概多少行,本学期实践10000行代码,你觉得这个负担大吗?

    • 大概6000~7000行左右,对于Java的10000行没有什么概念,但我觉得问题应该不大。

    你的C语言学习怎么样?如果学的还行,你认为从C语言学习中比较好的经验是什么?如果学的不好,那么你学的不好的原因是什么?

    • c语言学的不太好,有点马马虎虎的。我觉得原因主要有三方面。
    • 首先,是我自身上机较少,做题库有时会偷懒,不动脑筋,比其他优秀的同学练习量少了很多,做的不够熟练。
    • 其次,就是课时量不够,老师不得已将课时删减并压缩了一部分,由此导致上课听的不是很懂。
    • 最后,就是我的个人定力不足,经常受到手机、电脑等的诱惑,在其中浪费了大量学习时间,这些我都会做出改变,也恳请老师督促。
    • 总结 : 练习课堂诱惑改变

    2.Linux自学笔记

    学习内容总结

    基本概念

    • shell(壳):中间程序,terminal:终端模拟器,console:控制台。

    命令行操作体验

    快捷键:

    • tab : 补全命令(这个暂时还看不懂)
    • 连续两次tab:显示全部候选结果
    • Ctrl+c
      :强行终止当前程序且不退出终端。我的猜测就是在学c语言时,我们是在Windows系统下操作,当出现溢出等情况时,Windows系统会自动给出警告并结束进程,而Linux系统由于自由度高,需要自己动手结束。
    • 上键 :恢复之前输入过的命令(Ctrl+z)
    • 通配符 : (*/?)
      • 用来对字符串进行模糊匹配(比如文件名、参数名),可以代替一个或多个字符,确实很好用。
      $ touch asd.txt fgh.txt
      $ ls *.txt
      
      • 一次性创建多个文件
      $ touch hp{1..10}.txt
      
    - **man命令(manual pages)** : 
      获取帮助(像是新手手册一样的东西)
      - 包括:**NAME , SYNOPSIS(摘要) ,DESCRIPTION(说明) , EXAMPLES(示例) , SEE ALSO(参见)**
      - **==在man中使用搜索==** :
      **n**键切换到下一个关键字所在处,**shift+n**为上一个关键字所在处。使用**Space** 翻页,**Enter** 向下滚动一行,或者使用 **k , j** 进行向前向后滚动一行。按下**h**键为显示使用帮助,按下**q** 退出。
    

    interesting thing :

    • 输出图形字符——banner
    $ sudo apt-get update
    $ sudo apt-get install sysvbanner
    $ banner hpnbbb
    

    用户

    sudoSuperuser do

    允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,面向每个命令。

    chmod

    改变文件的读写许可设置

    • su, su- 与 sudo :
      • su 切换用户,需密码
      • sudo 特权级别运行cmd,需密码且属于sudo组
      • su - 切换用户且环境变量跟着切换
    $ sudo adduser lilei
    $ls /home (默认创建)
    $su -l lilei
    $who am i
    $pwd
    
    • 查看用户组
    • 方法一:groups命令
    $ groups shiyanglou
    shiyanlou:shiyanlou
    

    冒号前为用户名,冒号后为所属用户组

    • 方法二:查看/etc/group文件
    $cat /etc/group |sort
    
    • 将其他用户加入sudo用户组
    $su -l  lilei
    $sudo ls
    $su shiyanlou
    $groups lilei
    $sudo usermod -G sudo lilei
    $groups lilei
    

    linux文件权限

    文件权限

    • r、w、x :imageread 、 write、 execute(执行)
    $ls -dl <目录名>
    

    查看某一个目录的完整属性,而不显示里面的属性

    • 修改文件权限

      • 方法:二进制数字表示

        -image 三组权限:拥有者、所属用户、其他用户,对应一个rwx,也就是一个 7 (111)

    $ echo "echo"hello shiyanlou"">iphone6
    $ chmod 600 iphone6
    

    Linux目录结构及文件基本操作

    • linux与windows目录结构的区别:windows是以盘符为主,而linux是以目录为主来管理文件的。

      • 关于这一点,我自己的感受就是,当在Windows中打开我的电脑后,首先出现的是盘符,而我们通过鼠标就可以打开想要的文件了,而在linux操作时,往往需要通过 " / "来实现文件的打开、编辑、删除等操作,因此更为方便一些。
    • FHS标准(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准),FHS 定义了两层规范

      • 第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该放置设置文件,/bin 与 /sbin 则应该放置可执行文件等等
      • 第二层则是针对 /usr/var 这两个目录的子目录来定义。例如 /var/log 放置系统日志文件,/usr/share 放置共享数据等等。
      • link FHS_2.3 标准文档
        image
    • 路径

      • cd :切换目录
      • cd. :当前目录
      • cd.. :上一级目录
      • cd~ 或cd /home/<用户名>:当前用户的home目录
      • pwd :获取当前路径(绝对路径)
    • 文件的操作

      • 创建
      $ cd/home/shiyanlou
      $ touch test
      $ mkdir mydir (创建一个空目录)
      $ mkdir -p father/son/grandson(创建多级目录)
      
      • 复制文件 cp
      $ cp test father/son/grandson
      
      • 复制目录
      $ cd /home/shiyanlou
      $ mkdir family
      $ cp -r father family
      

      复制目录需要加上-r ,表示递归复制。

      • 删除文件 rm——(remove files or directories)
      $ rm test
      

      当没有权限时用 -f 强制删除

      $ rm -f test
      
      • 删除目录
      $ rm -r family
      
      • 移动文件: mv +源目录文件 + 目的目录
      $ mkdir Documents
      $ touch file1
      $ mv file1 Documents
      
      • 重命名文件:mv +旧的文件名+ 新的文件名
       $ mv file1 myfile
      
      • 批量重命名 rename
      • 查看文件 cat(正序),tac(倒序),nl
      $ cd /home/shiyanlou
      $ cp /etc/passwd passwd
      $ cat -n passwd(-n 显示行号)
      

      nl:添加行号并打印

      -b : 指定添加行号的方式,主要有两种:
      -b a:表示无论是否为空行,同样列出行号("cat -n"就是这种方式)
      -b t:只列出非空行的编号并列出(默认为这种方式)
      -n : 设置行号的样式,主要有三种:
      -n ln:在行号字段最左端显示
      -n rn:在行号字段最右边显示,且不加 0
      -n rz:在行号字段最右边显示,且加 0
      -w : 行号字段占用的位数(默认为 6 位)
      
      • 查看文件类型
      $ file /bin/ls
      

      image

      • ELF:可执行与可链接格式。
      • executable:可执行的。

    使用more和less命令分页查看文件

    $ more passwd
    

    enter向下一行,space向下一屏,q退出。

    目的:减少鼠标使用,简化操作。

    环境变量

    变量

    $ declare tmp
    $ tmp=shiyanlou
    $ echo $tmp
    
    • 与C语言的不同之处:c中变量必须先定义后使用,而linux可以不用 declare 预声明一个变量,直接即用即创建。
    • 并不是任何形式的变量名都是可用的,变量名只能是英文字母、数字或者下划线,且不能以数字作为开头。

    变量类型

    • 当前 Shell 进程私有用户自定义变量,只在当前 Shell 中有效。
    • Shell 本身内建的变量。
    • 从自定义变量导出的环境变量。

    按照时间分类

    • 永久的:需要修改配置文件,变量永久生效
    • 临时的:使用 export 命令行声明即可,变量在关闭 shell 时失效。

    永久生效

    • /etc/bashrc:存放shell变量
    • /etc/profile:存放环境变量

    如果想要添加一个永久生效的环境变量,只需要打开 /etc/profile,在最后加上你想添加的环境变量。

    创建脚本文件

    $ cd /home/shiyanlou
    $ touch hello_shell.sh
    $ gedit hello_shell.sh (gedit :文本编辑器)
    

    加入

    #!/bin/bash
    
    for ((i=0; i<10; i++));do
        echo "hello shell"
    done
    
    exit 0
    

    为文件添加可执行权限:

    $ chmod 755 hello_shell.sh
    

    7(111) / 5(101)

    执行脚本:

    $ cd /home/shiyanlou
    $ ./hello_shell.sh
    

    ./hello_shell.sh 这句的命令是什么?

    创建C语言程序

    $ cd /home/shiyanlou
    $ gedit hello_world.c
    

    在编辑栏中输入

    #include <stdio.h>
    
    int main(void)
    {
        printf("hello world!
    ");
        return 0;
    }
    

    保存后用gcc生成可执行文件

    $ gcc -o hello_world hello_world.c
    

    我认为是用hello_world代替了hello_world.c

    也相当于C语言中的编译过程

    验证:

    • 我在输入内容时少输了一个
    • 于是,在执行gcc命令时出现了

    创建目录,并将文件移入其中

    $ cd /home/shiyanlou
    $ mkdir mybin
    $ mv hello_shell.sh hello_world mybin/
    

    在mybin目录中分别运行程序

    $ cd mybin
    $ ./hello_shell.sh
    $ ./hello_world
    

    删除修改已有变量

    • 修改

    ${变量名#匹配字串} 从头向后开始匹配,删除符合匹配字串的最短数据

    ${变量名##匹配字串} 从头向后开始匹配,删除符合匹配字串的最长数据

    ${变量名%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最短数据

    ${变量名%%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最长数据

    ${变量名/旧的字串/新的字串} 将符合旧字串的第一个字串替换为新的字串

    ${变量名//旧的字串/新的字串} 将符合旧字串的全部字串替换为新的字串

    • 删除变量 : unset命令

    如何让环境变量立即生效

    • source
    $ cd /home/shiyanlou
    $ source .zshrc
    

    source的别名就是 . ,因此上面的命令可替换为:

    $ . ./.zshrc
    

    注意第一个点后面有一个空格,而且后面的文件必须指定完整的绝对或相对路径名,source 则不需要。

    搜索文件——whereis/which/find/locate

    • whereis简单快速
    $ whereis who
    $ whereis find
    

    快:没有从硬盘中依次查找,而是直接从数据库中查询

    • locate 快而全
    $ sudo apt-get update
    $ sudo apt-get install locate
    $ locate /etc/sh
    

    不只是在 /bin 目录下查找,还会自动递归子目录进行查找。

    $ locate /usr/share/*.jpg
    

    查找/user/share/下所有的jpg文件

    注意要添加 * 号前面的反斜杠转义,否则会无法找到

    • which 小而精
      通常使用 which 来确定是否安装了某个指定的软件

    • find 精而细(强大!)
      例:

    $ sudo find /etc/ -name interfaces
    

    find后第一个参数为搜索范围

    find [path] [option] [action]

    与时间相关的命令参数

    参数 说明
    -atime 最后访问时间
    -ctime 最后修改文件内容的时间
    -mtime 最后修改文件属性的时间

    以-mtime为例

    • mtime n:n 为数字,表示为在 n 天之前的“一天之内”修改过的文件
    • mtime +n:列出在 n 天之前(不包含 n 天本身)被修改过的文件
    • mtime -n:列出在 n 天之内(包含 n 天本身)被修改过的文件
    • newer file:file 为一个已存在的文件,列出比 file 还要新的文件名

    文件的打包与解压缩

    压缩包形式

    .zip,.7z
    .rar .gz,.xz,.bz2,.tar,.tar.gz,.tar.xz,.tar.bz2

    zip

    使用 zip 打包文件夹:

    $ cd /home/shiyanlou
    $ zip -r -q -o shiyanlou.zip /home/shiyanlou/Desktop
    $ du -h shiyanlou.zip
    $ file shiyanlou.zip
    

    -r 参数表示递归打包包含子目录的全部内容,-q 参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名。 du 命令查看打包后文件的大小

    $ zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou/Desktop -x ~/*.zip
    $ zip -r -1 -q -o shiyanlou_1.zip /home/shiyanlou/Desktop -x ~/*.zip
    

    1~9: 1表示快但体积大,9表示体积小但慢。

    必须使用绝对路径。

    tar

    • 创建tar包
    $ cd /home/shiyanlou
    $ tar -cf shiyanlou.tar /home/shiyanlou/Desktop
    

    -c 表示创建一个 tar 包文件,-f 用于指定创建的文件名,注意文件名必须紧跟在 -f 参数之后

    • 解包
    $ mkdir tardir
    $ tar -xf shiyanlou.tar -C tardir
    

    解包一个文件(-x 参数)到指定路径的已存在目录(-C 参数)

    总结

    • zip:
      • 打包 :zip something.zip something (目录请加 -r 参数)
      • 解包:unzip something.zip
      • 指定路径:-d 参数
    • tar:
      • 打包:tar -cf something.tar something
      • 解包:tar -xf something.tar
      • 指定路径:-C 参数

    磁盘管理

    查看目录容量

    $ du -h -d 0 ~
    
    • du -h #同--human-readable 以K,M,G为单位,提高信息的可读性。
    • du -a #同--all 显示目录中所有文件的大小。
    • du -s #同--summarize 仅显示总计,只列出最后加总的值。
    • -d +number 表示查看目录的深度。

    vim快捷键的使用

    image

    虚拟机的安装

    我暑假期间按照知乎上一篇的教程,一步步的安装,过程还算顺利,没有什么大的问题。

    https://zhuanlan.zhihu.com/p/42001070

    学习过程中的问题

    • 问题1:
      linux中“ls” 、“ls -a”、“ls -al”的区别
    • 问题1解决方案:在网上查询:
      • ls 显示当前下面的文件及文件夹
      • ls -a 显示当前目录下的所有文件及文件夹包括隐藏的.和..等
      • ls -al 显示当前目录下的所有文件及文件夹包括隐藏的.和..等并显示详细信息,详细信息包括大小,属组,创建时间
    • 问题2:在虚拟机linux的环境中Ctrl+ c/v不能用
    • 问题2解决方案: 打开虚拟机设置,点击进入选项点击客户及隔离,然后启用复制粘贴及文件拖拽。
    • 问题3: $ ./hello_shell.sh 为什么可以执行 命令是什么
    • 问题3解决方案: source命令是bash shell的内置命令。而点命令(即“.”命令)则是source的另一名称。这两个命令都以一个脚本为参数,该脚本将作为当前shell的环境执行,即不会启动一个新的子进程。通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
    • 问题4:英语的不足
    • 问题4解决方案:虽然我的英语基础不算太差,但是让我读全英的文章和许多的专有名词还是很吃力,甚至想要自闭,但是也只能见一个查一个,然后记一个了。
    • 问题5:学习过程中有很多很多缩写,比较难以记忆,尤其是最近在学计算机三级,缩写以及专有名词更多了.
    • 问题5解决方案:将其展开后,查询意思来记忆,就轻松了不少。
  • 相关阅读:
    机器学习粗略认识--线性模型
    LDA主题模型困惑度计算
    python-igraph
    pandas 使用技巧
    pandas读取MySql/SqlServer数据
    聚类模型性能评价指标
    各种编码格式
    利用分块传输吊打所有WAF--学习笔记
    Sql 注入----学习笔记2
    Sql 注入----学习笔记
  • 原文地址:https://www.cnblogs.com/hp12138/p/11483087.html
Copyright © 2011-2022 走看看