Python进阶--爬取美女图片壁纸(基于回车桌面网的爬虫程序)

目录

一、前言

二、爬取下载美女图片

1、抓包分析

a、分析页面

b、明确需求

c、抓包搜寻

d、总结特点

2、编写爬虫代码

a、获取图片页网页源代码

b、提取所有图片的链接和标题

c、下载并保存这组图片

d、 爬取目录页的各种类型美女图片的链接

e、实现翻页

三、各种需求的爬虫代码

1、下载所有美女图片 

2、下载想要页码范围内的美女图片

3、下载想要类型的美女图片

a、下载想要类型的所有美女图片

b、下载想要类型的想要页码范围的美女图片


一、前言

        回车桌面网(https://www.enterdesk.com/)是一个具备各种精美图片的网站,里面包含各种丰富的图片资源。此处,将详细讲解爬取其中美女图片资源将其下载到本地。看懂本篇内容后,自己也可以爬取其中想要的类型图片。

回车桌面的首页:

        此处仅爬取所框选中的美女图片,看懂本篇后,自己也能做到爬取其他类型的图片!!!

二、爬取下载美女图片

1、抓包分析

        爬虫的第一步都是抓包分析(也就是分析网页,从网页源代码中找到自己想要的内容)。

a、分析页面

(1)在回车桌面中点击美女跳转到美女图片的网页

(2)在美女图片页面中,可以看到有各种类型的美女图片和下一页按钮。

(3)点击一种类型的美女图片会跳转到该种类型的美女图片的具体图片界面

(4)点击下一页会跳转到另一页的美女图片页面,里面包含其他的类型的美女图片

(5)在美女图片页面中还有分类标签,点击一种风格类型,则会跳转到该种类型风格的美女图片

美女网页:

各种类型的美女图片: 

 美女页面的下一页所在位置:

一种类型美女图片的页面:

b、明确需求

        根据上面的页面分析,可以明确以下需求:

  • 要获取到下一页的url所在页面源代码的位置
  • 要获取到每种类型美女图片的url
  • 要找到一种类型美女的各种图片下载的url
  • 对美女网页进行requests请求,需要有请求头,找到请求网页的url、user-agent、cookie等信息
  • 找到各种分类标签的url

c、抓包搜寻

        根据以上需求,分析网页源代码,找到想要的内容。

步骤:

  1. 在美女页面,按下F12,打开开发者界面
  2. 点击开发者界面左上角的鼠标箭头
  3. 将箭头移到在美女页面的一种类型的美女图片上并点击一下
  4. 在开发者界面将会出现此部分的网页源代码

        通过以上步骤,抓包寻找,可以分别找到需求部分所要内容: 

  • 要获取到下一页的url所在页面源代码的位置
  • 要获取到每种类型美女图片的url
  • 要找到一种类型美女的各种图片下载的url
  • 对美女网页进行requests请求,需要有请求头,找到请求网页的url、user-agent、cookie等信息
  • 找到各种分类标签的url

d、总结特点

          经过抓包搜寻,可以发现:

  • 美女页面每一页的url的构造为:以数字进行标记页码
'https://m.mm.enterdesk.com/1.html'
'https://m.mm.enterdesk.com/2.html'
'https://m.mm.enterdesk.com/3.html'
'https://m.mm.enterdesk.com/4.html'
'https://m.mm.enterdesk.com/5.html'
            ....
'https://m.mm.enterdesk.com/262.html'
'https://m.mm.enterdesk.com/264.html'
  • 美女页面的标签的url的构造为:以风格类型的中文拼音+meinv
'https://mm.enterdesk.com/dalumeinv/'
'https://mm.enterdesk.com/rihanmeinv/'
'https://mm.enterdesk.com/gangtaimeinv/'
'https://mm.enterdesk.com/dongmanmeinv/'
'https://mm.enterdesk.com/qingchunmeinv/'
'https://mm.enterdesk.com/oumeimeinv/'
  • 其他的url需要通过xPath来定位,根据所在位置的特点来定位
美女页面的各种类型的美女图片链接xPath定位://div[@class="mbig_pic_list_li"]//dd//a/@href
一种类型美女图片的标题xPath定位://h1[@class="m_h1"]/a/text()
一种类型美女图片的图片的urlxPath定位://div[@class="swiper-wrapper"]//img/@src

2、编写爬虫代码

        根据上面的抓包分析,可以编写爬虫代码。

具体代码思路为:

1. 获取图片页网页源代码
2. 提取所有图片的链接和标题
3. 下载并保存这组图片
4.
 爬取目录页的各种类型美女图片的链接
5. 实现翻页下载

a、获取图片页网页源代码

import os.path
from lxml import etree
import requests
# 1、获取回车桌面美女图片的网页源代码
header = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Mobile Safari/537.36',
          'cookie':'Hm_lvt_86200d30c9967d7eda64933a74748bac=1707274876; t=8207bbae9940b5f445e4f3aa1907d202; r=9737; Hm_lpvt_86200d30c9967d7eda64933a74748bac=1707276063'}
