- 博客(32)
- 收藏
- 关注
原创 异步爬虫(协程、asyncio、aiohttp )
协程是异步爬虫的“基石”:通过轻量级调度,让单线程高效处理多任务,尤其适合 I/O 密集场景。aiohttp是异步网络请求的“利器”:替代同步requests,让 HTTP 请求“并行化”,大幅压缩总耗时。实战价值:批量爬取时,异步爬虫效率远超传统串行/多线程方案,且资源占用更低(适合大规模采集)。
2025-06-19 15:07:03
1493
原创 爬虫代理(socks、http)
选HTTP代理:仅需处理网页/API流量,追求简单配置与缓存优化。选SOCKS代理:需多协议支持、低延迟或高匿名性(如游戏、跨境访问)混合方案:使用支持HTTP+SOCKS的代理工具(如Clash),通过混合端口自动适配场景。通过权衡协议需求、性能要求及安全级别,可更高效地利用代理服务。
2025-06-19 14:51:09
897
原创 GIL、多进程、多线程
I/O密集型(网络爬虫、Web请求、文件读写) 多线程 线程在等待I/O时会释放GIL,可以并发执行多个I/O任务CPU密集型(数学计算、图像处理、机器学习) 多进程 GIL限制多线程的并行性,多进程可绕过GIL,利用多核CPU。
2025-06-18 11:01:06
392
原创 同步异步爬虫
同步爬虫就像是一个人在一个时间点只能做一件事情。它按照顺序依次发送请求、获取数据、处理数据,每一步都必须等待前一步完成后才会进行下一步。在爬虫中,当使用同步方式发送一个HTTP请求获取网页内容时,程序会在这个请求完成并得到响应之前一直处于等待状态,不会去做其他事情。程序会依次访问 urls 列表中的每个网址。当访问第一个网址时,它会一直等待服务器返回响应,只有拿到响应后才会继续去访问第二个网址,以此类推。
2025-06-18 10:48:22
1324
原创 力扣——编程基础 860. 柠檬水找零
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回 false。
2025-06-16 17:02:32
339
原创 力扣——编程基础 1491. 去掉最低工资和最高工资后的工资平均值
给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。
2025-06-16 16:56:56
150
原创 力扣——编程基础 1672. 最富有客户的资产总量
给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量。客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。
2025-06-16 16:53:41
163
原创 力扣——编程基础 1041. 困于环中的机器人
在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。注意:北方向 是y轴的正方向。南方向 是y轴的负方向。东方向 是x轴的正方向。西方向 是x轴的负方向。机器人可以接受下列三条指令之一:“G”:直走 1 个单位“L”:左转 90 度“R”:右转 90 度机器人按顺序执行指令 instructions,并一直重复它们。只有在平面中存在环使得机器人永远无法离开时,返回 true。否则,返回 false。
2025-06-16 16:47:34
254
原创 力扣——编程基础 1275. 找出井字棋的获胜者
井字棋 是由两个玩家 A 和 B 在 3 x 3 的棋盘上进行的游戏。井字棋游戏的规则如下:玩家轮流将棋子放在空方格 (’ ') 上。第一个玩家 A 总是用 ‘X’ 作为棋子,而第二个玩家 B 总是用 ‘O’ 作为棋子。‘X’ 和 ‘O’ 只能放在空方格中,而不能放在已经被占用的方格上。只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。如果所有方块都放满棋子(不为空),游戏也会结束。游戏结束后,棋子无法再进行任何移动。
2025-06-16 16:46:58
349
原创 力扣——编程基础43. 字符串相乘
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。
2025-06-16 16:06:35
162
原创 力扣——编程基础 657. 机器人能否返回原点
在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串 moves 表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。注意:机器人“面朝”的方向无关紧要。“R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。
2025-04-17 17:37:27
233
原创 力扣——编程基础682. 棒球比赛
你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第 i 项操作,ops 遵循下述规则:整数 x - 表示本回合新获得分数 x“+” - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。“D” - 表示本回合新获得的得分是前一次得分的两倍。
2025-04-17 17:31:01
376
原创 力扣——编程基础 58.最后一个单词的长度
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
2025-04-17 16:06:20
376
原创 力扣——编程基础13.罗马数字转整数
罗马数字 2写做 II,即为两个并列的1。12写做 XII,即为 x+II。27写做 XXVII,即为 xx +v+ II。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如4不写做 IIII,而是 IV。数字1在数字5的左边,所表示的数等于大数5减小数1得到的数值4。同样地,数字9表示为 IX。这个特殊的规则只适用于以下六种情况:I可以放在 v(5) 和 x(10) 的左边,来表示 4 和 9。x可以放在 L(50) 和 c(100) 的左边,来表示 40 和 90。
2025-04-17 15:49:07
381
原创 力扣——编程基础 896.单调数列
如果数组是单调递增或单调递减的,那么它是 单调 的。如果对于所有 i <= j,nums[i] <= nums[j],那么数组 nums 是单调递增的。如果对于所有 i <= j,nums[i] >= nums[j],那么数组 nums 是单调递减的。当给定的数组 nums 是单调数组时返回 true,否则返回 false。
2025-04-17 11:10:30
320
原创 力扣——编程基础1502. 判断能否形成等差数列
给你一个数字数组 arr。如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列。如果可以重新排列数组形成等差数列,请返回 true;否则,返回 false。
2025-04-16 17:14:28
234
原创 力扣——编程基础 1822. 数组元素积的符号
已知函数 signFunc(x) 将会根据 x 的正负返回特定值:如果 x 是正数,返回 1。如果 x 是负数,返回 -1。如果 x 是等于 0 ,返回 0。给你一个整数数组 nums。令 product 为数组 nums 中所有元素值的乘积。返回 signFunc(product)。
2025-04-15 17:07:12
141
原创 力扣——编程基础 66.加一
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。
2025-04-15 16:42:06
393
1
原创 力扣——编程基础 283.移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。
2025-04-15 15:40:18
351
原创 力扣——编程基础 28找出字符串第一个匹配项的下标
请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从0开始)。如果 needle 不是 haystack 的一部分,则返回 -1给你两个字符串 haystack 和 needle ,示例 1:输入:haystack=“sadbutsad”,needle =“sad”输出:0解释:“sad"在下标 0和6 处匹配。第一个匹配项的下标是 0 ,所以返回 0。
2025-04-15 10:50:33
366
原创 力扣——编程基础 389找不同
给定两个字符串 s 和 t ,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例 1:输入:s = “abcd”, t = “abcde”输出:“e”解释:‘e’ 是那个被添加的字母。示例 2:输入:s = “”, t = “y”输出:“y”提示:s 和 t 只包含小写字母。
2025-04-14 14:14:02
1716
原创 力扣——编程基础 1768交替合并字符串
给你两个字符串 word1 和 word2。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。返回 合并后的字符串。
2025-04-11 11:46:43
406
原创 contextmanager 装饰器( Python 标准库)
当 with 语句块结束时,控制权返回到 get_db_connection 函数,继续执行 finally 块中的代码,确保资源被正确关闭。contextlib 中的一个装饰器用于简化上下文管理器的创建,上下文管理器允许你在使用 with 语句时自动管理资源的获取和释放。如果配置文件中的内容不可信,建议使用更安全的方法来解析字符串,例如通过模块查找或直接导入相应的类。当 with 语句开始执行时,get_db_connection 函数运行到 yield 语句之前的所有代码。
2025-04-10 15:13:22
340
转载 MongoDB 与 MySQL 对比
MongoDB主要通过分片集群(Sharded Cluster)实现。这种组合可以发挥两种数据库各自的优势。✔ 需要复杂JOIN操作的场景。✔ 财务系统(需要严格事务)✔ 已有大量SQL经验的团队。✔ 内容管理系统(CMS)✔ 需要快速迭代的原型开发。✔ 物联网(IoT)应用。✔ 处理高度非结构化数据。
2025-04-09 17:30:13
960
转载 爬虫中使用WebSocket
HTTP 是短连接,每次请求需重新握手,适合低频请求;WebSocket 是长连接,一次握手后双向实时通信,适合高频数据(如聊天、行情)。比如我曾在XX项目中用 WebSocket 替代 HTTP 轮询,服务器负载降低 70%。
2025-04-09 16:08:07
1024
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