快速学会绘制Pyqt5中的所有图(下)

Pyqt5相关文章:
快速掌握Pyqt5的三种主窗口
快速掌握Pyqt5的2种弹簧
快速掌握Pyqt5的5种布局
快速弄懂Pyqt5的5种项目视图(Item View)
快速弄懂Pyqt5的4种项目部件(Item Widget)
快速掌握Pyqt5的6种按钮
快速掌握Pyqt5的10种容器(Containers)
快速掌握Pyqt5的20种输入控件(Input Widgets)
快速掌握Pyqt5的9种显示控件
详细学习Pyqt5中的5种布局方式
详细学习Pyqt5中的6种按钮
详细学习Pyqt5中的2种弹簧
详细学习Pyqt5的5种项目视图(Item View)
详细学习Pyqt5的4种项目部件(Item Widget)
详细学习Pyqt5的20种输入控件(Input Widgets)
详细学习Pyqt5的9种显示控件
详细学习Pyqt5的10种容器(Containers)
详细学习PyQt5与数据库交互
详细学习PyQt5中的多线程
快速学习PyQt5的动画和图形效果
快速学习PyQt5的高级自定义控件
快速学会绘制Pyqt5中的所有图(上)
快速学会绘制Pyqt5中的所有图(下)
待续。。。

雷达图

在这里插入图片描述

PyQtGraph 并不直接支持雷达图(也称为蜘蛛网图或极坐标图),但您可以使用 PyQt 的绘图能力手动创建一个。要在 PyQt 中绘制雷达图,您需要使用 QPainter 类来在 QWidget 或类似对象上进行自定义绘图。

以下是一个使用 PyQt5 创建简单雷达图的示例:

编写代码绘制雷达图:

import sys  
import math  
from PyQt5.QtWidgets import QApplication, QWidget  
from PyQt5.QtGui import QPainter, QPolygon, QPen  
from PyQt5.QtCore import Qt, QPoint  class RadarWidget(QWidget):  def __init__(self, data):  super().__init__()  self.data = data  def paintEvent(self, event):  painter = QPainter(self)  painter.setRenderHint(QPainter.Antialiasing)  # 雷达图的中心点  center = QPoint(int(self.width() / 2), int(self.height() / 2))  radius = min(int(self.width() / 2), int(self.height() / 2)) - 10  # 绘制雷达图的轴  num_axes = len(self.data)  for i in range(num_axes):  angle = 2 * math.pi * i / num_axes  x =int( center.x() + radius * math.cos(angle))  y =int( center.y() + radius * math.sin(angle))  painter.drawLine(center, QPoint(x, y))  # 绘制雷达图的数据多边形  polygon = QPolygon()  for i in range(num_axes):  angle = 2 * math.pi * i / num_axes  value = self.data[i]  x = int(center.x() + value * radius * math.cos(angle))  y = int(center.y() + value * radius * math.sin(angle))  polygon << QPoint(x, y)  painter.setPen(QPen(Qt.blue, 2))  painter.drawPolygon(polygon)  # 创建一个 QApplication 实例  
app = QApplication(sys.argv)  # 创建雷达图窗口  
radar_data = [0.7, 0.8, 0.5, 0.6, 0.9]  # 示例数据  
radarWidget = RadarWidget(radar_data)  
radarWidget.resize(400, 400)  
radarWidget.show()  # 启动应用程序的事件循环  
sys.exit(app.exec_())

在这个例子中,我们创建了一个继承自 QWidgetRadarWidget 类来显示雷达图。数据以列表形式传递给 RadarWidget,每个元素表示雷达图上一个轴的值。

流程图

在这里插入图片描述

在 PyQtGraph 中绘制流程图需要使用图形和线条来手动创建图形元素。PyQtGraph 主要专注于数据可视化,并不直接支持流程图的绘制。但是,您可以使用 PyQt5 的图形视图框架(QGraphicsSceneQGraphicsView)来创建流程图。

以下是使用 PyQt5 创建简单流程图的示例代码:

编写代码绘制流程图:

