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

文章介绍了Python中的猴子补丁技术,允许在运行时修改代码;反射机制,包括getattr,setattr等函数的应用;同时对比了HTTP和HTTPS协议在数据安全上的差异。
摘要由CSDN通过智能技术生成

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()

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()
 

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 由于是明文传输,主要存在三大风险:窃听风险、篡改风险、冒充风险
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值