5. 超炫酷的爬虫源代码-vip音乐下载器

news2024/11/30 8:56:03

文章目录

    • 1. 准备工作
    • 2. 安装第3方库
      • 2.1 os 库
      • 2.2 tkinter库
      • 2.3 webbrowser 库
      • 2.4 requests 库
      • 2.5 PySimpleGUI 库
      • 2.6 retrying库
    • 3. 源代码
    • 4. 运行结果
    • 5. 音乐下载器的使用
    • 6. 去哪里找下载的音乐
    • 7. 部分代码解析
    • 8. 留言

1. 准备工作

  1. 在电脑D盘新建一个【安迪笔记】文件夹。

  2. 【安迪笔记】文件夹里新建【2.爬虫笔记】文件夹。

  3. 【2.爬虫笔记】文件夹里新建【5.vip音乐爬虫】文件夹。

  4. 【5.vip音乐爬虫】文件夹里新建【5.vip音乐下载器.py】文件。

  5. 我用vscode编辑器打开【安迪笔记】文件夹。

vscode打开的文件夹决定了相对路径,这一步要重点关注。

【备注】

  1. 我写笔记需要用到【安迪笔记】里的其他资料,为了笔记方便,我才建了这么多文件夹 。

  2. 因为有太多太多的同学找不到最终输出的文件,所以我对建文件夹和py文件做了详细说明。

  3. 如果你能掌握绝对路径的知识,能找到输出的文件,直接建py文件写即可。

2. 安装第3方库

【程序需要导入的所有库】

import os
import tkinter as tk
import webbrowser
import requests
import tkinter.messagebox as mes_box
import PySimpleGUI as sg
from tkinter import ttk
from retrying import retry

2.1 os 库

os是Python的内置库,不需要额外安装。

os库提供了一系列与操作系统交互的函数。

包括文件操作、进程管理、环境变量等。

通过os库,可以实现对文件、目录、进程等的操作,方便程序的编写和管理。

2.2 tkinter库

tkinter:图形界面。

tkinter是Python的内置库,不需要额外安装。

它是一个图形用户界面(GUI)工具包。

可以用于创建窗口、按钮、标签、文本框等各种界面元素,以及实现用户与程序的交互。

它是Python中最常用的GUI库之一,适用于开发桌面应用程序。

2.3 webbrowser 库

webbrowser:网页浏览器。

webbrowser 是Python的内置库,不需要额外安装。

webbrowser 库的作用是打开一个浏览器窗口,并在其中显示指定的URL地址。

它提供了一种简单的方法来在Python程序中打开网页、查看文档、播放视频等。

例如,可以使用 webbrowser.open() 函数来打开一个指定的URL地址,如下所示:

【代码示例】

# 1. 导入webbrowser库
import webbrowser

# 2. 定义一个url变量
url = 'https://www.baidu.com'

# 3.打开百度网页
webbrowser.open(url)

【终端输出】

True

【代码解析】

  1. webbrowser库名。

  2. 库名和函数之间有一个英文小圆点.

  3. open函数名。

  4. url是参数,即要打开的网页。

【返回值】

True

返回True表示打开网页成功。

【效果】

运行上面的代码,我的360浏览器会自动打开百度网站。如下图所示:

在这里插入图片描述

【调用模块或库中的函数语法】

调用模块或库的函数:模块名.函数名(),如 os.mkdir()

2.4 requests 库

requests 是第三方库,需要安装。

【pip安装requests库的方法】

  1. 打开命令行

在这里插入图片描述

  1. 在命令行中输入以下命令
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ requests

【安装语法解析】

  1. 关键字pip

  2. 安装命令关键字install

install[ɪnˈstɔːl]:安装。

  1. -i后面表示要接的是镜像源。

  2. 下面的链接是清华大学镜像源。

https://pypi.tuna.tsinghua.edu.cn/simple/
  1. 要安装的库名:requests

【安装第3方库可参考下面的链接】

73. python第三方库安装教程(超详细)

【备注】

因为这个库我已经安装过了,这里不做图片展示。后面有安装的库图片展示,不懂的请参考后文。

【requests库的作用】

requests库的作用是发送HTTP请求,并处理响应。

它可以发送GET、POST、PUT、DELETE等请求,支持HTTPS、Cookie、Session等功能。

还可以处理JSON、XML等格式的数据。