import sys  
import math  
from PyQt5.QtWidgets import QApplication, QGraphicsScene, QGraphicsView, QGraphicsRectItem, QGraphicsTextItem, QGraphicsLineItem,QGraphicsPolygonItem  
from PyQt5.QtCore import Qt, QRectF, QPointF, QLineF  
from PyQt5.QtGui import QPen, QBrush, QColor, QPolygonF  class Arrow(QGraphicsLineItem):  def __init__(self, start_item, end_item, parent=None):  super().__init__(parent)  # 计算起始点和结束点  start_point = start_item.mapToScene(start_item.rect().bottomLeft() + QPointF(start_item.rect().width() / 2, 0))  end_point = end_item.mapToScene(end_item.rect().topLeft() + QPointF(end_item.rect().width() / 2, 0))  # 设置线条  line = QLineF(start_point, end_point)  self.setLine(line)  self.setPen(QPen(Qt.black, 2))  # 箭头头部尺寸  arrow_size = 9.0  # 计算箭头角度  angle = math.atan2(-line.dy(), line.dx())  # 创建箭头头部  arrow_head = QPolygonF()  arrow_head.append(line.p2())  arrow_head.append(line.p2() - QPointF(math.sin(angle + math.pi / 3) * arrow_size,  math.cos(angle + math.pi / 3) * arrow_size))  arrow_head.append(line.p2() - QPointF(math.sin(angle + math.pi - math.pi / 3) * arrow_size,  math.cos(angle + math.pi - math.pi / 3) * arrow_size))  # 添加箭头头部到场景  arrow_head_item = QGraphicsPolygonItem(arrow_head, self)  arrow_head_item.setBrush(Qt.black)  arrow_head_item.setPen(QPen(Qt.black, 2))  class FlowChartNode(QGraphicsRectItem):  def __init__(self, text, x, y, width, height, parent=None):  super().__init__(x, y, width, height, parent)  self.setBrush(QBrush(QColor(200, 200, 255)))  self.setPen(QPen(Qt.black, 2))  # 添加文本标签  text_item = QGraphicsTextItem(text, self)  text_item.setPos(x + 10, y + 10)  text_item.setTextWidth(width - 20)  app = QApplication(sys.argv)  
scene = QGraphicsScene()  node1 = FlowChartNode("开始", 50, 50, 100, 50)  
node2 = FlowChartNode("步骤1", 50, 150, 100, 50)  
node3 = FlowChartNode("结束", 50, 250, 100, 50)  scene.addItem(node1)  
scene.addItem(node2)  
scene.addItem(node3)  arrow1 = Arrow(node1, node2)  
arrow2 = Arrow(node2, node3)  scene.addItem(arrow1)  
scene.addItem(arrow2)  view = QGraphicsView(scene)  
view.show()  sys.exit(app.exec_())

在这个例子中,我们定义了一个 FlowChartNode 类来表示流程图中的节点,该类继承自 QGraphicsRectItem。然后,我们创建了一个 QGraphicsScene 来容纳这些节点,并使用 QGraphicsView 显示它们。

树状图

在这里插入图片描述

在 PyQtGraph 中创建树状图(或树形结构图)通常不是直接支持的,因为 PyQtGraph 主要用于数据可视化,如绘制折线图、散点图等。但是,您可以使用 PyQt5 的 QTreeViewQStandardItemModel 来创建一个树状图界面。

以下是使用 PyQt5 创建树状图的示例代码:

编写代码以创建树状图:

import sys  
from PyQt5.QtWidgets import QApplication, QTreeView  
from PyQt5.QtGui import QStandardItem, QStandardItemModel  app = QApplication(sys.argv)  # 创建标准项模型  
model = QStandardItemModel()  
rootNode = model.invisibleRootItem()  # 创建节点  
parent1 = QStandardItem('父节点1')  
child1 = QStandardItem('子节点1')  
child2 = QStandardItem('子节点2')  
parent1.appendRow(child1)  
parent1.appendRow(child2)  parent2 = QStandardItem('父节点2')  
child3 = QStandardItem('子节点3')  
parent2.appendRow(child3)  rootNode.appendRow(parent1)  
rootNode.appendRow(parent2)  # 创建树视图并设置模型  treeView = QTreeView()  
treeView.setHeaderHidden(True)  treeView.setModel(model)  
treeView.expandAll()  # 展开所有节点  # 显示树视图  
treeView.show()  sys.exit(app.exec_())

