python基本知识点

#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地址,即虚拟主机。

你可能感兴趣的:(python基本知识点)