Day9总结

目录

1.jwt 是什么?

2. 什么时候你应该用JSON Web Token

3.跨域问题怎么产生的,如何解决跨域问题

4.什么是笛卡尔积? 在表和表关联的时候,如何避免笛卡尔积

5.sql语句中什么时候用where什么时候用having

6.请说说web常见的攻击手段和防范措施 

7.什么是GIL,GIL带来的影响,GIL是线程安全的吗 ,为什么

8.GIL全局解释器锁

8.为什么要减少IO操作

9.SMTP是什么,有什么功能

10.队列和栈这两种数据结构的区别,分别举一个实际应用场景,即用在什么地方?


1.jwt 是什么?


       JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。

2. 什么时候你应该用JSON Web Token

        Authorization (授权) : 这是使用JWT的最常见场景。一旦用户登录,后续每个请求都将包含JWT,允许用户访问该令牌允许的路由、服务和资源。单点登录是现在广泛使用的JWT的一个特性,因为它的开销很小,并且可以轻松地跨域使用。
Information Exchange (信息交换) : 对于安全的在各方之间传输信息而言,JSON Web Tokens无疑是一种很好的方式。因为JWT可以被签名,例如,用公钥/私钥对,你可以确定发送人就是它们所说的那个人。另外,由于签名是使用头和有效负载计算的,您还可以验证内容没有被篡改。

3.跨域问题怎么产生的,如何解决跨域问题


        跨域是由于浏览器的同源策略限制的,浏览器不会承认未经确认的跨域数据在后端设置CORS头部解决跨域问题,也就是我们在Django用的corsheaders中间件,它使用额外的HTTP头来告诉浏览器,让运行在一个域名上的应用被准许访问来自不同源服务器上的指定资源

4.什么是笛卡尔积? 在表和表关联的时候,如何避免笛卡尔积


        笛卡尔积是指两个集合之间的所有可能的组合为了避免笛卡尔积, 可以在 WHERE 加入有效的连接条件,使用外连接(左连接,右连接)

5.sql语句中什么时候用where什么时候用having


        1.一般情况下,WHERE 用于过滤数据行,而 HAVING 用于过滤分组。

        2.WHERE 查询条件中不可以使用聚合函数,而 HAVING 查询条件中可以使用聚合函数。

        3.WHERE 在数据分组前进行过滤,而 HAVING 在数据分组后进行过滤 。

        4.WHERE 查询条件中不可以使用字段别名,而 HAVING 查询条件中可以使用字段别名。

6.请说说web常见的攻击手段和防范措施 


        SQL注入 前端判断输入框是否为特殊字符 或者 使用ORM

        XSS跨站 尽可能避免直接进行 OS 调用

        CSRF验证 HTTP Referer字段

        DDOS攻击 分组过滤:对特定的流量进行过滤

7.什么是GIL,GIL带来的影响,GIL是线程安全的吗 ,为什么


        GIL:全局解释器锁,是一个互斥锁,防止多个线程在同一时间执行Python字节码,这个锁是非常重要的,因为CPython的内存管理非线程安全的,很多其他的特性依赖于GIL

不安全他会保护自己的线程不保护用户书写的线程

它在任一时刻只允许一个线程对字节码进行执行 。 这样避免了竞争危害,从而保证了线程安全。

8.GIL全局解释器锁


在同一个进程中只要有一个线程获取了全局解释器(cpu)的使用权限,其他的线程就必须等待该线程的全局解释器(cpu)使用完才能使用全局解释器(cpu),多个线程之间不会相互影响在同一个进程下也只有一个线程使用cpu

        全局解释器锁的好处避免了大量的加锁解锁的好处使数据更加安全,解决多线程间的数据完整性和状态同步全局解释器的缺点多核处理器退化成单核处理器,只能并发不能并行。

8.为什么要减少IO操作


        磁盘IO比内存操作性是相差千级数量级的差异,因此应该尽量减少io操作磁盘组织形式是扇区,因为数据的局部性,因此一次磁盘io会把一个扇区的都预读出来,也就是说你一次读1字节的数据和4K字节需要的时间是几乎一样的主要就是为了减少响应时间

9.SMTP是什么,有什么功能


SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知

10.队列和栈这两种数据结构的区别,分别举一个实际应用场景,即用在什么地方?

        队列是先进先出,而栈是先进后出,队列的删除操作在表头进行 栈的删除操作在表尾进行(后进先出)可以用于字符匹配,数据反转等场景。 队列(先进先出)可以用于任务队列,共享打印机的场景

猜你喜欢

转载自blog.csdn.net/NOguang/article/details/131588983