在这个例子中,我们创建了一个 QStandardItemModel 来存储树形数据,然后向模型中添加了几个 QStandardItem 作为节点。QTreeView 用于展示这个模型。每个节点都可以有子节点,形成树形结构。

网络图

在这里插入图片描述

在 PyQtGraph 中直接绘制网络图(Graph Visualization)并不直接支持,因为 PyQtGraph 主要用于绘制二维和三维的数据可视化图形,如折线图、散点图等。但是,您可以结合使用 PyQt 和其他 Python 图形库,如 NetworkX,来创建和显示网络图。

以下是一个使用 PyQt5 和 NetworkX 创建网络图的示例:

编写代码以创建网络图:

    import sysimport networkx as nximport matplotlib.pyplot as pltfrom PyQt5.QtWidgets import QApplication, QMainWindow, QSizePolicy, QWidget, QVBoxLayoutfrom matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvasclass NetworkGraph(QWidget):def __init__(self, parent=None):super(NetworkGraph, self).__init__(parent)self.figure, self.ax = plt.subplots()self.canvas = FigureCanvas(self.figure)self.canvas.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)self.canvas.updateGeometry()layout = QVBoxLayout()layout.addWidget(self.canvas)self.setLayout(layout)self.draw_graph()def draw_graph(self):# 创建一个网络图G = nx.karate_club_graph()# 绘制网络图pos = nx.spring_layout(G)nx.draw(G, pos, ax=self.ax, with_labels=True, node_color='skyblue', edge_color='gray')# 更新画布self.canvas.draw()app = QApplication(sys.argv)mainWindow = QMainWindow()mainWindow.setCentralWidget(NetworkGraph())mainWindow.show()sys.exit(app.exec_())

在这个示例中,我们创建了一个名为 NetworkGraph 的自定义 QWidget,用于显示由 NetworkX 生成的网络图。使用 NetworkX 创建并配置图形,然后使用 Matplotlib 进行绘图。最后,将 Matplotlib 图形嵌入到 PyQt5 应用程序窗口中。

气泡图

在这里插入图片描述

在 PyQtGraph 中绘制气泡图可以通过使用 ScatterPlotItem 类并调整点的大小来实现。气泡图是散点图的一种变体,其中每个点的大小可以代表数据的一个额外维度。

以下是使用 PyQtGraph 创建气泡图的步骤和示例代码:

编写代码以绘制气泡图:

import sys  
import numpy as np  
from PyQt5 import QtWidgets  
import pyqtgraph as pg  # 创建一个应用程序实例  
app = QtWidgets.QApplication(sys.argv)  # 创建一个主窗口  
mainWindow = QtWidgets.QMainWindow()  # 创建一个绘图控件  
plotWidget = pg.PlotWidget()  
plotWidget.setBackground("w")  
mainWindow.setCentralWidget(plotWidget)  # 准备数据  
x = np.random.rand(100) * 10  
y = np.random.rand(100) * 10  
sizes = np.random.rand(100) * 50  # 气泡的大小  # 创建散点图项目  
scatterPlotItem = pg.ScatterPlotItem(pen=pg.mkPen(None), brush="#dcbeff")  # 现在使用 setData 设置点的坐标和大小  
scatterPlotItem.setData(x, y, size=sizes)  # 将散点图添加到绘图控件  
plotWidget.addItem(scatterPlotItem)  # 显示主窗口  
mainWindow.show()  # 启动应用程序的事件循环  
sys.exit(app.exec_())

在这个例子中,我们使用 ScatterPlotItem 创建了一个散点图,并通过改变每个点的大小(size 参数)来创建一个气泡图效果。xy 是数据点的坐标,sizes 数组决定了每个点的大小。

