QT的补充知识

一、文件 QFile

QT提供了QFile类用于对文件进行读写操作,也提供了其他的两个类:文本流(QTextSream)和数据流(QDataStream)

  • 文本流(QTextSream):用于对文本数据的处理,并且是以字为单位进行读/写
  • 数据流(QDataStream):用于对二进制数据的处理,并且是以字节为单位进行读/写

QFlie类:

1、对文件进行操作流程:
如何找到文件?--------使用文件对话框(QFileDialog),也可以直接使用QFile类去找到文件
2、打开文件

bool open(FILE *fh, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle)
参数:FILE*fh文件指针
参数:QIODevice::OpenMode mode  //打开文件模式
参数:QFileDevice::FileHandleFlags handleFlags = DontCloseHandle //文件处理标志
---------------------------------------------------------------
bool open(int fd, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle)
参数:int fd :文件ID
参数:QIODevice::OpenMode mode  //打开文件模式
参数:QFileDevice::FileHandleFlags handleFlags = DontCloseHandle //文件处理标志
---------------------------------------------------------------
virtual bool open(QIODevice::OpenMode mode) override
参数:QIODevice::OpenMode mode  //打开文件模式

3、读/写

  • 读取:
virtual qint64 readData(char *data, qint64 len) override
返回值:qint64=long long int
参数:char *data里读取数据
参数:qint64  读取数据的长度
-----------------------------
//按行读取
virtual qint64 readLineData(char *data, qint64 maxlen) override
返回值:qint64=long long int
参数:char *data里读取数据
参数:qint64  读取数据的最大长度
-----------------------------
QByteArray read(qint64 maxSize)
返回值:QByteArray:字节数组  //文本数据、网络相关的数据等等
参数:qint64 maxSize;最大能读取数据长度
-----------------------------
//读取文件里的所有数据
QByteArray readAll()
返回值:QByteArray:字节数组  //文本数据、网络相关的数据等等
-----------------------------
//按行读取
QByteArray readLine(qint64 maxSize = 0)
返回值:QByteArray:字节数组  //文本数据、网络相关的数据等等
参数:qint64 maxSize = 0  //读取一行数据
  • 写:
virtual qint64 writeData(const char *data, qint64 len) override
返回值:qint64,返回写入的字节个数
参数const char *data:待写入的字符串
参数qint64 len:待写入的字符串的长度
-----------------------------
qint64 write(const char *data, qint64 maxSize)
返回值:qint64,返回写入的字节个数
参数const char *data:待写入的字符串
参数qint64 len:待写入的字符串最大的长度
-----------------------------
qint64 write(const char *data)
返回值:qint64,返回写入的字节个数
参数const char *data:待写入的字符串
-----------------------------
qint64 write(const QByteArray &byteArray)
返回值:qint64,返回写入的字节个数
参数const QByteArray &byteArray:待写入的字节数组

4、关闭文件

virtual void close() override

QFileInfo类:

用于查看文件的基本信息的类

QDir absoluteDir() const  //获取文件的绝对目录
QString absoluteFilePath() const  //获取文件的绝对路径(包含文件)
QString absolutePath() const   //获取文件的绝对路径(不包含文件)
QString baseName() const  //  获取文件名称(不包含后缀)
QDateTime birthTime() const   //获取文件的创建时间
QString completeSuffix() const  //获取文件的后缀
QDir dir() const          //获取文件的目录
bool exists() const   //判断文件是否存在,true:存在  false:不存在
QString fileName() const //获取文件名(包好后缀)
QString filePath() const //获取文件的相对路径
QDateTime fileTime(QFile::FileTime time) const  //返回文件被修改的时间
bool isHidden() const  //判断文件是否被隐藏 true:隐藏  false:不隐藏
bool isReadable() const  //判断文件是否是只读   ture:只读  false:不只读
bool permission(QFile::Permissions permissions) const  //设置文件的许可证(权限)true:设置成功  false:设置失败
QDateTime lastRead() const  //获取最后一次读取文件的时间