index_url = 'https://m.mm.enterdesk.com/'
r = requests.get(index_url, headers=header)

b、提取所有图片的链接和标题

def get_curindex_titlecontent(index_url):
    r = requests.get(index_url, headers=header)
    html = etree.HTML(r.text)
    titles = html.xpath('//h1[@class="m_h1"]/a/text()')
    pictures = html.xpath('//div[@class="marc_pandn"]//div[@class="swiper-slide"]//img/@src')
    return titles, pictures

c、下载并保存这组图片

def updownload(index_url):
    titles,pictures = get_curindex_titlecontent(index_url)
    titles = titles[0]
    # 创建目录
    if not os.path.exists(f'图片/{titles}/'):
        os.makedirs(f'图片/{titles}')
    num = 1
    for link in pictures:
        r = requests.get(link, headers=header).content
        with open(f'图片/{titles}/{titles}{num}.jpg', 'wb') as f:
            f.write(r)
            print(f"已下载...{titles}...编号为{num}的图片")
        num+=1

d、 爬取目录页的各种类型美女图片的链接

def get_curindex_links(index_url):
    r = requests.get(index_url, headers=header)
    html = etree.HTML(r.text)
    links = html.xpath('//div[@class="mbig_pic_list_li"]//dd//a/@href')
    return links

e、实现翻页

def get_nextindex_links(index_url):
    r = requests.get(index_url, headers=header)
    html = etree.HTML(r.text)
    links = html.xpath('//div[@class="listpages"]//a[@class="next_p"]/@href')
    return links

三、各种需求的爬虫代码

1、下载所有美女图片 

        由于美女图片数量较大,不建议使用这种情况。

思路:想要下载所有图片。在第一页的美女页面,下载完这一页图片后,通过获取下一页的链接,来刷新到第二页的美女页面,继续下载第二页的美女图片。然后继续获取下一页来刷新,直到下载到最后一页。最后一页是没有下一页的链接的,所以到了最后一页,获取下一页的代码会报错。但是没有关系,这里已经下载完了所有美女图片。

代码如下:

import os.path
from lxml import etree
import requests
# 1、获取回车桌面美女图片的网页源代码
header = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Mobile Safari/537.36',
          'cookie':'Hm_lvt_86200d30c9967d7eda64933a74748bac=1707274876; t=8207bbae9940b5f445e4f3aa1907d202; r=9737; Hm_lpvt_86200d30c9967d7eda64933a74748bac=1707276063'}
index_url = 'https://m.mm.enterdesk.com/'
r = requests.get(index_url, headers=header)
# 2、获取当前回车桌面美女页面的各种美女类型图片的链接
def get_curindex_links(index_url):
    r = requests.get(index_url, headers=header)
    html = etree.HTML(r.text)
    links = html.xpath('//div[@class="mbig_pic_list_li"]//dd//a/@href')
    return links
# 3、获取下一页的美女页面链接
def get_nextindex_links(index_url):
    r = requests.get(index_url, headers=header)
    html = etree.HTML(r.text)
    links = html.xpath('//div[@class="listpages"]//a[@class="next_p"]/@href')
    return links