地图图表

在这里插入图片描述

在 PyQt 中绘制地图图表通常需要结合使用地理信息系统(GIS)相关的库,例如 GeoPandas、Folium 或 PyQGIS。这些库可以处理地理数据并生成地图,但是它们不是 PyQtGraph 的一部分。另一种选择是使用 QGIS,这是一个完整的地理信息系统平台,它可以与 PyQt 结合使用。

以下是一个使用 Python、PyQt5 和 Folium 创建交互式地图图表的基本示例:

编写代码以创建地图图表:

import sys  
import os  
import folium  
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget  
from PyQt5.QtWebEngineWidgets import QWebEngineView  
from PyQt5.QtCore import QUrl  class MapWidget(QWidget):  def __init__(self, parent=None):  super().__init__(parent)  self.view = QWebEngineView(self)  self.init_ui()  def init_ui(self):  # 创建一个 Folium 地图,您可以调整 zoom_start 来设置初始缩放级别  m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)  # 获取当前文件夹的绝对路径  dirname = os.path.abspath(os.path.dirname(__file__))  # 保存地图为 HTML 文件  map_path = os.path.join(dirname, 'map.html')  m.save(map_path)  # 在 QWebEngineView 中加载 HTML        self.view.load(QUrl.fromLocalFile(map_path))  # 设置 QWebEngineView 控件的最小尺寸  self.view.setMinimumSize(800, 600)  # 例如,设置为宽800像素,高600像素  self.view.show()  app = QApplication(sys.argv)  
mainWindow = QMainWindow()  
mapWidget = MapWidget()  # 设置主窗口的初始大小  
mainWindow.resize(800, 600)  # 可以根据需要调整这个尺寸  mainWindow.setCentralWidget(mapWidget)  
mainWindow.show()  
sys.exit(app.exec_())

在这个示例中,我们使用 Folium 创建了一个简单的地图,并将其保存为一个 HTML 文件。然后我们使用 PyQt5 的 QWebEngineView 小部件加载并显示这个 HTML 文件,从而在 PyQt 应用程序中嵌入了地图。

桑基图

在这里插入图片描述

桑基图是一种特殊的流程图,它用于表示数据流和传输。在 PyQtGraph 中直接绘制桑基图并不支持,因为它主要用于绘制二维和三维的数据可视化图形,如折线图、散点图等。然而,您可以使用其他的Python库,如 matplotlib,来创建桑基图,并将其嵌入到 PyQt 应用程序中。

以下是一个使用 Python、PyQt5 和 Matplotlib 创建桑基图的基本示例:

编写代码以创建桑基图:

    import sysfrom PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidgetfrom matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvasimport matplotlib.pyplot as pltfrom matplotlib.sankey import Sankeyclass SankeyWidget(QWidget):def __init__(self, parent=None):super(SankeyWidget, self).__init__(parent)self.figure, self.ax = plt.subplots()self.canvas = FigureCanvas(self.figure)layout = QVBoxLayout()layout.addWidget(self.canvas)self.setLayout(layout)self.draw_sankey()def draw_sankey(self):# 创建桑基图sankey = Sankey(ax=self.ax)sankey.add(flows=[1, -1, 0.5, -0.5], labels=['', '', '', ''], orientations=[0, 0, 1, -1])sankey.finish()# 更新画布self.canvas.draw()app = QApplication(sys.argv)mainWindow = QMainWindow()mainWindow.setCentralWidget(SankeyWidget())mainWindow.show()sys.exit(app.exec_())

在这个示例中,我们定义了一个 SankeyWidget 类来展示桑基图。使用 Matplotlib 创建桑基图,并将其嵌入到 PyQt5 应用程序中。

组合图在这里插入图片描述

在 PyQtGraph 中创建组合图(例如,将折线图和柱状图组合在一起)可以通过在同一个绘图控件(PlotWidget)中添加多个图表元素来实现。这样,您可以在同一个坐标轴上或在相互关联的坐标轴上展示不同类型的数据。

