zoukankan      html  css  js  c++  java
  • 垂死挣扎-3

    mode有以下几种方式:

    打开方式说明
    r 以只读方式打开文件,该文件必须存在。
    r+ 以读/写方式打开文件,该文件必须存在。
    rb+ 以读/写方式打开一个二进制文件,只允许读/写数据。
    rt+ 以读/写方式打开一个文本文件,允许读和写。
    w 打开只写文件,若文件存在则长度清为0,即该文件内容消失,若不存在则创建该文件。
    w+ 打开可读/写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
    a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留(EOF符保留)。
    a+ 以附加方式打开可读/写的文件。若文件不存在,则会建立该文件,如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(原来的EOF符 不保留)。
    wb 以只写方式打开或新建一个二进制文件,只允许写数据。
    wb+ 以读/写方式打开或建立一个二进制文件,允许读和写。
    wt+ 以读/写方式打开或建立一个文本文件,允许读写。
    at+ 以读/写方式打开一个文本文件,允许读或在文本末追加数据。
    ab+ 以读/写方式打开一个二进制文件,允许读或在文件末追加数据。
     
     
    三元运算符,问号前面是表达式,如果表达式为true就返回问号后面的,否则就返回冒号后面的。
    这题a=5?0:1,条件表达式为是数字5,这个数是大于0的数,为真,所以返回问号后的表达式0

    对于 a[3][4],a是一个指针数组,大小为3,里面三个元素就是该二维数组的每一行第一个元素的地址。
    1、*(a[2]+1),   a[2]就是第三行首元素的地址,a[2]+1 则地址向右偏移1,*(a[2]+1)就是取该地址的元素,也就是a[2][1]
    2、*(*(a+2)+1), *(a+2) 和a[2]是等价的。所以*(*(a+2)+1)也是表示a[2][1]
     
    下列程序的打印结果是?
    1
    2
    3
    char p1[15]= "abcd",*p2= "ABCD", str[50]= "xyz"
    strcpy(str+2,strcat(p1+2,p2+1)); 
    printf("%s",str);
    strcat(p1+2,p2+1); //返回以p1+2为首的字符串,即"cdBCD"
    strcpy(str+2,strcat(p1+2,p2+1)); //将"cdBCD"copy到str+2位置上,并覆盖后面的内容,此时str为"xycdBCD"

    以下程序的输出结果是? 
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h> main()
    {
        char a[10]={ '1','2','3','4','5','6','7','8','9',0},*p; int i;
        i=8;
        p=a+i;
        printf("%s ",p-3); 
    }
    1、p指向a[5]
    2、“%s”输出直到''的字符串
    3、最后的0为数字而非字符‘0’,ASIIC码中0为空字符
     
    所以输出的结果是   6789  而不是6789
     
    ++ 是一目运算符,自增运算,它只能用于一个变量,即变量值自增1, 不能用于表达式。
    ++(a++) 里,小括号优先。
    (a++) 是 表达式,按运算规则,不能对 表达式 作 自增运算.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    ARP -s inet_addr eth_addr [if_addr]
     
    ARP -d inet_addr [if_addr]
     
    ARP -a [inet_addr] [-N if_addr] [-v]
     
     
     
      -a            通过询问当前协议数据,显示当前 ARP 项。
     
                    如果指定 inet_addr,则只显示指定计算机
     
                    的 IP 地址和物理地址。如果不止一个网络
     
                    接口使用 ARP,则显示每个 ARP 表的项。
     
      -g            与 -a 相同。
     
      -v            在详细模式下显示当前 ARP 项。所有无效项
     
                    和环回接口上的项都将显示。
     
      inet_addr     指定 Internet 地址。
     
      -N if_addr    显示 if_addr 指定的网络接口的 ARP 项。
     
      -d            删除 inet_addr 指定的主机。inet_addr 可
     
                    以是通配符 *,以删除所有主机。
     
      -s            添加主机并且将 Internet 地址 inet_addr
     
                    与物理地址 eth_addr 相关联。物理地址是用
     
                    连字符分隔的 6 个十六进制字节。该项是永久的。
     
      eth_addr      指定物理地址。
     
      if_addr       如果存在,此项指定地址转换表应修改的接口
     
                    的 Internet 地址。如果不存在,则使用第一
     
                    个适用的接口。
     
    示例:
     
      > arp -s 157.55.85.212   00-aa-00-62-c6-09.... 添加静态项。
     
      > arp -a                                  .... 显示 ARP 表。
     
     
    虚拟内存的作用同物理内存一样,只不过是从硬盘存储空间划出的部分,来完成内存的工作,由于不是真正的内存,所以被称为虚拟内存。因为计算机所支持的最大内存是由该计算机的地址位数决定的,也就是计算机的最大寻址能力。例如,32位机的寻址能力为2的32次方,大约为4G。所以虚拟内存的大小也受计算机地址位数的限制。不过这到题单选D是由前提条件的,那就是磁盘空间足够大,否则严格意义上讲应该多一个选项A。

    虚存的大小要同时满足2个条件:
    1.虚存的大小  ≤ 内存容量和外存容量之和。
    2.虚存的大小  ≤ 计算机的地址位数能容纳的最大容量。
     
     
    在一个请求页式存储管理中,一个程序的页面走向为 4, 3, 2, 1, 3, 5, 4, 3, 2, 1, 5,并采用 LRU 算法。假设分配给该程序的存储块个数 M 分别为 3 和 4,则该访问中发生的缺页次数 F 分别是?
    LRU(最近最少使用)该算法实现中最常用的是链表这个数据结构,将即将插入存储块的页面P与存储块中页面比较,如果存储块中已经存在页面P,则将链表中的页面P置于表头,不然缺页次数+1,如果这时链表长度达到目标值(存储块满),则去掉链尾的页面(也是最近最少使用的页面),并将页面P插入链表头。
    例如存储块长度为3的时候,页面访问顺序为4, 3, 2, 1, 3, 5, 4, 3, 2, 1, 5
    访问            链表              缺页+
    4                    4                   1
    3                   34                  1
    2                  234                1
    1                  123                1
    3                  312                0
    5                  531                1
    4                  453                1
    3                  345                0
    2                  234                1
    1                  123                1
    5                  512                1
    所以当存储块为3时候,最后统计缺页次数为9次

     
    第三范式需要确保数据表中的 每一列数据都和主键直接相关,而不能间接相关 。
    第一范式:原子性,字段不可分割
    第二范式:没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。
    第三范式:不能存在传递依赖
     
     
    RSA一般为1024或2048位
    运行速度:RSA<AES
    安全性依赖于大数分解
    RSA非对称加密算法
     
     
    假设在 n 进制下,下面的等式成立,n 的值是? 
    567*456=150216
    直接看俩数最后一位,7×6=42,除以9和18都余6,所以9和18俩答案中的一个 再看,按十进制计算567×456=258552 比 150246(n进制)要大,所以n要比十进制要大,所以选择18进制。
     
    假设n进制,则有(5*n   2   +6*n+7) * (4*n   2   +5*n+6) = n     5     +5*n   4   +2*n   2   +n+6,简化以后可以得到
    15*n 4 +49*n 3 +86*n 2 +70*n+36=n 5 ,两边同时除以n 5 ,可以得到15/n+49/n 2 +86/n 3 +70/n 4 +36/n 5 =1;
    要让等式成立,n肯定是大于15的,所以选D。
     
    567*456=(5n^2+6n+7)*(4n^2+5n+6)=20n^4+49n^3+88n^2+71n+42 ....(1) 
    150216=n^5+5n^4+2n^2+n+6 ...............................(2) 
    //[x]表示对x取整 
    则: (1)式对n取模=42 mod n ...(3) 
       (2)式对n取模=6 ...........(4) 
    由(1)=(2),综合(3),(4)式得: 
       42 mod n=6 (5) 
    设 a=[42/n] ,则由(5)式子得: 
       a*n=36       (6) 
    由(6)可解得 n=9,12,18,36 .......(7) 

       [(1)/n] mod n=[(2)/n] mod n 
    => [71+42/n] mod n=1.........(8) 

    把(7)的解代入(8),检验可得n=18.
     
     
     
     
    数据包传递过程:
    在网络层IP数据包向上传递的时候会查看数据包中的协议类型
    如果协议类型是TCP,则交给TCP
    如果协议类型是UDP,则交给UDP
    到了传输层,再根据端口号将数据传送到应用层相应的应用程序,TCP、UDP端口是独立的
    所以D是错的 
    实际上当TCP和UDP提供相同的服务时,会选用相同的端口号(应该是为了方便吧)
     
    说明:图片截自TCP/IP协议详解
     
    TCP、UDP可以绑定同一端口来进行通信。
    类似于文件描述符,每个端口都拥有一个叫端口号(port   number)的整数型标识符,用于区别不同端口。由于TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立,如TCP有一个255号端口,UDP也可以有一个255号端口,二者并不冲突。 
    参考:http://nigelzeng.iteye.com/blog/1209538
     
     
     mac地址是物理地址,它是不会改变的;
     
        由于IP地址包含了不同的网络段,
     
        所以,不同的网络中ip地址要变化,
     
        否则无法进行解析,也就无法与其他主机进行通信。
     
     
    关于 Linux 系统上同一个程序的多个进程实例共享一个 TCP 监听端口的说法, 哪个不正确?
    每个进程都使用 SO_REUSEPORT 选项,然后绑定同一个地址和端口
    每个进程分别绑定不同的网卡地址的同一端口
    第一个进程先绑定到监听地址端口, 然后 fork 子进程共享使用
    每个进程分别绑定一次, 但只有最后一个调用的进程才能收到数据

    在没有SO_REUSEPORT 之前都是使用fork来让多个进程监听同一端口。AC对。
    D,确实只有一个进程收到数据,但是是多个进程竞争连接请求。
    B正确
     
    D是竞争调度的结果,而不是最后调用的进程收到数据。
    A使用SO_REUSEPORT,绑定统一地址和端口。
    B分别绑定 不同的网卡地址的同一端口,TCP的四元组并不冲突。
    C使用fork创建子进程共享,也没有问题。
  • 相关阅读:
    数据库镜像搭建
    关于开发人员数据库权限配置以及规范数据库升级流程
    带CheckBox列头的DataGridView
    查询整个数据库中某个特定值所在的表和字段的方法
    SQL Server 2008中获取数据库所有表及其字段名称、类型、长度的SQL
    关于已经上线项目的升级的启示
    SQL语句恢复数据库时一直显示“正在还原”
    带CheckBox列头的DataGridView(一)
    SQL Server中事务处理的注意事项
    group by 使用
  • 原文地址:https://www.cnblogs.com/Hanzo/p/5877660.html
Copyright © 2011-2022 走看看