# 4、获取一种美女类型的图片及类型名
def get_curindex_titlecontent(index_url):
    r = requests.get(index_url, headers=header)
    html = etree.HTML(r.text)
    titles = html.xpath('//h1[@class="m_h1"]/a/text()')
    pictures = html.xpath('//div[@class="swiper-wrapper"]//img/@src')
    return titles, pictures
# 5、将图片进行下载保存到新的目录中
def updownload(index_url):
    titles,pictures = get_curindex_titlecontent(index_url)
    titles = titles[0]
    # 创建目录
    if not os.path.exists(f'图片/{titles}/'):
        os.makedirs(f'图片/{titles}')
    num = 1
    for link in pictures:
        r = requests.get(link, headers=header).content
        with open(f'图片/{titles}/{titles}{num}.jpg', 'wb') as f:
            f.write(r)
            print(f"已下载...{titles}...编号为{num}的图片")
        num+=1
# 6、根据顺序来调整调用顺序
# a、获取各种类型美女图片的链接
num = 1
a = 1
while 1:
    links = get_curindex_links(index_url)
    print(f"正在下载第{num}页")
    print(f"下载链接为:{index_url}")
    for link in links:
# b、获取其中一个链接的内容和标题并下载保存
        print(f"正在下载第{a}种类型的美女图片")
        updownload(link)
        a+=1
    num+=1
    next_page = get_nextindex_links(index_url)
    # 将列表转换成字符串
    index_url ="".join(next_page)

部分运行结果截图 :

2、下载想要页码范围内的美女图片

        根据前面的总结特点,美女目录页面是根据1,2,3,4...来标记当前是第几页的。据此,可以通过读取键盘消息来下载自己想要范围内的美女图片。

代码如下:

import os.path
from lxml import etree
import requests
# 1、获取回车桌面美女图片的网页源代码
header = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Mobile Safari/537.36',
          'cookie':'Hm_lvt_86200d30c9967d7eda64933a74748bac=1707274876; t=8207bbae9940b5f445e4f3aa1907d202; r=9737; Hm_lpvt_86200d30c9967d7eda64933a74748bac=1707276063'}
index_url = 'https://m.mm.enterdesk.com/'
r = requests.get(index_url, headers=header)
# 2、获取当前回车桌面美女页面的各种美女类型图片的链接
def get_curindex_links(index_url):
    r = requests.get(index_url, headers=header)
    html = etree.HTML(r.text)
    links = html.xpath('//div[@class="mbig_pic_list_li"]//dd//a/@href')
    return links
# 3、获取一种美女类型的图片及类型名
def get_curindex_titlecontent(index_url):
    r = requests.get(index_url, headers=header)
    html = etree.HTML(r.text)
    titles = html.xpath('//h1[@class="m_h1"]/a/text()')
    pictures = html.xpath('//div[@class="swiper-wrapper"]//img/@src')
    return titles, pictures
# 4、将图片进行下载保存到新的目录中
def updownload(index_url):
    titles,pictures = get_curindex_titlecontent(index_url)
    titles = titles[0]
    # 创建目录
    if not os.path.exists(f'图片/{titles}/'):
        os.makedirs(f'图片/{titles}')
    num = 1
    for link in pictures:
        r = requests.get(link, headers=header).content
        with open(f'图片/{titles}/{titles}{num}.jpg', 'wb') as f:
            f.write(r)
            print(f"已下载...{titles}...编号为{num}的图片")
        num+=1
# 5、根据顺序来调整调用顺序
# a、获取各种类型美女图片的链接
a = 1
# 输入自己想要的页码范围内的美女图片
x = input("请输入起始页的页码:")
y = input("请输入结束页的页码:")
# 因为range函数是左闭右开的情况,所以y需要自增1
for page in range(int(x), int(y)+1):
    new_index = index_url + str(page) + '.html'
    links = get_curindex_links(new_index)
    print(f"正在下载第{page}页")
    print(f"下载链接为:{new_index}")
    for link in links:
    # b、获取其中一个链接的内容和标题并下载保存
        print(f"正在下载第{a}种类型的美女图片")
        updownload(link)
        a+=1