QDir类:

用于管理目录

QString absoluteFilePath(const QString &fileName) const  //获取文件的路径
QString absolutePath() const  
QString canonicalPath() const
bool cd(const QString &dirName)  //切换文件路径
bool cdUp()  //切换到上一个路径:cd ../
bool mkdir(const QString &dirName) const  //创建目录或文件
bool mkpath(const QString &dirPath) const  //创建路径
bool rename(const QString &oldName, const QString &newName) //更新文件名称
bool rmdir(const QString &dirName) const   //移除目录,注意:目录或路径下所有文件都删掉(慎用)
bool rmpath(const QString &dirPath) const  //移除路径
QDir current()
QString currentPath()

二、事件及图形

  • 事件类型:键盘事件、鼠标事件、定时器事件、图形事件等等
  • 事件:事件的产生--------事件经过----------事件的结果,QT里提供了事件

QT事件的处理流程:

  • 事件的产生:
    • 有用户实现或者QT内部实现
    • 用户实现:键盘按下、释放,鼠标按下、释放等等
    • QT内部实现:定时器事件,图形事件等等
  • 事件的经过:
    • 事件的监听和派送
    • 事件的监听:应用程序(QApplication)调用.exec()监听产生的事件(事件循环系统)
    • 事件的派送:当应用程序(QApplication)监听到事件之后,就将该事件派送出去,派送给QEvent类。QEvent类收到QApplication派送的事件之后,就将事件分发给具体的事件处理对象
  • 事件的处理:
    • 收到QEvent类分发的事件,当前对象(基本的控件)接收该事件并进行处理
    • 事件处理函数(对事件进行处理):
      • mousePressEvent(QMouseEvent *event);//鼠标按下事件进行处理
      • mouseReleaseEvent(QMouseEvent *event);//鼠标释放事件进行处理
      • mouseMoveEvent(QMouseEvent *event) ;//鼠标移动事件进行处理

1、QT里提供的事件:

virtual void actionEvent(QActionEvent *event)  //当窗口状态行为被改变时,会执行该事件
virtual void changeEvent(QEvent *event)
virtual void closeEvent(QCloseEvent *event)  //当窗口被关闭时会执行该事件,
virtual void contextMenuEvent(QContextMenuEvent *event)
void create(WId window = 0, bool initializeWindow = true, bool destroyOldWindow = true)
void destroy(bool destroyWindow = true, bool destroySubWindows = true)
virtual void dragEnterEvent(QDragEnterEvent *event)
virtual void dragLeaveEvent(QDragLeaveEvent *event)
virtual void dragMoveEvent(QDragMoveEvent *event)
virtual void dropEvent(QDropEvent *event)
virtual void enterEvent(QEvent *event)
virtual void focusInEvent(QFocusEvent *event)
bool focusNextChild()
virtual bool focusNextPrevChild(bool next)
virtual void focusOutEvent(QFocusEvent *event)
bool focusPreviousChild()
virtual void hideEvent(QHideEvent *event)  //当窗口被隐藏时会执行该事件
virtual void inputMethodEvent(QInputMethodEvent *event)
virtual void keyPressEvent(QKeyEvent *event)  //当键盘按下的时候,会执行该事件
virtual void keyReleaseEvent(QKeyEvent *event)  //当键盘释放的时候,会执行该事件
virtual void leaveEvent(QEvent *event)
virtual void mouseDoubleClickEvent(QMouseEvent *event)
virtual void mouseMoveEvent(QMouseEvent *event)
virtual void mousePressEvent(QMouseEvent *event)
virtual void mouseReleaseEvent(QMouseEvent *event)
virtual void moveEvent(QMoveEvent *event)
virtual bool nativeEvent(const QByteArray &eventType, void *message, long *result)
virtual void paintEvent(QPaintEvent *event)
virtual void resizeEvent(QResizeEvent *event)
virtual void showEvent(QShowEvent *event)
virtual void tabletEvent(QTabletEvent *event)
virtual void wheelEvent(QWheelEvent *event)

