#1.一行代码实现1--100之和
print(sum(range(0,101)))
#如何在一个函数内部修改全局变量
a =3
def fun():
global a
a =5
fun()
print(a)
#2.列出几个python 标准库
'''
sys: python运行环境的变量和函数,与解释器之间交互。如:sys.argv sys.version
os: 提供python与操作系统的交互os.remove() os.rename() os.getcwd()
re: 正则,检测字符串是否与某种模式匹配re.match() re.search() re.findall() re.sub()
math: 数学类。绝对值 随机数等zipfile:zip文件包的解压'''
#3.python GIL
#全局解释器锁
# https://blog.csdn.net/weixin_41594007/article/details/79485847
# 同一个进程中有多个线程进行,
#4.字典中如何删除和合并字典
# del 删除 update 合并
#5.*args **kwargs 函数定义
# 用于定义函数,*args用于定义不定数量的参数, **kwargs定义不定长度的键值对
def demo(a,*args):
print(a)
for uin args:
print(u)
demo("1","2","3","4")
#6.python的内建数据类型
# int 整型
# bool 布尔型
# str 字符串
# list 列表
# tuple 元祖
# dict 字典
#7.简述面向对象中__new__和__init__区别
# __init__是初始化方法,创建对象后,就立刻被默认调用了,可接收参数
# __new__必须要有返回值,返回实例化出来的实例
#8.简述with方法处理文件
# f = open("./1.txt")
# 打开文件在进行读写的时候可能会出现一些异常状况,如果按照常规的f.open写法,
# 我们需要try,except,finally,做异常判断,并且文件最终不管遇到什么情况,
# 都要执行finally f.close()关闭文件,with方法帮我们实现了finally中f.close
#9.列出python中可变数据类型和不可变数据类型,并简述原理
# 不可变数据类型:数值型、字符串型string和元组tuple不允许变量的值发生变化
# 可变数据类型:列表list和字典dict;
#10.re正则
# re.compile是将正则表达式编译成一个对象,加快速度,并重复使用。
#11.谈谈python内存机制
# 垃圾回收机制
# Python的垃圾回收机制采用引用计数机制为主,标记-清除和分代回收机制为辅的策略。其中,标记-清除机制用来解决计数引用带来的循环引用而无法释放内存的问题,分代回收机制是为提升垃圾回收的效率。
#
# 引用计数
# Python通过引用计数来保存内存中的变量追踪,即记录该对象被其他使用的对象引用的次数。Python中有个内部跟踪变量叫做引用计数器,每个变量有多少个引用,简称引用计数。当某个对象的引用计数为0时,就列入了垃圾回收队列。
1.jwt
Json web token (JWT), 网络应用环境间传递声明而执行的一种基于JSON的开放标准。该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。也可直接被用于认证,也可被加密。
session 认证,遵循的是无状态的协议,一般将登陆信息存放在session会话里,因为其存在内存中,所以无法承受更多的用户。
开销大,拓展性高,如果别截获,安全性
基于token的鉴权。
jwt 主要包含3个方面:
header头部 payload载荷 signature签证
header 主要包含 声明类型 加密方式
palyload 载荷就是存放有效信息的地方
signature 签证信息
其中部分都是通过 base64加密后使用
2.redies
Redis 高性能非关系型(NoSQL)的键值对(key value)数据库。
键的类型只能是字符串,值可以为字符串 列表 集合等
与传统的数据库不同的是 Redis的数据存在内存之中,所以读写速度很快。
读的速度11W/s 次,写的速度是8.1W次/s。
优缺点:
1.读写性能优异
2.支持数据持久化
3支持事务,原子性
4数据结构丰富,还只是hash set
5.支持主从复制,主机将自动将数据同步到丛集,可以进行读写分离。
缺:数据库收到物理内存的限制,是适用海量的数据进行高性能的读碟
很难支持在线扩容
为什么要用REDIS
主要从“高性能”和“高并发”看待问题:
1高性能 缓存操作就是操作内存
2.高并发:数据库处理多个请求,
持久化:
持久化就是把内存的数据 写到磁盘中去,防止服务宕机了内存数据丢失。
Redis 提供两种持久化机制 RDB(默认) 和 AOF 机制:
RDB:是Redis DataBase缩写快照
RDB是Redis默认的持久化方式。按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb。通过配置文件中的save参数来定义快照的周期。
AOF 机制:),则是将Redis执行的每次写命令记录到单独的日志文件中,当重启Redis会重新将持久化的日志中文件恢复数据。
3.linux
查看文件 cat file
显示工作路径 pwd
查看文件和目录 tree
查看端口 netstat -lnp
本地名 hostname
显示系统当前进程 top
改变文件或目录的权限 chmod
显示瞬间进程状态 ps -aux
4 二叉树 红黑树
5.osi系统互联通信参考模型
网络通信协议,操作系统管理机器硬件和软件资源的计算机程序。
client----基于网络通信----server
browser----基于网络通信-----server
应用层 (应用层,表示层,会话层) http(超文本连接协议)
传输层 tcp
网络层 tp
网络接口层 (数据链路层,物理层)
HTTP也是无状态的协议,也就是对于事务处理是没有记忆的,如果需要处理先前的信息,必须要进行重传。
比如最开始访问一个网站是什么样,重启浏览器后访问,仍然是一样的。
所以存储信息就需要用到Cookie和Session。
Cookie和Session
由于HTTP的无状态,每次访问都是一样,但是我们需要一些个性化的定制时,就需要保存一些信息,这就用到了Cookie和Session。
Cookie是在客户端的解决方案,是服务器发给客户端的特殊信息,将cookie信息存放在响应头中,然后存放在客户端中。
客户端再次请求时,会把Cookie回发。
服务器收到后,解析请求头的Cookie,生成对应内容。
比如我们登录一些网站时,浏览器会询问你是否存储账户,就是将账户存入Cookie,下次访问时就不需要再次输入账号进行登录。
这些数据都是存放在客户端(浏览器)中的,所以浏览器通常提供了管理Cookie的功能。
而Session是在服务器端的机制,会在服务器保存信息。
服务器在使用Session时,会解析客户端的请求,并通过Session id操作对应的Session,保存用户的状态信息。
如果客户端是首次请求不包含Session,服务器就为客户端创建一个Session,并生成对应的Session id。
Session的两种实现方式:
url回写,服务器回发的所有页面都带入Session id
在这些页面中点击链接,都会传入Session id,但是如果是url输入访问,就不会有Session id。
通过Cookie来实现,将Session id存在Cookie中
Session更加安全
Cookie可以减少服务器负担
请求头
请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。