部分运行结果截图:

3、下载想要类型的美女图片

        根据前面总结特点,可知各种标签的美女类型的url是通过输入中文拼音+meinv来进行标记的。则,可以通过读取键盘输入美女类型来下载想要类型的美女图片。这种情况下,存在两种需求。一是下载想要类型的所有的美女图片,二是下载想要类型的想要页码范围的美女图片。

a、下载想要类型的所有美女图片

代码如下:

import os.path
from lxml import etree
import requests
# 1、获取回车桌面美女图片的网页源代码
header = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Mobile Safari/537.36',
          'cookie':'Hm_lvt_86200d30c9967d7eda64933a74748bac=1707274876; t=8207bbae9940b5f445e4f3aa1907d202; r=9737; Hm_lpvt_86200d30c9967d7eda64933a74748bac=1707276063'}
index_url = 'https://m.mm.enterdesk.com/'
r = requests.get(index_url, headers=header)
# 2、获取当前回车桌面美女页面的各种美女类型图片的链接
def get_curindex_links(index_url):
    r = requests.get(index_url, headers=header)
    html = etree.HTML(r.text)
    links = html.xpath('//div[@class="mbig_pic_list_li"]//dd//a/@href')
    return links
# 3、获取下一页的美女页面链接
def get_nextindex_links(index_url):
    r = requests.get(index_url, headers=header)
    html = etree.HTML(r.text)
    links = html.xpath('//div[@class="listpages"]//a[@class="next_p"]/@href')
    return links
# 4、获取一种美女类型的图片及类型名
def get_curindex_titlecontent(index_url):
    r = requests.get(index_url, headers=header)
    html = etree.HTML(r.text)
    titles = html.xpath('//h1[@class="m_h1"]/a/text()')
    pictures = html.xpath('//div[@class="marc_pandn"]//div[@class="swiper-slide"]//img/@src')
    return titles, pictures
# 5、将图片进行下载保存到新的目录中
def updownload(index_url):
    titles,pictures = get_curindex_titlecontent(index_url)
    titles = titles[0]
    # 创建目录
    if not os.path.exists(f'图片/{keyword}/{titles}/'):
        os.makedirs(f'图片/{keyword}/{titles}')
    num = 1
    for link in pictures:
        r = requests.get(link, headers=header).content
        with open(f'图片/{keyword}/{titles}/{titles}{num}.jpg', 'wb') as f:
            f.write(r)
            print(f"已下载...{titles}...编号为{num}的图片")
        num+=1
# 6、根据键盘的输入来下载想要类型的美女图片
# a、读取键盘消息
keyword = input("请输入想要下载的类型的美女图片(中文拼音):")
index_url = index_url + keyword
num = 1
a = 1
while 1:
    links = get_curindex_links(index_url)
    print(f"正在下载第{num}页")
    print(f"下载链接为:{index_url}")
    for link in links:
# b、获取其中一个链接的内容和标题并下载保存
        print(f"正在下载第{a}种类型的美女图片")
        updownload(link)
        a+=1
    num+=1
    next_page = get_nextindex_links(index_url)
    # 将列表转换成字符串
    index_url ="".join(next_page)

部分截图如下: 

b、下载想要类型的想要页码范围的美女图片

代码如下:

import os.path
from lxml import etree
import requests
# 1、获取回车桌面美女图片的网页源代码
header = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Mobile Safari/537.36',
          'cookie':'Hm_lvt_86200d30c9967d7eda64933a74748bac=1707274876; t=8207bbae9940b5f445e4f3aa1907d202; r=9737; Hm_lpvt_86200d30c9967d7eda64933a74748bac=1707276063'}
index_url = 'https://m.mm.enterdesk.com/'
r = requests.get(index_url, headers=header)
# 2、获取当前回车桌面美女页面的各种美女类型图片的链接
def get_curindex_links(index_url):
    r = requests.get(index_url, headers=header)
    html = etree.HTML(r.text)
    links = html.xpath('//div[@class="mbig_pic_list_li"]//dd//a/@href')
    return links
