每日作业

阅读目录

11月19

11月26

12月3

OPP基础与继承作业12月14

封装与多态作业12月19日

异常与元类作业12月20

本周作业12月21

网络编程作业12月25

 

明日默写:
    带连接循环和通讯循环的TCP通讯模板
作业:
    1.整理TCP三次握手、四次挥手图
    2.使用UDP完成多人聊天
    服务器收到消息后 将客户端地址存储在容器中 再将消息转发给容器中的每个客户端
    注意:容器中每个不同的客户端地址仅存储一份 以避免重复发送 建议使用集合 或 字典来存储

    3.基于TCP开发一款远程CMD程序
        客户端连接服务器后 可以向服务器发送命令
        服务器收到命令后执行 无论执行成功还是十遍 将执行结果返回给客户端
        执行系统指令使用subprocess模块完成

    4.开发一款基于UDP时间服务器  客户端可以指定需要获取的时间格式 如 "YYYY-MM-DD HH:mm:ss"

 

粘包作业12月27

 

明日默写:
    自定义报头 能够传输报头信息即可
作业:
    1.完成课堂上的CMD程序,解决粘包问题
    2.完成文件上传下载
    3.基于基于TCP的登录注册 
        客户端提交注册数据 服务器判断是否重复 并返回注册结果  用户数据写入文件
        客户端提交都登录数据  服务器判断是否得了成功 并返回登录结果
        数据交互直接用json即可 
        1.发送json长度
        2.取出json进行处理

 

多进程作业12月28

 

作业:
    1、改写下列程序,分别别实现下述打印效果

    from multiprocessing import Process
    import time
    import random

    def task(n):
        time.sleep(random.randint(1,3))
        print('-------->%s' %n)

    if __name__ == '__main__':
        p1=Process(target=task,args=(1,))
        p2=Process(target=task,args=(2,))
        p3=Process(target=task,args=(3,))

        p1.start()
        p2.start()
        p3.start()

        print('-------->4')
    效果一:保证最先输出-------->4

    -------->4
    -------->1
    -------->3
    -------->2
    效果二:保证最后输出-------->4

    -------->2
    -------->3
    -------->1
    -------->4
    效果三:保证按顺序输出

    -------->1
    -------->2
    -------->3
    -------->4
    2、判断上述三种效果,哪种属于并发,哪种属于串行?


    3、基于多进程实现并发的套接字通信
        提示:需要在server.bind(('127.0.0.1',8080))之前添加一行
            server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)

        思考每来一个客户端,服务端就开启一个新的进程来服务它,这种实现方式有无问题?



    4、预习互斥锁,编写模拟抢票程序:http://www.cnblogs.com/linhaifeng/articles/7428874.html#_label5

    5、什么是多道技术 具体实现原理是什么?
    6、CPU在遇到IO或时间过长时会切换,比较两种情况带来的好处与不足

 

12月29日

 

今日作业:
    1、基友多进程实现并发的套接字通信,完成如下功能:
        1、客户端链接功成功后,先登录,登录成功后才可以执行其他功能
        2、登录成功后可以执行下载功能
        3、登录成功后可以执行上传功能


    2、生产者消费者模型理论+代码实现

本周作业:
    29日 
        完整编写 选课系统   我们用md5工具校验你的代码
        整理并发编程多进程相关执行点 

    30-31日 
        编写FTP作业 题见ttp://www.cnblogs.com/linhaifeng/articles/6129246.html#_label15  无需考虑多用户并发


    各组长需在每天下午9点前统计各组员任务完成进度 并汇报给我
    没有按时完成等我消息

 

多线程作业1月2日

 

4月26作业:
    1、基于多线程实现并发的套接字通信
    2、基于多线程+TCP协议实现上传下载功能
    3、编写一个文本处理工具,总共三个任务,一个接收用户输入,一个将用户输入的内容格式化成大写,一个将格式化后的结果存入文件
    4、总结互斥锁、信号量,参考博客http://url.cn/5DMsS9r
    5、阅读线程文章 加强理解http://www.cnblogs.com/linhaifeng/articles/7430082.html#_label12

 

