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

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

python 复制代码
**解释**
	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中如何使用反射

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的区别

python 复制代码
- **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 的默认端口不同(443和80)
核心区别

# HTTPS在 HTTP与 TCP 之间加入了一个加密/身份验证层,提供了身份验证与加密通讯
HTTP+ SSL / TLS,也就是在 http上又加了一层处理加密信息的模块,比 http安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性
https=http+ssl


# HTTP 由于是明文传输,主要存在三大风险:窃听风险、篡改风险、冒充风险
相关推荐
数据智能老司机4 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机4 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机4 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i4 小时前
drf初步梳理
python·django
每日AI新事件4 小时前
python的异步函数
python
这里有鱼汤5 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook14 小时前
Manim实现脉冲闪烁特效
后端·python·动效
程序设计实验室15 小时前
2025年了,在 Django 之外,Python Web 框架还能怎么选?
python
倔强青铜三16 小时前
苦练Python第46天:文件写入与上下文管理器
人工智能·python·面试
用户25191624271120 小时前
Python之语言特点
python