目录
20.什么是笛卡尔积? 在表和表关联的时候,如何避免笛卡尔积
21.sql语句中什么时候用where什么时候用having
23.什么是GIL,GIL带来的影响,GIL是线程安全的吗 ,为什么
27.队列和栈这两种数据结构的区别,分别举一个实际应用场景,即用在什么地方?
1.类型:
-第一个字符表示文件类型。
- "d" 表示目录
- "-" 表示常规文件
- "l" 表示符号链接
- "p"表示管道文件
- "b"表示块设备
- "c"表示字符设备文件
- "s"表示套接口文件
- "x"表示可执行文件
-后续三组字符,文件的权限。
- "r"表示读权限,
- "w"表示写权限,
- "x"表示执行权限。
2.压缩格式:
gzip : 一种常见的文件压缩格式,它使用DEFLATE算法进行压缩。您可以使用 gzp 命今对文件进行压缩和解压缩。
bzip2:一种高效的文件压缩格式,它使用Burrows-Wheeler变换和霍夫曼编码进行压缩可以使用 bzip2命令对文件进行压缩和解压缩,bzip2 file.txt 将文件 filetxt 压缩为 file.txt.bz2 bzip2 -d file.txtbz2 解缩file.txt.bz2 文件
tar:tar是一种归档文件格式,它用于将多人文件和目录打包成一个单独的文件。tar文件堂与其他压缩算法(如gzip或bzip2) -起使用,以创建.tar.gz或.tar.bz2文件您可以使用 tar 命令创建和提取tar文件。例如,tar -vf archivetar file1file2 创建一个名为 archive.tar 的tar文件,包含文件 file1 和 file2 。 tar -xvf archive.tar 提取tar文件。
zip:是一种常见的压缩格式,它用Delate算法进行压缩。与5zip和bzip2不同,Z格式可以同时压结多人文件和目录,并且在Windows和其他操作系统上也广泛使用。您可以使用 ip 命今创建和提取zip文件。zp archive.zip file1file2 创建一个名为 archive.zip 的zip文件,包含文件 file1 和 file2 unzip archive.zip 提取zip文件。
3.Linux查看时间命令:
date命令显示时间
timedatectl命令也可以用来更改系统时区。
设置上海时区:timedatectl set-timezone Asia/Shanghai
列出所有可用的时区:timedatectl list-timezones。
4.Linux下载requests包:
./pip3 install requests -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com,使用豆瓣镜像下载提高下载速度。
5.Linux下载flask包:
pip3 install flask 下载flask框架,速度过慢使用 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 可以提高速度。
6.Linux查看文件前两行:
查看文件前两行:cat aaa.txt | head -n 2查看文件后两行:cat aaa.txt | tail -n 2
查看某个字母出现的次数:grep -o 'a' aaa.txt | wc -l。
7.查看文件的内容:
- cat file1从第一个字节开始正向查看文件的内容
- tac file1 从最后一行开始反向查看一个文件的内容
- more 文件名,查看一个长文件的内容执行完命令可以按空格进行向上滚动
- less 文件名,查看一个长文件的内容执行完命令可以按空格进行向下滚动
- head -2 文件名,查看一个文件的前两行
- tail -2 文件名 查看一个文件的最后两行
- tail -f 文件名 实时查看被添加到一个文件中的内容
8.Linux返回根目录方法:
- 直接输入cd
- 输入cd~
- 输入cd/
9.Linux的python日志模块位置:
linux的日志文件在根目录下的/var 可以看到log.py在进入带log.py里面,这里面保存着你的操作和项目的动作和错误信息。
10.在Linux快速找到python的软件包:
首先进入python 在导入想要查询的软件包直接print()软件包会显示包的路径。
11.对于./的理解
./是针对于执行当前路径下的指定文件,但是如果文件不在当前目录就要标注出来,不然会提示找不到该文件命令。比如python在bin目录下,你现在的位置不在bin目录下,运行python需要加上./python才可以使用
12.python的软连接
1.软连接又称为符号连接,类似于Windows系统中的快捷方式
2.软连接可以解决一些文件路径过长或者文件太多的问题,可以提高代码编写和管理的效率
3.在Python中,文件夹和文件都可以设置软链接,通常使用os库中的函数实现
13.Linux的python安装包模块位置:
在python的/usr/local/lib/python3.6/site-packages路径可以找到所有安装包。
14.pip和pip3的区别:
pip是现代化的安装包,pip可以在本地,url,以及其他源上下载软件包很灵活,可以进行版本的限制,同时可以卸载软件包在没有管理员的权限下也可以使用。
pip3是在安装了python3.x版本时一起下载的就是指定啦当前版本的pip,为了不与其他python版本混淆如pip3.7就是python3.7的pip工具。
15.面向对象的三大特征:
1. 封装:属性和方法放到类内部,通过对象访问属性或者方法,隐藏功能的实现细节.当然还可以设置访问权限;
2. 继承:子类需要复用父类里面的属性或者方法,当然子类还可以提供自己的属性和方法;
3. 多态:同一个方法不同对象调用同一个方法功能的表现形式不一样,例如:1.不同的两个对象,字符串的加法和整数的加法,同样是加法,实现的功能是不一样的;2.这两个对象之间没有任何直接继承关系,但是所有对象的最终父类都是元类;
16.序列化反序列化
模块 pickle 实现了对一个 Python 对象结构的二进制序列化和反序列化。 "pickling" 是将 Python 对象及其所拥有的层次结构转化为一个字节流的过程,而 "unpickling" 是相反的操作,会将(来自一个 binary file 或者 bytes-like object 的)字节流转化回一个对象层次结构。 pickling(和 unpickling)也被称为“序列化”, “编组” 1 或者 “平面化”。而为了避免混乱,此处采用术语 “封存 (pickling)” 和 “解封 (unpickling)”。
17.jwt 是什么?
JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。
18. 什么时候你应该用JSON Web Token
Authorization (授权) : 这是使用JWT的最常见场景。一旦用户登录,后续每个请求都将包含JWT,允许用户访问该令牌允许的路由、服务和资源。单点登录是现在广泛使用的JWT的一个特性,因为它的开销很小,并且可以轻松地跨域使用。
Information Exchange (信息交换) : 对于安全的在各方之间传输信息而言,JSON Web Tokens无疑是一种很好的方式。因为JWT可以被签名,例如,用公钥/私钥对,你可以确定发送人就是它们所说的那个人。另外,由于签名是使用头和有效负载计算的,您还可以验证内容没有被篡改。
19.跨域问题怎么产生的,如何解决跨域问题
跨域是由于浏览器的同源策略限制的,浏览器不会承认未经确认的跨域数据在后端设置CORS头部解决跨域问题,也就是我们在Django用的corsheaders中间件,它使用额外的HTTP头来告诉浏览器,让运行在一个域名上的应用被准许访问来自不同源服务器上的指定资源
20.什么是笛卡尔积? 在表和表关联的时候,如何避免笛卡尔积
笛卡尔积是指两个集合之间的所有可能的组合为了避免笛卡尔积, 可以在 WHERE 加入有效的连接条件,使用外连接(左连接,右连接)
21.sql语句中什么时候用where什么时候用having
1.一般情况下,WHERE 用于过滤数据行,而 HAVING 用于过滤分组。
2.WHERE 查询条件中不可以使用聚合函数,而 HAVING 查询条件中可以使用聚合函数。
3.WHERE 在数据分组前进行过滤,而 HAVING 在数据分组后进行过滤 。
4.WHERE 查询条件中不可以使用字段别名,而 HAVING 查询条件中可以使用字段别名。
22.请说说web常见的攻击手段和防范措施
SQL注入 前端判断输入框是否为特殊字符 或者 使用ORM
XSS跨站 尽可能避免直接进行 OS 调用
CSRF验证 HTTP Referer字段
DDOS攻击 分组过滤:对特定的流量进行过滤
23.什么是GIL,GIL带来的影响,GIL是线程安全的吗 ,为什么
GIL:全局解释器锁,是一个互斥锁,防止多个线程在同一时间执行Python字节码,这个锁是非常重要的,因为CPython的内存管理非线程安全的,很多其他的特性依赖于GIL
不安全他会保护自己的线程不保护用户书写的线程
它在任一时刻只允许一个线程对字节码进行执行 。 这样避免了竞争危害,从而保证了线程安全。
24.GIL全局解释器锁
在同一个进程中只要有一个线程获取了全局解释器(cpu)的使用权限,其他的线程就必须等待该线程的全局解释器(cpu)使用完才能使用全局解释器(cpu),多个线程之间不会相互影响在同一个进程下也只有一个线程使用cpu
全局解释器锁的好处避免了大量的加锁解锁的好处使数据更加安全,解决多线程间的数据完整性和状态同步全局解释器的缺点多核处理器退化成单核处理器,只能并发不能并行。
25.为什么要减少IO操作
磁盘IO比内存操作性是相差千级数量级的差异,因此应该尽量减少io操作磁盘组织形式是扇区,因为数据的局部性,因此一次磁盘io会把一个扇区的都预读出来,也就是说你一次读1字节的数据和4K字节需要的时间是几乎一样的主要就是为了减少响应时间
26.SMTP是什么,有什么功能
SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知
27.队列和栈这两种数据结构的区别,分别举一个实际应用场景,即用在什么地方?
队列是先进先出,而栈是先进后出,队列的删除操作在表头进行 栈的删除操作在表尾进行(后进先出)可以用于字符匹配,数据反转等场景。 队列(先进先出)可以用于任务队列,共享打印机的场景
28.json模块
之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了,所以eval的重点还是通常用来执行一个字符串表达式,并返回表达式的值。
29.shelve模块
shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型
30.xml模块
xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要是xml。