当前位置: 首页 > news >正文

Python深度学习框架:PyTorch、Keras、Scikit-learn、TensorFlow如何使用?学会轻松玩转AI!

在这里插入图片描述

前言

我们先简单了解一下PyTorch、Keras、Scikit-learn和TensorFlow都是什么。
想象一下你要盖一座大房子。你需要砖头、水泥、工具等等,对吧?机器学习也是一样,需要一些工具来帮忙。PyTorch、Keras、Scikit-learn和TensorFlow就是四种不同的“工具箱”。

  • TensorFlow: 就像一个超级大的、功能强大的工具箱,里面什么工具都有,可以盖各种各样的房子,从简单的到超级复杂的都有。它很厉害,但是也比较复杂,需要多学习才能用好。
  • PyTorch: 这个工具箱也很好用,也很强大,但是它比TensorFlow更容易上手,像积木一样,可以一块一块地搭建你的“房子”。
  • Keras: 它不是一个独立的工具箱,更像是一个方便的“说明书”,可以让你更容易地使用TensorFlow或者其他一些工具箱。它让盖房子变得简单一些。
  • Scikit-learn: 这个工具箱专门用来盖一些比较简单的“小房子”。如果你只需要盖个小棚子,它就足够用了。它比较容易学习,适合初学者。

总的来说,这四个工具箱各有各的优点,适合不同的任务和学习阶段。 你想盖什么样子的“房子”(解决什么问题),就选择合适的工具箱。
接下来让我们去了解一下他们吧

PyTorch

PyTorch是由Facebook开发的开源深度学习框架,以其灵活性和动态计算图结构著称。它非常适合研究和实验,尤其适合那些需要反复修改模型结构的场景。

PyTorch官方文档

什么是PyTorch

想象一下你有一个会学习的玩具机器人。PyTorch就像给这个机器人编程序的积木。

这些积木可以让你教机器人认猫、认狗,甚至玩游戏! 你用积木搭建一个“学习机器”,然后给它看很多猫和狗的照片,告诉它哪些是猫哪些是狗。 机器人会慢慢学习,下次看到猫或狗就能认出来了。

PyTorch就是这些“积木”的集合,有很多种积木,可以让你搭建各种各样的学习机器,让它做各种各样的事情。 它就像一个超级强大的工具箱,帮助人们创造聪明的机器。 它很厉害,但用起来需要学习一些新的“语言”和方法。

核心特点

  1. 动态计算图:PyTorch支持动态图机制,允许在运行时动态修改模型结构,非常适合实验和研究。
  2. 强大的社区支持:PyTorch拥有丰富的文档和社区资源,适合开发者快速入门和进行复杂项目开发。
  3. GPU加速:支持GPU加速,提升模型训练速度。
知识点描述
super()函数用于初始化继承自nn.Module的参数,实现子类与父类方法的关联。
模型保存与加载支持整个网络加参数和仅参数两种保存形式,可以使用.pkl或.pth文件。
卷积相关包括卷积核参数共享、局部连接、深度可分离卷积等概念。
DataLoader用于数据加载,支持批量处理、随机打乱、自定义样本处理等。
初始化方式卷积层和全连接层权重采用He-Uniform初始化,bias采用(-1,1)均匀分布。

应用场景:

研究环境中,尤其是需要反复修改模型结构的实验场景。
计算机视觉、自然语言处理等领域。
核心组件:

  1. torch:核心库,包含张量操作、数学函数等。
  2. torch.nn:神经网络模块,提供卷积层、全连接层等。
  3. torch.optim:优化器模块,提供SGD、Adam等优化算法。

PyTorch - 线性回归

使用PyTorch实现一个简单的线性回归模型,拟合一条直线。