以下是一个示例,展示如何在 PyQtGraph 中创建一个组合了折线图和柱状图的组合图:

编写代码以创建组合图:

import sys
import numpy as np
from PyQt5 import QtWidgets
import pyqtgraph as pg# 创建一个应用程序实例
app = QtWidgets.QApplication(sys.argv)# 创建一个主窗口
mainWindow = QtWidgets.QMainWindow()# 创建一个绘图控件
plotWidget = pg.PlotWidget()
plotWidget.setBackground('w')
mainWindow.setCentralWidget(plotWidget)# 准备数据
x = np.arange(10)
y1 = np.random.randint(1, 20, size=10)  # 柱状图的数据
y2 = np.random.randint(1, 20, size=10)  # 折线图的数据# 创建柱状图项目
barGraphItem = pg.BarGraphItem(x=x, height=y1, width=0.6, brush='#fffac8')
plotWidget.addItem(barGraphItem)# 创建折线图项目
plotWidget.plot(x, y2, pen=pg.mkPen(color='#dcbeff', width=2))# 显示主窗口
mainWindow.show()# 启动应用程序的事件循环
sys.exit(app.exec_())

在这个示例中,我们首先创建了一个包含柱状图和折线图的 PlotWidgetBarGraphItem 用于柱状图,而 plot 方法用于折线图。通过将它们添加到同一个 PlotWidget 中,我们可以将两种图表组合在一起显示。

股票图

在这里插入图片描述

在 PyQtGraph 中绘制股票图(通常指蜡烛图或OHLC图)需要一些额外的步骤,因为这需要特殊的图表来表示股票的开盘价、最高价、最低价和收盘价。PyQtGraph 提供了 CandlestickItem 类来创建这种类型的图表。

以下是使用 PyQtGraph 创建股票图的步骤和示例代码:

编写代码以绘制股票图:

import sys  
import numpy as np  
from PyQt5 import QtWidgets  
import pyqtgraph as pg  class CandlestickItem(pg.GraphicsObject):  def __init__(self, data):  pg.GraphicsObject.__init__(self)  self.data = data  # data应该是一个包含(open, high, low, close)的列表  self.generatePicture()  def generatePicture(self):  self.picture = pg.QtGui.QPicture()  p = pg.QtGui.QPainter(self.picture)  p.setPen(pg.mkPen('b'))  # 设置蜡烛图的颜色  w = 0.3  for (t, open, high, low, close) in self.data:  p.drawLine(pg.QtCore.QPointF(t, low), pg.QtCore.QPointF(t, high))  if open > close:  p.setBrush(pg.mkBrush('g'))  else:  p.setBrush(pg.mkBrush('r'))  p.drawRect(pg.QtCore.QRectF(t - w, open, w * 2, close - open))  p.end()  def paint(self, p, *args):  p.drawPicture(0, 0, self.picture)  def boundingRect(self):  return pg.QtCore.QRectF(self.picture.boundingRect())  # 创建一个应用程序实例  
app = QtWidgets.QApplication(sys.argv)  # 创建一个主窗口  
mainWindow = QtWidgets.QMainWindow()  # 创建一个绘图控件  
plotWidget = pg.PlotWidget()  
plotWidget.setBackground("w")  
mainWindow.setCentralWidget(plotWidget)  # 准备数据  
data = [  # 示例数据:(时间, 开盘价, 最高价, 最低价, 收盘价)  (1, 10, 15, 5, 13),  (2, 13, 20, 10, 15),  (3, 15, 17, 13, 16),  (4, 16, 19, 14, 10),  # ...  
]  # 创建蜡烛图项目  
item = CandlestickItem(data)  
plotWidget.addItem(item)  # 显示主窗口  
mainWindow.show()  # 启动应用程序的事件循环  
sys.exit(app.exec_())

在这个示例中,我们首先定义了一个 CandlestickItem 类来创建股票图。该类继承自 GraphicsObject,并且重写了绘图方法来绘制蜡烛图。数据格式是一个元组列表,每个元组代表一个时间点上的开盘价、最高价、最低价和收盘价。