2、事件过滤器:eventFilter

bool QObject::eventFilter(QObject *watched, QEvent *event)  //	QObject类中的时间过滤器
返回值:bool类型    当事件过滤成功,则返回true, 否则,返回false
参数1:QObject *watched       子窗口部件对象
参数2:QEvent *event       在子窗口部件对象上产生的事件的类型
-------------------------------------------------------------------
//使用:首先需要向指定的子窗口部件注册事件过滤器,之后即可使用事件过滤器
//注册事件过滤器:	
void installEventFilter(QObject *filterObj)  //注册事件过滤器

3、事件分发器:event

事件分发器原型:bool QObject::event(QEvent *e)  //事件分发器返回值:bool   分发事件的返回值参数:QEvent *e  //分发事件的类型

4、定时器

QT里定时器的实现两种方式:(1)实例化QTimer类(2)重写定时器事件void QObject::timerEvent(QTimerEvent *event)  //定时器事件

(1)实例化QTimer类

void start(std::chrono::milliseconds msec)  //开启定时器
void start(int msec)  //开启定时器并设置定时时间,单位:毫秒
void start()   //开启定时器
void stop()   //停止定时器
---------------------------------------------------------
信号:
void timeout()   //当定时器开启之后,到达设置的时间,触发该信号

(2)重写定时器事件

 void QObject::timerEvent(QTimerEvent *event)  //定时器事件int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer)  //开启定时器
int startTimer(std::chrono::milliseconds time, Qt::TimerType timerType = Qt::CoarseTimer) //开启定时器
返回值:int    返回定时器的ID号

5、绘画(绘图)事件

virtual void paintEvent(QPaintEvent *event)  //绘画事件

当应用程序界面刷新一次,就会自动调用paintEvent事件处理函数
调用update()函数,也可以实现调用paintEvent事件处理函数

QPainter类:
一支不带彩色的画笔,默认的颜色为黑色