requests 库简化了HTTP请求的操作,使得Python程序可以更方便地与Web服务器进行交互。

2.5 PySimpleGUI 库

PySimpleGUI 是第三方库,需要安装。

【pip安装库的代码】

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ PySimpleGUI

安装过程如下图所示:

在这里插入图片描述

【GUI是什么】

GUI是Graphical User Interface的缩写,中文翻译为图形用户界面。

Graphical [ˈɡrafɪk(ə)l]:图形的。

Interface [ˈɪntəfeɪs]:接口。

它是一种通过图形化方式呈现计算机操作界面的技术,使得用户可以通过鼠标、键盘等输入设备与计算机进行交互。

GUI的出现使得计算机操作更加直观、易用,用户可以通过图形化的界面进行操作,而不需要记忆复杂的命令行指令。

常见的GUI包括Windows、Mac OS、Linux等操作系统的桌面界面。

【PySimpleGUI的作用】

PySimpleGUI是一个用于创建图形用户界面的 Python 库。

它提供了一种简单易用的方式来创建跨平台的 GUI 应用程序。

它的设计目标是让 GUI 开发变得简单、快速、易于理解和易于维护。

PySimpleGUI 支持多种 GUI 工具包,包括 Tkinter、Qt、WxPython 和 Pygame。

它可以用于创建各种类型的 GUI 应用程序,包括桌面应用程序、游戏、数据可视化工具等。

2.6 retrying库

retrying是第三方库,需要安装。

【pip安装库的代码】

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ retrying

【retrying库的作用】

retrying:正在重试。

retrying库的作用是提供了一种简单的方式来添加重试逻辑,可以在函数执行失败时自动重试。

它可以帮助我们处理一些不稳定的操作,比如网络请求、数据库连接等,提高程序的健壮性和可靠性。

3. 源代码

上面的所有库都安装完成以后,就可以把下面的代码直接复制到py文件中。

然后点击运行。

import os
import tkinter as tk
import webbrowser
import requests
import tkinter.messagebox as mes_box
import PySimpleGUI as sg
from tkinter import ttk
from retrying import retry