甘特图

![[Pasted image 20231207235825.png]]

在 PyQtGraph 中创建甘特图需要一些额外的工作,因为它主要用于绘制二维和三维的数据可视化图形,如折线图、散点图等,而不直接支持甘特图。但是,您可以使用 PyQt 的基本图形功能来手动绘制甘特图。

以下是使用 PyQt5 创建简单甘特图的示例代码:

编写代码以创建甘特图:

import sys  
from PyQt5.QtWidgets import QApplication, QGraphicsScene, QGraphicsView, QGraphicsRectItem, QGraphicsTextItem  
from PyQt5.QtGui import QColor, QPen, QFont  
from PyQt5.QtCore import QRectF  class GanttChartItem(QGraphicsRectItem):  def __init__(self, text, start, duration, row, color, parent=None):  super(GanttChartItem, self).__init__(parent)  # 设置矩形的尺寸和位置  self.setRect(QRectF(start, row * 50, duration, 30))  self.setBrush(QColor(color))  self.setPen(QPen(QColor('black'), 2))  # 添加边框  # 添加文本标签  text_item = QGraphicsTextItem(text, self)  text_item.setFont(QFont('Arial', 10))  text_item.setDefaultTextColor(QColor('black'))  text_item.setPos(start + 2, row * 50 + 5)  app = QApplication(sys.argv)  # 创建场景  
scene = QGraphicsScene()  # 创建甘特图条目  
ganttItem1 = GanttChartItem("项目1", 0, 100, 0, '#78C0A8')  
ganttItem2 = GanttChartItem("项目2", 50, 150, 1, '#F4D35E')  
ganttItem3 = GanttChartItem("项目3", 120, 100, 2, '#EE964B')  # 将条目添加到场景  
scene.addItem(ganttItem1)  
scene.addItem(ganttItem2)  
scene.addItem(ganttItem3)  # 创建视图  
view = QGraphicsView(scene)  # 设置合适的视图尺寸  
view.setSceneRect(0, 0, 400, 200)  
view.setMinimumSize(600, 400)  # 设置窗口标题  
view.setWindowTitle("python")  # 显示视图窗口  
view.show()  sys.exit(app.exec_())

在这个示例中,我们定义了一个 GanttChartItem 类来表示甘特图中的单个任务。每个任务在水平方向上表示其持续时间,在垂直方向上表示不同的任务行。QGraphicsScene 用于容纳这些任务,而 QGraphicsView 用于显示它们。

平行坐标图

![[Pasted image 20231207235854.png]]

在 PyQtGraph 中直接绘制平行坐标图(Parallel Coordinates)并不直接支持,因为 PyQtGraph 主要用于绘制二维和三维的数据可视化图形,如折线图、散点图等。然而,您可以使用其他的Python库,如 matplotlibpandas,来创建平行坐标图,并将其嵌入到 PyQt 应用程序中。

以下是一个使用 Python、PyQt5 和 Matplotlib 创建平行坐标图的基本示例:

编写代码以创建平行坐标图:

    import sysimport pandas as pdimport matplotlib.pyplot as pltfrom PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidgetfrom matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvasfrom pandas.plotting import parallel_coordinatesclass ParallelCoordinatesWidget(QWidget):def __init__(self, parent=None):super(ParallelCoordinatesWidget, self).__init__(parent)self.figure, self.ax = plt.subplots()self.canvas = FigureCanvas(self.figure)layout = QVBoxLayout()layout.addWidget(self.canvas)self.setLayout(layout)self.draw_parallel_coordinates()def draw_parallel_coordinates(self):# 创建数据data = pd.DataFrame({'A': [1, 2, 3, 4],'B': [4, 3, 2, 1],'C': [2, 3, 4, 1],'D': [4, 1, 3, 2]})# 绘制平行坐标图parallel_coordinates(data, 'A', ax=self.ax)# 更新画布self.canvas.draw()app = QApplication(sys.argv)mainWindow = QMainWindow()mainWindow.setCentralWidget(ParallelCoordinatesWidget())mainWindow.show()sys.exit(app.exec_())

