机器学习筑基篇,Jupyter Notebook 精简指南

75681dce7bf27acf6480d7ea75ae4fd8.gif

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ]

0x00 Jupyter Notebook 简明指南

描述:前面我们已经在机器学习工作站(Ubuntu 24.04 Desktop + Geforce RTX 4070Ti SUPER)中安装 Anaconda 工具包,其中也包含了 Jupyter Notebook/ˈdʒuːpɪtə(r)/ /nəʊtbʊk/)工具及其相关依赖项,接下来我们简单介绍一下 Jupyter Notebook 一个Web在线交互计算的工具集,及其安装、配置、使用方法,给各位初次学习机器的朋友做一个指引!

温馨提示:作者机器学习相关笔记会更新在《AIGC学习之路》专栏,此专栏内容默认你已经具备基础 Python 编程能力,同时学习过高等数学、线性代数、概率论等大学本科范围的数学知识。如果忘记了不用担心,会逐步帮助你记起来。

温馨提示:若各位看友在其他平台看到此篇文章,一定要关注公众号【全栈工程师修炼指南】进行持续学习!我们一同学习,一起进步,关注后回复【加群】哟!

原文链接:机器学习筑基篇,Jupyter Notebook 精简指南前面我们已经在机器学习工作站中安装Anaconda工具包,其中也包含了jupyter Notebook工具及相关依赖项,接下来简单介绍一下其工具作为一个Web在线交互计算的工具集,及其安装、配置、使用方法,给各位初次学习机器的朋友做一个指引icon-default.png?t=N7T8https://mp.weixin.qq.com/s/hL53OO2unouuWJxeZeyVcQ

1.背景

如果你从零基础学习过 Python 编程语言,可能听说过 IPython,它是一种基于 Python 的交互式解释器, 相较于原生的 Python Shell,IPython 提供了更为强大的编辑和交互功能, 随着其发展推出了 IPython Notebook,它完整地继承了 IPython 的交互式特性,同时以 Web 形式运行,它的出现让数据分析和机器学习的过程变得高效。

c0c0392b650e4baf2f29f26e23903226.png

weiyigeek.top-IPython-VS-Python图

再之后,在谷歌、微软等互联网巨头的赞助下,IPython Notebook 发展成为更加成熟和完善的开源项目,并更名为 Jupyter Notebook 并且已经成为现代处理数据的必备工具。

从数据清理、数据可视化、数据分析,再到后面的建立机器学习或深度学习模型,都可以在 Jupyter Notebook 完成。同时,Jupyter Notebook 可以保留代码运行后的结果,方便内容的重用,以及回顾做过的工作。

文章来自公众号【全栈工程师修炼指南】,请大家多多支持!

2.介绍 Jupyter Notebook

什么是 Jupyter Notebook?

Jupyter Notebook (以前称为 IPython Notebook )是用于跨所有编程语言进行交互式计算的免费软件、开放标准和web服务,它允许用户将代码、注释、方程式、可视化内容等整合到一个文档中,并支持多种编程语言,如 Python、R、Julia 等高级编程语言。它在数据科学、机器学习、深度学习、人工智能和教育领域中得到了广泛的应用。

06a0b40d2a040e1f290143ed8e08bf7c.png

weiyigeek.top-Jupyter Notebook图

官网地址:https://jupyter.org/

3.安装 Jupyter Notebook

描述: 你可以参考官方文档进行安装 Jupyter Notebook ,不过此处作者的建议是使用 Anaconda 工具包进行安装,正如作者前一篇文章中的实践流程,除此之外,你还可以在本地使用 pip 安装 Jupyter Notebook,或者在浏览器中使用 GetVM 提供的 Jupyter Notebook 在线环境。

方式1. 使用 Anaconda 工具包安装,参考文章: 《机器学习筑基篇,Ubuntu 24.04 安装使用 Anaconda 工具包》,此处UP主选择的方式。

方式2. 使用 pip 安装,依赖于 Python 环境请自行安装,官网文档 https://jupyter.org/install

# Install the classic Jupyter Notebook with:
pip install notebook

# To run the notebook:
jupyter notebook

方式3. 使用 GetVM 提供的 Jupyter Notebook 在线环境,免费计划每天有5次(每次半小时)的使用时间,满足低频日常学习的需求,同时为了避免被挖矿等滥用行为,开发者增加了网络限制,从而不能访问外网。

