python - データベース、ネットワークプログラミング

私は、最初の部分にお答えします

  1. OSI 7層モデルとその役割の説明?(2点)

    应用层   
    表示层
    会话层
    传输层   :端口 ,TCP,UDP 四层交换机,四层路由器
    网络层   :ip,路由器,三层交换机
    数据链路层 :mac,arp协议,网卡,二层交换机
    物理层
  2. TCP 3ウェイハンドシェイク、4つのリサイクルプロセスの説明。(3点)

    三次握手:
     1、客户端将标志位SYN置为1,随机产生一个seq=j的值,将该值发送给服务端,客户端进入等待状态
     2、服务端收到标志位SYN=1的值之后,服务端将标志位和ACK都置为1,随机产生一个ack=j+1的值返回给客户端,
     3、客户端收到服务端发送过来的ack数据,检查是否与自己的数值相符,如果一致则正确建立连接,客户端和服务端完成通信,开始传输数据
    四次挥手:
     1、当客户端向服务端发送断开请求之后,这时会发出一个fin标记的报文
     2、当服务端收到客户端fin报文之后,可能正在处理数据,此时服务端会给客户端返回一个ack的报文,
     3、当服务端处理完成数据之后,会再次向客户端发送fin报文,表示此时可以断开连接
     4、客户端收到服务端fin报文之后,会向服务端发送ack报文,客户端收到之后正是断开连接
  3. TCPとUDPの違いは?(3点)

    TCP:上传/下载/发邮件,可靠,面向连接,速度慢,传输数据的长度不限
     1、必须要先建立连接,三次握手
     2、消息传递 可靠传输
     3、断开连接 四次挥手
    UDP:即时通讯,不可靠,面向数据报,速度快,能传输的数据长度有限
     1、不管对方在不在线,都可以直接发送
     2、不占连接
     3、随时可以收发消息
  4. 粘着性のバッグは何ですか?(2点)

    当多条消息在发送之后接收之后变成了一条或者出现接收不准确的情况
    本质是发送的数据之间没有边界
  5. どのようなB / SとC / Sの構造?(2点)

    B/S:指浏览器和服务端架构,只需要在浏览器输入网址就可以直接使用
    C/S:指客户端和服务端
  6. (クライアントとサーバが送信したメッセージを受け取ることができます)簡単なソケットプログラミングを実装する(3分)

    server:
    import socket
    sk = socket.socket()
    sk.bind(("127.0.0.1",9043))
    sk.listen()
    conn,addr = sk.accept()
    conn.send(b'hi')
    msg = conn.recv(1024).decode("utf-8")
    print(msg)
    conn.close()
    sk.close()
    client:
    import socket
    sk = socket.socket()
    sk.connect(("127.0.0.1",9043))
    msg = sk.recv(1024).decode("utf-8")
    print(msg)
    sk.send("傻子".encode("utf-8"))
    sk.close()
  7. プロセス、スレッド、コルーチン差の説明?(3点)

    都可以提高并发能力
    1、进程是计算机资源分配的最小单位
    2、线程是计算机中能被cpu调度的最小资源单位
    3、协程是程序员人为创建出来的
    4、一个进程中可以有多个线程
    5、同一个进程中的线程可以共享进程中的资源
    6、一个进程中至少要有一个线程
    7、协程又可以称为“微线程”,实际上是让一个线程轮番去执行一些任务
    8、资源开销小,能够把单线程的效率提高,协程能够是别的io操作不如线程多
    9、在Python中因为有GIL锁,同一时刻保证一个进程中只有一个线程可以被cpu调度,所以在使用python开发时计算密集型的代码使用多进程,IO密集型使用多线程
    10、默认进程之间无法进行资源共享,如果主要想要通讯可以基于:文件/网络/Queue.
  8. GILロックとは何ですか?(2点)

    GIL锁被称为全局解释器锁,导致了CPython解释器下同一个进程下的多个线程不能利用多核优势,同一时刻保证一个进程中只有一个线程可以被cpu调度,所以在使用cpython开发时计算密集型代码使用多进程,io密集型使用多线程
  9. プロセス間で通信する方法は?(2点)

    进程之间数据是隔离的,意味着不能通信,但我们通过开发工具进行通信。主要是IPC机制
  10. どのようにPythonのスレッド・プール・プロセスのプールを使用するには?(2点)

    python2中没有线程池,python3之后才提供了线程池
    import time
    from concurrent.futures import ThreadPoolExecutor
    def task(arg1,arg2):
        time.sleep(0.2)
        print("任务")
        return arg1 + arg2
    
    #创建线程
    pool = ThreadPoolExecutor(10)
    
    future_lst = []
    for i in range(10):
        #提交线程
        fu = pool.submit(task,i,2)
        future_lst.append(fu)
    #等待线程执行
    pool.shutdown(True)
    for fu in future_lst:
        print(fu.result())#result是固定的写法,阻塞方法
    进程池
    import time
    from concurrent.futures import ProcessPoolExecutor
    
    def task(n1,n2):
        time.sleep(0.2)
        print("开始任务")
        return n1 + n2
    if __name__ == '__main__':
        future = []
        #创建线程
        pool = ProcessPoolExecutor(61)#实际测试这里最大填写的是61 ,加上主进程之后就是62,进程池最大就是63
        for i in range(20):
            pool1 = pool.submit(task,i,1)
            future.append(pool1)
        pool.shutdown(True)
        print("结束")
        for fu in future:
            print(fu.result())
  11. yieldキーワードでコルーチンを実装しますか?(2点)

  12. 非同期ノンブロッキングとは何ですか?(2点)

    程序在执行任务的过程中调用另一个任务,并不等待当前任务结束就继续执行下一个任务
  13. デッドロックとは何ですか?避けるためにどのように?(2点)

    锁两次或者多个锁交叉使用
    避免多次交叉用锁,或者使用递归锁进行上锁
  14. 旗プログラムは、時間のおおよそ何秒Bをfalgに実行されますか?(2点)

    import threading
    import time
    def _wait():
        time.sleep(60)
    # flag a
    t = threading.Thread(target=_wait)
    t.setDeamon(False)
    t.start()
    # flag b
    0-1秒
  15. 旗プログラムは、時間のおおよそ何秒Bをfalgに実行されますか?(2点)

    import threading
    import time
    def _wait():
        time.sleep(60)
    # flag a
    t = threading.Thread(target=_wait)
    t.setDeamon(True)
    t.start()
    # flag b
    
    60秒
  16. 旗プログラムは、時間のおおよそ何秒Bをfalgに実行されますか?(2点)

    import threading
    import time
    def _wait():
        time.sleep(60)
    # flag a
    t = threading.Thread(target=_wait)
    t.start()
    t.join()
    # flag b
    60秒
  17. 最後の番号は0(2ポイント)であるかどうか、プログラムを読んで、特定の実行に確認してください

    import threading
    loop = int(1E7)
    def _add(loop:int = 1):
        global number
        for _ in range(loop):
            number += 1
    def _sub(loop:int = 1):
        global number
        for _ in range(loop):
            number -= 1
    number = 0
    ta = threading.Thread(target=_add,args=(loop,))
    ts = threading.Thread(target=_sub,args=(loop,))
    ta.start()
    ta.join()
    ts.start()
    ts.join()
    
    为0
  18. 最後の番号は0(2ポイント)であるかどうか、プログラムを読んで、特定の実行に確認してください

    import threading
    loop = int(1E7)
    def _add(loop:int = 1):
        global number
        for _ in range(loop):
            number += 1
    def _sub(loop:int = 1):
        global number
        for _ in range(loop):
            number -= 1
    number = 0
    ta = threading.Thread(target=_add,args=(loop,))
    ts = threading.Thread(target=_sub,args=(loop,))
    ta.start()
    ts.start()
    ta.join()
    ts.join()
    
    0
  19. MySQLのデータベースエンジンと共通の違いは?(3点)

    innodb:索引+数据  表结构,持久化存储
    myisam:索引,数据,表结构,支持持久化存储
    memory:表结构
  20. トランザクションとその特性の説明?(3点)

    事务就是一组原子性的sql查询,或者说一个独立的工作单元
    特性:
    1、原子性:一个事物必须市委一个不可分割的最小工作单元,整个事务中的所有操作要么全部成功,要么全部失败回滚
    2、一致性:数据库总数从一个一致性的状态转换成另一个一致性的状态
    3、隔离性:一个事物所做的修改在最终提交一千,对其他事务是不可见的
    4、持久性:一旦失误提交,择期所做的修改就会永久保存在数据库中,
  21. トランザクション分離レベル?(2点)

    读未提交
    不可重复度
    可重复读
    串行化
  22. CHARとVARCHARの違いは?(2点)

    char 0-255字节  定长字符串
    varchar 0-65535字节  变长字符串
  23. チャーとMySQL VARCHARおよび(50)との間の差を意味する50 VARCHARで表されます。(2点)

    50表示最长字节长度为50
  24. MySQLの削除との切り捨て違いは?(2点)

    delete 表示清空表数据但不重置自增字段的设置
    truncate 清空表数据且重置自增字段的设置
  25. 句は、インデックス(3点)を打つことになる次のどの複合インデックスABC(A、B、C)を作成し、A、B、Cの3つのクエリを有する場合

    (a)
    (b)
    (c)
    (a,b)
    (b,c)
    (a,c)
    (a,b,c)
  26. どのような原則複合インデックスを追跡するための指標を打ちますか?(2点)

    要服从最左前缀原则
  27. MySQLは、共通の機能を記載されていますか?(3点)

    sum  求和
    avg  求平均值
    min  求最小值
    count 计数
    max  求最大数
  28. MySQLデータベースのインポート、エクスポートのコマンド何?(2点)

    导入:mysql -h ip -u 账户名 -p密码 数据库名 <  文件路径
    导出:mysqldump -u root -p 数据库名 > 文件路径
  29. SQLインジェクションとは何ですか?(2点)

    注释之后的代码
  30. 簡単には差が参加参加し、内側の左?(2点)

    left join 左外连接,显示左边表的全部数据
    inner join 内连接, 所有不在条件匹配内的数据们都会被剔除连表
  31. 役割を持つSQL文?(2点)

    过滤筛选
    优先级:from > where > group by> select > distinct> having>order by >limit
  32. MySQLデータベースのvarchar型とテキストは文字の最大数を保存することができますか?(2点)

    varchar 65535字节
    text:65535 长文本数据
  33. MySQLのインデックスは、いくつかの方法がありますか?(3点)

    聚集索引
    非聚集索引
  34. インデックスが失敗した場合?(3点)(インデックスが、インデックスを打つことはできません)

    不能从使用了范围的条件开始之后的索引都失效
  35. データベースの最適化?(3点)

    分析sql,优化sql语句
    选择合适的引擎存储
    建立索引
    优化表结构:水平分表和垂直分表,减少表的关联
  36. MySQLのスローログとは何ですか?(2点)

    记录sql语句中超过设定的时间阈值的查询语句。
  37. 教師、授業、学生や部門:次のように設計テーブルには、関係があります。(4点)
    部門と多くの関係、クラスと部門階層に反映される学生対多の関係、等の教師とクラスの間の教師対多の関係。

    1.  写出各张表的逻辑字段
    2.  根据上述关系表
        a.查询教师id=1的学生数
        b.查询科室id=3的下级部门数
        c.查询所带学生最多的教师的id
  38. スタッフのテーブル、フィールド、主キーシド、名前SNAME、セックスセックス(「男性」または「女性」の値)、カリキュラムのコース、フィールドプライマリキーシド、もちろんCNAMEに名前を付け、テーブルSC_Relation、フィールドStudentテーブルの主キーシドとがあります。もちろん、テーブルの主キーシド、共同主キーを形成し、すべてのクエリは、SQLクエリで男の名前の「コンピュータ」のコースを選択して記入してください。(3点)

  39. テーブル間の関係に基づいて、書き込みSQL文(10ポイント)

    画像-20200227104722448

    • すべての学生のクエリ番号、名前、選択科目の合計得点の数。

      select student.name,student.sid,sum(number) from score 
    • クエリの先生は番号の「李」を某。

      select count(id) from teacher where tname like '李%';
    • 出会う60ポイントよりも平均スコア大きいと学校の成績平均点の学生の数。

      select avg(number),student_id from score  group by student_id having avg(number)>60;
    • クエリは、学校のコース年生未満の60点、名前を持っています

      select distinct student.sname,score.student_id from student inner join score on student.sid = student_id where num<60;
    • 「あなたがたのPing」先生のクラススコアのテーブルのレコードを削除します学習。

    • 以下の形式で表示:クエリは、最高得点と最低点の科目コースID、最高スコア、最低スコアを。

    • 各コースのためのクエリの数は、選択科目の学生です。

    • すべての学生は、番号と名前を学ぶだけのコースに在籍してチェックします。

    • 学生の選択科目クエリ「ヤンヤン」先生の助成プログラム、最高達成学生の名前や成績。

    • クエリは、研究や学生の成績平均点の数の2つの以上のコースを失敗しました。

おすすめ

転載: www.cnblogs.com/heyulong1214/p/12371251.html