# 3、获取一种美女类型的图片及类型名
def get_curindex_titlecontent(index_url):
    r = requests.get(index_url, headers=header)
    html = etree.HTML(r.text)
    titles = html.xpath('//h1[@class="m_h1"]/a/text()')
    pictures = html.xpath('//div[@class="swiper-wrapper"]//img/@src')
    return titles, pictures
# 4、将图片进行下载保存到新的目录中
def updownload(index_url):
    titles,pictures = get_curindex_titlecontent(index_url)
    titles = titles[0]
    print(titles)
    # 创建目录
    if not os.path.exists(f'图片/{keyword}/{titles}/'):
        os.makedirs(f'图片/{keyword}/{titles}')
    num = 1
    for link in pictures:
        r = requests.get(link, headers=header).content
        with open(f'图片/{keyword}/{titles}/{titles}{num}.jpg', 'wb') as f:
            f.write(r)
            print(f"已下载...{titles}...编号为{num}的图片")
        num+=1
# 5、根据键盘的输入来下载想要类型的美女图片
# a、读取键盘消息
keyword = input("请输入想要下载的类型的美女图片(中文拼音):")
index_url = index_url + keyword +'/'
# 输入自己想要的页码范围内的美女图片
x = input("请输入起始页的页码:")
y = input("请输入结束页的页码:")
# 因为range函数是左闭右开的情况,所以y需要自增1
for page in range(int(x), int(y)+1):
    new_index = index_url + str(page) + '.html'
    links = get_curindex_links(new_index)
    print(f"正在下载第{page}页")
    print(f"下载链接为:{new_index}")
    for a, link in enumerate(links):
    # b、获取其中一个链接的内容和标题并下载保存
        print(f"正在下载第{page}页的第{a}种类型的美女图片")
        updownload(link)

部分截图如下: 

    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/378522.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HACKTHEBOX通关笔记——mango(退役)

信息收集 端口扫描 ┌──(root㉿kali)-[~] └─# nmap -sC -sV -A -p- --min-rate10000 10.129.229.185 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-01-31 20:44 EST Warning: 10.129.229.185 giving up on port because retransmission cap hit (10). Nmap scan …

秘塔科技推出AI搜索产品「秘塔AI搜索」

近日,国内一家人工智能科技公司(秘塔科技)推出了一款AI搜索产品——秘塔AI搜索,能够大幅提升搜索效率,解决日常生活、工作学习等场景中遇到的各类搜索需求。 秘塔AI搜索官网:https://metaso.cn/ 相较于传统…

《小狗钱钱2》读书笔记

目录 前言 作者简介 经典语句摘录 前言 尽管[ 智慧是无法传授的], 但读书可以启发思路,开拓解题方法。 《小狗钱钱2》这本书是在《小狗钱钱》的基础上,作业进一步阐述了关于人生出生的智慧。 当然了,这本书感觉更适合成年人来看&#xff0…

【集合系列】Map 双列集合