GetVM 是一个 Google Chrome 浏览器扩展,它可以帮助你在浏览器中快速创建一个 Linux 虚拟机,与本地环境完全隔离。你可以选择直接打开预设模板,例如 Jupyter Notebook,VS Code,Ubuntu Desktop 等。地址:https://getvm.io

906600c0a7c8b8bac6972eb850f48796.png

weiyigeek.top-GetVM图

4.配置 Jupyter Notebook

描述:由于UP主是通过 Anaconda 工具包安装的 Jupyter Notebook,其默认的监听地址和端口为 localhost:8888 因此只能本地访问,若其他主机设备需要访问,则需要重新配置一下 Jupyter Notebook 的监听地址和端口,同时为了安全起见,需要配置一下 Jupyter Notebook 的密码,避免非授权用户通过端口访问。

操作步骤

Step 1.进入 Conda 环境中,执行如下命令生成 Jupyter Notebook 配置文件。

(base) weiygeek@Super-Server:~/桌面$ jupyter notebook --generate-config
Writing default config to: /home/weiygeek/.jupyter/jupyter_notebook_config.py

Step 2.生成 Jupyter Notebook 的访问密码文件,打开获取密码的 Hash 值。

(base) weiygeek@Super-Server:~/桌面$ jupyter notebook password
  # Enter password: weiyigeek.top
  # Verify password: weiyigeek.top
  # [JupyterPasswordApp] Wrote hashed password to /home/weiygeek/.jupyter/jupyter_server_config.json 

(base) weiygeek@Super-Server:~/桌面$ cat /home/weiygeek/.jupyter/jupyter_server_config.json
  # "IdentityProvider": {
  #   "hashed_password": "argon2:$argon2id$v=19$m=10240,t=10,p=8$ts7wW8G8A+qywpvi2A0qzg$DcOg7yWmOkwaebT90pItoJARMdAwGn80KbWjWTpoYOE"
  # }

Step 3.修改 Jupyter Notebook 配置文件,添加如下内容。

(base) weiygeek@Super-Server:~/桌面$ vim /home/weiygeek/.jupyter/jupyter_notebook_config.py
(base) weiygeek@Super-Server:~/桌面$ grep -v "#" /home/weiygeek/.jupyter/jupyter_notebook_config.py | sed '/^$/d'

# 关键配置
# 配置 工作目录
c.JupyterNotebookApp.workspaces_dir = '/home/weiygeek/notebook'
# 配置 监听地址及端口
c.ServerApp.ip = '0.0.0.0'
c.ServerApp.port = 8888
# 配置 Jupyter Notebook 的访问密码
c.PasswordIdentityProvider.hashed_password  = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$ts7wW8G8A+qywpvi2A0qzg$DcOg7yWmOkwaebT90pItoJARMdAwGn80KbWjWTpoYOE'
c.PasswordIdentityProvider.password_required = True

Step 4.最后启动执行如下命令 Jupyter Notebook 启用服务,此处便可通过工作站主机IP+端口进行访问,之后输入认证密码,即可访问到Jupyter Notebook主界面。

(base) weiygeek@Super-Server:~/桌面$ jupyter notebook

00337245d05e81be4d0e0b7e379d022b.png

weiyigeek.top-Jupyter Notebook认证界面图

4.使用 Jupyter Notebook

1.创建一个新的Note Book

前面设置了 Jupyter Notebook 默认工作目录为 /home/weiygeek/notebook 里面是空的,现在我们创建一个新的 Note Book,点击右上角的 “New” 按钮来新建一个ipynb 文件,并从下拉菜单中选择一个内核(通常是 Python 3),这将创建一个新的 Notebook,并自动打开一个新的标签页。

因为 jupyter Notebook 支持多种数据可视化库,如 matplotlib、seaborn、plotly 等,这里使用 matplotlib 绘制一个简单的折线图。

import matplotlib.pyplot as plt  

# 创建一些数据  
x = [1, 2, 3, 4, 5]  
y = [2, 4, 6, 8, 10]  

# 绘制折线图  
plt.plot(x, y)  
plt.title('Simple Line Plot')  
plt.xlabel('X Axis')  
plt.ylabel('Y Axis')  
plt.show()