class SetUI(object):
    """
    音乐弹框界面
    """
    def __init__(self, weight=1000, height=600):
        self.ui_weight = weight
        self.ui_height = height
        self.title = "好课优选·音乐破解软件"
        self.ui_root = tk.Tk(className=self.title)
        self.ui_url = tk.StringVar()
        self.ui_var = tk.IntVar()
        self.ui_var.set(1)
        self.show_result = None
        self.song_num = None
        self.response_data = None
        self.song_url = None
        self.song_name = None
        self.song_author = None

    def set_ui(self):
        """
        设置简易UI界面
        :return:
        """
        # Frame空间
        frame_1 = tk.Frame(self.ui_root)
        frame_2 = tk.Frame(self.ui_root)
        frame_3 = tk.Frame(self.ui_root)
        frame_4 = tk.Frame(self.ui_root)

        # ui界面中菜单设计
        ui_menu = tk.Menu(self.ui_root)
        self.ui_root.config(menu=ui_menu)
        file_menu = tk.Menu(ui_menu, tearoff=0)
        ui_menu.add_cascade(label='菜单', menu=file_menu)
        # file_menu.add_command(label='使用说明', command=lambda: webbrowser.open('www.baidu.com'))
        # file_menu.add_command(label='关于作者', command=lambda: webbrowser.open('www.baidu.com'))
        file_menu.add_command(label='退出', command=self.ui_root.quit)

        # 控件内容设置
        choice_passageway = tk.Label(frame_1, text='请选择音乐搜索通道:', padx=10, pady=10)
        # passageway_button_1 = tk.Radiobutton(frame_1, text='酷我', variable=self.ui_var, value=1, width=10, height=3)
        # passageway_button_2 = tk.Radiobutton(frame_1, text='网易云', variable=self.ui_var, value=2, width=10, height=3)
        # passageway_button_3 = tk.Radiobutton(frame_1, text='QQ音乐', variable=self.ui_var, value=3, width=10, height=3)
        # passageway_button_4 = tk.Radiobutton(frame_1, text='酷我', variable=self.ui_var, value=4, width=10, height=3)
        input_link = tk.Label(frame_2, text="请输入歌曲名或歌手:")
        entry_style = tk.Entry(frame_2, textvariable=self.ui_url, highlightcolor='Fuchsia', highlightthickness=1,
                               width=35)
        label2 = tk.Label(frame_2, text=" ")
        play_button = tk.Button(frame_2, text="搜索", font=('楷体', 11), fg='Purple', width=2, height=1,
                                command=self.get_KuWoMusic)
        label3 = tk.Label(frame_2, text=" ")
        # 表格样式
        columns = ("序号", "歌手", "歌曲", "专辑")
        self.show_result = ttk.Treeview(frame_3, height=20, show="headings", columns=columns)
        # 下载
        download_button = tk.Button(frame_4, text="下载", font=('楷体', 11), fg='Purple', width=6, height=1, padx=5,
                                    pady=5, command=self.download_music)

        # 控件布局
        frame_1.pack()
        frame_2.pack()
        frame_3.pack()
        frame_4.pack()
        choice_passageway.grid(row=0, column=0)
        # passageway_button_1.grid(row=0, column=1)
        # passageway_button_2.grid(row=0, column=2)
        # passageway_button_3.grid(row=0, column=3)
        # passageway_button_4.grid(row=0, column=4)
        input_link.grid(row=0, column=0)
        entry_style.grid(row=0, column=1)
        label2.grid(row=0, column=2)
        play_button.grid(row=0, column=3, ipadx=10, ipady=10)
        label3.grid(row=0, column=4)
        self.show_result.grid(row=0, column=4)
        download_button.grid(row=0, column=5)

        # 设置表头
        self.show_result.heading("序号", text="序号")
        self.show_result.heading("歌手", text="歌手")
        self.show_result.heading("歌曲", text="歌曲")
        self.show_result.heading("专辑", text="专辑")
        # 设置列
        self.show_result.column("序号", width=100, anchor='center')
        self.show_result.column("歌手", width=200, anchor='center')
        self.show_result.column("歌曲", width=200, anchor='center')
        self.show_result.column("专辑", width=300, anchor='center')

        # 鼠标点击
        self.show_result.bind('<ButtonRelease-1>', self.get_song_url)

    @retry(stop_max_attempt_number=5)
    def get_KuWoMusic(self):
        """
        获取酷我音乐
        :return:
        """
        # 清空treeview表格数据
        for item in self.show_result.get_children():
            self.show_result.delete(item)
        headers = {
            'accept': 'application/json, text/plain, */*',
            'accept - encoding': 'gzip, deflate',
            'accept - language': 'zh - CN, zh;q = 0.9',
            'cache - control': 'no - cache',
            'Connection': 'keep-alive',
            'csrf': 'HH3GHIQ0RYM',
            'Referer': 'http://www.kuwo.cn/search/list?key=%E5%91%A8%E6%9D%B0%E4%BC%A6',
            'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                          'Chrome/99.0.4844.51 Safari/537.36',
            'Cookie': '_ga=GA1.2.218753071.1648798611; _gid=GA1.2.144187149.1648798611; _gat=1; '
                      'Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1648798611; '
                      'Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1648798611; kw_token=HH3GHIQ0RYM'
        }
        search_input = self.ui_url.get()
        if len(search_input) > 0:
            search_url = 'http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?'
            search_data = {
                'key': search_input,
                'pn': '1',
                'rn': '80',
                'httpsStatus': '1',
                'reqId': '858597c1-b18e-11ec-83e4-9d53d2ff08ff'
            }
            try:
                self.response_data = requests.get(search_url, params=search_data, headers=headers, timeout=20).json()
                songs_data = self.response_data['data']['list']
                if int(self.response_data['data']['total']) <= 0:
                    mes_box.showerror(title='错误', message='搜索: {} 不存在.'.format(search_input))
                else:
                    for i in range(len(songs_data)):
                        self.show_result.insert('', i, values=(i + 1, songs_data[i]['artist'], songs_data[i]['name'],
                                                               songs_data[i]['album']))
            except TimeoutError:
                mes_box.showerror(title='错误', message='搜索超时,请重新输入后再搜索!')
        else:
            mes_box.showerror(title='错误', message='未输入需查询的歌曲或歌手,请输入后搜索!')

    def get_song_url(self, event):
        """
        获取下载歌曲的地址
        :return:
        """
        # treeview中的左键单击
        for item in self.show_result.selection():
            item_text = self.show_result.item(item, "values")
            # 获取
            self.song_num = int(item_text[0])
        # 获取下载歌曲的地址
        if self.song_num is not None:
            songs_data = self.response_data['data']['list']
            songs_req_id = self.response_data['reqId']
            song_rid = songs_data[self.song_num - 1]['rid']
            music_url = 'http://www.kuwo.cn/api/v1/www/music/playUrl?mid={}&type=convert_url3' \
                        '&httpsStatus=1&reqId={}' \
                .format(song_rid, songs_req_id)
            response_data = requests.get(music_url).json()
            self.song_url = response_data['data'].get('url')
            self.song_name = songs_data[self.song_num - 1]['name']
            self.song_author = songs_data[self.song_num - 1]['artist']
        else:
            mes_box.showerror(title='错误', message='未选择要下载的歌曲,请选择')

    def download_music(self):
        """
        下载音乐
        :return:
        """
        if not os.path.exists('./KuWoMusic'):
            os.mkdir("./KuWoMusic/")
        if self.song_num is not None:
            song_name = self.song_name + '--' + self.song_author + ".mp3"
            try:
                save_path = os.path.join('./KuWoMusic/{}'.format(song_name)) \
                    .replace('\\', '/')
                true_path = os.path.abspath(save_path)
                resp = requests.get(self.song_url)
                with open(save_path, 'wb') as file:
                    file.write(resp.content)
                    mes_box.showinfo(title='下载成功', message='歌曲:%s,保存地址为%s' % (self.song_name, true_path))
            except Exception:
                mes_box.showerror(title='错误', message='未找到存放歌曲的文件夹')
        else:
            mes_box.showerror(title='错误', message='未选择要下载的歌曲,请选择后下载')

    def progress_bar(self, file_size):
        """
        任务加载进度条
        :return:
        """
        layout = [[sg.Text('任务完成进度')],
                  [sg.ProgressBar(file_size, orientation='h', size=(40, 20), key='progressbar')],
                  [sg.Cancel()]]

        # window只需将自定义的布局加载出来即可 第一个参数是窗口标题。
        window = sg.Window('机器人执行进度', layout)
        # 根据key值获取到进度条
        _progress_bar = window['progressbar']
        for i in range(file_size):  # 循环
            event, values = window.read(timeout=10)
            if event == 'Cancel' or event is None:
                break
            _progress_bar.UpdateBar(i + 1)

    def ui_center(self):
        """
        UI界面窗口设置:居中
        """
        ws = self.ui_root.winfo_screenwidth()
        hs = self.ui_root.winfo_screenheight()
        x = int((ws / 2) - (self.ui_weight / 2))
        y = int((hs / 2) - (self.ui_height / 2))
        self.ui_root.geometry('{}x{}+{}+{}'.format(self.ui_weight, self.ui_height, x, y))

    def loop(self):
        """
        函数说明:loop等待用户事件
        """
        self.ui_root.resizable(False, False)  # 禁止修改窗口大小
        self.ui_center()  # 窗口居中
        self.set_ui()
        self.ui_root.mainloop()