Map双列集合 1. 概述2. 方法3. 代码示例4. 输出结果5. 注意事项 实现类: HashTable、HashMap、TreeMap、Properties、LinkedHashMap 其他集合类 具体信息请查看 API 帮助文档 1. 概述 Map是Java中的一种数据结构,用于存储键值对(key-value p…

LayUI中表格树折叠 --

1、先将插件源码进行下载,新建 tableTree.js 文件,将源码放进去 2、将 tableTree.js 文件 配置之后,在需要使用的页面进行引入: layui.define(["tableTree"],function (exports) {var tableTree layui.tableTree;// …

JavaScript相关(四)——事件循环

参考: 极客时间-消息队列和事件循环 js中的宏任务与微任务 javascript是单线程的原因是什么 JS是单线程语言,在浏览器执行渲染进程时,会遇到很多不同的事件类型,比如操作DOM节点、计算样式布局、执行JS任务、用户输入等&#xff…

Transformer实战-系列教程13:DETR 算法解读

🚩🚩🚩Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 点我下载源码 1、物体检测 说到目标检测你能想到什么 faster-rcnn系列,开山之作&…

【Spring Boot】第二篇 自动装配原来就这么简单

导航 一. 什么是自动装配?二. 如何实现自动装配?1. 配置清单在哪里?2. 自动装配实现核心点1: 从META‐INF/spring.factories路径读取配置类清单核心点2: 过滤第一次过滤: 根据EnableAutoConfiguration注解中exclude和excludeName属性第二次过滤: 通过AutoConfigurationImpor…

【学网攻】 第(23)节 -- PPP协议

系列文章目录 目录 系列文章目录 文章目录 前言 一、PPP协议是什么? 二、实验 1.引入 实验目的 实验背景你是某公司的网络管理员,现在需要与另一个公司进行通信,需要你配置PPP协议保证双方发送的人是真正的而非黑客 技术原理 实验步骤新建Pack…

Backtrader 文档学习- Plotting - Plotting Date Ranges

Backtrader 文档学习- Plotting - Plotting Date Ranges 1.概述 1.9.31.x版本增加了绘制部分图形的功能。 可以使用策略实例中保留完整长度的时间戳数组的索引或者使用实际的datetime.date 或datetime.datetime 实例来限制需要绘制的内容。 仍然可以使用标准的cerebro.plot…

自然语言学习nlp 六

https://www.bilibili.com/video/BV1UG411p7zv?p118 Delta Tuning,尤其是在自然语言处理(NLP)和机器学习领域中,通常指的是对预训练模型进行微调的一种策略。这种策略不是直接更新整个预训练模型的权重,而是仅针对模型…

YOLOv8改进 更换轻量级网络结构

一、GhostNet论文 论文地址:1911.11907.pdf (arxiv.org) 二、 GhostNet结构 GhostNet是一种高效的目标检测网络,具有较低的计算复杂度和较高的准确性。该网络采用了轻量级的架构,可以在计算资源有限的设备上运行,并能够快速地实时检测图像中的目标物体。 GhostNet基于Mo…

【大模型上下文长度扩展】RoFormer:一种结合了旋转位置编码(RoPE)的Transformer模型

RoFormer:一种结合了旋转位置编码(RoPE)的Transformer模型 提出背景旋转位置编码(RoPE)旋转矩阵子问题1: 位置信息编码的需求子问题2: 序列长度的灵活性子问题3: 线性自注意力与相对位置编码的整合 RoPE的创新性绝对位…

CRNN介绍:用于识别图中文本的深度学习模型

CRNN:用于识别图中文本的深度学习模型 CRNN介绍:用于识别图中文本的深度学习模型CRNN的结构组成部分工作原理 CRNN结构分析卷积层(Convolutional Layers)递归层(Recurrent Layers)转录层(Transc…

恒创科技:怎么看云主机的性价比

随着云计算技术的不断发展,云主机已经成为越来越多企业和个人用户的首选计算资源。然而,在选择云主机时,性价比是一个非常重要的考虑因素。那么,怎么看云主机的性价比呢? 通常来说,云主机的成本主要包括硬…

相机图像质量研究(10)常见问题总结:光学结构对成像的影响--光圈

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

MySQL数据库基础第四篇(多表查询与事务)

文章目录 一、多表关系二、多表查询三、内连接查询四、外连接查询五、自连接查询六、联合查询 union, union all七、子查询1.标量子查询2.列子查询3.行子查询4.表子查询 八、事务八、事务的四大特性九、并发事务问题十、事务隔离级级别 在这篇文章中,我们将深入探讨…

MySQL篇之定位与优化MySQL慢查询

一、如何定位慢查询 1.方案一:开源工具 调试工具:Arthas。 运维工具:Prometheus 、Skywalking。 2.方案二:MySQL自带慢日志 慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:…

SpringIOC之support模块ReloadableResourceBundleMessageSource

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

【分布式】雪花算法学习笔记

雪花算法学习笔记 来源 https://pdai.tech/md/algorithm/alg-domain-id-snowflake.html概述 雪花算法是推特开源的分布式ID生成算法,以划分命名空间的方式将64位分割成多个部分,每一个部分代表不同的含义,这种就是将64位划分成不同的段&…