a28ab900d63126a66136d1417f03d5ca.png

weiyigeek.top-使用 matplotlib 绘制一个简单的折线图图

2.编写和运行代码

在新的 Notebook 中,你会看到一个空的代码单元格,每一个单元格会有三种模式,分别是 Markdown(md) 和 Code(代码)以及 Raw (文本),内容说明一般都是以 Markdown 单元格展示,而你需要动手练习的代码将在 Code 单元格中执行;每个单元格的后面提供了一个菜单栏,可以对单元格进行操作,这些菜单栏包括了单元格的复制、上移、下移、删除等操作。

eacd5944eb4e8abd1b8c855700dd8c5a.png

weiyigeek.top-编写和运行代码图

假如,你需要切换单元格运行模式,可通过顶部的选项来切换单元格的模式,也可以点击单元格头部使用快捷键 M 切换到 Markdown 模式,使用快捷键 Y 切换到 Code 模式,使用快捷键 R 切换到 Raw 模式。

假如,你要运行在这个单元格中编写Py代码,只需按 Shift + Enter 运行它,你也可以按 Ctrl + Enter 运行代码并在下方插入一个新的单元格,代码执行结果将直接显示在下方的单元格输出区域中。

# 1.选中编辑 Markdown单元格,运行(Shift + Enter)此单元格时,它会被渲染成格式化的文本。
# 机器学习第一课
  
这是一个 Markdown 单元格的示例。  
  
- 无序列表项 1  
- 无序列表项 2  
  
