• 5-什么是猴子补丁,有什么用途?什么是反射,python中如何使用反射?http和https的区别?


    1 什么是猴子补丁,有什么用途

    **解释**
    	1 Python猴子补丁(Monkey Patch)是一种在运行时动态修改代码的技术。
    	通在不修改源代码的情况下,改变代码的执行方式或增加功能
    	2 Monkey Patching是在 运行时(run time) 动态替换属性(attributes)或方法
    	3 Python的类是可变的(mutable),方法(methods)只是类的属性(attributes);
    	这允许我们在 运行时(run time) 修改其行为。这被称为猴子补丁(Monkey Patching),
    	 它指的是偷偷地更改代码。
    
    **哪里用过**
    	1 位置
    	import pymysql
        pymysql.instal_as_mysqldb()  # 动态的替换 原来使用 mysqldb链接数据库的类 conn
        2 位置
        gevent.monkey.patch_all() # 动态的替换 原来阻塞的io方法 ,全都替换成自己写的,不阻塞的 time,socket...
        3 这种情况  ---》json ---》内置模板---》没关注性能高低
        	-如果有性能高的json转换模块---》想替换---》如果都换,每个地方都要改,太麻烦了
            -借助于猴子补丁---》程序运行一开始,动态的把json替换成ujson
            json.loads()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    2 什么是反射,python中如何使用反射

    2. **反射 (Reflection) 在 Python 中的使用:**
       - **定义:** 反射是一种机制,允许程序在运行时访问、检查和修改它本身的状态和行为。
    	在 Python 中,反射通常通过一些内置的函数和特殊的属性来实现。
       - **使用:**
         - `getattr(obj, name[, default])`: 获取对象 `obj` 的属性 `name` 的值,如果属性不存在,可以提供默认值。
         - `hasattr(obj, name)`: 检查对象 `obj` 是否有属性 `name`。
         - `setattr(obj, name, value)`: 设置对象 `obj` 的属性 `name` 为指定的值。
         - `delattr(obj, name)`: 删除对象 `obj` 的属性 `name`。
         - `dir(obj)`: 返回对象 `obj` 的属性和方法列表。
    
       class MyClass:
           def __init__(self):
               self.x = 10
    
       obj = MyClass()
    
       # 使用 getattr 获取属性
       value = getattr(obj, 'x')
       print(value)  # 输出 10
    
       # 使用 hasattr 检查属性是否存在
       has_attr = hasattr(obj, 'y')
       print(has_attr)  # 输出 False
    
       # 使用 setattr 设置属性
       setattr(obj, 'y', 20)
       print(obj.y)  # 输出 20
    
       # 使用 delattr 删除属性
       delattr(obj, 'x')
    
    ----------------总结--------------------------
    # 反射就是通过字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员
    # 反射:是程序在运行过程中通过字符串来操作对象的属性和方法
    
    # 可使用反射的地方:
    1、反射类中的变量 : 静态属性,类方法,静态方法
    2、反射对象中的变量、对象属性、普通方法
    3、 反射模块中的变量
    4、反射本文件中的变量
    
    # python 提供了一些反射方法
        -getattr
        -setattr
        -hasattr
        -delattr
    	
    # 例子
    def run():
        print('走狗')
    d=Dog()
    setattr(d,'run',run)
    d.run()
     
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    3 http和https的区别

    
    - **HTTP (HyperText Transfer Protocol):**
      - 不加密传输数据。
      - 默认端口是 80- 数据在传输过程中容易被窃听或篡改。
    
    - **HTTPS (HyperText Transfer Protocol Secure):**
      - 使用 SSL 或 TLS 协议进行加密传输,确保数据的安全性。
      - 默认端口是 443- 通过证书验证来确认网站的身份,防止中间人攻击。
      - 更安全,适用于需要保护用户隐私的场景,如在线支付、登录等。
    
    - **总结:** HTTPS 在 HTTP 的基础上增加了安全性,通过加密保护了数据的传输过程,
    - 对于涉及用户隐私和安全的应用更为合适。
    
    ~~~~~~~~~~~~~~~~~~~~~~~~~~总结~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # https://zhuanlan.zhihu.com/p/561907474
    
    # 名字
    HTTP协议,英文全称是Hyper Text Transfer Protocol,是超文本传输协议
    HTTPS协议,英文全称Hyper Text Transfer Protocol over SecureSocket Layer,超文本传输安全协议
    
    # 默认端口
     HTTPS 和 HTTP 的默认端口不同(44380)
    核心区别
    
    # HTTPS在 HTTP与 TCP 之间加入了一个加密/身份验证层,提供了身份验证与加密通讯
    HTTP+ SSL / TLS,也就是在 http上又加了一层处理加密信息的模块,比 http安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性
    https=http+ssl
    
    
    # HTTP 由于是明文传输,主要存在三大风险:窃听风险、篡改风险、冒充风险
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
  • 相关阅读:
    一个AI板卡电脑--香橙派 AIpro
    C#,根据路径获取某个数字开头的所有文件夹,并获取最新文件夹进行替换文件
    基于深度学习的Wiki中文语料词word2vec向量模型
    【Git学习三】git中的分支管理:git branch,git checkout,解决git中的分支冲突的方法
    Spring系列文章:Spring集成Log4j2⽇志框架、整合JUnit
    Hive分组排序取topN的sql查询示例
    mall :rabbit项目源码解析
    基于SNAT+DNAT发布内网K8S及Jenkins+gitlab+Harbor模拟CI/CD的综合项目
    动态规划算法 | 最长递增子序列
    linux下Qt的pro文件
  • 原文地址:https://blog.csdn.net/weixin_44145338/article/details/134467420