void drawArc(const QRectF &rectangle, int startAngle, int spanAngle)
void drawArc(const QRect &rectangle, int startAngle, int spanAngle)
void drawArc(int x, int y, int width, int height, int startAngle, int spanAngle)
void drawChord(const QRectF &rectangle, int startAngle, int spanAngle)
void drawChord(int x, int y, int width, int height, int startAngle, int spanAngle)
void drawChord(const QRect &rectangle, int startAngle, int spanAngle)
void drawConvexPolygon(const QPointF *points, int pointCount)
void drawConvexPolygon(const QPolygonF &polygon)
void drawConvexPolygon(const QPoint *points, int pointCount)
void drawConvexPolygon(const QPolygon &polygon)
void drawEllipse(const QRectF &rectangle)
void drawEllipse(const QRect &rectangle)
void drawEllipse(int x, int y, int width, int height)
void drawEllipse(const QPointF &center, qreal rx, qreal ry)
void drawEllipse(const QPoint &center, int rx, int ry)
void drawGlyphRun(const QPointF &position, const QGlyphRun &glyphs)
void drawImage(const QRectF &target, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
void drawImage(const QRect &target, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
void drawImage(const QPointF &point, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = ...)
void drawImage(const QPoint &point, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = ...)
void drawImage(const QRectF &rectangle, const QImage &image)
void drawImage(const QRect &rectangle, const QImage &image)
void drawImage(const QPointF &point, const QImage &image)
void drawImage(const QPoint &point, const QImage &image)
void drawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor)
void drawLine(const QLineF &line)
void drawLine(const QLine &line)
void drawLine(int x1, int y1, int x2, int y2)
void drawLine(const QPoint &p1, const QPoint &p2)
void drawLine(const QPointF &p1, const QPointF &p2)
void drawLines(const QLineF *lines, int lineCount)
void drawLines(const QVector<QLineF> &lines)
void drawLines(const QPointF *pointPairs, int lineCount)
void drawLines(const QVector<QPointF> &pointPairs)
void drawLines(const QLine *lines, int lineCount)
void drawLines(const QVector<QLine> &lines)
void drawLines(const QPoint *pointPairs, int lineCount)
void drawLines(const QVector<QPoint> &pointPairs)
void drawPath(const QPainterPath &path)
void drawPicture(const QPointF &point, const QPicture &picture)
void drawPicture(int x, int y, const QPicture &picture)
void drawPicture(const QPoint &point, const QPicture &picture)
void drawPie(const QRectF &rectangle, int startAngle, int spanAngle)
void drawPie(int x, int y, int width, int height, int startAngle, int spanAngle)
void drawPie(const QRect &rectangle, int startAngle, int spanAngle)
void drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source)
void drawPixmap(const QRect &target, const QPixmap &pixmap, const QRect &source)
void drawPixmap(int x, int y, int w, int h, const QPixmap &pixmap, int sx, int sy, int sw, int sh)
void drawPixmap(int x, int y, const QPixmap &pixmap, int sx, int sy, int sw, int sh)
void drawPixmap(const QPointF &point, const QPixmap &pixmap, const QRectF &source)
void drawPixmap(const QPoint &point, const QPixmap &pixmap, const QRect &source)
void drawPixmap(const QPointF &point, const QPixmap &pixmap)
void drawPixmap(const QPoint &point, const QPixmap &pixmap)
void drawPixmap(int x, int y, const QPixmap &pixmap)
void drawPixmap(const QRect &rectangle, const QPixmap &pixmap)
void drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap)
void drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = ...)
void drawPoint(const QPointF &position)
void drawPoint(const QPoint &position)
void drawPoint(int x, int y)
void drawPoints(const QPointF *points, int pointCount)
void drawPoints(const QPolygonF &points)
void drawPoints(const QPoint *points, int pointCount)
void drawPoints(const QPolygon &points)
void drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
void drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill)
void drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
void drawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill)
void drawPolyline(const QPointF *points, int pointCount)
void drawPolyline(const QPolygonF &points)
void drawPolyline(const QPoint *points, int pointCount)
void drawPolyline(const QPolygon &points)
void drawRect(const QRectF &rectangle)
void drawRect(int x, int y, int width, int height)
void drawRect(const QRect &rectangle)
void drawRects(const QRectF *rectangles, int rectCount)
void drawRects(const QVector<QRectF> &rectangles)
void drawRects(const QRect *rectangles, int rectCount)
void drawRects(const QVector<QRect> &rectangles)
void drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
void drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = ...)
void drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = ...)
void drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText)
void drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText)
void drawStaticText(int left, int top, const QStaticText &staticText)
void drawText(const QPointF &position, const QString &text)
void drawText(const QPoint &position, const QString &text)
void drawText(int x, int y, const QString &text)
void drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = nullptr)
void drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect = nullptr)
void drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect = nullptr)
void drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())
void drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &position = QPointF())
void drawTiledPixmap(int x, int y, int width, int height, const QPixmap &pixmap, int sx = 0, int sy = 0)
void drawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &position = ...)

QPen类(画笔类):

画笔类,可以设置画笔颜色、画笔宽度等等

//1、可以设置画笔的颜色,线宽等信息
QPen  pen;
pen.setColor(QColor(255,0,0));//设置画笔的颜色
//设置线宽
pen.setWidth(6);
//设置画笔的样式
pen.setStyle(Qt::DotLine);
p.setPen(pen);

QBrush类(画刷类):

//2、可以填充颜色等信息
QBrush brush;//填充类
//设置填充的颜色
brush.setColor(QColor(255,0,0));
//设置填充样式
brush.setStyle(Qt::SolidPattern);
p.setBrush(brush);
p.drawRect(50,50,50,50);
p.drawLine(50,50,80,80);