[链接到 Google](https://www.google.com)  
  
这是一个数学方程:  

$$
 e^{i\pi} + 1 = 0 
$$

# 2.选中单元格,并按 Shift + Enter
print('hello world!')

c75bd005788558654808814588c50794.png

weiyigeek.top-机器学习第一课图

例如,在 Jupyter Notebook 中,你可以像在任何 Python 脚本中一样导入库和加载数据,这里,你可以使用 pandas 库来加载 CSV 文件:

# 导入模块
import pandas as pd  
  
# 加载 CSV 文件  
data = pd.read_csv('test.csv')  
  
# 显示数据的前几行  
display(data.head())

66c7f4887963c12857207dcfc17b6304.png

weiyigeek.top-使用 pandas 库来加载 CSV 文件图

3.单元格顺序执行

无论是 Markdown 单元格,还是 Code 单元格,它们在课程中都是按照从上到下的顺序依次执行的。后面的单元格需要等待前面的单元格执行完成后,才能继续执行。执行完成的单元格左侧会出现 In [序号] 的标志,例如:

a = 2
b = 10

# 需要先执行上方单元格给 a,b 变量赋值才能执行我呢~
c = a ** b

# 输出结果
print(c)

17651affa7db8e76301bdc632b177e0b.png

weiyigeek.top-Jupyter Notebook顺序执行图

温馨提示:为了方便,Jupyter Notebook 中的 print() 打印操作并不是必须的,例如上方的单元格, a ** b 就能直接输出结果。

4.代码补全

在 Jupyter Notebook 中,可以通过 Tab 键激活代码补全功能,例如

# 当我们在使用 import 导入模块时,只需输入 im ,然后按 Tab 键
im

# 若要某个模块下包含函数的自动补全,必须要导入模块之后才会生效。
import numpy as np
# 使用 Tab 键自动补全 np. 下面的类和相关函数。 
np.

# 实例
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
a + b
# array([5, 7, 9])

a = np.array([[1,  2],  [3,  4]])  
print (a)
[[1 2]
 [3 4]]

f8c8cc9034bccfc89bf9816f8d1cb296.png

weiyigeek.top-Jupyter Notebook代码补全图

5.函数说明

在 Jupyter Notebook 中,可以通过【鼠标点击导入包的函数】并按 shift + tab 查看函数帮助说明功能,例如

# 运行导入 pprint 模块
import pprint
# 执行模块中的 pprint 函数
pprint.pprint([1,2,3,4,5,'w',"weiyigeek"])

# 鼠标点击至 pprint.pprint 并按 shift + tab 查看使用建议
Signature:
pprint.pprint(
    object,
    stream=None,
    indent=1,
    width=80,
    depth=None,
    *,
    compact=False,
    sort_dicts=True,
    underscore_numbers=False,
)
Docstring: Pretty-print a Python object to a stream [default is sys.stdout].
File:      /data/anaconda3/lib/python3.12/pprint.py
Type:      function

8fefe49c478afdce69541b40efc37591.png

weiyigeek.top-Jupyter Notebook函数提示图

6.执行状态

描述:对于复杂度高的代码,往往会意味着更长的执行等待时间。在 Jupyter Notebook 中,当一个单元格处于执行状态时,单元格前面会出现 In [*] 符号,只有执行完成的单元格, [] 中的 * 才会变成相应的序号。

除此之外,你可以通过页面右上角的 Kernel 状态指示器判断内核占用情况。如果 Python 字符右边出现了实心圆圈 ,代表内核处于占有状态。而空心圆圈 则代表内核处于空闲状态。当然也可能出现链接断开的符号,那就代表着内核已经断开链接,你可能需要刷新页面或重启实验环境。

例如,我们遍历一个链表数组,每两秒打印其中一个元素,查看状态的变化!

import time
languages = ["C", "C++", "Perl", "Python","Go"] 
for x in languages:
  time.sleep(2)
  print (x)

e997df0544f189f531a9b30cda6a82d3.png

weiyigeek.top-执行状态图

7.重启内核

描述:当复杂代码执行时间过长,可能会造成实验环境资源占用大而 Notebook 出现「假死」的现象,此时我们可以通过重启内核的操作来解决,重启内核的按钮在环境的顶部,点击 🔁 样式按钮后会弹出确认对话框,点击 Restart 即可。

68f3651d44d8d61441edc9ca5aab32ce.png

weiyigeek.top-重启内核图

8.强制终止

有的时候,如果代码运行时间过长,或者陷入死循环,我们会想到强制终止单元格的运行状态。此时,顶部的 ⬛ 按钮就发挥作用了。

例如,运行下方无限循环代码,并执行强制终止操作。

import time
while True:
  print("hello, shiyanlou.")
  time.sleep(1)

9.保存和共享

你可以通过点击工具栏中的 “Save” 按钮来保存你的 Notebook,Notebook 将保存为一个 .ipynb 文件,该文件包含了你的代码、输出、Markdown 文本和任何嵌入的可视化内容。

要共享你的 Notebook,你可以将其导出为 HTML、PDF 或其他格式,或者将其上传到一个支持 Jupyter Notebook 的在线平台(如 GitHub、GitLab、Google Colab 等)。这样,其他人就可以在你的 Notebook 上运行代码、查看结果和进行交互了。

更多 Jupyter Notebook 操作说明,请参考:Jupyter Notebook 官方文档

文章来自公众号【全栈工程师修炼指南】,请大家多多支持!

5.快捷键 jupyter Notebook

描述:为了提供我们在使用  Jupyter Notebook 进行机器学习的效率,我们有必要了解一些快捷键。

  • H:查看所有快捷键。

  • S:保存当前 Notebook 内容。

  • P:调出 Notebook 命令栏。

  • B:在当前单元格下方新建空白单元格。

  • M:将单元格格式转换为 Markdown。

  • Y:将单元格格式转换为 Code。

  • 连续按 D+D:删除当前单元格。(慎用,推荐使用 X 剪切单元格代替,因为其可以起到删除效果,且删错了还可以粘贴回来)。

  • 连续按 I+I+I:强制中止内核(当某个单元格执行时间较长或卡住时,可以强行中止,中止后前序单元格状态依旧保留,非常好用)。

  • Shift + Enter:运行当前单元格内容。(当 Markdown 单元格处于编辑状态时,运行即可复原)。

  • Ctrl + Enter: 运行代码并在下方插入一个新的单元格。

  • Tab : 模块函数代码自动补全。

  • Shift + Tab: 鼠标点击函数,在按下此快捷点即可查看函数帮助说明功能。

温馨提示:所有快捷键触发式,需保证单元格处于选中状态,而非编辑状态。

6.总结

Jupyter Notebook 是一个功能强大的工具,它提供了一个交互式和可重复的环境来编写、运行和共享代码和数据。通过本文的介绍,你应该已经了解了如何安装配置 Jupyter Notebook,并掌握了其基本使用方法。现在,你可以开始使用 Jupyter Notebook 来探索数据、构建模型、进行可视化等任务了。

温馨提示:作者最近10年的工作学习笔记(涉及网络、安全、运维、开发),需要学习实践笔记的看友,可添加作者账号[WeiyiGeeker],当前价格¥199,除了获得从业笔记的同时还可进行问题答疑以及每月远程技术支持,希望大家多多支持,收获定大于付出!

cf974d5ea0cde3d203271403bd77b973.png


如果此篇文章对你有帮助,请你将它转发给更多的人!

 学习推荐 往期文章

  • 🔥【最新】机器学习筑基篇,Ubuntu 24.04 安装使用 Anaconda 工具包

  • 💡【相关】Python实践之使用pytorch模型学习框架easyocr模块批量识别大数据通信行程码图片并使用Flask返回json字符串

  • 💡【相关】一图对比,Python 与 Java 语言代码运行机制

ca3d4cfe2365c87d4d354da6fd6d67b0.gif

57a8519ad33a2773785943da3bb20e51.gif

感觉文章不错的童鞋,请帮忙转发,点 👍、在看,若有疑问的小伙伴,可在评论区留言你想法哟💬!

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

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

相关文章

Oracle23ai 新特性IF [NOT] EXISTS 语法支持

Oracle23ai 新特性IF [NOT] EXISTS Syntax Support 官方文档地址 https://docs.oracle.com/en/database/oracle/oracle-database/23/lnpls/release-changes.html#GUID-9EE96980-43F9-4068-893E-C191CD83ACA6 IF [NOT] EXISTS 语法支持 CREATE、ALTER和DROP DDL语句支持IF NO…

python:绘制一元三次函数的曲线

编写 test_x3_3x.py 如下 # -*- coding: utf-8 -*- """ 绘制函数 y x^33x4 在 -3<x<3 的曲线 """ import numpy as np from matplotlib import pyplot as plt# 用于正常显示中文标题&#xff0c;负号 plt.rcParams[font.sans-serif] […

【人工智能】线性回归

目录 一、使用正规化方法计算下列样本的预测函数 1. 没有归一化之前 2. 归一化之后 二、读取ex1data2.txt中的数据&#xff0c;建立样本集&#xff0c;使用正规化法获取&#xff08;房屋面积&#xff0c;房间数量&#xff09;与房屋价格间的预测函数 1. 读取数据&#xff…

pico+unity3d项目配置

重点&#xff1a;unity编辑器版本要和pico的sdk要求一致、比如&#xff1a; 对于 Unity 2022.1.14 及以上版本&#xff0c;若同时在项目中使用 URP、Linear 色彩空间、四倍抗锯齿和OpenGL&#xff0c;会出现崩溃。该问题待 Unity 引擎解决。对于 Unity 2022&#xff0c;若同时…

Ubuntu20.04 编译安装FFmpeg,出错分析以及解决方案

最近工程上需要对FFmpeg底层源码进行修改&#xff0c;需要重新编译&#xff0c;遇见不少坑&#xff0c;出篇教程记录一下。 文章目录 1.FFmpeg源码下载地址2.编译环境配置3.编译FFmpeg4.配置FFmpeg运行环境 1.FFmpeg源码下载地址 官方下载地址:Index of /releases (ffmpeg.or…

寄存器分配

概述 寄存器位于CPU 或 GPU内部的少量高速存储器&#xff0c;通常用于保存机器指令的操作数 由于其价格昂贵&#xff0c;导致其数量有限&#xff0c;又由于存储速度快&#xff0c;使其不可或缺。因此&#xff0c;寄存器是计算机体系结构中的关键资源之一。在计算复杂表达式的…

Python爬虫速成之路(2):爬天气情况

hello hello~ &#xff0c;这里是绝命Coding——老白~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;绝命Coding-CSDN博客 &a…

常见问题记录(持续更新)

备注&#xff1a; 在7月10日记录之前遇到的问题及解决方法: 一&#xff1a;常见的访问问题&#xff1a; 403 Forbidden&#xff1a;&#xff08;未有请求权限&#xff09; 表示服务器理解请求但是拒绝执行它。这通常是由于服务器上的文件或资源没有正确的读、写或执行权限&…

IDEA启动Web项目总是提示端口占用

文章目录 IDEA启动Web项目总是提示端口占用一、前言1.场景2.环境 二、正文1.场景一:真端口占用2. 场景二:假端口占用 IDEA启动Web项目总是提示端口占用 一、前言 1.场景 IDEA启动Web项目总是提示端口占用&#xff1a; 确实是端口被占用&#xff0c;比如&#xff1a;没有正常…

复制vmware虚拟机文件并改名(文件名使用python替换)得到一台新的虚拟机

文章目录 需求实验复制文件夹并重命名使用python将所有文件名“WinSer2022”字符替换成“wingetmac”修改虚拟机配置文件&#xff08;.vmx&#xff09;打开新的虚拟机成功 需求 将已有的Winser2022虚拟机复制成wingetmac并开机 实验 复制文件夹并重命名 将"WinSer2022…

使用机器学习 最近邻算法(Nearest Neighbors)进行点云分析 (scikit-learn Open3D numpy)

使用 NearestNeighbors 进行点云分析 在数据分析和机器学习领域&#xff0c;最近邻算法&#xff08;Nearest Neighbors&#xff09;是一种常用的非参数方法。它广泛应用于分类、回归和聚类分析等任务。下面将介绍如何使用 scikit-learn 库中的 NearestNeighbors 类来进行点云数…

NSSCTF_RE(一)暑期

[SWPUCTF 2021 新生赛]简单的逻辑 nss上附件都不对 没看明白怎么玩的 dnspy分析有三个 AchievePoint , game.Player.Bet - 22m; for (int i 0; i < Program.memory.Length; i) { byte[] array Program.memory; int num i; array[num] ^ 34; } Environment.SetEnvironment…

全自主巡航无人机项目思路:STM32/PX4 + ROS + AI 实现从传感融合到智能规划的端到端解决方案

1. 项目概述 本项目旨在设计并实现一款高度自主的自动巡航无人机系统。该系统能够按照预设路径自主飞行&#xff0c;完成各种巡航任务&#xff0c;如电力巡线、森林防火、边境巡逻和灾害监测等。 1.1 系统特点 基于STM32F4和PX4的高性能嵌入式飞控系统多传感器融合技术实现精…

机器学习(五) -- 监督学习(6) --逻辑回归

系列文章目录及链接 上篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;5&#xff09; -- 线性回归2 下篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;7&#xff09; --SVM1 前言 tips&#xff1a;标题前有“***”的内…

GuLi商城-商品服务-API-品牌管理-JSR303分组校验

注解:@Validated 实体类: package com.nanjing.gulimall.product.entity;import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.nanjing.common.valid.ListValue; import com.nanjing.common.valid.Updat…

[Vulnhub] Stapler wp-videos+ftp+smb+bash_history权限提升+SUID权限提升+Kernel权限提升

信息收集 IP AddressOpening Ports192.168.8.106TCP:21,22,53,80,123,137,138,139,666,3306, Using Nmap for scanning: $ nmap -p- 192.168.8.106 --min-rate 1000 -sC -sV The results are as follows: PORT STATE SERVICE VERSION 20/tcp closed ftp-data…

交换机和路由器的工作流程

1、交换机工作流程&#xff1a; 将接口中的电流识别为二进制&#xff0c;并转换成数据帧&#xff0c;交换机会记录学习该数据帧的源MAC地址&#xff0c;并将其端口关联起来记录在MAC地址表中。然后查看MAC地址表来查找目标MAC地址&#xff0c;会有一下一些情况&#xff1a; MA…

springboot新闻发布及管理系统-计算机毕业设计源码21929

新闻发布及管理系统的设计与实现 摘 要 新闻发布及管理系统的设计与实现&#xff0c;是当下信息社会发展的重要一环。随着互联网的普及和新闻媒体的数字化转型&#xff0c;一个高效、稳定且功能全面的新闻发布与管理平台显得尤为重要。SpringBoot框架以其简洁、快速和易于集成的…

T113-i系统启动速度优化方案

背景: 硬件:T113-i + emmc 软件:uboot2018 + linux5.4 + QT应用 分支:longan 问题: 全志T113-i的官方系统软件编译出的固件,开机启动时间10多秒,启动时间太长,远远超过行业内linux系统的开机速度,需要进一步优化。 T113-i 优化后启动速度实测数据 启动阶段启动时间(…

Python爬虫速成之路(3):下载图片

hello hello~ &#xff0c;这里是绝命Coding——老白~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;绝命Coding-CSDN博客 &a…