python网络编程

Posted 徐佳成

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python网络编程相关的知识,希望对你有一定的参考价值。

python网络编程(进阶)

第一部分

1.简述OSI7层模型及其作用?

# OSI七层模型
应用层
表示层
会话层
数据传输层
网络层
数据链路层
物理层
?
OSI五层协议
应用层
传输层
网络层
数据链路层
物理层

 

2.简述TCP三次握手、四次挥手的流程。

 

3.TCP和UDP的区别?

TCP协议 可靠、面向连接、速度慢、能传输的数据长度不限
?
UDP协议 即时通讯工具,不可靠 面上数据包 速度快 能传输的数据长度有限

 

4.什么是黏包?

一个客户端发送了两个消息,到另一个客户端时,两条消息,自动合并成了一条消息

5.什么是B/S和C/S架构?

B/S浏览器对服务器架构,节省资源,不用更新,不依赖环境

C/S客户端对服务器架构,安全性高,程序庞大

6.请实现一个简单的socket编程(客户端和服务端可以进行收发信息)

# Server
import socket
?
sk = socket.socket()
sk.bind((‘127.0.0.1‘,8000))
sk.listen()
?
conn,addr = sk.accept()
msg = conn.recv(1024).decode(‘utf-8‘)
print(msg)
?
# Client
import socket
sk = socket.socket()
sk.connect((‘127.0.0.1‘,8000))
?
msg = input(‘请输入信息:‘)
sk.send(msg.encode(‘utf-8‘))

 

7.简述进程、线程、协程的区别?

 

8.什么是GIL锁?

 

9.进程之间如何进行通信?

 

10.python如何使用线程池、进程池?

 

11.请通过yield关键词实现一个协程?

 

12.什么是异步非阻塞?

 

13.什么是死锁?如何避免?

 

14.程序从flag a执行到flag b的时间大致是多少秒?

import threading
import time
def _wait():
time.sleep(60)
?
# flag a
t = threading.Thread(target=_wait)
t.setDeamon(False)
t.start()
# flag b

 

15.程序从flag a 执行到flag b的时间大致是多少秒?

improt threading
improt time
def _wait():
time.sleep(60)
?
# flag a
t = theading.Thread(target=_wait)
t.setDeamon(True)
t.start()
# flag b

16.程序从flag a执行到flag b的时间大致是多少秒?

import theading
import time
def _wait():
time.sleep(60)
# flag a
t = theading.Thread(target=_wait)
t.start()
t.join()
# flag b

17.读程序,请确认执行到最后number是否一定为0

import threaing 
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 = theading.Thread(target=_add,args=(loop,))
ts = theading.Thread(target=_sub,args=(loop,))
ta.start()
ta.join()
ts.start()
ts.join()

18.读程序,请确认执行到最后number是否一定为0

import threaing 
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 = theading.Thread(target=_add,args=(loop,))
ts = theading.Thread(target=_sub,args=(loop,))
ta.start()
ts.start()
ta.join()
ts.join()

19.Mysql常见数据库引擎及区别?

 

20.简述事务及其特性?

 

21.事务的隔离级别

 

22.char和varchar的去帮别?

 

23.mysql中varchar与char的区别以及varchar(50)中的50代表的含义

 

24.Mysql中delete和truncate的区别

 

25.where子句中有a,b,c三个查询条件,创建一个组合索引abc(a,b,c),以下哪种会命中索引

(a)
(b)
(c)
(a,b)
(b,c)
(a,c)
(a,b,c)

 

26.组合索引遵循什么原则才能命中索引?

27.列举mysql常见的函数

 

28.Mysql数据库导入、导出的命令有哪些

 

29.什么是sql注入

 

30.简述left join和inner join的区别?

 

31.SQL语句中having的作用

 

32.Mysql数据库中varchar和text最多能存储多少个字符?

 

33.Mysql的索引方式有几种?

 

34.什么时候索引会失效(有索引但无法命中索引)

 

35.数据库优化方案?

 

36.什么是Mysql慢日志?

 

37.设置表,关系如下:教师、班级、学生、科室。科室与教师为一对多关系,教师与班级为多对多关系,班级与学生为一对多关系,科室中需体现层级关系。

1.写出各种表的逻辑字段
2.根据上述关系表
	a.查询教师id=1的学生数
	b.查询科室id=3的下级部分数
	c.查询所带学生最多的教师的id

 

38.有staff表,字段为主键Sid,姓名Sname,性别Sex(值,“男”,‘女’),课程表Course,字段为主键Cid,课程名称Cname,关系表SC_Relatiion,字段为Student表主键Sid和Course表主键Cid,组成联合主键,请用SQL查询语句写出查询所有选“计算机”课程的男士的姓名。

 

39.根据表关系写SQL语句

  • 查询所有同学的学号、姓名、选棵数、总成绩;

  • 查询姓‘李’的老师的个数

  • 查询平均成绩大于60分的同学的学号和平均成绩;

  • 查询有课程成绩小于60分的同学的学号、姓名

  • 删除学习“叶萍”老师可的score表的记录

  • 查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分

  • 查询每门课程被选修的学生数

  • 查询出只选修了一门课程的全部学生的学号和姓名

  • 查询选修“杨艳”老师所授课程的学生中,成绩最高的学生姓名及其成绩;

  • 查询两门以上不及格课程的同学的学号及其平均成绩;

第二部分

1.什么是IO多路复用

2.async/await关键字的作用

3.Mysql的执行计划的作用

4.简述Mysql触发器、函数、视图、存储过程?

 

5.数据库中有表:t_table_date

id		tade_date
1		2018-1-2
2		2018-1-26
3		2018-2-8
4		2018-5-6
...

 

 

 

 

 

 

 

 

以上是关于python网络编程的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

python 有用的Python代码片段

Python 向 Postman 请求代码片段

VSCode自定义代码片段——JS中的面向对象编程

python [代码片段]一些有趣的代码#sort

VSCode自定义代码片段9——JS中的面向对象编程