• 关于Linux和编程背景(第一、二章)



    系统安全

    • CIA

      • 机密性:不可见
      • 完整性:不可改
      • 可用性:可读
    • 黄金法则

      • 认证:你是谁?身份可认
      • 授权:你干了什么?行为可信
      • 审计:谁什么时候做了什么?可查
    • 安全威胁

      • 无知之错
      • 无能之错
    • 密码

      • 国家密码管理局
      • 标准化:密标委、全国信息安全标准化技术委员会

    关于Linux和编程背景(第一、二章)

    问题与解决思路(最有收获的内容)

    1. 这本书要解决什么问题?介绍了什么内容?

      要搞清楚这个问题,就要对书本目录和导论进行系统梳理。

      在关于编程的课上我们已经习得的有:基本语法、数据类型、简单的程序结构以及I/O库函数的使用。实际上,还需了解到软件工具、程序开发步骤和程序执行的运行时环境,书中对程序开发步骤有详细介绍。书中还探讨了动态数据结构的实际应用,进程的概念,并发编程,定时器和定时功能,进程间通信,文件系统,网络编程。

    2. 硬链接的实现?

      读写时,inode(index node)索引节点,inode本质是一个结构体,存储着文件详细信息。

      删除时,只是删除硬链接计数,当删到0时,再真正去删除inode。

    1. 关于openEuler几乎没有现成的教程?

      虽然关于openEuler几乎没有现成的教程供参考学习,但常有一种观点称openEuler是centOS换了壳,足见两者间相似度较高。centOS的教程相对较成熟些,可供学习参考。

    知识点归纳

    • 清楚自己会的是什么,聚焦学习自己不会的东西,这是求知上进过程中最为基本的。

      在课上我们所习得的有:基本语法、数据类型、简单的程序结构以及I/O库函数的使用。实际上,还需了解到软件工具、程序开发步骤和程序执行的运行时环境,书中对程序开发步骤有详细介绍。书中还探讨了动态数据结构的实际应用,进程的概念,并发编程,定时器和定时功能,进程间通信,文件系统,网络编程。

    • Linux的历史:Linux起源于Unix系统,是一个类Unix系统。

    • Linux采用二级启动。对于Ubuntu Linux,具有一些特性。

      • 输入sudo command,完成口令验证,可以运行需要超级用户权限的命令

      • 每次打开伪终端,sh都会先执行.bashrc文件来设置路径,以包含当前工作目录

      • 在64位Linux下使用

        gcc -m32 t.c # compile t.c into 32-bit code
        

        可以产生32位代码

      • 具有友好的GUI界面,不过sh要比其通用和强大得多

      • 可连接到计算机网络

    • Linux文件系统采用树形组织结构。文件:所有能够存储或提供信息的事物。

      • 该树型结构中,父节点也称作目录节点,其中可能包含其他目录和文件
      • 树中的叶节点称作非目录文件,其中包括常规文件和特殊文件。
        • 常规文件:要么包含普通文本,要么包含可执行的二进制代码。特别地,内容为其他文件的路径名的常规文件也称为符号链接文件。
        • 特殊文件:是/dev目录中的条目。包括字符特殊文件(字符I/O),块特殊文件(块I/O),网络(套接字)特殊文件、命名管道等其他类型。
    • Linux系统管理。用户账户信息明态保存在/etc/passwd文件中。其中用户密码以密态保存在/etc/shadow文件中。

    • 编程背景。

      • 基于GUI的文本编辑器

        书中介绍了vim,gedit,emacs。他们都支持直接输入、全屏模式下的文本编辑、关键词搜索替换。

        其中,Emacs不仅是一款文本剪辑器,还提供了软件开发的IDE。

        需要了解C语言中变量的分类。

      • 程序开发的步骤和函数调用

        1. 创建源文件

        2. 用gcc把源文件转换成二进制可执行文件。gcc的转换包含三个步骤:编译,形成.s文件—汇编,形成.o文件—链接,将.o文件和必要的库函数组合成单一的二进制可执行文件a.out。

          • 链接有两种。

            静态链接:a.out文件完整、独立,但通常非常大

            动态链接:共享库函数,减小每个a.out文件的大小

          • a.out文件包含文件头、代码段、数据段、符号表。

            在执行过程中,堆栈大小通常是默认值,操作系统会试着处理运行期间可能出现的堆栈溢出。

            程序的异常终止有错误导致的陷入、Ctrl+C产生的硬件中断、使用kill命令向通过pid识别的目标进程发送信号三种。

        3. 函数调用序列在堆栈中保持为一个链表。

      • emacs,makefile和gdb

        makefile在简单应用上和sh命令的差别不大,但makefile的宏定义是较为特别的。makefile支持变量。

        emacs通常通过makefile编译链接源代码。为了生成一个二进制可执行文件以便GDB进行调试,需要使用-g标记,否则GDB将无法调试生成的可执行文件。

        程序开发的最佳方法是仔细设计程序的算法,然后根据算法编写程序代码,而不是依赖调试工具。这是因为在某些情况下,即便是GDB这样强大的调试工具用处也不大。

    实践内容

    1. openEuler的安装与使用

      openEuler安装的大部分教程可参考:OpenEuler小白式安装教程

      尤其需要注意,教程里没有的,在安装界面还需要配置的两个地方。

      • 在软件选择中,选择最小安装后,还应该选择右侧的“标准、开发工具、系统工具”三项,方便进入终端之后,有一定的工具可以用

      • 检查网络和主机名一项,看看网络是否连接,是否有IP地址,默认路由,和DNS,顺便改一下主机名;

      • 这个截图一定要保留一下,如果后面网络出了问题,要用截图里的信息配置网络
        关于网络果然出了问题

    1. openEuler的git安装与使用

  • 相关阅读:
    android 代码上传到jcenter
    android library打包成aar形式供别的项目引用
    使用AndroidStudio导入github项目
    使用Postman在Chrome下进行rest请求测试
    Android 编码规范
    GsonFormat根据返回值json快速构建Model
    码云git使用四(分支的创建,使用和合并)
    码云git使用三(本地代码合并)
    码云git使用二(从码云git服务器上下载到本地)
    计算最长英语单词链
  • 原文地址:https://www.cnblogs.com/kenneth2012/p/16656334.html
Copyright © 2020-2023  润新知