猴子补丁(Monkey Patching)

2024-02-12 01:32
文章标签 monkey 补丁 猴子 patching

本文主要是介绍猴子补丁(Monkey Patching),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

猴子补丁是我在面试的时候接触的一到题,学python的时候,我根本就没有听说这个概念!那接下来我们来分析一下:

1.什么是猴子补丁?

2.猴子补丁的功能?

3.猴子补丁的应用场景?

一.什么是猴子补丁?

1,这个词原来为Guerrilla Patch,杂牌军、游击队,说明这部分不是原装的,在英文里guerilla发音和gorllia(猩猩)相似,再后来就写了monkey(猴子)。

2,还有一种解释是说由于这种方式将原来的代码弄乱了(messing with it),在英文里叫monkeying about(顽皮的),所以叫做Monkey Patch。

名字听起来稀奇古怪的, 跟python的这个功能搭不上边, 所以我们直接来说功能吧!

二. 猴子补丁的功能(一切皆对象)

1.拥有在模块运行时替换的功能, 例如: 一个函数对象赋值给另外一个函数对象(把函数原本的执行的功能给替换了)

class Monkey:def hello(self):print('hello')def world(self):print('world')def other_fun(a=1):print(a)monkey = Monkey()
monkey.hello = monkey.world
monkey.hello()
monkey.world = other_fun
monkey.world()

三.monkey patch的应用场景

这里有一个比较实用的例子,很多到吗用到import json, 后来发现ujson性能更高,如果觉得把每个文件的import json改成import ujson as json成本较高, 或者说想测试一下ujson替换是否符合预期, 只需要在入口加上:

import json
import ujsondef monkey_patch_json():json.__name__ = 'ujson'json.dumps = ujson.dumpsjson.loads = ujson.loadsmonkey_patch_json()

其实这种场景也比较多,比如我们引用团队通用库里的一个模块,又想丰富模块的功能,除了继承之外也可以考虑用Monkey Patch.个人感觉Monkey Patch带了便利的同时也有搞乱源代码的风险!

这篇关于猴子补丁(Monkey Patching)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/701334

相关文章

基于11GR2的PSU补丁安装

基于11GR2的PSU补丁安装   场景:hp-unix新装数据库11.2.0.4.0,为了便于在线上触发此版本的一些bug而导致停机来维护,在安装后,应用MOS上提供最新的PSU补丁, 操作:利用OPatch工具来打GI和ORACLE软件的PSU 操作系统版本: $ uname -a HP-UX dbsrv B.11.31 U ia64 3837480657unlimited-use

Win 11补丁让AMD成亲儿子,性能最高提升35%

前段时间 AMD 与微软闹出的大瓜大伙儿都恰到了吧?没吃过也没关系,咱们可点击跳转往期内容回味: AMD 官方诉苦,CPU 性能被 Windows 限制 13%! 事情是这么个情况,AMD 不是在上个月先后正式上架了 Zen 5 锐龙 9000 系桌面 CPU 嘛。 来源:AMD 随后有外媒对那几颗 CPU 游戏性能进行了实测,他们发现似乎不管怎么折腾都无法到达官方 PPT 介绍的

Android热补丁动态更新实践

前言 好几个月之前关于Android App热补丁修复火了一把,源于QQ空间团队的一篇文章安卓App热补丁动态修复技术介绍,然后各大厂的开源项目都出来了,本文的实践基于HotFix,也就是QQ空间技术团队那篇文章所应用的技术,笔者会把整个过程的细节和思路在文章中详说,研究这个的出发点也是为了能紧急修复app的bug,而不需要重复发包,不需要用户重新下载app就能把问题解决,个人觉得这个还是蛮

聊聊随机测试和猴子测试

目录 随机测试的特点 1.不可预测性 2.缺乏针对性 3.自动化 4.资源密集型 猴子测试 随机测试 (Random Testing) 猴子测试 (Monkey Testing) 特点: 区别 1.控制程度 2.目标差异 3.实现方式 在我们测试的过程中,通常会使用到随机测试和猴子测试,其中随机测试侧重于人工测试,猴子测试侧重于借助工具执行命令进行测试。 随机测试

猴子排序:一种理论上的排序算法

猴子排序:一种理论上的排序算法 在编程和算法的世界里,总有一些有趣的算法让人忍俊不禁,同时又让人深思。今天,我们来聊聊一种特别的排序算法——猴子排序(Bogosort),也常被戏称为瞎子排序、波加排序或随机排序。这种算法以其独特的方式和极低的效率,成为了一个教学工具和编程娱乐的经典案例。 什么是猴子排序? 猴子排序的基本思想异常简单:通过不断随机地重新排列数组元素,直到数组意外地被排序成正确

Monkey性能测试

一、命令执行格式 adb shell monkey -p com.best.android.v6app -v 100 -v 指定打印日志的级别: -v 打印最基本的事件 -v-v 更全面的信息 -v-v-v 最全面的信息 -p 指定测试的APP包名。 -s 指定伪随机数生成器的seed值,如果seed相同,则两次monkey 测试产生的事件序列也相同。

打印菱形图案 / 猴子吃桃问题

习题4-9 打印菱形图案   (15分) 本题要求编写程序,打印一个高度为nn的、由“*”组成的正菱形图案。 输入格式: 输入在一行中给出一个正的奇数nn。 输出格式: 输出由nn行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。 输入样例: 7 输出样例: * * * * * * * * * * * * * * * * * * * * * * * * *

MATLAB安装在win7系统下出现一闪过后就关闭的解决办法,下载一个补丁

  Matlab开启时一闪而过然后自动关闭的解决办法 由于matlab软件默认的CPU是Intel的,所以用AMD处理器的用户 安装 matlab后初次运行会自动关闭,可采取以下方式进行解决: (1) 假设matlab安装在D盘,确认D:\Matlab7\bin\win32下有 atlas_athlon.dll文件 (2) 在“我的电脑”上点击右键中的“属性”,在

逆向工程核心原理 Chapter20 | “内嵌补丁”练习

前言 自己学《逆向工程核心原理》一书的记录,只记录自己觉得重要/有用的一些点。 知识点学习 很实用的一个逆向技术。 原理: “壳”的逻辑也是这样的。EP处先解密OEP代码,再跳转到洞穴代码,恢复IAT之类的,然后跳回OEP执行源程序代码。 代码补丁与内嵌补丁的区别: PatchMe练习 记得上次寒假学过一次,现在再练/学一次。 IDA看可以很清晰的看到解密逻辑。 流程:

Android压力测试命令monkey

1.介绍 Monkey 是SDK中附带的一个工具,主要用于进行压力测试,开发人员结合monkey 打印的日志和系统打印的日志,解决测试中出现的问题。monkey 测试中所有的事件都是随机产生的,不带任何人的主观性。 2.使用 在cmd中打开adb,输入命令:adb shell monkey -p 包名 -s 500 –ignore-crashes –ignore-timeouts –moni