全局解释器锁作业1月3日

    1、整理GIL解释器锁,解释以下问题
        1、什么是GIL
        2、有了GIL会对单进程下的多个线程造成什么样的影响
        3、为什么要有GIL
        4、GIL与自定义互斥锁的区别,多个线程争抢GIL与自定义互斥锁的过程分析
        5、什么时候用python的多线程,什么时候用多进程,为什么?

    2、进程池与线程池
        1、池的用途,为何要用它
        2、池子里什么时候装进程什么时候装线程?

    3、基于线程池实现一个可以支持并发通信的套接字,完成以下功能?
        执行客户端程序,用户可选的功能有:
        1、登录
        2、注册
        3、上传
        4、下载

        思路解析:
        1、执行登录,输入用户名cgon,密码123,对用户名egon和密码进行hash校验,并加盐处理,将密文密码发送到服务端,与服务端事先存好用户名与密文密码进行对比,对比成功后,
        在服务端内存中用hash算法生成一个随机字符串比如eadc05b6c5dda1f8772c4f4ca64db110
        然后将该字符串发送给用户以及登录成功的提示信息发送给客户端,然后在服务存放好
            current_users={
                'a3sc05b6c5dda1f8313c4f4ca64db110':{'uid':0,'username':'alex'},
                'e31adfc05b6c5dda1f8772c4f4ca64b0':{'uid':1,'username':'lxx'},
                'eadc05b6c5dda1f8772c4f4ca64db110':{'uid':2,'username':'cgon'},

            }

        用户在收到服务端发来的'eadc05b6c5dda1f8772c4f4ca64db110'以及登录成功的提示信息后,以后的任何操作都会携带该随机字符串'eadc05b6c5dda1f8772c4f4ca64db110‘,服务端会根据该字符串获取用户信息来进行与该用户匹配的操作

        在用户关闭连接后,服务端会从current_users字典中清除用户信息,下次重新登录,会产生新的随机字符串
        这样做的好处:
            1、用户的敏感信息全都存放到服务端,更加安全
            2、每次登录都拿到一个新的随机的字符串,不容易被伪造
        
        2、执行注册功能,提交到服务端,然后存放到文件中,如果用户已经存在则提示用户已经注册过,要求重新输入用户信息

        3、执行上次下载功能时会携带用户的随机字符串到服务端,如果服务端发现该字符串not in current_users,则要求用户先登录
全局解释器锁作业

作业1月4日

 

作业1月5日

并发周末作业:
    1.使用gevent实现TCP并发程序
    2.简述协程的工作原理,以及优缺点
    3.使用多路复用完成TCP并发程序,在课堂代码的基础上增加客户端连接断开的异常处理,
    4.使用多路复用 完成登录注册功能
    5.总结阻塞IO 非阻塞IO 多路复用的优缺点
    6.预习mysql
    7.周一默写多路复用服务器端

 作业1月7日

 

1月8日
#
#### 1、整理博客 ##### 2、详细解释下列mysql执行语句的每个参数与参数值的含义 ​ mysql -hlocalhost -P3306 -uroot -proot ##### 3、创建以下数据库 ​ db1:采用默认编码 ​ db2:采用gbk编码 ​ db3:采用utf-8编码 ​ -- 将db2数据库编码修改为utf-8编码格式 ​ -- 删除db3数据库 ##### 4、创建表操作 -- 在db1数据库内,为其添加一个t1表,表有两个字段(id int, name char) ​ -- 在db2数据库内,为其添加一个t2表,表有三个字段(name char, age int, phone int) ​ -- 思考完成:在db2数据库内,为db1添加表tt1,字段可以自由定义 ​ -- 修改db1库t1表的name字段char类型长度为20,db2库t2表的age字段int类型长度为3 ​ -- 删除思考题中的tt1表 ​ -- 使用三种查询表的方式 ##### 5、记录操作 -- 一次插入三条数据,为t1插入三条数据 ​ -- 一次插入一条数据,分三次为t2表插入三条数据 ​ -- 分别查询显示t1,t2表下的所有数据 ​ -- t1表下根据id条件更改name名字 ​ -- t2表下工具name删除一条数据 ##### 6、日考 ``` mysqladmin -uroot -p12345 password "admin" create database school charset utf8 create table school.stu(name char, age int, sex char) show create table school.stu; alter table school.stu change sex gender char(5) ```

 

 

 

1月9日作业

##### 1、整理博客

##### 2、创建一个stu表,字段有:自增主键id,不为空姓名,默认值性别(枚举类型),无限制身高

##### 3、为stu表依次插入以下三条数据

​    i)插入一条包含id,name,gender,height四个信息的数据

​    ii)插入一条name,gender,height三个信息的数据

​    iii)插入一条只有name信息的数据

##### 4、实现新表new_stu对已有表stu的字段、约束及数据的拷贝

##### 5、创建一张有姓名、年龄的teacher表,在最后添加工资字段,在姓名后添加id主键字段

##### 6、思考:将5中id字段移到到表的最前方,形成最终字段顺序为id、姓名、年龄、工资

##### 7、完成 公民表 与 国家表 的 多对一 表关系的创建

##### 8、完成 学生表 与 课程表 的 多对多 表关系的创建

##### 9、完成 作者表 与 作者简介表 的 一对一 表关系的创建(思考为什么要这样设计)

 今日日考答案

posted @ 2018-12-28 10:49  王苗鲁  阅读(103)  评论(0)    收藏  举报