if __name__ == '__main__':
    a = SetUI()
    a.loop()

4. 运行结果

代码正常运行后,得到如下一个GUI:

在这里插入图片描述

我把它称为vip音乐下载器。

5. 音乐下载器的使用

  1. 在【请输入歌曲名或歌手:】后面输入【张杰】。

  2. 点击【搜索】。

和张杰有关的所有歌曲会呈现在GUI界面上,如下图所示:

在这里插入图片描述

  1. 点击【下载】。

6. 去哪里找下载的音乐

我用vscode编辑器打开的是【安迪笔记】文件夹。

运行上面的代码后【安迪笔记】文件夹里多了一个【KuWoMusic】文件夹。

下载的音乐在【KuWoMusic】文件夹里。

在这里插入图片描述

vscode打开的是【安迪笔记】文件夹,下载的音乐在【安迪笔记】文件夹里的【KuWoMusic】文件夹里。

所以让大家重点关注下vscode打开的文件夹。

我衷心希望大家有空没空多研究下相对路径的知识,这个问题问我回答的头疼,太浪费我的时间了。

相对路径知识可参考如下链接。

68. Python的相对路径

7. 部分代码解析

【导入库语法】

import+模块名

import os
import requests
import webbrowser

【代码示例】

import tkinter as tk

【代码解析】

import tkinter as tk的作用是导入tkinter模块并将简写为tk