import torch
import torch.nn as nn
import torch.optim as optim
import matplotlib.pyplot as plt# 1. 准备数据
# 生成一些线性数据
x_train = torch.tensor([[1.0], [2.0], [3.0], [4.0]], dtype=torch.float32)
y_train = torch.tensor([[2.0], [4.0], [6.0], [8.0]], dtype=torch.float32)# 2. 定义模型
class LinearRegressionModel(nn.Module):def __init__(self):super(LinearRegressionModel, self).__init__()self.linear = nn.Linear(1, 1)  # 输入和输出都是1维def forward(self, x):return self.linear(x)model = LinearRegressionModel()# 3. 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)# 4. 训练模型
num_epochs = 1000
for epoch in range(num_epochs):model.train()outputs = model(x_train)loss = criterion(outputs, y_train)optimizer.zero_grad()loss.backward()optimizer.step()if (epoch+1) % 100 == 0:print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')# 5. 预测并可视化
model.eval()
predicted = model(x_train).detach().numpy()plt.plot(x_train.numpy(), y_train.numpy(), 'ro', label='Original data')
plt.plot(x_train.numpy(), predicted, label='Fitted line')
plt.legend()
plt.show()

经过1000次迭代后,模型拟合的直线应该接近 y = 2x。控制台会输出损失值,最终损失值应该非常小(接近0)。图像上会显示原始数据点和拟合的直线。

TensorFlow

TensorFlow是由谷歌开发的深度学习框架,特别适用于生产环境,尤其是在大规模分布式系统中。它的设计初衷是服务于大规模计算任务,在速度和效率上有显著优势。

TensorFlow官方文档

什么是TensorFlow

想象一下你有一只很聪明的狗狗,你教它认猫和狗的图片。一开始它什么都不懂,但你每次给它看猫的图片就说“猫”,狗的图片就说“狗”。狗狗慢慢地就会学会区分猫和狗了,对吧?

TensorFlow就像一个超级厉害的训练狗狗的工具!它能让电脑像这只狗狗一样,通过看大量的图片(或者其他东西,比如文字、声音)来学习,然后自己学会区分不同的东西,甚至能预测一些事情。

比如,你可以用TensorFlow教电脑识别手写数字,或者翻译不同的语言,甚至能预测明天的天气!它就像一个神奇的工具箱,里面有很多方法能让电脑变得越来越聪明。 它需要很多很多的数据来学习,学习的过程就像教狗狗一样,需要反复练习。

简单来说,TensorFlow就是一个帮助电脑学习的超级工具,让电脑变得越来越聪明!

核心特点

  1. 静态计算图:TensorFlow的静态计算图使得模型在执行前就可以进行优化,提升效率。
  2. 广泛的部署工具:提供了从移动设备到服务器的全方位支持,具备强大的生产环境部署能力。
  3. 生态系统丰富:配套工具如TensorBoard、TensorFlow Lite和TensorFlow Serving,使得其生态系统非常完整。
知识点描述
静态计算图模型在执行前进行优化,提升效率。
TensorBoard可视化工具,用于查看模型结构、训练指标等。
TensorFlow Lite用于在移动设备和嵌入式设备上部署 TensorFlow 模型。
TensorFlow Serving用于生产环境中的模型部署和推理服务。

应用场景:

需要在生产环境中运行的大规模深度学习模型,如推荐系统、语音识别和自动驾驶等。

核心组件:

  1. tf.Tensor:张量对象,表示多维数组。
  2. tf.keras:高层API,简化模型构建。
  3. tf.data:数据输入管道,提供高效的数据加载和预处理。

TensorFlow - 二分类问题

使用TensorFlow实现一个简单的二分类模型,使用逻辑回归。

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np# 1. 准备数据
x_train = np.array([[1.0, 2.0], [2.0, 3.0], [3.0, 4.0], [4.0, 5.0]])
y_train = np.array([[0], [0], [1], [1]])  # 标签为0或1# 2. 定义模型
model = Sequential([Dense(1, activation='sigmoid', input_shape=(2,))
])# 3. 编译模型
model.compile(optimizer='sgd', loss='binary_crossentropy', metrics=['accuracy'])# 4. 训练模型
model.fit(x_train, y_train, epochs=100, verbose=1)# 5. 预测
predictions = model.predict(x_train)
print(predictions)

