zoukankan      html  css  js  c++  java
  • 20191317王鹏宇学习笔记

    第一章:引言

    知识点归纳总结

    主要描述了教材的教学范围,目标读者以及作为计算机科学工程专业教材的适宜性。内容主要包括Unix的历史,Linux的开发以及各种版本,适用于Linux的各种平台与虚拟机,常用的Unix/Linux命令。并且给出了VirtralBox虚拟机和VMware虚拟机的安装教程。


    其中让我最有收获的就是教材给出了学习目标:

    • 动态数据结构的应用
    • 进程概念和进程管理
    • 并发编程
    • 定时器和定时功能
    • 信号,信号处理和进程间通信
    • 文件系统
    • TCP/IP和网络编程

    还有部分Unix/Linux命令:

    Is: Is dirname:列出CWD或目录的内容。
    cd dirname:更改目录。
    pwd:打印CWD的绝对路径名。
    touch filename:更改文件名时间戳(如果文件不存在,则创建文件)
    cat filename:显示文件内容。
    cp src dest:复制文件。
    mv src dest:移动或重命名文件。
    mkdir dirname:创建目录。
    rmdir dirname:移除(空)目录。
    rm filename:移除或删除文件。
    In olefile newfile:在文件之间创建链接。
    find:搜索文件。
    grep:搜索文件中包含模式的行。
    ssh:登录到远程主机。
    gzip filename:将文件压缩为.gz文件。
    gunzip filename.gz:解压.gz文件。
    tar -zcvf file.tgz .:从当前目录创建压缩tar文件。
    tar -zxvf file.tgz .:从.tgz文件中解压文件。
    man:显示在线手册页。
    zip file.zip filenames:将文件压缩为.zip文件。
    unzip file.zip:解压.zip文件。

    实践内容:openeuler系统的安装
    参考网站
    实践截图

    但是我发现这个系统是没有界面的,所以操作起来会很麻烦,于是我又在网上找了一下如何安装界面。
    参考网站
    由于openeuler并没有内置源,所以需要用户自己安装,都2021年了居然还有系统没有内置源,需要用户自己进行配置。
    实践截图:

    然后需要进行GNOME桌面环境的安装:

    但是在安装界面的时候出现了一些错误:

    Error: Failed to download metadata for repo 'osrepo_1': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried

    后来经过在网上查找原因,终于解决了这个问题,原来是因为我在配置源的时候,因为没办法复制粘贴,只能手动输入,结果打错了一个字母,导致源失效。
    参考网站
    后来经过修改终于配置成功:

    但是现在只是成功下载了gnome界面,接下来还需要设置gnome界面开机自启。

    至此,gnome界面已经安装完成,但是根据网上出现的众多bug,这里还不能直接重启,否则可能会遇到gdm无法登录的问题,根据大佬的测试,这个问题是由于 openEuler 的 gdm 的配置文件不全导致的。具体来说,是 /etc/gdm/Xsession 指向的 /etc/X11/Xsession 不存在。当然现在这个bug有没有修复,我也不敢自己尝试,所以只能按照大佬的指导一步步做下来。



    然后就变成了这样:


    可以很明显的看出,在爆出'piix4_smbus 0000:00:07.3: SMBus Host Controller not enabled'这个错误之后,系统就卡在黑屏,不出现界面。
    经过查找,以及网上出现同样问题的帖子,我猜想可能是系统运行内存以及最大存储太小,但是ubuntu又一直试图加载某个模块导致的。于是我重新设置了虚拟机的配置。最终变成了这样:
    很好,成功解决了无法出现界面的问题,但是又出现了新的问题,这也算是一次进步。于是我又开始寻找为什么没有文字显示。

    可以看出,界面是可以正常使用的,只不过所有的中文都变成了很奇怪的方块。

    参考网站
    于是根据我的搜索,原因可能是gnome界面不支持中文,改成英文就好了,根据帖子的指导,成功将语言设置为英语。


    可以看出这个问题也是成功解决,这波可真是把新手能踩的坑全给踩了一遍。而这才只是第一章。

    第二章:编程背景

    知识点归纳总结

    本章介绍了几种常用的基于GUI的编辑器例如vim,gedit等,同时展示了如何使用EMACS来编译执行C语言程序,还有C语言函数的调用以及程序在运行时堆栈的变化。makefile的编写方法,如何使用GDB调试C语言程序。重点解释了C语言结构体和指针的应用,包括链表,二叉树等几种比较常用的算法。还有文件系统的相关操作。


    其中让我最有收获的就是:

    1,C语言程序在编译过程中,需要生成可执行文件,例如:'gcc t1.c'就会生成一个二进制可执行文件a.out,而在linux中,cc链接到gcc,而gcc会把t1.c编译成t1.s,随后t1.s会经过汇编器汇编成t1.o,再经过连接器,最终生成可执行文件a.out。具体内容在教材的22-25页

    2,C语言程序在运行时堆栈的使用情况,具体内容在教材的27-34页

    3,C语言结构体与指针的应用,具体就是链表,二叉树的查找,遍历,插入,删除操作。具体内容在教材53-77


    还有部分Unix/Linux文件系统操作命令规范:

    • mkdir路径名:为给定的路径名创建一个新目录。
    • rmdir路径名:如果目录为空,则删除该目录。
    • cd[路径名]:将当前工作目录更改为路径名,如果没有路径名则更改为“/”。
    • ls[路径名]:列出路径名或当前工作目录的目录内容。
    • pwd:打印当前工作目录的(绝对)路径名。
    • creat路径名:创建一个FILE节点。
    • rm路径名:删除FILE节点。
    • save文件名:将当前文件系统树保存为文件。
    • reload文件名:从一个文件构造一个文件系统树。
    • menu:显示有效命令菜单。
    • quit:保存文件系统树,然后终止程序。

    实践内容:EMACS的安装与使用

    这里我使用的是优麒麟linux系统,因为自带软件商店,可以直接下载EMACS,比较方便:


    使用emacs编写第一个C语言程序:

    参考网站


    真正开始使用之后才发现emacs没有鼠标点选功能,只有一堆快捷键,使用起来有点麻烦,因为各种快捷键需要记。
    在这里贴几种常用的快捷键:

    • C-x,C-f:ctrl+C再按一下ctrl+f可以查找或者创建新文件。
    • C-x,d:ctrl+C再按一下d,可以根据当前文件目录进行查找。
    • C-x,C-s:ctrl+C再按一下ctrl+s,可以保存修改的文件
    • M-x,shell:就是alt+x然后输入shell,可以调出shell命令行。

    下面是C语言结构体的内容,在这之前我们数据结构课上已经重点讲过这部分内容,所以在这里也算是一种温习。下面是基于链表实现的大数运算:


    在这里我突然发现,如果直接在文件夹里面提前创建好文件,用emacs文件查找C-x,C-f是找不到这个文件的,但是如果再emacs里面创建好,就能找到,这个问题到现在我也没有找到解决办法。所以说emacs操作还是很反人类的,我更倾向于使用vim或者vscode来编写代码。
    这里贴几个常用的快捷键和vim命令:

    C+alt+T:打开命令行。
    C+shift+T:建立新标签。
    alt+1/2/3:切换标签。
    history:查看输入历史。
    od:查看文件。

  • 相关阅读:
    JVM学习笔记(三)——类加载机制
    JVM学习笔记(二)——垃圾收集器和内存分配策略
    JVM学习笔记(一) ——Java虚拟机内存结构
    KMP算法及next数组优化
    C Primer Plus课后编程习题
    【小白出错日记】C语言篇
    C语言学习重点提纲
    编译原理学习-形式语言 乔姆斯基文法
    3.11上午课程重点
    FPGA学习-PS2接口
  • 原文地址:https://www.cnblogs.com/wpy-1049363419/p/15252663.html
Copyright © 2011-2022 走看看