• 20155212 2017-2018-1 《信息安全系统设计》第8周学习总结


    20155212 2017-2018-1 《信息安全系统设计》第8周学习总结

    教材学习内容总结

    • C/S模型
      • 步骤
        • 当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务
        • 服务器收到请求后,解释它,并以适当的方式操作它的资源
        • 服务器给客户端发送一个响应,并等待下一个请求
        • 客户端收到响应并处理它
      • 套接字接口 (socket interface) 是一组函数,它们和 Unix I/O 函数结合起来,用以创建网络应用
      • 函数
        • socket()
        • connect()
        • open_clientfd()
        • bind()
        • listen()
        • open_listenfd()
        • accept()
    • 所谓的并发,其实都是操作系统做的事情。比如多进程多进程是操作系统fork函数实现的、I/O多路复用需要内核挂起进程、多线程需要内核创建和挂起线程
    • 进程:每个逻辑控制流都是一个进程,由内核来调度和维护。因为进程有独立的虚拟地址空间,想要和其他流通信,控制流必须使用进程间通信(IPC)。
    • I/O多路复用:这种形式的并发,应用程序在一个进程的上下文中显示地调度它们自己的逻辑流。逻辑流被模拟为“状态机”,数据到达文件描述符后,主程序显示地从一个状态转换到另一个状态。因为程序是一个单独的进程,所以所有的流都共享一个地址空间。
    • 线程:线程是运行在一个单一进程上下文中的逻辑流,由内核进行调度。线程可以看做是进程和I/O多路复用的合体,像进程一样由内核调度,像I/O多路复用一样共享一个虚拟地址空间。
    • 基于进程的并发编程
      • 构造并发最简单的就是使用进程,像fork函数。由于独立的地址空间,所以进程不会覆盖另一个进程的虚拟存储器。但是另一方面进程间通信就比较麻烦,至少开销很高。
    • 基于I/O多路复用的并发编程
      • 基本思想是:使用select函数,要求内核挂起进程,只有在一个或者多个I/O事件发生后,才将控制返给应用程序。
      • 由于I/O多路复用是在单一进程的上下文中的,因此每个逻辑流程都能访问该进程的全部地址空间,所以开销比多进程低得多;缺点是编程复杂度高。
    • 基于线程的并发编程
      • 线程和进程的执行模型有些相似。每个进程的声明周期都是一个线程,我们称之为主线程。但是大家要有意识:线程是对等的,主线程跟其他线程的区别就是它先执行。
      • 不同线程的栈是对其他线程不设防的,也就是说:如果一个线程以某种方式得到一个指向其他线程的指针,那么它可以读取这个线程栈的任何部分。
    • 四类线程不安全函数:
      • 不保护共享变量的函数。解决办法是PV操作。
      • 保持跨越多个调用的状态函数。比如使用静态变量的函数。解决方法是不要使用静态变量或者使用可读静态变量。
      • 返回指向静态变量的指针的函数。解决方法是lock-and-copy(枷锁-拷贝)
      • 调用线程不安全函数的函数

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

    • 电路中的寄存器和汇编中说的寄存器有区别吗?
      • 在硬件中,寄存器直接将输入和输出线连接到电路的其他部分;在机器级编程中,寄存器代表的是CPU中为数不多的可寻址的字。

    代码托管

    其他

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 96/96 1/1 15/15
    第二周 30/126 1/2 21/36
    第三周 30/156 1/3 21/57
    第四周 10/156 1/4 20/77
    第五周 23/189 1/5 20/97
    第六周 201/390 1/6 8/95

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

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

    • 计划学习时间:10小时

    • 实际学习时间:8小时

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

    参考资料

  • 相关阅读:
    vuejs 2 生命周期钩子函数
    js 原型链
    两段代码说明 闭包,变量提升 问题
    node 模块全局位置
    git 提交代码
    mongoose 由一个版本引起的问题
    box-shadow 让div 立体起来
    flexbox 学习笔记 参考阮一峰老师的blog
    Linq的分页与组合查询的配合使用
    发送邮件和数据导出
  • 原文地址:https://www.cnblogs.com/dky20155212/p/7823359.html
Copyright © 2020-2023  润新知