三、多线程

为什么QT引入多线程概念?QT搭建界面的工具,使用多线程可以解决界面卡顿,响应不及时的情况
QT中新建的界面,实质上是一个主线程
如何实现(搭建)线程:

  • (1)继承自QThread类:新建一个类继承自QThread类,启动新建类运行
  • (2)moveToThread方法:新建一个类将该类放到线程中运行

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

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

相关文章

Redis未授权访问漏洞复现

Redis 简单使用 Redis 未设置密码&#xff0c;客户端工具可以直接链接。 Redis 是非关系型数据库系统&#xff0c;没有库表列的逻辑结构&#xff0c;仅仅以键值对的方式存储数据。 先启动容器 Redis 未设置密码&#xff0c;客户端工具可以直接链接 https://github.com/xk11z/…

Redis的数据类型到底有什么奥秘

这里我们先只介绍五种常用的数据类型~ 目录 1、string 2、hash 3、list 4、set 5、zset 6、示例 1、string 数据类型&#xff1a;string内部编码&#xff1a;raw、int、embstr 说明&#xff1a; raw是最基本的字符串--底层是一个char数组&#xff08;此处的char是一个字…

【Element】Vue+Element表单校验详解

Element表单校验 作为一个后端开发&#xff0c;总结一下实际工作中表单校验的场景和用法。 Element官网&#xff1a;https://element.eleme.cn/#/zh-CN/component/form 代码地址&#xff1a;https://gitee.com/kkmy/kw-microservices/tree/master/kw-ui/kwsphere 常用表单校验场…

Java 中数据结构HashSet的用法

Java HashSet HashSet 基于 HashMap 来实现的&#xff0c;是一个不允许有重复元素的集合。 HashSet 允许有 null 值。 HashSet 是无序的&#xff0c;即不会记录插入的顺序。 HashSet 不是线程安全的&#xff0c; 如果多个线程尝试同时修改 HashSet&#xff0c;则最终结果是…

MySql学习笔记02——MySql的简单介绍

MySQL 常用命令 注意在mysql中使用的命令需要用英文分号结尾&#xff08;启动/关闭mysql服务不需要带分号&#xff09; net start mysql 启动mysql服务&#xff08;需要管理员启动cmd&#xff09; net stop mysql关闭mysql服务&#xff08;需要管理员启动cmd&#xff09; m…

深度学习环境搭建笔记(二):mmdetection-CPU安装和训练

文章目录 第一步&#xff1a;安装anaconda第二步&#xff1a;安装虚拟环境第三步&#xff1a;安装torch和torchvision第四步: 安装mmcv-full第五步: 安装mmdetection第六步&#xff1a;测试环境第七步&#xff1a;训练-目标检测7.1 准备数据集7.2 检查数据集7.3 训练网络 第一步…

计算机毕业设计 社区买菜系统 Vue+SpringBoot+MySQL

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;Java全栈软件工程师一枚&#xff0c;来自浙江宁波&#xff0c;负责开发管理公司OA项目&#xff0c;专注软件前后端开发、系统定制、远程技术指导。CSDN学院、蓝桥云课认证讲师&#xff0c;全栈领域优质创作者。 项目内容…

electron win系统通知修改通知标题栏

标题栏的 electron.app.Electron 如何修改&#xff1a; var package require("../package.json"); app.setAppUserModelId(package.description); app.setAppUserModelId 在主进程的app这里修改

R语言Meta分析核心技术

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;最早出现于“循证医学”&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面。…

使用ICMP协议来判断UDP端口的存活状态

我们使用了原始套接字&#xff08;socket.SOCK_RAW&#xff09;来发送和接收ICMP消息&#xff0c;也就是通过模拟ICMP协议来进行UDP端口的探测。我们构造了一个简单的ICMP数据包&#xff0c;并将其发送到目标主机的特定端口。然后&#xff0c;我们等待接收目标主机返回的ICMP消…

