自定义博客皮肤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的博客

专注服务端技术分享

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

原创 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 1500

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

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

2023-12-08 14:59:40 781

原创 pathlib,一个优雅的python库

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

2023-12-08 14:57:57 1097

原创 Docker无法拉取镜像解决方案

【代码】Docker无法拉取镜像解决方案。

2024-08-19 17:42:37 289 1

原创 强烈推荐这个大佬的 Redis 系列,看完直呼过瘾(文末赠书)

大家好,我是海鸽~最近我公众号圈子里的好友出了一本高质量的书,现在推荐给大家,非常值得一看。作为当今广受欢迎的内存数据库,Redis 以其卓越的性能和广泛的应用场景著称。掌握 Redis 技术几乎成为每位开发人员、测试人员和运维人员的看家本领!微信公众号,后改名为「码哥跳动」)主理人码哥持续输出的 Redis 技术相关文章受到广大读者的喜爱,不少小伙伴都从中受益!在大家的持续催更下,码哥的这本终于和大家见面了!作者将复杂的概念与实际案例相结合,以简洁、诙谐、幽默的方式揭示了 Redis 的精髓。

2024-08-19 13:37:04 1179

原创 Pydantic:目前最流行的Python数据验证库

在处理来自系统外部的数据,如API、终端用户输入或其他来源时,我们必须牢记开发中的一条基本原则:“永远不要相信用户的输入因此,我们必须对这些数据进行严格的检查和验证,确保它们被适当地格式化和标准化。这样做的目的是为了确保这些数据符合我们的程序所需的输入规范,从而保障项目能够正确且高效地运行。

2024-07-26 11:23:32 978

原创 python函数参数定义中的这两个分隔符,还有人不知道吗?

位置参数(positional argument):根据函数在参数列表中的位置传递给函数的参数。关键词参数(keyword argument):通过指定参数名称及其对应值传参的参数。这里的a是位置参数,bc是关键词参数。请注意:所有位置参数都必须首先出现,然后是关键字参数在Python函数中,参数默认可以按位置(positional)或按关键字(keyword)传入,这意味着调用者可以基于参数的位置或名称来传递值。

2024-07-09 10:43:50 358

原创 js逆向案例 | 加速乐反爬逆向

前言加速乐作为一种常见的反爬虫技术,在网络上已有大量详尽深入的教程可供参考。然而,对于那些初次接触的人来说,直接面对它可能仍会感到困惑。声明本文仅用于学习交流,学习探讨逆向知识,欢迎私信共享学习心得。如有侵权,联系博主删除。请勿商用,否则后果自负。什么是加速乐?加速乐采用了一系列的高级反爬虫技术,包括OB混淆、动态加密算法和多层Cookie获取,以确保整体校验的严密性。关键校验字段位于Cookie中的__jsl_clearance_s。其验证过程通常涉及三次关键的请求:首次请求:当用户

2024-07-08 10:59:35 1446

原创 12种增强Python代码的函数式编程技术

一句话总结:函数式编程(functional programming)是一种编程范式,之外还有面向对象(OOP)、面向过程、逻辑式编程等。函数式编程是一种高度抽象的编程范式,它倡导使用纯函数,即那些不依赖于外部状态没有可变状态的函数。在纯粹的函数式编程语言中,函数的输出完全由输入决定,因此相同的输入总是产生相同的输出,这样的函数我们称之为无副作用的。🔊 一个显著的函数式编程特性是,函数可以作为参数传递给其他函数,或者作为结果被返回,这为编程带来了额外的灵活性和表达力!

2024-07-08 10:34:47 655

原创 超炫酷, 不用学前端也能自己做网页!这个Python库,3分钟内复刻GPT WEB应用

如果分享你的信息,对你有用!别忘了三连击哦!!在看关注!

2024-06-25 09:30:14 437

原创 【丝滑的LangChain】我用python问gpt认不认识小范大人,它告诉我认识个der~

嗨,大家好!我是海鸽。《庆余年2》刚刚完结,热度不减,我忍不住好奇:我们的AI伙伴GPT,是否也对剧中那位机智过人的小范大人有所耳闻?最近我们尝试了LangChain的调用,体验了一番免费的千问模型的问答。现在,我们再次挑战gpt,继续享受这种白嫖的乐趣。结果出乎意料,让我大吃一惊!话不多说,直接来看下过程吧。

2024-06-12 17:49:46 416

原创 Python项目代码太多if-else? 这样优化才优雅!

代码中不可避免地会出现复杂的if-else条件逻辑,而简化这些条件表达式是一种提高代码可读性极为实用的技巧。在 Python 中,有多种方法可以避免复杂的 if-else 条件逻辑,使代码更加清晰和易于维护。

2024-06-04 22:42:51 1073 2

原创 “JS逆向 | Python爬虫 | 动态cookie如何破~”

如果你觉得文章还不错,请大家下,因为这将是我持续输出更多优质文章的最强动力!

2024-06-04 09:26:54 1357

原创 LangChain入门:使用Python和通义千问打造免费的Qwen大模型聊天机器人

LangChain 是一个用于开发由大型语言模型(Large Language Models,简称LLMs)驱动的应用程序的框架。它提供了一个灵活的框架,使得开发者可以构建具有上下文感知能力和推理能力的应用程序,这些应用程序可以利用公司的数据和APIs。这个框架由几个部分组成。LangChain 库:Python 和 JavaScript 库。包含了各种组件的接口和集成,一个基本的运行时,用于将这些组件组合成链和代理,以及现成的链和代理的实现。LangChain 模板。

2024-05-27 16:10:40 715

原创 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 728

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

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

2024-05-08 10:40:03 1646

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

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

2024-04-29 17:04:58 961

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

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

2024-04-01 16:11:58 672

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

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

2024-03-21 13:37:41 734

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

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

2024-03-15 13:40:59 947

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

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

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

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

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

2024-02-25 18:07:42 491

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

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

2024-02-25 09:23:03 973

原创 Python中的functools模块详解

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

2024-02-25 09:22:18 1928

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

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

2024-02-20 15:03:06 576

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

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

2024-02-19 18:39:08 1723

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

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

2024-02-19 18:37:51 1033

原创 堆排序-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 1493

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

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

2024-02-07 22:13:02 3120

原创 docker核心技术

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

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

原创 docker安装-centos

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

2024-02-04 19:07:44 1116

原创 【python3】多线程详解

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

2024-02-04 17:42:01 1437

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

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

2024-01-26 19:03:48 1309

原创 python面试题大全(四)

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

2024-01-24 09:59:23 1050

原创 k8s面试题

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

2024-01-23 13:35:20 1182

原创 python面试题大全(三)

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

2024-01-23 13:33:32 858

原创 python面试题大全(二)

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

2024-01-22 18:09:31 1068

原创 python面试题大全(一)

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

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

原创 网络面试题

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

2024-01-18 12:29:04 831

原创 golang面试题大全

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

2024-01-18 09:27:46 4770

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

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

2023-12-08

空空如也

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

TA关注的人

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