在这个示例中,我们定义了一个 ParallelCoordinatesWidget 类来展示平行坐标图。使用 Pandas 和 Matplotlib 创建平行坐标图,并将其嵌入到 PyQt5 应用程序中。

通过本系列教程,我们了解了如何使用PyQt5结合PyQtGraph和其他库来创建一系列不同的图表,从而使数据更加生动且易于理解。从基础的图表到复杂的GIS表示,PyQt5提供了广泛的功能,以帮助开发者在Python中构建专业的数据可视化解决方案。

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

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

相关文章

鸿蒙原生应用开发——分布式数据对象

01、什么是分布式数据对象 在可信组网环境下&#xff0c;多个相互组网认证的设备将各自创建的对象加入同一个 sessionId&#xff0c;使得加入的多个数据对象之间可以同步数据&#xff0c;也就是说&#xff0c;当某一数据对象属性发生变更时&#xff0c;其他数据对象会检测到这…

让聪明的车连接智慧的路,C-V2X开启智慧出行生活

“聪明的车 智慧的路”形容的便是车路协同的智慧交通系统&#xff0c;从具备无钥匙启动&#xff0c;智能辅助驾驶和丰富娱乐影音功能的智能网联汽车&#xff0c;到园区的无人快递配送车&#xff0c;和开放的城市道路上自动驾驶的公交车、出租车&#xff0c;越来越多的车联网应用…

thinkphp lists todo

来由&#xff1a; 数据库的这个字段我想返回成&#xff1a; 新奇的写法如下&#xff1a; 逻辑层的代码&#xff1a; public function goodsDetail($goodId){$detail $this->good->where(id, $goodId)->hidden([type_params,user_id])->find();if (!$detail) {ret…

如何使用PostMan进行并发测试?

如何使用PostMan进行并发测试&#xff1f; &#x1f440;(Postman 的 runner 实际上是串行执行的&#xff0c;因此不能作为并发测试&#xff0c; 只是批量测试&#xff0c;本文如下称为并发的是错误的) 文章目录 如何使用PostMan进行并发测试&#xff1f;POST篇流程Pre-req 脚…

Conda常用命令总结

使用conda或anaconda的小伙伴们都知道&#xff0c;图形界面时不靠谱的&#xff0c;而在命令行下&#xff0c;所有的操作就会稳定很多&#xff0c;且极少出现问题。因此&#xff0c;熟记conda的命令行就变得十分有用。但对于我这样近50岁依旧奋斗在代码第一线的大龄程序员而已&a…

拦截 open调用 (进程白名单,文件白名单)

拦截 open 文章目录 拦截 open第一个需求文件结构进程白名单文件白名单 测试代码第一个版本版本二代码演示 增加一个日志记录代码解释 gcc -shared -fPIC -o libintercept.so intercept.c -ldlLD_PRELOAD./libintercept.so ./processA在Linux中&#xff0c;我们可以使用LD_PREL…

12.Mysql 多表数据横向合并和纵向合并

Mysql 函数参考和扩展&#xff1a;Mysql 常用函数和基础查询、 Mysql 官网 Mysql 语法执行顺序如下&#xff0c;一定要清楚&#xff01;&#xff01;&#xff01;运算符相关&#xff0c;可前往 Mysql 基础语法和执行顺序扩展。 (8) select (9) distinct (11)<columns_name…

【力扣热题100】287. 寻找重复数(弗洛伊德的乌龟和兔子方法)

【力扣热题100】287. 寻找重复数 写在最前面理解解决 "寻找重复数" 问题的算法问题描述弗洛伊德的乌龟和兔子方法为什么这个方法有效&#xff1f; 代码复杂度 总结回顾 写在最前面 刷一道力扣热题100吧 难度中等 https://leetcode.cn/problems/find-the-duplicate-…

Java Web应用小案例 - 实现用户登录功能

