自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

海哥python的博客

专注服务端技术分享

  • 博客(62)
  • 收藏
  • 关注

原创 python3装饰器详解

本文将带你学习装饰器在 Python 中的工作原理,如果在函数和类中使用装饰器,如何利用装饰器避免代码重复(DRY 原则,Don’t Repeat Yourselfdef __init__(self, a, *args, **kwargs): # 类装饰器参数self.a = adef __call__(self, func): # 被装饰函数print("开始调用example函数..............")example()self.a = a# @语法糖等价形式。

2023-12-15 09:36:18 1108

原创 【python】上下文管理器和with语句

有人认为Python中的with语句是一个晦涩难懂的特性,但是只要你了解了其背后的原理,就不会感觉到神秘了。with语句实际上是非常有用的特性,有助于编写清晰易读的Python代码。而上下文管理器存在的目的便是管理with语句,就像迭代器的存在是为了管理for语句一样。那么,究竟 with 语句要怎么用,与之相关的上下文管理器(context manager)是什么,它们之间又有着怎样的联系呢?在任何一门编程语言中,文件的输入输出数据库的连接断开等,都是很常见的资源管理操作。

2023-12-08 14:59:40 746

原创 pathlib,一个优雅的python库

如果你需要在 Python 里进行文件处理,那么标准库中的os和os.path兄弟俩一定是你无法避开的两个模块。它们提供了非常多与文件路径处理、文件读写、文件状态查看相关的工具函数。os.path一直是Python中处理路径事实上的标准,但它可能会显得有些繁琐。与之相比,pathlib模块提供了更简单、更直观的方式来完成绝大多数任务。在Python3.4开始,官方提供了pathlib面向对象的文件系统路径,核心的点在于面向对象, 这也是os.path和pathlib的本质区别。

2023-12-08 14:57:57 1023

原创 js逆向,参数加密&js混淆

关键词JS 混淆、源码乱码、参数动态加密逆向目标题目1:抓取所有(5页)机票的价格,并计算所有机票价格的平均值,填入答案。目标网址:https://match.yuanrenxue.cn/match/1目标接口:https://match.yuanrenxue.cn/api/match/1?page=2&m=9a7e61f783bc3f037aa3f64e05292493%E4%B8%A81708507581加密参数:m逆向过程解决无限debug打开 F12 刷新页面,

2024-05-09 18:12:15 445

原创 python如何执行js代码,学会这几个方法就够了

Python 和 JavaScript 是两种广泛应用于 Web 开发的重要编程语言,在日常的 Web 开发和 Web 数据处理中,我们经常需要使用这两种语言。例如,在 Web 端爬虫过程中,我们可能会遇到需要解密网页源代码的情况,这时就需要一层一层剥离关键的 JS 代码,并使用 Python 执行这段代码以获取关键信息。那么,Python 如何调用 JS 呢?有哪些方式呢?今天的分享就到这里。如果觉得不错,关注安排起来吧。

2024-05-08 10:40:03 866

原创 【逆向百例】百度翻译js逆向

分析百度翻译接口,使用python获取翻译结果。本文只提供一些思路,随着时间的推移,网站会维护,以上代码不会一直都有效,需要重新分析。

2024-04-29 17:04:58 743

原创 Python异常处理:基础到进阶的实用指南

大家好,我是海鸽。异常处理在工程文件中必不可少,今天就带大家彻底搞定python的异常处理。在Python中,异常是指在程序执行过程中出现的错误或异常情况。当Python解释器无法执行代码时,它会引发异常,这可能是由于语法错误、运行时错误或逻辑错误等原因引起的。自定义异常通常被用于特定的情况或者错误类型,以便能够更清晰地识别和处理特定类型的问题。def __init__(self, message="这是一个自定义异常"):在这个例子中,我们创建了一个名为的自定义异常类,它继承自Python。

2024-04-01 16:11:58 591

原创 Python方法链调用的优雅之处

在日常的Python开发中,我们经常会遇到需要对一个对象进行一系列的操作,然后得到最终结果的情况。而方法链调用()就是一种十分优雅的解决方案。例如:字符串的各种方法print("公众号:海哥python".strip().lower().title()) # 公众号:海哥Python方法链接是一种编程风格,其中多个方法调用按顺序发生。它消除了在每个中间步骤分配变量的痛苦,因为每个调用都对同一对象执行操作,然后将该对象返回到下一个调用。它可以减少整个代码的长度,因为不必创建无数变量。由于方法是按。

2024-03-21 13:37:41 704

原创 Marshmallow,一个有点甜的Python库

在许多场景中,我们常常需要执行Python对象的序列化、反序列化操作。例如,在开发REST API时,或者在进行一些面向对象化的数据加载和保存时,这一功能经常派上用场。经常cv Python代码的臭宝,接触最多的应该是通过jsonpickle模块进行序列化或反序列化,这是一种常见的做法。往往Python对象的序列化、反序列化同时也要伴随着数据的处理和校验。,则为我们带来更强大的数据序列化和反序列化,更优雅的参数校验、数据处理能力。

2024-03-15 13:40:59 844

原创 猴子吃桃:玩转二分思维

在计算机编程领域,算法是解决问题的有效途径之一。而算法题则是考察程序员解决问题能力的重要手段之一。在这篇文章中,我们将通过一个经典的算法题目——猴子吃桃,来探讨算法思维的重要性以及解题的方法。通过二分查找的方法,我们可以高效地找到孙悟空吃蟠桃的最小速度 K。这种解题思路可以应用于类似的搜索问题,能够在保证时间效率的情况下得到正确的结果。

2024-03-06 18:14:00 901 1

原创 【Redis】搞懂过期删除策略和内存淘汰策略

Redis 是可以对 key 设置过期时间的,因此需要有相应的机制将已过期的键值对删除,而做这个工作的就是过期键值删除策略。每当我们对一个 key 设置了过期时间时,Redis 会把该 key 带上过期时间存储到一个过期字典(expires dict)中,也就是说过期字典保存了数据库中所有 key 的过期时间。字典实际上是哈希表,哈希表的最大好处就是让我们可以用 O(1) 的时间复杂度来快速查找。如果不在,则正常读取键值;如果存在。

2024-02-25 18:07:42 452

原创 一个例子了解如何编写可维护的Python代码

编码规范: 遵循 PEP 8 编码规范,保持代码的一致性和可读性。使用工具如 Black 、YAPF 等进行自动格式化,确保代码风格统一。if 分支嵌套优化: 减少 if 分支的嵌套,提高代码的可读性和可维护性。可以通过提前返回错误条件、使用字典或函数映射等方法来简化复杂的条件判断逻辑。重复代码封装: 避免重复代码,将重复的逻辑封装成函数或类,提高代码的复用性。同时,避免过度封装,保持函数和类的单一职责。异常捕获: 合理处理异常,避免捕获过于宽泛的异常类型,应该尽量具体化异常处理。

2024-02-25 09:23:03 951

原创 Python中的functools模块详解

大家好,我是海鸽。函数被定义为一段代码,它接受参数,充当输入,执行涉及这些输入的一些处理,并根据处理返回一个值(输出)。当一个函数将另一个函数作为输入或返回另一个函数作为输出时,这些函数称为。函数式编程强调将函数作为头等对象。今天我们解读下 functools 库中用于创建和修改函数的几个高阶函数。functools模块是Python的标准库的一部分,它是为高阶函数而实现的,用于增强函数功能。这些信息表明 模块提供了一系列用于处理函数和可调用对象的工具。以下是 模块中包含的主要方法的详细说明:: 一个

2024-02-25 09:22:18 1420

原创 如何解决 SQL 深层分页问题?

我们可以通过减少回表次数来优化。一般有标签记录法和延迟关联法。

2024-02-20 15:03:06 541

原创 attrs,一个OOP编程的Python高效神器

大家好,这一期我想和大家分享一个OOP编程的高效神器:`attrs库`。

2024-02-19 18:39:08 1136

原创 60行python代码带你了解刘谦春晚魔术的奥秘

60行python代码带你了解刘谦春晚魔术的奥秘

2024-02-19 18:37:51 986

原创 堆排序-Python实现

大顶堆和小顶堆都是特殊的完全二叉树,它们的特点分别是每个节点的值都不小于(或不小于)其子节点的值,和每个节点的值都不大于(或不小于)其子节点的值。第二种情况是最后一个叶子节点是右孩子节点(此时 n 是奇数)那么 n - 1 = i × 2 + 2,即 i = ( n - 1 ) / 2 - 1 = n / 2 - 1(向下取整)在我们的例子中,最后一个非叶子节点的下标是 9 / 2 - 1 = 3,因此调整顺序为:3–>2 -->1 -->0。在堆的结构中,堆中的最小值(最大值)总是位于堆的根结点。

2024-02-07 22:15:37 1179

原创 parse库,一个优雅的python库

在Python中,format方法和f-strings是两种常用的字符串插值方法。age = "18"print(f"而如果是要从字符串中提取期望的值呢?相信很多人的第一或第二想法是使用正则表达式。熟悉正则表达式的人都明白,学习起来并不困难,写起来也相对容易。然而,正则表达式几乎不具备可读性,维护起来确实令人头痛。别以为你写的那段正则表达式可以轻易驾驭它,过了一段时间你可能都无法认识它了。可以毫不夸张地说,对于许多人来说,正则表达式是一种痛苦的经历。

2024-02-07 22:13:02 1330

原创 docker核心技术

当 docker build 运行时,首先会把构建上下文传输给 docker daemon,把没用的文件包含在构建上下文时,会导致传输时间长,构建需要的资源多,构建出的镜像大等问题。由于镜像具有共享特性,所以对容器可写层的操作需要依赖存储驱动提供的写时复制和用时分配机制,以此来支持对容器可写层的修改,进而提高对存储和内存资源的利用率。OverlayFS 也是一种与 AUFS 类似的联合文件系统,同样属于文件级的存储驱动,包含了最初的 Overlay 和更新更稳定的 overlay2。

2024-02-05 13:40:56 1230 1

原创 docker安装-centos

Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10。

2024-02-04 19:07:44 1103

原创 【python3】多线程详解

返回当前存活的Thread对象数量。:返回当前线程的Thread对象。:列表形式返回所有存活的Thread对象。:返回主Thread对象。:线程的名字,没有语义,可以相同名称。:线程标识符,非零整数。:是否为守护线程。:是否存活。:开始线程活动。若多次调用抛出RuntimeError。:用来重载的,:等待直到线程正常或异常结束。尚未开始抛出RuntimeError:构造函数。

2024-02-04 17:42:01 1317

原创 【python】一文带你了解什么是dataclass?

通过对field()对象的剖析,我们可以指定属性:是否参与比较,是否参与hash计算等等。不过我们知道默认的比较顺序,我们也可以通过增加属性以实现按需比较的功能。而这个用于比较的属性位于数据类的第一个属性,并可以借助魔法函数实现灵活赋值。sort_index: tuple = field(init=False) # 添加一个 sort_index 字段,并设置为不在 __init__ 方法中初始化name: strgrade: str。

2024-01-26 19:03:48 914

原创 python面试题大全(四)

MD5(Message Digest Algorithm 5)是一种广泛使用的哈希函数,用于产生一个固定大小(128 位或 32 个十六进制字符)的散列值,通常用于对任意数据生成唯一的标识。MD5 加密算法是由 Ronald Rivest 在 1991 年设计的。MD5 生成的散列值是固定长度的,无论输入的数据有多长,都会产生一个 128 位的散列值。MD5 是单向散列函数,即从散列值不能反向推导出原始输入。因此,无法通过 MD5 散列值还原出原始数据。

2024-01-24 09:59:23 1012

原创 k8s面试题

Consistency(一致性):所有节点在同一时间具有相同的数据;Availability(可用性):保证每个请求不管成功或者失败都有响应;Partition tolerance(分区容错性):系统中任意信息的丢失或失败不影响系统的继续运行。CAP 理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。原子性(Atomicity):整体不可分割性,要么全做要不全不做;一致性(Consistency):事务执行前、后数据库状态均一致。

2024-01-23 13:35:20 1159

原创 python面试题大全(三)

闭包(Closure)是在编程语言中一种特殊的函数。它是由一个函数及其相关的引用环境组合而成的实体。闭包包含了函数定义时所在的环境中的变量,即使在函数定义之后,它仍然可以访问和操作这些变量。闭包通常由以下两个特点组成:函数嵌套:闭包是由一个函数内部定义的函数所组成。这个内部函数可以访问外部函数的变量和参数。变量引用:闭包中的内部函数会引用外部函数的变量,并保留对这些变量的引用,即使外部函数已经执行完毕。这使得闭包具有"记忆"的能力,可以在后续调用中使用之前的状态。闭包的一个重要应用是创建和返回函数。

2024-01-23 13:33:32 831

原创 python面试题大全(二)

散列函数(Hash函数)是一种将输入数据映射为固定长度散列值(哈希值)的函数。它将任意长度的数据(消息)转换为固定长度的散列值,通常是一个较小的数字或固定长度的字节数组。散列函数的特点是:固定输出长度:无论输入的数据有多长,散列函数生成的散列值的长度是固定的。这使得散列函数适用于存储和比较散列值的场景。独特性:不同的输入数据经过散列函数计算后将产生不同的散列值。即使输入数据的微小变化,也会导致生成完全不同的散列值。不可逆性:散列函数是单向函数,即从散列值无法还原出原始输入数据。

2024-01-22 18:09:31 1030

原创 python面试题大全(一)

Cython、PyPy、CPython和Numba是针对Python代码进行优化的工具和实现方式。它们各自具有不同的优点和缺点,下面是对它们的简要介绍:优点:提供了静态类型声明和编译扩展的能力,可以将Python代码转换为C语言并编译成高效的机器码。可以直接调用C/C++代码,并且与Python语法兼容。支持使用Python标准库和第三方库。可以获得接近C语言的性能。缺点:编写和调试Cython代码可能相对复杂,需要对C语言有一定的了解。需要编译过程,增加了开发和部署的复杂性。

2024-01-22 18:06:55 1741 1

原创 网络面试题

如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。跨域限制是浏览器的同源策略导致的,使用 nginx 当做服务器访问别的服务的 HTTP 接口是不需要执行 JS 脚步不存在同源策略限制的,所以可以利用 Nginx 创建一个代理服务器,这个代理服务器的域名跟浏览器要访问的域名一致,然后通过这个代理服务器修改 cookie 中的域名为要访问的 HTTP接口的域名,通过反向代理实现跨域。而 UDP 是基于数据报传输数据的,UDP 首部也记录了数据报的长度,可以轻易的区分出不同的数据包的边界。

2024-01-18 12:29:04 821

原创 golang面试题大全

一个 Goroutine 是一个函数或方法执行同时旁边其他任何够程采用了特殊的Goroutine 线程。Goroutine 线程比标准线程更轻量级,大多数 Golang 程序同时使用数千个 Goroutine。要创建 Goroutine,请 go 在函数声明之前添加关键字。您可以通过向 Goroutine 发送一个信号通道来停止它。Goroutines 只能在被告知检查时响应信号,因此您需要在逻辑位置(例如 for 循环顶部)包含检查。

2024-01-18 09:27:46 2035

原创 Redis面试大全

Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份。

2024-01-17 21:53:03 1036

原创 MySQL 面试题大全

索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用 B 树及其变种 B+树。更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。顾名思义,就是最左优先,在创建多列索引时,要根据业务需求,where 子句中使用最频繁的一列放在最左边。

2024-01-17 18:53:04 1005

原创 使用docker-compose快速搭建ELK

ubuntu系统。

2024-01-12 17:18:17 873

原创 python包管理工具:pipenv的基本使用

很多语言都提供了环境隔离的支持,例如nodejs的,golang的go mod,python也有virtualenv和pyvenv等机制。为了建立依赖快照,通常会用命令生成一个requirements.txt文件,在一些场景下这种方式就可以满足需求,但是在复杂场景下requirements.txt就力不从心了。

2024-01-12 17:16:21 569

原创 python tcp socket中实现SSL/TLS认证

官话说SSL是安全套接层(secure sockets layer),TLS是SSL的继任者,叫传输层安全(transport layer security)。说白点,就是在明文的上层和TCP层之间加上一层加密,这样就保证上层信息传输的安全。如HTTP协议是明文传输,加上SSL层之后,就有了雅称HTTPS。它存在的唯一目的就是保证上层通讯安全的一套机制。

2024-01-11 18:50:23 1628

原创 Explain详解与索引最佳实践

Mysql安装文档参考:https://blog.csdn.net/yougoule/article/details/56680952使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQLexplain 两个变种1. 会在 explain 的基础上额外提供一些查询优化的信息。紧随其后通过 show warnings 命令可以得

2024-01-11 18:39:37 1081 1

原创 kubeadm实际搭建多节点的Kubernetes集群

Kubernetes 定义了 CNI 标准,有很多网络插件,这里我选择最常用的 Flannel,可以在它的 GitHub 仓库里(会看到 Pod 运行在 Worker 节点上,IP 地址是“10.10.1.2”,表明我们的 Kubernetes 集群部署成功。你会注意到 Master 节点的状态是“NotReady”,这是由于还缺少网络插件,集群的内部网络还没有正常运作。它会连接 Master 节点,然后拉取镜像,安装网络插件,最后把节点加入集群。稍等片刻,就可以在Master节点上看到两个节点是。

2024-01-10 13:47:40 1097

原创 自动化的运维管理:探究Kubernetes工作机制的奥秘

Kubernetes的大致工作流程每个 Node 上的 kubelet 会定期向 apiserver 上报节点状态,apiserver 再存到 etcd 里。每个 Node 上的 kube-proxy 实现了 TCP/UDP 反向代理,让容器对外提供稳定的服务。scheduler 通过 apiserver 得到当前的节点状态,调度 Pod,然后 apiserver 下发命令给某个 Node 的 kubelet,kubelet 调用 container-runtime 启动容器。

2024-01-10 13:46:34 1504

原创 【python3】从库存管理分析分布式锁

分布式锁是一种用于协调多个进程或线程之间访问共享资源的机制,它可以避免多个进程或线程同时对共享资源进行修改而导致的数据不一致问题。在分布式系统中,由于数据的分散存储在不同的节点上,因此需要一种可靠的分布式锁机制。分布式锁通常需要满足以下几个条件:互斥性:在任何时刻,只能有一个进程或线程获得锁。安全性:一旦一个进程或线程获得锁,其他进程或线程无法修改该锁的状态,只有锁的持有者可以释放锁。高可用性:分布式锁应该具有高可用性,即当某个节点或进程故障时,其他节点或进程可以接管该锁。性能:分布式锁应该具

2024-01-09 10:51:36 975

原创 一条SQL查询语句是如何执行的?

大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。server层: 主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。Store层: 存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。

2024-01-09 10:48:28 1191

原创 【python设计模式】python单例模式的N种实现

我们知道,经典设计模式总共有 23 种,但其中只有少数几种被广泛采用。根据我的工作经验,实际常用的可能不超过其中的一半。如果随机找一位程序员,并要求他列举出自己最熟悉的三种设计模式,那么单例模式肯定会是其中之一,这也是今天我们要讨论的。

2024-01-08 11:56:39 1724

基于golang语言和Saltstack开发的WEB运维平台

基于golang语言和Saltstack开发的WEB运维平台

2023-12-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除