模型会输出每个样本属于类别1的概率。随着训练次数增加,模型对训练数据的预测准确率会不断提高。在控制台上,你会看到损失值和准确率随着每个epoch的变化。

Keras

Keras是一个基于TensorFlow的高级神经网络API,设计初衷是为了简化深度学习的开发流程。它提供了简洁的接口,帮助用户快速构建复杂的深度学习模型。

Keras官方文档

什么是Keras

想象一下,你想要教一只小狗做一些事情,比如坐下、握手。 你不会一下子教它所有动作,而是先教它坐下,然后奖励它,再教它握手,再奖励它。

机器学习的 Keras 就像是一个教小狗的工具。 它有很多种“指令”,可以告诉电脑“如果看到这样的东西,就应该做出这样的反应”。 就像你教小狗“看到球就坐下”,Keras 可以教电脑“看到图片里是猫,就判断是猫”。

Keras 帮我们把这些“指令”组织起来,让电脑更容易学习。 它就像一个好老师,让电脑学习得更快、更有效率。 所以,Keras 帮助电脑学习各种事情,比如识别图片、预测天气等等。

核心特点

  1. 简洁易用:提供了非常直观的API,用户可以快速上手,适合新手和中小型项目。
  2. 高度模块化:允许用户自由组合层、优化器、损失函数等,模型的可读性和可维护性较高。
  3. 与TensorFlow完美结合:在TensorFlow 2.x之后,Keras成为TensorFlow的官方高级API,集成更为紧密。
知识点描述
Sequential模型一种按顺序堆叠网络层的模型。
函数式模型用于构建更复杂的模型,支持分支和合并等操作。
编译模型使用.compile方法指定损失函数、优化器和评估指标。
训练模型使用.fit()方法在训练数据上进行迭代训练。

应用场景:

快速原型开发和中小型项目,特别是在自然语言处理和图像处理任务中。

核心组件:

  1. Sequential:顺序模型,用于搭建简单的神经网络。
  2. Model:函数式模型,用于搭建复杂的神经网络。
  3. layers:网络层模块,提供卷积层、全连接层等。

Keras - 图像分类(使用MNIST数据集)

使用Keras实现一个简单的图像分类模型,对MNIST数据集进行手写数字识别。

from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.utils import to_categorical# 1. 准备数据
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(-1, 28 * 28).astype('float32') / 255
x_test = x_test.reshape(-1, 28 * 28).astype('float32') / 255
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)# 2. 定义模型
model = Sequential([Flatten(input_shape=(28 * 28,)),Dense(128, activation='relu'),Dense(10, activation='softmax')
])# 3. 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])# 4. 训练模型
model.fit(x_train, y_train, epochs=5, batch_size=32, verbose=1)# 5. 评估模型
loss, accuracy = model.evaluate(x_test, y_test, verbose=0)
print(f'Test accuracy: {accuracy:.4f}')

模型会在MNIST数据集上进行训练,并在测试集上进行评估。控制台会输出训练过程中的损失值和准确率,最终会输出测试集上的准确率。

Scikit-learn

Scikit-learn是Python生态系统中最受欢迎的传统机器学习库,适用于数据预处理、分类、回归、聚类、降维等任务。它封装了经典的机器学习算法,具有简单易用的API和丰富的算法支持。

Scikit-learn官方文档

什么是Scikit-learn

想象一下,你有一堆积木,各种形状、颜色。你想用这些积木搭出不同的房子。

机器学习就像一个聪明的建筑师,它可以从这些积木(数据)中学习,找出规律,然后自己搭出房子(预测结果)。

Scikit-learn 是一个工具箱,里面有很多不同的积木(算法),可以帮助你搭建各种各样的房子。比如,你想知道哪块积木搭出来的房子最高,Scikit-learn 可以帮你找到。

简单来说,Scikit-learn 帮助你用数据训练机器学习模型,让机器学会如何预测或分类。 它有很多不同的工具,可以根据你想要搭的房子(预测的目标)选择合适的积木(算法)。 就像你用不同的积木搭出高楼、小房子一样,Scikit-learn 可以帮你用数据搭出各种各样的结果。