文章目录 一、使用纯JSP方式实现用户登录功能&#xff08;一&#xff09;项目概述&#xff08;二&#xff09;实现步骤1、创建Web项目2、创建登录页面 二、使用JSPServlet方式实现用户登录功能三、使用JSPServletDB方式实现用户登录功能 一、使用纯JSP方式实现用户登录功能 &a…

ubuntu22.04安装 nvidia-cudnn

nvidia-cudnn 是 NVIDIA CUDA 深度神经网络库&#xff08;CUDA Deep Neural Network library&#xff09;的缩写。这是一个由 NVIDIA 提供的库&#xff0c;用于加速深度学习应用程序。它包含了针对深度神经网络中常用操作&#xff08;如卷积、池化、归一化、激活层等&#xff0…

【Linux】如何清空某个文件的内容

cat /dev/null > file1 清空某个文件的内容使用cat /dev/null > file1&#xff0c;它将 /dev/null 的内容&#xff08;空内容&#xff09;重定向到 file1。 如下所示&#xff0c;file1文件里的内容被清空。 错误写法 错误写法是&#xff1a;cat file1 > /dev/null&…

持续集成交付CICD:CentOS 7 安装 Nexus 3.63

目录 一、实验 1.CentOS 7 安装Nexus3.63 二、问题 1.安装Nexus报错 2.Nexus启动停止相关命令 一、实验 1.CentOS 7 安装Nexus3.63 &#xff08;1&#xff09;当前操作系统版本&JDK版本 cat /etc/redhat-releasejava -version&#xff08;2&#xff09;下载Nexus新…

int 和 Integer 有什么区别,还有 Integer 缓存的实现

✨前言✨   Java本文主要介绍Java int 和 Integer的区别以及Integer 缓存的实现 &#x1f352;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f352;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 文章目…

用C++实现队列顺序结构的基本操作

//队列顺序结构的基本操作&#xff1a; #include"stdio.h" #include"String" #define QueueSize 100 typedef char ElemType; typedef struct { ElemType data[QueueSize]; /*保存队中元素*/int front,rear; /*队头和队尾指针*/ } SqQueue; void Init…

使用STM32定时器实现精确的时间测量和延时

✅作者简介&#xff1a;热爱科研的嵌入式开发者&#xff0c;修心和技术同步精进&#xff0c; 代码获取、问题探讨及文章转载可私信。 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。 &#x1f34e;获取更多嵌入式资料可点击链接进群领取&#xff0c;谢谢支持&#xff01;…

大数据技术4:Lambda和Kappa架构区别

前言&#xff1a;在大数据处理领域&#xff0c;两种突出的数据架构已成为处理大量数据的流行选择&#xff1a;Lambda 架构和 Kappa 架构。这些架构为实时处理和批处理提供了强大的技术解决方案&#xff0c;使组织能够从其数据中获得有价值的见解。随着互联网时代来临&#xff0…

Python VSCode 配置固定的脚本入口

Python VSCode 配置固定的脚本入口 打开或者新建一个启动配置 选择 .vscode目录下 launch.json文件 将 “program”: “${file}” 替换成 “program”: “mian.py”, //完成你自己的入口.py文件名即可 json启动配置文件 {// Use IntelliSense to learn about possible attrib…

面向对象中的单例模式

1、什么是设计模式 设计模式就是前人根据实际的问题提出的问题解决方案&#xff0c;我们把这种就称之为设计模式。 2、单例模式 单例模式是一种常见的设计模式&#xff01; 所谓的设计模式&#xff0c;不是一种新的语法&#xff0c;而是人们在实际的应用中&#xff0c;面对…

【银行测试】金融项目+测试方法范围分析,功能/接口/性能/安全...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、金融行业软件特…

3GPP标准查看、下载和几个UE相关系列标准

由于一直做终端侧协议。最近以UE为核心重新下载了一系列文档。 总结并举例一下分类标准。 如何查看3GPP标准列表 实际上在3GPP网站如下链接&#xff1a;Specifications by Series&#xff0c;每个系列以及分类都说的很清楚。 几个系列分类举例 和终端协议层工作比较关系密切…