import PySimpleGUI as sg的作用是导入PySimpleGUI模块并将简写为sg

【代码示例】

import tkinter.messagebox as mes_box

【代码解析】

这行代码的意思是将 tkinter 库中的 messagebox 模块导入,并将其重命名为 mes_box。

这样就可以使用 mes_box 来调用 messagebox 模块中的函数,例如 mes_box.showinfo() 来显示一个信息框。

【代码示例】

from tkinter import ttk

【代码解析】

这行代码的意思是从 tkinter 模块中导入 ttk 子模块。

ttk 是 tkinter 的一个扩展模块,提供了一些额外的控件和样式选项。

【代码示例】

from retrying import retry

【代码解析】

从retrying库中导入retry函数。

代码解析先写库这个部分的。

其它代码后面有时间再解析吧。

真是困到怀疑人生了,今天的笔记没有检查,如果有错误、错别字大家联系我修改。

诶,一个不认真、不负责的博主!!!

8. 留言

源代码的作者是【湖南好课优选教育】的三更老师。

源代码是我上直播课写完作业后的奖励。

如涉侵权,请联系删除。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python怎么下载cfg模块

Python怎么下载cfg模块 Python是一种流行的编程语言&#xff0c;它多用于Web开发、数据分析、人工智能等领域。要想使用Python编写程序&#xff0c;需要掌握大量的Python模块。其中&#xff0c;cfg模块是一个比较特殊的模块&#xff0c;它可以用来读取和写入INI文件。本文将介…

chatgpt赋能python:Python科学计算之超级强大的数据分析库:Pandas

Python科学计算之超级强大的数据分析库&#xff1a;Pandas Python作为一种高级编程语言&#xff0c;已经被广泛应用于数据分析、机器学习和人工智能等领域。在这些领域中&#xff0c;Pandas是最重要的Python库之一。它提供了高效、灵活的数据结构和数据分析工具&#xff0c;如…

chatgpt赋能python:PythonNumpy下载指南

Python Numpy下载指南 在Python中进行科学计算和数据处理&#xff0c;numpy是一个非常重要和必不可少的工具包。Numpy是Python中强大的数学和科学计算工具&#xff0c;它提供了高效的数据结构和计算方法&#xff0c;可以快速处理大型数据集和复杂的科学计算任务。本文介绍了如…

HashMap源码

介绍 HashMap基于哈希表的Map接口实现&#xff0c;是以key-value存储形式存在&#xff0c;即主要用来存放键值对。HashMap 的实现不是同步的&#xff0c;这意味着它不是线程安全的。它的key、value都可以为null。此外&#xff0c;HashMap中的映射不是有序的。 特点&#xff1…

redis到底是怎么样进行渐进式Rehash的

Redis 是一个开源&#xff08;BSD许可&#xff09;的&#xff0c;内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。那么redis的底层是如何来存储数据的呢&#xff1f; 一、redis如何在存储大量的key时候&#xff0c;查询速度还能接近O(1)呢&#xf…

