• python面试No7


      1. 同步, 异步, 并行, 并发, 阻塞, 非阻塞 ?

    同步: 多个任务之间 有先后执行顺序; 需要等待上一个任务执行完成 才能执行下一个任务.

    异步: 多个任务之间 没有先后执行顺序;不需要等待上一个任务执行完成 就可以执行下一个任务.

    并行: 同一时刻多个任务同时进行.

    并发: 同一时间段内 多个任务都在进行; 但是不会同一时刻同时运行.

    阻塞: 当前线程被挂起处于等待状态, 不能执行其他线程.

    非阻塞: 不会阻塞当先线程,会立刻返回

      CSRF攻击原理和防御CSRF攻击?

    CSRF(Cross Site Request Forgery): 中文是跨站请求伪造. CSRF攻击者在用户已经登录目标网站之后, 诱使用户访问一个攻击页面, 利用目标网站对用户的信任, 以用户身份在攻击页面对目标网站发起伪造用户操作的请求, 达到攻击目的 .

    • 完成一次CSRF攻击, 必须满足两个条件:
    1. 用户登陆信用网站B, 产生cookie信息并返回给服务器
    2. 在不登出信用网站B的情况下, 访问危险网站C  
    • CSRF攻击攻击原理及过程如下:

           1. 用户A登陆受信任网站B ;

           2. 网站B产生Cookie信息并返回给浏览器,此时用户登录网站B成功,可以正常发送请求到网站B ;

           3. 用户未退出网站B的情况下, 在同一浏览器中, 访问危险网站C ;

           4. 危险网站C接收到用户请求后,返回一些攻击性代码, 并发出一个请求要求访问第三方站点A ;

           5. 浏览器在接收到这些攻击性代码后, 根据网站C的请求, 在用户不知情的情况下携带Cookie信息, 向网站B发出请求. 网站B并不知道该请求其实是由C发起的, 所以会根据用户A的Cookie信息以B的权限处理该请求 .

    • 防御CSRF攻击:

           目前防御 CSRF 攻击主要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。

       3. 设计模式六大原则:

    1)单一职责原则 : 就一个类而言,应该仅有一个引起它变化的原因; 通俗的说,即一个类只负责一项职责

    2)里氏替换原则 : 子类型必须能够替换掉它们的父类型

             既:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而其它察觉不出父类对象和子类对象的区别。

             也就是说,在软件里面,把父类都替换成它都替换成它的子类,程序的行为没有变化。

     

     

    3)依赖倒转原则:  A.高层模块不应该依赖低层模块。两个都应该依赖抽象

                  B.抽象不应该依赖细节,细节应该依赖抽象

     

    4)接口隔离原则 :  客户端不应该依赖它不需要的接口; 一个类对另一个类的依赖应该建立在最小接口上.


    5)迪米特法则 :  如果两个类不必彼此直接通信,那么这两个类就不应当直接的相互作用;如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。


    6)开闭原则: 是说软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改;

          特征1:对于扩展是开放的(Open for extension);

          特征2:对于更改是封闭的(Closed for modification)。

     
  • 相关阅读:
    hdu5081
    hdu5079
    hdu5076
    hdu5072
    codeforces 739E
    codeforces 739D
    2017.2其他简要题解
    spring事务传播回滚策略
    mybatis一级缓存和二级缓存
    spring-boot-mybatis-starter工作原理
  • 原文地址:https://www.cnblogs.com/zhuyalong/p/11097533.html
Copyright © 2020-2023  润新知