主要特点:

  1. 经典机器学习算法:提供监督学习、无监督学习的经典算法。
  2. 数据处理工具丰富:提供从数据预处理、特征选择到模型评估的全套工具。
  3. 与其他库兼容:与NumPy、Pandas等数据科学库无缝集成。
知识点描述
估计器(Estimator)包括fit()和predict()方法,用于训练模型和预测。
转换器(Transformer)用于数据预处理和数据转换,包括fit()、transform()和fit_transform()方法。
流水线(Pipeline)将多个数据处理步骤和模型训练封装在一起,方便重现实验结果。
特征抽取包括文本、图像等数据的特征抽取技术。
特征选择删除不重要的特征,降低模型复杂度。
降维使用PCA等方法降低数据维度,提取主要特征。

应用场景:

传统机器学习任务,如小型数据集上的分类、回归分析、聚类分析等。

核心组件:

  1. datasets:内置数据集模块,提供玩具数据集和真实世界数据集。
  2. preprocessing:数据预处理模块,提供归一化、标准化等功能。
  3. model_selection:模型选择模块,提供交叉验证、网格搜索等功能。

Scikit-learn内置数据集

数据集名称类型描述
Iris分类问题包含三种鸢尾花的四个特征,目标是根据这些特征预测鸢尾花的种类
Digits多分类问题包含手写数字的8x8像素图像,目标是识别这些图像对应的数字
Boston House Prices回归问题包含波士顿各个区域的房价和其他13个特征,目标是预测房价
Breast Cancer二分类问题包含乳腺肿瘤的30个特征,目标是预测肿瘤是良性还是恶性

Scikit-learn - 鸢尾花分类

使用Scikit-learn实现一个简单的分类模型,对鸢尾花数据集进行分类。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score# 1. 准备数据
iris = load_iris()
X = iris.data
y = iris.target# 2. 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 3. 数据标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)# 4. 定义并训练模型
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)# 5. 预测并评估模型
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f'Test accuracy: {accuracy:.4f}')

模型会对鸢尾花数据集进行分类,并在测试集上进行评估。控制台会输出测试集上的准确率。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

相关文章:

Python深度学习框架:PyTorch、Keras、Scikit-learn、TensorFlow如何使用?学会轻松玩转AI!

前言 我们先简单了解一下PyTorch、Keras、Scikit-learn和TensorFlow都是什么。 想象一下你要盖一座大房子。你需要砖头、水泥、工具等等,对吧?机器学习也是一样,需要一些工具来帮忙。PyTorch、Keras、Scikit-learn和TensorFlow就是四种不同的…...

C语言蓝桥杯组题目

系列文章目录 文章目录 系列文章目录前言题目第一题.1, 2, 3, 4 能组成多少个互不相同且无重复数字的三位数?都是多少?思路 第二题: 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少…...

用Matlab和SIMULINK实现DPCM仿真和双边带调幅系统仿真

1、使用SIMULINK或Matlab实现DPCM仿真 1.1 DPCM原理 差分脉冲编码调制,简称DPCM,主要用于将模拟信号转换为数字信号,同时减少数据的冗余度以实现数据压缩。在DPCM中,信号的每个抽样值不是独立编码的,而是通过预测前一…...

真实网络安全面试场景题

1.公司内部搭建了2台DNS服务器做主辅同步,公司的业务官网地址为 www.chinaddic.com。小明作为网络管理员把域名添加至DNS服务器进行测试。 问题1:使用自己电脑可以正常访问刚添加的域名,但处于同样网络环境同事电脑却访问不了。 出现此问题原因…...

速盾:ddos防御手段哪种比较好?高防cdn怎么样?

