网络爬虫-1:发送请求+维持会话+代理设置/超时设置
1.基于get发送请求
2.基于post发送请求
3.维持会话
4.代理设置/超时设置
一.基于get发送请求
1.获取网页源码1
使用json库中的json.loads(),将json格式的字符串变为Python的字典形式
以下通过http://httpbin.org/get网址进行基本练习操作
import requests
import json
url='http://httpbin.org/get' #目标站点url
r=requests.get(url) #发送get请求
dict_data=json.loads(r.text)
print("网页源码:\n",r.text)
print("网页源码的类型:\n",type(r.text))
print("键值对形式:\n",dict_data)
print("响应状态码:\n",r.status_code)
1.网页源码通常为 HTML、JSON 或其他文本格式。
2.通过type函数可知,返回的网页源码是JSON 格式的字符串。
3.响应状态码一般有:200(请求成功),404(未找到),500(服务器内部错误)。
通过以上操作就获得了一个简单的网页源码爬取
网页源码:{"args": {}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Host": "httpbin.org", "User-Agent": "python-requests/2.32.3", "X-Amzn-Trace-Id": "Root=1-67b6f01c-2e488d805a9188994c10307a"}, "origin": "112.240.55.236", "url": "http://httpbin.org/get"
}网页源码的类型:<class 'str'>
键值对形式:{'args': {}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.32.3', 'X-Amzn-Trace-Id': 'Root=1-67b6f01c-2e488d805a9188994c10307a'}, 'origin': '112.240.55.236', 'url': 'http://httpbin.org/get'}
响应状态码:200
2.获取网页源码2
使用r.json()
import requests
import json
url='http://httpbin.org/get' #目标站点url
r=requests.get(url) #发送get请求
dict_data=r.json()
print("键值对形式:\n",dict_data)
键值对形式:{'args': {}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.32.3', 'X-Amzn-Trace-Id': 'Root=1-67b6f1fb-77329c48412b3c3c3c0aa26e'}, 'origin': '112.240.55.236', 'url': 'http://httpbin.org/get'}
3.网页源码(为图片或音频时)
使用r.content
import requestsurl='https://www.baidu.com/img/baidu_jgylogo3.gif' #以图片为例
r = requests.get(url) #发送get请求
print(r.content) #获取为二进制形式,图片或音频
print(type(r.content)) #<class 'bytes'>表示二进制
#保存二进制图片
with open('test.jpg','wb') as f:f.write(r.content)
4.设置参数1
该练习网站可以自己设置参数args,通过在网址后面加?,参数后面加&,会在args这一栏显示设置的参数
import requests
url='http://httpbin.org/get?age=12&time=11.9&name=12'#目标站点
r=requests.get(url)
print(r.text)
在返回的网页源码中,会出现我们在url后面设置的参数
{"args": {"age": "12", "name": "12", "time": "11.9"}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Host": "httpbin.org", "User-Agent": "python-requests/2.32.3", "X-Amzn-Trace-Id": "Root=1-67b6e74e-2ecdb89860e0144f3c399d39"}, "origin": "112.240.55.236", "url": "http://httpbin.org/get?age=12&time=11.9&name=12"
}
5.设置参数2
推荐使用的参数添加方式:使用字典,并在params参数中加上data,即可实现在网址后加上参数的操作
url='http://httpbin.org/get?'
data={'age':12,'time':11.9
}
r=requests.get(url,params=data)
print(r.text)
{"args": {"age": "12", "time": "11.9"}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Host": "httpbin.org", "User-Agent": "python-requests/2.32.3", "X-Amzn-Trace-Id": "Root=1-67a08088-56abf4e11348b1622190c6ca"}, "origin": "123.13.93.50", "url": "http://httpbin.org/get?age=12&time=11.9"
}
6.爬虫伪装-1
import requests
import random
url='https://www.zhihu.com/explore'
#构建用户信息
USER_AGENTS = [
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
"Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
"Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
"Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",
"Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",
"Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5",
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",
"Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 LBBROWSER",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; 360SE)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)",
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1",
"Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b13pre) Gecko/20110307 Firefox/4.0b13pre",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11",
"Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10"
]
UA={'User-Agent': random.choice(USER_AGENTS),
}
#参数设置
data={"age":12,"time":11.9
}
response=requests.get(url,params=data,headers=UA)
print("响应状态码:\n",response.status_code)
print("网页源码前200:\n",response.text[:200])
二.基于post发送请求
1.获取网页源码1
使用json库中的json.loads(),将json格式的字符串变为Python的字典形式
import requests
import json
url='http://httpbin.org/post' #目标站点
r = requests.post(url) #发送post请求
dict_data=json.loads(r.text) #将JSON 格式的字符串转换为 Python 字典(方便后续通过键名操作)
url_=dict_data["url"] #获取网页源码中的url
print("输出json形式的网页源码:\n",dict_data)
print(url_)
输出json形式的网页源码:{'args': {}, 'data': '', 'files': {}, 'form': {}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Content-Length': '0', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.32.3', 'X-Amzn-Trace-Id': 'Root=1-67b6ea62-559651c6763bbd4a2659f360'}, 'json': None, 'origin': '112.240.55.236', 'url': 'http://httpbin.org/post'}
http://httpbin.org/post
2.获取网页源码2
使用r.json()
import requests
import json
url='http://httpbin.org/post'#目标站点
r = requests.post(url)
dict_data=r.json()
print(dict_data)
print(dict_data["url"])
{'args': {}, 'data': '', 'files': {}, 'form': {}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Content-Length': '0', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.32.3', 'X-Amzn-Trace-Id': 'Root=1-67b6ee93-0580883d7de493eb16e3b93a'}, 'json': None, 'origin': '112.240.55.236', 'url': 'http://httpbin.org/post'}
http://httpbin.org/post
3.设置参数
json形式,基于post请求增加参数,使用data=data进行参数的增加
import requestsurl='http://httpbin.org/post' #目标站点post请求
data={"age":12,"time":11.9
} #参数
response = requests.post(url,data=data)
print("网页源码:\n",response.text)
print("网页源码(键值对形式):\n",response.json())
网页源码:{"args": {}, "data": "", "files": {}, "form": {"age": "12", "time": "11.9"}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "16", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "python-requests/2.32.3", "X-Amzn-Trace-Id": "Root=1-67b6f31c-37e0c7ac11daa02a0d09daad"}, "json": null, "origin": "112.240.55.236", "url": "http://httpbin.org/post"
}网页源码(键值对形式):{'args': {}, 'data': '', 'files': {}, 'form': {'age': '12', 'time': '11.9'}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Content-Length': '16', 'Content-Type': 'application/x-www-form-urlencoded', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.32.3', 'X-Amzn-Trace-Id': 'Root=1-67b6f31c-37e0c7ac11daa02a0d09daad'}, 'json': None, 'origin': '112.240.55.236', 'url': 'http://httpbin.org/post'}
三.维持会话
用途:登录网站使用 Cookies 或 Session 维持登录状态,访问需要登录的页面。
3.1通过cookies维持会话
import requests
#好处:容易请求到需要登录的请求
#坏处:容易被反爬封号
head={"cookie":"...............","user-agent":"................"
}
url='https://www.jianshu.com'
response=requests.get(url,headers=head)
3.2通过session维持会话
import requestss=requests.Session()
url='https://www.jianshu.com'
response1 = s.get(url,headers=head)
Cookies 和 Session 的区别
| 特性 | Cookies | Session |
|---|---|---|
| 存储位置 | 客户端(浏览器或爬虫) | 服务器端 |
| 数据安全性 | 较低(可以被客户端修改) | 较高(存储在服务器) |
| 生命周期 | 可以设置过期时间 | 通常随会话结束而失效 |
| 性能影响 | 每次请求都会携带 Cookies,增加带宽 | 服务器需要存储 Session 数据 |
| 适用场景 | 简单的状态维持(如登录状态) | 复杂的状态管理(如购物车、多步操作) |
四.代理设置/超时设置
使用proxies携带ip地址,使用timeout进行超时反馈,当ip不能用时,防止一直访问而不自知
超时(Timeout)是指爬虫在发送请求后,等待服务器响应的最长时间。如果超过这个时间仍未收到响应,爬虫会停止等待并抛出异常。
url='https://www.jianshu.com'
ip = {"https":"172.16.17.32:8000",
}
response2=requests.get(url,proxies=ip,timeout=4)
超时参数详解
-
timeout=5:表示总超时时间为 5 秒(包括连接时间和读取时间)。 -
timeout=(3, 5):表示连接超时为 3 秒,读取超时为 5 秒。
相关文章:
网络爬虫-1:发送请求+维持会话+代理设置/超时设置
1.基于get发送请求 2.基于post发送请求 3.维持会话 4.代理设置/超时设置 一.基于get发送请求 1.获取网页源码1 使用json库中的json.loads(),将json格式的字符串变为Python的字典形式 以下通过http://httpbin.org/get网址进行基本练习操作 import requests import json urlh…...
GPU加速的国密SM2算法实现
目录 GPU加速的国密SM2算法实现一、前言二、国密SM2算法概述2.1 国密SM2算法背景2.2 SM2的数学基础2.3 SM2数字签名流程三、GPU加速在SM2算法中的应用3.1 高性能运算需求3.2 GPU加速优势3.3 加速实现思路四、基于Python的SM2算法实现与GPU加速4.1 算法模块设计4.2 主要数学公式…...
Redis 2025/3/9
Redis主从集群 搭建主从集群 Redis并发能力非常强,单节点能够达到数万的并发。 不过对一些用户规模大,并发量比较高的应用来讲,数万并发不太够。这时候就用到redis的集群了。因为Redis中的数据通常读多写少,所以最常用的集群方…...
2min搞定~Mac Pro 编译安装 Nginx 1.8.1
2min搞定~Mac Pro 编译安装 Nginx 1.8.1 一安装流程简述1、编译源码前,获取要依赖的源码包2、进行编译、安装nginx3、启动 二、实战部分:测试demo1、nginx.conf改动2、代码改动3、访问 一安装流程简述 阿哟啊哟老铁,别嫌我啰嗦奥…...
要在Unreal Engine 5(UE5)中实现角色打击怪物并让怪物做出受击反应,
UE5系列文章目录 文章目录 UE5系列文章目录前言一、实现思路二、最终效果 前言 ue5角色受击没有播放受击动画,主角达到怪物身上没有反应 一、实现思路 要在Unreal Engine 5(UE5)中实现角色打击怪物并让怪物做出受击反应,你需要…...
C++蓝桥杯基础篇(十一)
片头 嗨~小伙伴们,大家好!今天我们来学习C蓝桥杯基础篇(十一),学习类,结构体,指针相关知识,准备好了吗?咱们开始咯~ 一、类与结构体 类的定义:在C中&#x…...
【贪心算法4】
力扣452.用最少数量的剪引爆气球 链接: link 思路 这道题的第一想法就是如果气球重叠得越多那么用箭越少,所以先将气球按照开始坐标从小到大排序,遇到有重叠的气球,在重叠区域右边界最小值之前的区域一定需要一支箭,这道题有两…...
Leetcode 698-划分为k个相等的子集
给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。 示例 1: 输入: nums [4, 3, 2, 3, 5, 2, 1], k 4 输出: True 说明: 有可能将其分成 4 个子集&#…...
Word 小黑第2套
对应大猫42 Word1 从文件中导入新样式 样式组 -管理样式 -导入导出 -关闭Normal文件 -打开文件 -修改文件 -选中所需 -复制 调整字符宽度 调整字符间距 -字体组 加宽 适当修改磅值 文字效果通过文字组修改 另起一页,分隔符(布局 -分隔符 -分节符 -下一…...
【最后203篇系列】014 AI机器人-1
说明 终于开张了,我觉得AI机器人是一件真正正确,具有商业价值的事。 把AI机器人当成一笔生意,我如何做好这笔生意?一端是业务价值,另一端是技术支撑。如何构造高质量的内容和服务,如何确保技术的广度和深度…...
沉浸式CSS学习路径
好的!我将以魔法学院成长故事为框架,为您设计一套沉浸式CSS学习路径。以下是叙事化学习提纲: 第一卷:像素学徒的觉醒 章节1:被封印的魔法书 发现HTML的"素颜"本质,通过<!DOCTYPE html>解除网页封印用style标签打开CSS魔法书,学会给文字穿上color斗篷和…...
ctfshow做题笔记—栈溢出—pwn69~pwn72
目录 前言 一、pwn69(可以尝试用ORW读flag flag文件位置为/ctfshow_flag) 二、pwn70(可以开始你的个人秀了 flag文件位置为/flag) 三、pwn71(32位的ret2syscall) 四、pwn72 前言 学了一些新的东西,pwn69的文档忘保存了(悲),…...
重要!!! 改进 梯度方差(Fisher 信息近似) 指数移动平均
改进 梯度方差(Fisher 信息近似) 指数移动平均 目录 改进 梯度方差(Fisher 信息近似) 指数移动平均1. 指数移动平均(Exponential Moving Average, EMA)2. 引入正则化项3. 分簇加权计算一、指数移动平均(EMA)概述二、EMA 公式参数作用三、举例说明场景 1:股票价格波动分…...
同盾v2 2025版 blackbox , wasm加解密,逆向协议算法生成,小盾安全
声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! # 欢迎交流 wjxch1004...
c++领域展开第十六幕——STL(vector容器的了解以及模拟实现、迭代器失效问题)超详细!!!!
文章目录 前言一、vector的介绍和使用1.1 vector的介绍1.2 vector的使用1.2.1 vector的定义1.2.2 vector iterator 的使用1.2.3 vector的空间增长问题1.2.4 vector的增删改查 二、vector在 oj 中的使用只出现一次的数删除有序数组中的重复项杨辉三角 总结 前言 在c专栏的上一篇…...
ubuntu2404 安装 过程中 手动设置网络
ubuntu2404 安装 过程中 手动设置网络 https://blog.csdn.net/2401_83947353/article/details/138454379 6.1 可以直接Done(不配置P) 6.2 可以配置ip地址,选择manual 6.2.1 search domains填 6.2.2 search domains不填 6.3 更深层次的…...
去北京的前端实习经历
趁现在对这部分还有深刻的感受记忆,赶紧记录下来。因为工作久了会发现真的对以前的事记不起来了。 公司: 北京的实习公司首先有学长学姐在,而且这个公司知名度还挺高的,但是工资比较低,3k左右吧,但是管2顿…...
QT创建项目(项目模板、构建系统、选择类、构建套件)
1. 项目模版 项目类型界面技术适用场景核心依赖模块开发语言Qt Widget ApplicationC Widgets传统桌面应用(复杂控件)Qt WidgetsCQt Console Application无 GUI命令行工具、服务Qt CoreCQt Quick ApplicationQML/Quick现代跨平台应用(动画/触…...
力扣热题 100:动态规划专题经典题解析
系列文章目录 力扣热题 100:哈希专题三道题详细解析(JAVA) 力扣热题 100:双指针专题四道题详细解析(JAVA) 力扣热题 100:滑动窗口专题两道题详细解析(JAVA) 力扣热题 100:子串专题三道题详细解析(JAVA) 力…...
变量赋值汇编
一、核心概念 寄存器:CPU内部的高速存储单元(如EAX、EBX、x86中的RAX、ARM中的R0等) 内存地址:变量存储在内存中的位置(如 0x1000) 指令:操作寄存器和内存的命令(如 MOV, STR, LDR…...
页面白屏出现的原因
🤖 作者简介:水煮白菜王,一位前端劝退师 👻 👀 文章专栏: 前端专栏 ,记录一下平时在博客写作中,总结出的一些开发技巧和知识归纳总结✍。 感谢支持💕💕&#…...
【大模型统一集成项目】让 AI 聊天更丝滑:WebSocket 实现流式对话!
🌟 在这系列文章中,我们将一起探索如何搭建一个支持大模型集成项目 NexLM 的开发过程,从 架构设计 到 代码实战,逐步搭建一个支持 多种大模型(GPT-4、DeepSeek 等) 的 一站式大模型集成与管理平台ÿ…...
boarding_passes(登机牌)表的作用
boarding_passes(登机牌)表的作用 boarding_passes 这张表的主要作用是记录旅客的登机信息,包括: 票号 (ticket_no) - 关联到 tickets 表,表示这张票属于哪个旅客。航班 ID (flight_id) - 关联到 flights 表…...
【2025】Electron Git Desktop 实战一(上)(架构及首页设计开发)
源代码仓库: Github仓库【electron_git】 Commit : bb40040 Github Desktop 页面分析 本节目标: 1、实现类似Github Desktop的「空仓库」提示页 2、添加本地仓库逻辑编写从 Github Desktop 我们看到 他的 主要页面分为三个区域 Head头部区域…...
14 | fastgo 三层架构设计
提示: 所有体系课见专栏:Go 项目开发极速入门实战课; 在实现业务代码之前,还需要先设计一个合理的软件架构。一个好的软件架构不仅可以大大提高项目的迭代速度,还可以降低项目的阅读和维护难度。目前,行业中…...
【机器学习-基础知识】统计和贝叶斯推断
1. 概率论基本概念回顾 1. 概率分布 定义: 概率分布(Probability Distribution)指的是随机变量所有可能取值及其对应概率的集合。它描述了一个随机变量可能取的所有值以及每个值被取到的概率。 对于离散型随机变量,使用概率质量函数来描述。对于连续型随机变量,使用概率…...
面向对象Demo01
面向对象 什么是面向对象 回顾方法的定义 package oop; import java.io.IOException; public class Demo01 {public static void main(String[] args) {}//public String sayHello() {return "hello, world!";}public void sayHi() {return;}public int max(i…...
C++设计模式-抽象工厂模式:从原理、适用场景、使用方法,常见问题和解决方案深度解析
一、模式基本概念 1.1 定义与核心思想 抽象工厂模式(Abstract Factory Pattern)是创建型设计模式的集大成者,它通过提供统一的接口来创建多个相互关联或依赖的对象族,而无需指定具体类。其核心思想体现在两个维度: …...
solana区块链地址生成
solana官网地址:https://solana.com 先引入相关依赖solana/web3.js;bip39;ethereumjs/wallet 生成助记词 const mnemonic bip39.generateMnemonic(); 生成种子 const seed bip39.mnemonicToSeedSync(mnemonic); 生成密钥对 const root hdkey.EthereumHDKey.from…...
基于python的升级队列加速决策
a-f大等级是3级 a-c建筑每升1级分别需要8天 d-f建筑每升1级分别需要10天 目前以下建筑队列正在从0级升至1级 建筑A升级需要7天05:16:20 建筑b升级需要06:06:54 建筑c升级需要00:37:00 建筑d升级需要…...