SpringBoot2.0(Spring读取配置文件常用方法,打war包在Tomcat中启动)

目录 一&#xff0c;SpringBoot中读取配置文件的常用方法1.1&#xff0c;使用Value读取1.2&#xff0c;使用ConfigurationProperties1.3&#xff0c;使用Environment1.4&#xff0c;自定义配置文件读取 二&#xff0c;SpringBoot部署war项目到tomcat9和启动原理 一&#xff0c;…

详解4种类型的爬虫技术

聚焦网络爬虫是“面向特定主题需求”的一种爬虫程序&#xff0c;而通用网络爬虫则是捜索引擎抓取系统&#xff08;Baidu、Google、Yahoo等&#xff09;的重要组成部分&#xff0c;主要目的是将互联网上的网页下载到本地&#xff0c;形成一个互联网内容的镜像备份。 增量抓取意…

fastjson2 打开 AutoType

1. 功能简介 FASTJSON支持AutoType功能&#xff0c;这个功能在序列化的JSON字符串中带上类型信息&#xff0c;在反序列化时&#xff0c;不需要传入类型&#xff0c;实现自动类型识别。 2. AutoType安全机制介绍 必须显式打开才能使用。和fastjson 1.x不一样&#xff0c;fast…

HTML <map> 标签的使用

map标签的用途&#xff1a;是与img标签绑定使用的&#xff0c;常被用来赋予给客户端图像某处区域特殊的含义&#xff0c;点击该区域可跳转到新的文档。 编写格式&#xff1a; <img src"图片" border"0" usemap"#planetmap" alt"Planets…

【vue】vuex持久化插件vuex-persistedstate:

文章目录 一、说明&#xff1a;二、手动利用HTML5的本地存储&#xff1a;三、利用vuex-persistedstate插件【1】安装【2】配置使用【3】存储sessionStorage的情况【4】存储cookie的情况【5】默认持久化所有state&#xff0c;指定需要持久化的state,配置如下【6】vuex引用多个插…

ElementUI浅尝辄止23:Loading 加载

Loading加载组件&#xff1a;加载数据时显示动效。 常见于加载数据量大的业务操作&#xff0c;附带动态效果。 1.如何使用&#xff1f;区域加载 在表格等容器中加载数据时显示。 /*Element 提供了两种调用 Loading 的方法&#xff1a;指令和服务。对于自定义指令v-loading&am…

公园气象站——观测实时气象,保障游客安全

公园气象站是一种用于监测和记录气象数据的系统。在公园内设置公园气象站可以帮助我们了解公园内的气候状况&#xff0c;包括空气湿度、空气温度、风速和风向等参数。这些数据是公园管理、游客安全和环境保护等方面重要的辅助依据。 负氧离子监测&#xff1a;负氧离子是指空气…

数学建模--非多项式拟合法的Python实现

目录 1.算法异同区别 2.算法核心步骤 3.算法核心代码 4.算法效果展示 1.算法异同区别 #*************************************************************************************************************# 方法区别探究 1.对于多项式拟合你需要大致知道这些点的分布&#xf…

Dubbo 接口测试原理及多种方法实践总结

1、什么是 Dubbo&#xff1f; Dubbo 最开始是应用于淘宝网&#xff0c;由阿里巴巴开源的一款优秀的高性能服务框架&#xff0c;由 Java 开发&#xff0c;后来贡献给了 Apache 开源基金会组织。 下面以官网的一个说明来了解一下架构的演变过程&#xff0c;从而了解 Dubbo 的诞…

如何使用SQL系列 之 如何在SQL中使用WHERE条件语句

引言 在结构化查询语言 (SQL)语句中&#xff0c;WHERE子句限制了给定操作会影响哪些行。它们通过定义特定的条件(称为搜索条件)来实现这一点&#xff0c;每一行都必须满足这些条件才能受到操作的影响。 本指南将介绍WHERE子句中使用的通用语法。它还将概述如何在单个WHERE子句…