DDoS(分布式拒绝服务)攻击是一种威胁网络安全的常见攻击手段。为了保护网站和服务器免受DDoS攻击的影响,许多安全专家和公司开发了各种防御手段。在这篇文章中,我们将重点讨论一种常见的DDoS防御手段——高防CDN(内容分…...

【ArcGISPro】Sentinel-2数据处理

错误 默认拉进去只组织了4个波段,但是实际有12个波段 解决方案 数据下载 Sentinel-2 数据下载-CSDN博客 数据处理 数据查看 创建镶嵌数据集 在数据管理工具箱中找到创建镶嵌数据集...

【适配】屏幕拖拽-滑动手感在不同分辨率下的机型适配

接到一个需求是类似下图的3D多房间视角,需要拖拽屏幕 问题 在做这种屏幕拖拽的时候发现,需要拖拽起来有跟手的感觉,会存在不同分辨率机型的适配问题。 即:美术调整好了机型1的手感,能做到手指按下顶层地板上下挪动&…...

谷粒商城-消息队列Rabbitmq

RabbitMq参考文档 在谷粒商城项目中使用消息队列主要有以下几个重要原因: 异步处理提高性能 场景示例:在订单系统中,当用户提交订单后,系统需要完成多个操作,如更新库存、生成订单记录、发送订单通知等。如果这些操作…...

python-爬虫入门指南

前言:由于个人负责的运维组,其中有个同事每回在某个项目发版更新后,需手动在k8s容器平台web界面上复制出几百个微服务的名称以及镜像版本等信息,用来更新微服务清单,个人决定抽时间写个爬虫脚本自动完成手动执行的任务…...

力扣—53. 最大子数组和

53. 最大子数组和 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4…...

STM32H7开发笔记(2)——H7外设之多路定时器中断

STM32H7开发笔记(2)——H7外设之多路定时器中断 文章目录 STM32H7开发笔记(2)——H7外设之多路定时器中断0.引言1.CubeMX配置2.软件编写 0.引言 本文PC端采用Win11STM32CubeMX4.1.0.0Keil5.24.2的配置,硬件使用STM32H…...

kafka如何知道哪个消费者消费哪个分区?

在Kafka中,消费者和分区之间的分配是通过一个称为“消费者组协调器”(Consumer Group Coordinator)的组件来管理的。 以下是Kafka如何确定哪个消费者消费哪个分区的步骤: 消费者加入消费者组: 当消费者启动时&#xf…...

Dockerfile构建报错【ERROR: failed to solve: process】的解决办法

报错信息如下 ERROR: failed to solve: process “/bin/sh -c yarn install” did not complete successfully: exit code: 1 解决 从阿里云等镜像站点下载CentOS-7.repo文件 ‌下载CentOS-7.repo文件‌:可以从阿里云等镜像站点下载CentOS-7.repo文件,…...

html渲染优先级

在前端开发中,优先布局是指在设计和构建页面时,将页面的各个部分按照其重要性和优先级进行排序,并依次进行布局和开发。这种方法可以帮助开发团队在项目初期就确定页面结构的核心部分,从而更好地掌控项目的整体进度和优先级。且确…...

AIX下crs-5005 ip address is aready in use in the network的解决办法

某业务生产系统中,三节点的rac数据库中3号节点因故障停机后,进行crs的重启。重启完成后,发现数据库的监听未起来,启动的过程中并提示crs-5005错误。 一、问题过程 查看监听,发现监听no service ywdb03/oracle/grid/c…...

Docker--通过Docker容器创建一个Web服务器

Web服务器 Web服务器,一般指网站服务器,是驻留于因特网上某种类型计算机的程序。 Web服务器可以向浏览器等Web客户端提供文档,也可以放置网站文件以供全世界浏览,或放置数据文件以供全世界下载。 Web服务器的主要功能是提供网上…...

C#里怎么样自己实现10进制转换为二进制?

C#里怎么样自己实现10进制转换为二进制? 很多情况下,我们都是采用C#里类库来格式化输出二进制数。 如果有人要你自己手写一个10进制数转换为二进制数,并格式化输出, 就可以采用本文里的方法。 这里采用求模和除法来实现的。 下…...

sql 查询语句:将终端数据形式转换成insert语句

文本转换:sql 查询语句:将终端数据形式转换成insert语句 如上,写过后端的都知道,从生产或其他地方拿到的数据,有可能会是图一;但实际上,我们需要图二的数据; 不废话,直接…...

Spring Boot 应用开发:构建高效、可扩展的 Java 微服务

以下是一个简单的 Spring Boot 小项目示例,该项目是一个基于 Spring Boot 的博客系统后端部分。这个项目将展示如何使用 Spring Boot 框架来创建一个基本的 RESTful API 服务,以管理博客文章。 项目结构 spring-boot-blog ├── src │ ├── main…...

【Linux】安装 openssh-server 并打开 ssh 服务(Ubuntu 22.04)

引言 openssh-server是OpenSSH套件的一部分,它是SSH协议的开源实现。SSH,全称为Secure Shell,是一种网络协议,用于安全地在不安全的网络环境中执行远程命令和传输数据。 配置步骤 在Ubuntu系统中安装openssh-server。 sudo apt…...

开源IM,为你的项目增加聊天功能

现在大多数APP,或多或少都会涉及到聊天功能,而大部分APP的选择则是接入TIM等三方IM服务,但是,这种方式对于大多数刚刚起步的APP来说,费用是非常昂贵的,基本上每月都有好几百的支出,并且&#xf…...

跨平台应用开发框架(1)----Qt(组件篇)

目录 1.Qt 1.Qt 的主要特点 2.Qt的使用场景 3.Qt的版本 2.QtSDK 1.Qt SDK 的组成部分 2.安装 Qt SDK 3.Qt SDK 的优势 3.Qt初识 1.快速上手 widget.cpp mian.cpp widget.h Helloworld.pro 2.对象树 3.坐标系 4.信号和槽 1. 信号和槽的基本概念 2. 信号和槽的…...

Java基础 设计模式——针对实习面试

目录 Java基础 设计模式单例模式工厂模式观察者模式策略模式装饰器模式其他设计模式 Java基础 设计模式 单例模式 单例模式(Singleton Pattern) 定义:确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。适用场景&…...

C++ —— 以真我之名 如飞花般绚丽 - 智能指针

目录 1. RAII和智能指针的设计思路 2. C标准库智能指针的使用 2.1 auto_ptr 2.2 unique_ptr 2.3 简单模拟实现auto_ptr和unique_ptr的核心功能 2.4 shared_ptr 2.4.1 make_shared 2.5 weak_ptr 2.6 shared_ptr的缺陷:循环引用问题 3. shared_ptr 和 unique_…...

k8s中部署filebeat进行日志监听并发送到es中

注意事项 1. 需要将namespace修改为自己项目中的命名空间 2. es换成对应的地址 3. filebeat-inputs中的两个配置(根据需要用任意一个就可以) 3.1 第一个配置是监听docker日志,由于系统日志太多所以这里只监听项目部署命名空间下的内容 -…...

HTTP Accept用法介绍

一、HTTP Accept是什么 HTTP协议是一个客户端和服务器之间进行通信的标准协议,它定义了发送请求和响应的格式。而HTTP Accept是HTTP协议中的一个HTTP头部,用于告诉服务器请求方所期望的响应格式。这些格式可以是媒体类型、字符集、语言等信息。 HTTP A…...

软件工程设计模式--结构型设计模式

设计模式的核心思想 :  广义——软件设计模式是可解决一类软件问题并能重 复使用的软件设计方案  狭义——设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述,是在类和对象的层次描述的可重复使用的软件设计问题的解决方…...

HTML5好看的音乐播放器多种风格(附源码)

文章目录 1.设计来源1.1 音乐播放器风格1效果1.2 音乐播放器风格2效果1.3 音乐播放器风格3效果1.4 音乐播放器风格4效果1.5 音乐播放器风格5效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,在线沟通 作者&…...

【FPGA】Verilog:利用 4 个串行输入- 串行输出的 D 触发器实现 Shift_register

0x00 什么是寄存器 寄存器(Register)是顺序逻辑电路中使用的基本组成部分之一。寄存器用于在数字系统中存储和处理数据。寄存器通常由位(bit)构成,每个位可以存储一个0或1的值。通过寄存器,可以设计出计数器、加法器等各种数据处理电路。 0x01 寄存器的种类 基于 D 触发…...

快速排序算法-C语言

第一步:实现分区函数 根据题目中的“快速排序”,我们需要实现一个分区函数,这个功能的实现: 设定基准值 pivot。使用两个指针 low 和 high,分别从数组的两端向中间移动,进行元素交换。 int part(int A[]…...

SuperMap Objects组件式GIS开发技术浅析

引言 随着GIS应用领域的扩展,GIS开发工作日显重要。一般地,从平台和模式上划分,GIS二次开发主要有三种实现方式:独立开发、单纯二次开发和集成二次开发。上述的GIS应用开发方式各有利弊,其中集成二次开发既可以充分利…...

极简开源Windows桌面定时提醒休息python程序

当我们长期在电脑面前坐太久后,会产生一系列健康风险,包括干眼症,颈椎,腰椎,肌肉僵硬等等。解决方案是在一定的时间间隔内我们需要have a break, 远眺可以缓解干眼症等眼部症状,站起来走动两步,…...

SpringBoot源码解析(五):准备应用环境

SpringBoot源码系列文章 SpringBoot源码解析(一):SpringApplication构造方法 SpringBoot源码解析(二):引导上下文DefaultBootstrapContext SpringBoot源码解析(三):启动开始阶段 SpringBoot源码解析(四):解析应用参数args Sp…...

JAVA笔记 | 策略模式+枚举Enum简单实现策略模式(可直接套用)

本篇为更为简单的策略模式应用,使用枚举来进行策略分配 上一篇(链接如下)更像是策略工厂模式来分配策略 JAVA笔记 | 实际上用到的策略模式(可直接套用)-CSDN博客 先创建策略相关类 //策略类 public interface PetStrategy {/*** 执行动作 - 跑RUN*/String run(Str…...

SpringBoot集成 Jasypt 实现数据源连接信息进行加密

SpringBoot集成 Jasypt 实现数据源连接信息进行加密 在实际项目中,敏感信息(如数据库连接的 URL、用户名、密码等)直接暴露在配置文件中可能导致安全隐患。为了解决这一问题,可以使用 Jasypt 来加密敏感信息,并在运行…...

大数据新视界 -- Hive 数据桶原理:均匀分布数据的智慧(上)(9/ 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

优化Docker镜像:提升部署效率与降低资源消耗

目录 1. 最小化镜像层 2. 使用轻量级基础镜像 3. 多阶段构建 4. 清理不必要的文件和依赖 5. 使用.dockerignore文件 6. 压缩和优化文件系统 7. 外部化配置和数据 8. 限制容器资源 9. 定期清理未使用的镜像和容器 结论 在云计算和微服务架构的浪潮中,Docke…...

strupr(arr);模拟实现(c基础)

hi , I am 36 适合对象c语言初学者 strupr(arr);函数是把arr数组变为大写字母&#xff0c;并返回arr 介绍一下strupr(arr)&#xff1b;(c基础&#xff09;-CSDN博客 现在进行My__strupr(arr);模拟实现 #include<stdio.h>//My__strupr(arr); //返回值为arr(地址),于是…...

skywalking es查询整理

索引介绍 sw_records-all 这个索引用于存储所有的采样记录&#xff0c;包括但不限于慢SQL查询、Agent分析得到的数据等。这些记录数据包括Traces、Logs、TopN采样语句和告警信息。它们被用于性能分析和故障排查&#xff0c;帮助开发者和运维团队理解服务的行为和性能特点。 …...

AI时代的软件工程:迎接LLM-DevOps的新纪元

在科技日新月异的今天&#xff0c;GPT的问世无疑为各行各业带来了一场深刻的变革&#xff0c;而软件工程领域更是首当其冲&#xff0c;正式迈入了软件工程3.0的新纪元。2024年&#xff0c;作为软件工程3.0的元年&#xff0c;伴随着软件工程3.0宣言的震撼发布&#xff0c;一个全…...

【机器学习】——卷积与循环的交响曲:神经网络模型在现代科技中的协奏

&#x1f3bc;个人主页&#xff1a;【Y小夜】 &#x1f60e;作者简介&#xff1a;一位双非学校的大二学生&#xff0c;编程爱好者&#xff0c; 专注于基础和实战分享&#xff0c;欢迎私信咨询&#xff01; &#x1f386;入门专栏&#xff1a;&#x1f387;【MySQL&#xff0…...

详解Servlet的使用

目录 Servlet 定义 动态页面 vs 静态页面 主要功能 Servlet的使用 创建Maven项目 引入依赖 创建目录 编写代码 打war包 部署程序 验证程序 Smart Tomcat 安装Smart Tomcat 配置Smart Tomcat插件 启动Tomcat 访问页面 路径对应关系 Servlet运行原理 Tomcat的…...

使用Java代码操作Kafka(五):Kafka消费 offset API,包含指定 Offset 消费以及指定时间消费

文章目录 1、指定 Offset 消费2、指定时间消费 1、指定 Offset 消费 auto.offset.reset earliest | latest | none 默认是 latest &#xff08;1&#xff09;earliest&#xff1a;自动将偏移量重置为最早的偏移量&#xff0c;–from-beginning &#xff08;2&#xff09;lates…...

MAC 怎么终端怎么退出和进入Anaconda环境

mac安装完anaconda 后&#xff0c;命令行窗口默认使用conda的&#xff0c;取消默认&#xff0c;用以下一行代码在命令行运行即可&#xff0c;重启终端&#xff1a; conda config --set auto_activate_base false # 将false改为true设置默认环境为conda进入conda环境&#xff…...

如何在 .gitignore 中仅保留特定文件:以忽略文件夹中的所有文件为例

在日常的开发工作中&#xff0c;使用 Git 来管理项目是不可或缺的一部分。项目中的某些文件夹可能包含大量的临时文件、生成文件或不需要版本控制的文件。在这种情况下&#xff0c;我们通常会使用 .gitignore 文件来忽略这些文件夹。然而&#xff0c;有时我们可能希望在忽略整个…...

USRP:B205mini-i

USRP B205mini-i B205mini-i都是采用工业级的FPGA芯片(-I表示industrial-grade)&#xff0c;所以价格贵。 这个工业级会让工作温度从原来 0 – 45 C 变为 -40 – 75 C. 温度的扩宽&#xff0c;会让工作的稳定性变好。但是前提是你需要配合NI的外壳才行&#xff0c;你如果只买一…...

Oracle SQL优化②——访问路径

前言 访问路径指的就是通过哪种扫描方式获取数据&#xff0c;比如全表扫描、索引扫描或者直接通过ROWID获取数据。想要完成SQL优化&#xff0c;就必须深入理解各种访问路径。本文章详细介绍常见的访问路径。 一.常见访问路径 1.TABLE ACCESS FULL 表示全表扫描&#xff0c;…...

k8s1.30.0高可用集群部署

负载均衡 nginx负载均衡 两台nginx负载均衡 vim /etc/nginx/nginx.conf stream {upstream kube-apiserver {server 192.168.0.11:6443 max_fails3 fail_timeout30s;#server 192.168.0.12:6443 max_fails3 fail_timeout30s;#server 192.168.0.13:6443 max_fails3…...

Jenkins的环境部署

day22 回顾 Jenkins 简介 官网Jenkins Jenkins Build great things at any scale The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project. 用来构建一切 其实就是用Java写的一个项目…...

Android开发教程案例源码分享-匹配动画多个头像飘动效果

Android开发教程案例源码分享-匹配动画多个头像飘动效果 匹配往往出现多个头像飘动&#xff0c;吸引人点击&#xff0c;有时出现的位置还不固定 一、思路&#xff1a; 用MotionLayout 二、效果图&#xff1a; 看视频更直观点&#xff1a; Android开发教程案例源码分享-匹配…...