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

【五一创作】QML、Qt Quick /Qt中绘制圆形

目录标题

  • Qt Quick中绘制圆形
    • 扩展知识
      • `Canvas ` 模块介绍
      • `Shapes` 模块介绍
  • Qt Widgets 中绘制圆形
  • 两种方式的比较

Qt Quick中绘制圆形

有多种方法可以在 Qt Quick 中绘制圆形。以下是一些主要方法:

  1. 使用 Canvas 元素

  2. 使用 Shapes 模块:

    a. 使用 PathArcPathLine 元素组合绘制一个完整的圆形。

    b. 使用 PathEllipse 元素绘制一个椭圆形,并将其设置为圆形。

  3. 使用 Rectangle 元素绘制圆角矩形并将圆角半径设置为宽度和高度的一半。

下面是这些方法的示例:

  1. 使用 Canvas 元素:
    Canvas {id: canvasanchors.fill: parentonPaint: {var ctx = getContext('2d');ctx.reset();// 绘制圆形ctx.beginPath();ctx.arc(width / 2, height / 2, width / 2, 0, 2 * Math.PI);ctx.fillStyle = 'lightblue';ctx.fill();ctx.strokeStyle = 'black';ctx.stroke();ctx.closePath();}
    }
    
  2. 使用 Shapes 模块:
    1. 使用 PathArcPathLine 元素组合绘制一个完整的圆形。
      import QtQuick 2.15
      import QtQuick.Shapes 1.15Shape {anchors.fill: parentShapePath {strokeWidth: 2fillColor: "lightblue"strokeColor: "black"Path {startX: width / 2startY: height / 2PathLine {x: widthy: height / 2}PathArc {x: width / 2y: height / 2radiusX: width / 2radiusY: height / 2useLargeArc: true}PathLine {x: width / 2y: height / 2}}}
      }
    2. 使用 PathEllipse 元素绘制一个椭圆形,并将其设置为圆形。
      import QtQuick 2.15
      import QtQuick.Shapes 1.15Shape {anchors.fill: parentShapePath {strokeWidth: 2fillColor: "lightblue"strokeColor: "black"Path {startX: width / 2startY: height / 2PathEllipse {x: 0y: 0width: parent.widthheight: parent.height}}}
      }
      
    3. 使用 Rectangle 元素绘制圆角矩形并将圆角半径设置为宽度和高度的一半。
      Rectangle {anchors.fill: parentcolor: "lightblue"border.color: "black"border.width: 2radius: Math.min(width, height) / 2
      }
      

以上是在 Qt Quick 中绘制圆形的主要方法。请注意,有些方法可能更适合特定情况,例如,当您需要使用不同方法时,可以根据应用程序的具体需求和场景选择合适的绘制方法。这里给出一些建议:

  1. 如果您需要动态更新或使用动画的图形,Canvas 是一个不错的选择。它提供了丰富的绘图和动画功能,可以轻松实现自定义的交互和动画效果。
  2. 如果您需要在 QML 代码中声明式地创建图形,并且需要与其他 Qt Quick 组件紧密集成,那么 Shapes 模块可能是一个更好的选择。Shapes 可以很好地利用硬件加速,还可以轻松地与其他 Qt Quick 类型一起使用。
  3. 对于简单的静态圆形,使用 Rectangle 元素创建圆角矩形可能是最简单的方法。这种方法适用于简单的应用场景,例如绘制圆形按钮或图标。但请注意,Rectangle 的圆角半径受限于它的尺寸,因此在某些情况下可能无法绘制完美的圆形。

在实际项目中,您可能需要根据性能、可维护性和代码简洁性等因素权衡这些方法。例如,如果性能是关键因素,那么使用 Shapes 模块可能是一个好选择,因为它利用了硬件加速。如果代码可读性和简洁性是关键,那么使用 Rectangle 或者 Shapes 模块可能更合适。

扩展知识

Canvas 模块介绍

Canvas 是 Qt Quick 的一个元素,提供了一种通过 JavaScript 和 2D 绘图 API 在 QML 中绘制图形的方法。Canvas 允许您创建和操作矢量图形、位图图像和文本。它提供了大量的绘图功能,例如路径、颜色、填充、描边、渐变、模式和变换等。Canvas 还支持动画和交互,使其成为创建自定义动画和可视化的理想选择。

以下是一些 Canvas 的主要特性:

  1. 灵活性Canvas 提供了丰富的绘图功能,使您可以创建各种图形,如线条、矩形、圆形、椭圆、多边形等。此外,您还可以使用渐变、模式和阴影等样式来美化您的图形。
  2. 动画和交互Canvas 支持动画和用户交互。您可以使用 requestAnimationFrame() 函数来实现动画,或者通过 MouseArea 和其他输入处理器来响应用户操作。
  3. 性能:尽管 Canvas 使用 JavaScript 绘图,但它仍然具有相当高的性能。这是因为 Canvas 使用了 Qt Quick Scene Graph,一个高效的渲染框架。此外,通过在 onPaint 处理程序中只更新需要重绘的区域,您可以进一步提高性能。
  4. 与 QML 语法的集成Canvas 可以与其他 QML 元素一起使用,使您能够在 QML 应用程序中轻松地创建和管理图形。例如,您可以使用 anchorslayouts 来定位和调整 Canvas 的大小,或者使用 statestransitions 实现复杂的交互和动画。

以下是一个简单的 Canvas 示例,演示了如何绘制一个带有线条和渐变填充的矩形:

import QtQuick 2.15Canvas {id: canvaswidth: 300height: 200onPaint: {var ctx = getContext('2d');ctx.reset();// 创建线性渐变var gradient = ctx.createLinearGradient(0, 0, width, height);gradient.addColorStop(0, 'red');gradient.addColorStop(1, 'blue');// 绘制带有渐变填充的矩形ctx.fillStyle = gradient;ctx.fillRect(50, 50, 200, 100);// 绘制矩形的描边ctx.strokeStyle = 'black';ctx.lineWidth = 2;ctx.strokeRect(50, 50, 200, 100);}
}

在这个示例中,我们首先创建了一个线性渐变,然后使用 fillRect 函数绘制一个带有渐变填充的矩形。接着,我们使用 strokeRect 函数为矩形添加了一个黑色描边。整个绘制过程都是在 onPaint 事件处理程序中完成的。

这个简单的例子展示了如何在 Qt Quick 的 Canvas 元素中使用 2D 绘图 API 来创建自定义图形。除了矩形之外,您还可以使用 Canvas 中的其他函数来绘制圆形、椭圆、多边形、曲线等更复杂的图形。而且,您可以在 Canvas 中创建动画效果,响应用户交互,以及使用图层和组合模式等高级功能。

Canvas 的主要优势在于其灵活性和可定制性。您可以使用 Canvas 创建几乎任何类型的自定义图形,而且可以轻松地将其与其他 Qt Quick 元素和功能集成。不过,如果您需要简单的静态图形,那么使用 Qt Quick 的其他图形元素(如 RectangleShapes 模块)可能更为简便和高效。

总之,Canvas 是一个强大的绘图工具,适用于在 QML 中创建复杂的自定义图形、动画和可视化。要充分利用 Canvas 的功能,请参阅 Qt 文档以了解更多关于 2D 绘图 API 的信息。

Shapes 模块介绍

Shapes 模块是 Qt Quick 的一个子模块,用于声明式地在 QML 中创建矢量图形。Shapes 提供了一组灵活的、可组合的元素,使您能够创建各种复杂的图形,如线条、曲线、矩形、圆形、椭圆、多边形等。Shapes 模块利用 Qt Quick Scene Graph 和硬件加速,因此具有很高的性能。

Shapes 模块的主要特点如下:

  1. 声明式语法Shapes 模块允许您使用简洁的 QML 语法创建和管理图形。这使得代码易于编写、阅读和维护。例如,您可以使用嵌套的 QML 元素来定义复杂的图形。
  2. 可组合性Shapes 模块提供了一组基本的图形元素,如 ShapePathPathLinePathArcPathCurve 等,您可以将它们组合在一起以创建更复杂的图形。
  3. 样式和外观Shapes 模块支持填充、描边、渐变、模式等各种样式。这使得您可以轻松地创建具有丰富视觉效果的图形。
  4. 性能:由于 Shapes 模块利用了 Qt Quick Scene Graph 和硬件加速,因此具有很高的性能。这使得 Shapes 适合用于创建复杂的可视化和动画。
  5. 与其他 Qt Quick 元素的集成Shapes 模块可以与其他 Qt Quick 元素紧密集成,使您能够在应用程序中轻松地创建和管理图形。例如,您可以使用 anchorslayouts 来定位和调整形状的大小,或者使用 statestransitions 实现复杂的交互和动画。

以下是一个简单的 Shapes 示例,演示了如何创建一个带有描边和填充的圆形:

import QtQuick 2.15
import QtQuick.Shapes 1.15Shape {anchors.fill: parentShapePath {strokeWidth: 2fillColor: "lightblue"strokeColor: "black"startX: width / 2startY: height / 2PathArc {x: width / 2y: height / 2radiusX: width / 2radiusY: height / 2useLargeArc: true}}
}

在这个示例中,我们使用 Shape 元素作为容器,然后在其中添加一个 ShapePath 元素。ShapePath 元素定义了一个路径,该路径使用 PathArc 元素创建了一个圆形。我们还设置了填充颜色、描边颜色和描边宽度以自定义圆形的外观。startXstartY 属性确定路径的起点,而 radiusXradiusY 属性确定圆形的半径。useLargeArc 属性设置为 true 以确保绘制完整的圆形。

Shapes 模块不仅可以创建简单的图形,还可以创建复杂的组合图形。例如,您可以通过组合多个 ShapePath 元素以及各种路径命令(如 PathLinePathArcPathCurve 等)来创建自定义的图形。此外,您还可以利用渐变、模式和阴影等样式来美化图形。

以下是一个使用 Shapes 模块创建的稍复杂的示例,演示了如何绘制一个带有渐变填充和贝塞尔曲线的五角星:

import QtQuick 2.15
import QtQuick.Shapes 1.15Shape {anchors.fill: parentShapePath {fillColor: Qt.linearGradient(0, 0, width, height, "red", "blue")strokeColor: "black"strokeWidth: 2Path.moveTo(width / 2, 0)for (var i = 1; i < 5; ++i) {var angle = i * 2 * Math.PI / 5 - Math.PI / 2;var x = width / 2 + width / 2 * Math.cos(angle);var y = height / 2 + height / 2 * Math.sin(angle);Path.lineTo(x, y);}Path.close();}
}

在这个示例中,我们首先使用 Qt.linearGradient() 函数创建一个从红色到蓝色的线性渐变,然后使用 fillColor 属性将其应用到五角星的填充。接下来,我们使用 Path.moveTo() 函数将路径移动到五角星的第一个顶点,然后使用 for 循环和 Path.lineTo() 函数连接其余顶点。最后,我们使用 Path.close() 函数关闭路径以完成五角星的绘制。

Qt Widgets 中绘制圆形

在 Qt Widgets 应用程序中,您可以使用 QPainter 类在 QWidget 或 QGraphicsScene 上绘制图形,包括圆形。QPainter 提供了丰富的绘图功能,如绘制基本图形、使用渐变和模式、设置描边样式等。

以下是一个在 QWidget 上绘制圆形的简单示例:

  1. 首先,创建一个继承自 QWidget 的自定义类。在此示例中,我们将其命名为 CircleWidget
#include <QWidget>class CircleWidget : public QWidget
{Q_OBJECTpublic:explicit CircleWidget(QWidget *parent = nullptr);protected:void paintEvent(QPaintEvent *event) override;
};
  1. 接下来,在实现文件中,包含必要的头文件并实现 CircleWidget 构造函数和 paintEvent 方法。
#include "circlewidget.h"
#include <QPainter>CircleWidget::CircleWidget(QWidget *parent) : QWidget(parent)
{
}void CircleWidget::paintEvent(QPaintEvent *event)
{QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing, true);// 设置填充颜色和描边颜色painter.setBrush(Qt::lightGray);painter.setPen(Qt::black);// 计算圆形的矩形边界QRectF circleRect(10, 10, width() - 20, height() - 20);// 绘制圆形painter.drawEllipse(circleRect);
}

paintEvent 方法中,我们首先创建一个 QPainter 对象并启用抗锯齿。接着,我们使用 setBrushsetPen 方法设置填充颜色和描边颜色。然后,我们计算圆形的矩形边界,使其适应当前窗口的大小。最后,我们使用 drawEllipse 方法绘制圆形。

  1. 在您的主窗口或其他 QWidget 中使用 CircleWidget
#include "circlewidget.h"// ...auto circleWidget = new CircleWidget(this);
circleWidget->setGeometry(50, 50, 200, 200);

这个示例演示了如何在 Qt Widgets 应用程序中创建一个简单的自定义 QWidget,该 QWidget 在其 paintEvent 方法中绘制一个圆形。您可以根据需要定制此示例,例如更改圆形的颜色、大小或位置,或添加其他图形和效果。

两种方式的比较

Qt Widgets 和 QML 为在 Qt 应用程序中绘制圆形(或其他图形)提供了不同的方法。每种方法都有其优缺点,根据您的需求和应用程序类型,您可以选择最适合您的方法。

  1. Qt Widgets 绘制圆形

    在 Qt Widgets 应用程序中,您可以使用 QPainter 类在 QWidget 上绘制图形。QPainter 提供了丰富的绘图功能,如绘制基本图形、使用渐变和模式、设置描边样式等。

    优点

    • 适用于基于 QWidget 的传统桌面应用程序。
    • QPainter 提供了丰富的绘图功能,包括图形、文本、图像等。
    • QPainter 可用于绘制 QWidget 或 QPixmap,因此可以将图形显示在屏幕上或保存为图像文件。
      缺点
    • 需要编写更多的 C++ 代码,可能导致复杂度和维护难度增加。
    • QPainter 不直接支持硬件加速,因此在某些情况下可能性能较低。
    • 不适用于移动设备或跨平台应用程序,因为 Qt Widgets 主要针对桌面环境。
  2. QML 绘制圆形

    在 QML 应用程序中,您可以使用 Qt Quick Shapes 或 Qt Quick Canvas 模块在 QML 中声明式地创建矢量图形。这些模块利用 Qt Quick Scene Graph 和硬件加速,因此具有很高的性能。

    优点

    • 适用于跨平台和移动设备上的现代应用程序。
    • 使用简洁的 QML 语法,易于编写、阅读和维护。
    • 可以轻松地创建复杂的可视化和动画,与其他 Qt Quick 元素紧密集成。
    • 具有很高的性能,因为利用了 Qt Quick Scene Graph 和硬件加速。
      缺点
    • 不适用于基于 QWidget 的传统桌面应用程序。
    • 需要学习和掌握 QML 语法和 Qt Quick 相关概念。

根据您的需求和应用程序类型,您可以选择最适合您的方法。如果您正在开发一个基于 QWidget 的传统桌面应用程序,那么使用 QPainter 在 QWidget 上绘制图形可能更合适。相反,如果您正在开发一个跨平台或移动设备上的现代应用程序,那么使用 QML 和 Qt Quick Shapes 或 Qt Quick Canvas 模块可能更适合。

相关文章:

【五一创作】QML、Qt Quick /Qt中绘制圆形

目录标题 Qt Quick中绘制圆形扩展知识Canvas 模块介绍Shapes 模块介绍 Qt Widgets 中绘制圆形两种方式的比较 Qt Quick中绘制圆形 有多种方法可以在 Qt Quick 中绘制圆形。以下是一些主要方法&#xff1a; 使用 Canvas 元素 使用 Shapes 模块&#xff1a; a. 使用 PathArc 和…...

【软考数据库】第七章 关系数据库

目录 7.1 关系数据库概述 7.2 关系代数 7.3 元组演算与域演算 7.4 查询优化 7.5 关系数据库设计 7.6 模式分解 前言&#xff1a; 笔记来自《文老师软考数据库》教材精讲&#xff0c;精讲视频在b站&#xff0c;某宝都可以找到&#xff0c;个人感觉通俗易懂。 7.1 关系数据…...

《SpringBoot中间件设计与实战》第1章 什么是中间件

一、写在前面 在互联网应用初期,所有用于支撑系统建设的,框架结构、基础工具、业务逻辑、功能服务包括页面展示等,都是在一个系统中开发完成,最终也只是把系统和数据库部署在同一台服务器上。也就是大多数开发者入门所接触到的 “单体” 系统。 那为什么会有中间件这个玩…...

spring常用的事务传播行为

事务传播行为介绍 Spring中的7个事务传播行为: 事务行为 说明 PROPAGATION_REQUIRED 支持当前事务&#xff0c;假设当前没有事务。就新建一个事务 PROPAGATION_SUPPORTS 支持当前事务&#xff0c;假设当前没有事务&#xff0c;就以非事务方式运行 PROPAGATION_MANDATORY…...

【Python】什么是爬虫,爬虫实例

有s表示加密的访问方式 一、初识爬虫 什么是爬虫 网络爬虫&#xff0c;是一种按照一定规则&#xff0c;自动抓取互联网信息的程序或者脚本。由于互联网数据的多样性和资源的有限性&#xff0c;根据用户需求定向抓取相关网页并分析已成为如今主流的爬取策略爬虫可以做什么 你可以…...

JavaScript学习笔记(三)

文章目录 第7章&#xff1a;迭代器与生成器1. 迭代器模式2. 生成器 第8章&#xff1a;对象、类与面向对象编程1. 理解对象2. 创建对象3. 继承&#xff1a;依靠原型链实现4. 类class 第10章&#xff1a;函数1. 函数定义的方式有&#xff1a;函数声明、函数表达式、箭头函数&…...

文鼎创智能物联云原生容器化平台实践

作者&#xff1a;sekfung&#xff0c;深圳市文鼎创数据科技有限公司研发工程师&#xff0c;负责公司物联网终端平台的开发&#xff0c;稳定性建设&#xff0c;容器化上云工作&#xff0c;擅长使用 GO、Java 开发分布式系统&#xff0c;持续关注分布式&#xff0c;云原生等前沿技…...

深入了解SpringMVC框架,探究其优缺点、作用以及使用方法

一、什么是Spring MVC SpringMVC是一种基于Java的Web框架&#xff0c;与Spring框架紧密结合&#xff0c;用于开发具备WebApp特性的Java应用程序。Spring MVC是Spring Framework的一部分&#xff0c;因此它具有与Spring框架相同的特性和理念。 二、SpringMVC的优缺点 1. 优点…...

Git教程(一)

1、Git概述 1.1 、Git历史 同生活中的许多伟大事件一样&#xff0c;Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上&#xff08;1991&#xff0d;2002年间&#xff09;…...

数据结构篇三:双向循环链表

文章目录 前言双向链表的结构功能的解析及实现1. 双向链表的创建2. 创建头节点&#xff08;初始化&#xff09;3. 创建新结点4. 尾插5. 尾删6. 头插7. 头删8. 查找9. 在pos位置前插入10. 删除pos位置的结点11. 销毁 代码实现1.ListNode.h2. ListNode.c3. test.c 总结 前言 前面…...

day10 TCP是如何实现可靠传输的

TCP最主要的特点 1、TCP是面向连接的运输层协议。&#xff08; 每一条TCP连接只能有两个端点&#xff08;endpoint&#xff09;&#xff0c;每一条TCP连接只能是点对点的&#xff08;一对一&#xff09;&#xff09; 2、TCP提供可靠交付的服务。 3、TCP提供全双工通信。 4…...

Python | 人脸识别系统 — 背景模糊

本博客为人脸识别系统的背景模糊代码解释 人脸识别系统博客汇总&#xff1a;人脸识别系统-博客索引 项目GitHub地址&#xff1a;Su-Face-Recognition: A face recognition for user logining 注意&#xff1a;阅读本博客前请先参考以下博客 工具安装、环境配置&#xff1a;人脸…...

YOLOv5+单目测量物体尺寸(python)

YOLOv5单目测量尺寸&#xff08;python&#xff09; 1. 相关配置2. 测距原理3. 相机标定3.1&#xff1a;标定方法1&#xff08;针对图片&#xff09;3.2&#xff1a;标定方法2&#xff08;针对视频&#xff09; 4. 相机测距4.1 测距添加4.2 细节修改&#xff08;可忽略&#xf…...

C++异常

C异常 提到异常&#xff0c;大家一定不陌生&#xff0c;在学习new关键字的时候就提到了开空间失败会导致抛异常。其实异常在我们生活中的使用是很多的&#xff0c;有些时候程序发生错误以后我们并不希望程序就直接退出&#xff0c;针对不同的情况&#xff0c;我们更希望有不同的…...

Java中的字符串是如何处理的?

Java中的字符串是通过字符串对象来处理的。字符串是一个类&#xff0c;可以创建一个字符串对象&#xff0c;并在该对象上调用一系列方法来操作该字符串。 Java中的字符串是不可变的&#xff0c;这意味着一旦创建了一个字符串对象&#xff0c;就无法修改它的值。任何对字符串对…...

【热门框架】怎样使用Mybatis-Plus制作标准的分页功能

使用 Mybatis-Plus 实现标准的分页功能需要使用 Page 类来进行分页操作。具体步骤如下&#xff1a; 引入 Mybatis-Plus 依赖 在 Maven 项目中&#xff0c;在 pom.xml 文件中引入 Mybatis-Plus 的依赖&#xff1a; <dependency><groupId>com.baomidou</groupId&g…...

Java方法引用:提高代码可读性和可维护性

前言 在Java 8中&#xff0c;可以使用方法引用&#xff08;Method Reference&#xff09;来简化Lambda表达式。方法引用是一种更简洁易懂的语法形式&#xff0c;可以通过指定方法的名称代替Lambda表达式。 本文将介绍方法引用的用法和实现原理&#xff0c;并结合代码案例详细…...

如何使用CSS和JS实现一个响应式的滚动时间轴

随着互联网的发展&#xff0c;网站的界面设计越来越重要。吸引用户的关注、提高用户体验已经成为了许多网站的目标。而在实现各种复杂的界面效果中&#xff0c;CSS与JS的组合无疑是开发者的得力工具。本文将介绍如何使用CSS和JS实现一个响应式的滚动时间轴。 1.需求分析 在开…...

Feign组件的使用及开发中使用方式

在微服务的服务集群中服务与服务之间需要调用暴露的服务.那么就需要在服务内部发送http请求&#xff0c; 我们可以使用较为老的HttpClient实现&#xff0c;也可以使用SpringCloud提供的RestTemplate类调用对应的方法来发送对应的请求。 说明&#xff1a; 现在有两个微服务一个是…...

html css 面试题

1. 如何理解HTML语义化 1&#xff0c;可读性&#xff0c;易读性 2&#xff0c;seo搜索引擎更容易读懂 2&#xff0c;哪些是块元素&#xff0c;哪些是内联元素 1&#xff1a;div&#xff0c;h1&#xff0c;table&#xff0c;ul&#xff0c;p 2&#xff1a;span&#xff0c; img…...

LeetCode_双指针_中等_24.两两交换链表中的节点

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&a…...

【openGauss实战11】性能报告WDR深度解读

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…...

Vue3实现打字机效果

typeit 介绍 typeit是一款轻量级打字机特效插件。该打印机特效可以设置打字速度&#xff0c;是否显示光标&#xff0c;是否换行和延迟时间等属性&#xff0c;它可以打印单行文本和多行文本&#xff0c;并具有可缩放、响应式等特点。官方文档 安装 # npm npm install typeit # …...

maven无法依赖spring-cloud-stater-zipkin如何解决?

当 Maven 无法依赖 spring-cloud-starter-zipkin 时&#xff0c;您可以尝试以下方法解决&#xff1a; 确保拼写正确&#xff1a;请检查项目中的 pom.xml 文件&#xff0c;确保依赖的拼写正确。正确的依赖名称应为&#xff1a;spring-cloud-starter-zipkin。添加 Spring Cloud …...

实战踩坑---MFC---CreateEvent

使用事件CreateEvent注意事项 HANDLECreateEvent( LPSECURITY_ATTRIBUTESlpEventAttributes,// 安全属性 BOOLbManualReset,// 复位方式 BOOLbInitialState,// 初始状态 LPCTSTRlpName // 对象名称 );[1] 参数 lpEventAttributes[输入] 一个指向SECURITY_ATTRIBUTES结构…...

JavaWeb学习------jQuery

JavaWeb学习------jQuery jQuery函数库下载 jQuery函数库下载官网&#xff1a;Download jQuery | jQuery配套资料&#xff0c;免费下载 链接&#xff1a;https://pan.baidu.com/s/1aXBfItEYG4uM53u6PUEMTg 提取码&#xff1a;6c9i 然后下载&#xff1f; 来到官网&#xf…...

米哈游测开岗 【一面总结】

目录 1.黑盒测试与白盒测试的区别 2.测试一个下单功能 3.get与post的区别 4.一次get请求产生几个数据包 5.常用的linux命令 6.进程与线程的区别 7.数据库查询如何去重 8.MySql怎么连接两张表&#xff0c;有什么区别 9.说说索引 10.cookie 和 session 的区别 (会话管…...

微服务 Spring Boot 整合Redis 实现优惠卷秒杀 一人一单

文章目录 一、什么是全局唯一ID ⛅全局唯一ID ⚡Redis实现全局唯一ID 二、环境准备 三、实现秒杀下单 四、库存超卖问题 ⏳问题分析 ⌚ 乐观锁解决库存超卖 ✅Jmeter 测试 五、优惠卷秒杀 实现一人一单 ⛵小结 一、什么是全局唯一ID ⛅全局唯一ID 在分布式系统中,经常需要使用…...

构建OVS网络

构建OVS网络 1. 配置虚拟机环境 &#xff08;1&#xff09;配置虚拟机交换机 1 创建一个名为br-xd的虚拟交换机。 # ovs-vsctl add-br br-xd 2 查询虚拟交换机。 # ovs-vsctl show 5a1cd870-fc31-4820-a7f4-b75c19450582 Bridge br-xd Port br-xd …...

【Python】万能之王 Lambda 函数详解

Python 提供了非常多的库和内置函数。有不同的方法可以执行相同的任务&#xff0c;而在 Python 中&#xff0c;有个万能之王函数&#xff1a;lambda 函数&#xff0c;它可以以不同的方式在任何地方使用。今天云朵君将和大家一起研究下这个万能之王&#xff01; Lambda 函数简介…...

做网站的的价位/排名优化价格

《北航计算机软件技术基础实验报告实验报告4-2——数据库应用系统的开发》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《北航计算机软件技术基础实验报告实验报告4-2——数据库应用系统的开发(10页珍藏版)》请在人人文库网上搜索。1、实验报告实验名称 数据库应用系…...

网站怎么做看起来好看/百度认证怎么认证

转载于:https://www.cnblogs.com/freenovo/archive/2011/06/25/4469872.html...

提高网站百度权重/北京网络网站推广

最近遇到一个面试的问题&#xff0c;面试官问我给我一个Java类你怎么判断它是否是线程安全&#xff1f;有那些角度可以判断它是否安全&#xff1f; 我当时回答&#xff1a; 我说看 临界资源是否被抢夺&#xff0c;是否用到锁 如果这个类在单线程下跑出的结果 和在多线程下跑出…...

电子政务网站建设/指数网站

最近开始学习LDPC&#xff0c;还是刚接触有点生疏&#xff0c;现在主要在看LDPC译码网上有好多LDPC的译码例程&#xff0c;matlab的。我看了大部分都是一个译码函数&#xff0c;有点看不懂。求大家指教问题一&#xff1a;参数f0,f1含义问题二&#xff1a;这个使用的是什么译码方…...

金沙洲网站建设工作室/北京全网营销推广

训练数据是opencv GitHub官方地址的模型,数据是五六年前的,小demo试用 opencv官方xml的老格式数据模型 我也觉得比较老了,毕竟好多年前的了,后面再使用主流的模型,也想自己训练模型数据 main.py from kgOpencv import opencvBase from kgOpencv import utils# 图片存在的文…...

cnnic网站/关键词优化排名的步骤

GP2.10 Review the activities,status,and results of XXX process with highter level management and resolve issues. 中文大意是&#xff1a;高级别的领导检查该过程的活动、状态和结果&#xff0c;并解决问题。 CMM中的要求是高层领导(hight management)&#xff0c;而CMM…...