JavaSE笔记(六)重制版

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hqvdx4nQ-1685927311485)(https://s2.loli.net/2022/10/04/SkAn9RQpqC4tVW5.png)] 集合类与IO 前面我们已经把基础介绍完了&#xff0c;从这节课开始&#xff0c;我们就正式进入到集合类的讲解中。 …

【ChatGPT+Python】Landsat卫星图像黑边去云及旋转校正

引言 下图是一张Landsat图像的示例&#xff08;右图&#xff09;。我们可以明显地看到四周的黑边和倾斜的角度。这是由于卫星传感器成像导致的。一般情况下&#xff0c;我们是不需要去除黑边和选择的&#xff0c;因为这样做之后投影信息和位置信息就不正确了。但对于做深度学习…

React 基本介绍

目录 1、React是什么 2、React 三大颠覆性的特点 2.1 组件 2.2 JSX 2.3 Virtual DOM 3、Flux 架构&#xff08;redux&#xff09; 3.1 Flux 3.2 redux 4、打包工具&#xff08;webpack&#xff09; 4.1 webpack与RequireJS、browserify 4.2 模块规范 4.3 非 JavaSc…

二叉树的数学性质、最大堆的实现

每层个数的通式 第一层&#xff1a; 2 0 第二层&#xff1a; 2 1 第三层&#xff1a; 2 2 第四层&#xff1a; 2 3 每层个数的通式 2 n − 1 个&#xff0c; n 为层数 \begin{aligned} 第一层&#xff1a;2^0 \\ 第二层&#xff1a;2^1 \\ 第三层&#xff1a;2^2 \\ 第四层&…

linux历史记录简易审计系统

1、有时候我们需要对线上用户的操作进行记录,可以进行追踪,出现问题追究责任,但是linux自带的history并不会实时的记录(仅仅在内存中,当用户正常退出(exit logout )时才会记录到history文件里),并且还有1000行的限制可以删除的&#xff1b; 为了保证让用户的操作进行实时记录&…

chatgpt赋能python:Python入门:如何下载NumPy库

Python入门&#xff1a;如何下载NumPy库 如果你是Python初学者或是有开发经验的工程师&#xff0c;你可能会涉及到使用NumPy库。NumPy是Python中一个非常重要的科学计算库&#xff0c;它提供了高效的多维数组数据结构和数学函数&#xff0c;被许多人用于数据分析、机器学习、科…

Verilog基础:task和function的使用(二)

相关文章 Verilog基础&#xff1a;表达式位宽的确定&#xff08;位宽拓展&#xff09; Verilog基础&#xff1a;表达式符号的确定 Verilog基础&#xff1a;数据类型 Verilog基础&#xff1a;位宽拓展和有符号数运算的联系 Verilog基础&#xff1a;case、casex、ca…

CSS的学习1

使用css的目的是让网页具有美观一致的页面。 语法 CSS规则由两个主要的部分构成&#xff1a;选择器以及一条或多条声明&#xff08;样式&#xff09; 选择器&#xff1a;h3 声明&#xff1a;{color:red;font-size:30px;} 选择器通常是需要改变的HTML元素&#xff1b; 每条…

六一儿童节-王者连连看

庆祝六一 用java实现的连连看练手小游戏 王者连连看 &#x1f923; 游戏介绍&#x1f61c; 核心&#x1f62e;‍&#x1f4a8;总结&#xff1a; &#x1f923; 游戏介绍 王者连连看游戏的目标是通过消除相同的图案来得分并进入更高级别的挑战。   游戏分为四个难度   可以自…

cpp: Visitor Pattern

/*****************************************************************//*** \file Gold.h* \brief 访问者模式 Visitor Pattern C 14 行为模式* 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C新经典设计模式》 王健伟编著 清华大学出版社* \author…

记录:VS2019+OpenCV4.7.0编译

一、准备 OpenCV官网提供了动态库的安装包&#xff0c;但是只有64位&#xff0c;而且没看到编译参数&#xff0c;如果需要32位或者静态链接还是得自己编译。 CMake&#xff1a;https://cmake.org/download/ Visual Studio&#xff1a;https://visualstudio.microsoft.com/zh…

计算机组成原理——中央处理器

文章目录 **一 CPU的功能和基本结构****1 CPU的功能****2 [基本结构](http://t.csdn.cn/bpCt3)****2.1 运算器****2.2 控制器** **二 指令执行过程****1 指令周期****2 指令周期的数据流****2.1 取指周期****2.2 间址周期****2.3 执行周期****2.4 中断周期** **3 指令的执行方案…

chatgpt赋能python:如何下载Python中的jieba包

如何下载Python中的jieba包 随着Python的普及&#xff0c;很多程序员选择使用Python作为自己的主力编程语言。对于自然语言处理方面的任务&#xff0c;jieba是Python中一个非常优秀的分词工具。那么&#xff0c;如何下载和使用Python中的jieba包呢&#xff1f;本篇文章将为您详…

【MySQL数据库 | 第十四篇】多表查询案例

目录 前言&#xff1a; 引入背景&#xff1a; 练习&#xff1a; 前言&#xff1a; 在第十三篇我们已经详细的介绍了多表查询的类别以及每一个类别的语法&#xff1a;【MySQL数据库 | 第十三篇】多表查询&#xff0c;今天我们将通过案例来巩固我们对多表查询语法的熟悉度。 引入…

JavaSE笔记(二)重制版

面向过程篇 前面我们已经认识了Java语言的相关特性&#xff0c;并且已经成功配置好了开发环境&#xff0c;从这节课开始&#xff0c;我们就可以正式进入到Java语言的学习当中了。Java语言是一门面向对象的语言&#xff0c;但是在面向对象之前&#xff0c;我们还得先学会如何面…