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

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方法:新建一个类将该类放到线程中运行

相关文章:

QT的补充知识

一、文件 QFile QT提供了QFile类用于对文件进行读写操作&#xff0c;也提供了其他的两个类&#xff1a;文本流&#xff08;QTextSream&#xff09;和数据流&#xff08;QDataStream&#xff09; 文本流&#xff08;QTextSream&#xff09;&#xff1a;用于对文本数据的处理&am…...

【力扣周赛】第 360 场周赛(贪心 ⭐树上倍增)

文章目录 竞赛链接Q1&#xff1a;8015. 距离原点最远的点&#xff08;贪心&#xff09;Q2&#xff1a;8022. 找出美丽数组的最小和&#xff08;贪心&#xff09;Q3&#xff1a;2835. 使子序列的和等于目标的最少操作次数&#xff08;贪心&#xff09;思路竞赛时丑陋代码&#x…...

企业如何防止数据外泄——【部署智能透明加密防泄密系统】

为防止公司文件泄密&#xff0c;可以采取以下措施&#xff1a; www.drhchina.com 分部门部署&#xff1a;根据不同的部门需要&#xff0c;为不同部门用户部署灵活的加密方案。例如&#xff0c;对研发部、销售部、运营部的机密资料进行强制性自动加密&#xff0c;对普通部门的文…...

【聚类】DBCAN聚类

OPTICS是基于DBSCAN改进的一种密度聚类算法&#xff0c;对参数不敏感。当需要用到基于密度的聚类算法时&#xff0c;可以作为DBSCAN的一种替代的优化方案&#xff0c;以实现更优的效果。 原理 基于密度的聚类算法&#xff08;1&#xff09;——DBSCAN详解_dbscan聚类_root-ca…...

通过安装cpolar内网穿透在Kali上实现SSH远程连接的步骤指南

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过cpolar 内网穿透软件实现ssh 远程连接kali! 1. 启动kali ssh 服务 默认新安装的kali系统会关闭ssh 连接服务,我们通…...

UDP和TCP协议报文格式详解

在初识网络原理(初识网络原理_蜡笔小心眼子&#xff01;的博客-CSDN博客)这篇博客中,我们简单的了解了一下TCP/IP五层网络模型,这篇博客将详细的学习一下五层网络模型中传输层的两个著名协议:UDP和TCP 目录 一, 传输层的作用 二, UDP 1,UDP协议的特点 2,UDP报文格式 三, TC…...

STM32+UART串口+DMA收发

目录 1、cubemax端配置 1.1 初始化配置 1.2 GPIO配置 1.3 UART配置 1.3.1 串口基础配置 1.3.2 DMA配置 2、keil端代码设计 2.1 初始化配置 2.2 DMA接收初始化配置 2.3 DMA发送配置 2.4 接收回调函数设置 2.5 回调函数内容代码编写 2.5.1 接收回调函数 2.5.2 发送回调…...

安全基础 --- js的闭包和this属性

js闭包 简介 一个函数和对其周围状态&#xff08;lexical exviroment&#xff0c;词法环境&#xff09;的引用捆绑在一起&#xff08;或者说函数被引用包围&#xff09;&#xff0c;这样的组合就是闭包&#xff08;closure&#xff09; 在js中&#xff0c;通俗来讲&#xff0c…...

【C语言每日一题】08. 字符三角形

题目来源&#xff1a;http://noi.openjudge.cn/ch0101/08 08 字符三角形 总时间限制: 1000ms 内存限制: 65536kB 问题描述 给定一个字符&#xff0c;用它构造一个底边长5个字符&#xff0c;高3个字符的等腰字符三角形。 输入 输入只有一行&#xff0c; 包含一个字符。 输出…...

如何打war包,并用war包更新服务器版本

1.打包&#xff0c;我用的maven打包 先执行clean将已经生成的包清除掉 清除完&#xff0c;点package进行打包 控制台输出success&#xff0c;证明打包成功了 文件名.war的后缀就是生成的war包 2.将war包上传致服务器 一般会在war包加上日期版本上传至服务器 解压上传的war…...

uniApp webview 中调用底座蓝牙打印功能异常

背景: 使用uniApp, 安卓底座 webView 方式开发; 调用方式采用H5 向 底座发送消息, 底座判断消息类型, 然后连接打印机进行打印; 内容通过指令集方式传递给打印机; 过程当中发现部分标签可以正常打印, 但又有部分不行,打印机没反应, 也没有报错; 原因分析: 对比标签内容…...

Mac下安装Jmeter及其配置

一、安装JDK环境 安装方式&#xff1a;mac下配置JDK环境_只看不学的博客-CSDN博客 如果已安装JDK环境即可忽略该步骤&#xff0c;检查方式&#xff0c;在终端输入java -version,如果出现了java版本&#xff0c;即代表已经配置过JDK环境了&#xff0c;如下图所示&#xff1a; …...

js+html实现打字游戏v1

实现逻辑&#xff1a;设置定时器每秒刷新一次&#xff0c;定时器刷新多少次执行一次生成单词操作来决定单词的生成速度&#xff0c;例如初始单词生成速度为1&#xff0c;那么定时器刷新5次才生成一次单词&#xff0c;每个单词用span来装&#xff0c;每组10个单词放到div里。监听…...

Java on VS Code 8月更新|反编译器用户体验优化、新 Maven 项目工作流、代码高亮稳定性提升

作者&#xff1a;Nick Zhu 排版&#xff1a;Alan Wang 大家好&#xff0c;欢迎来到 Visual Studio Code for Java 的 8 月更新&#xff01;在这篇博客中&#xff0c;我们将为您提供有关反编译器支持的更多改进。此外&#xff0c;我们将展示如何创建没有原型的 Maven 项目以及一…...

划分Vlan时需要注意的问题

网络部分2019年才开始学习的&#xff0c;在学习过程中配置了整个公司的网络&#xff0c;心里才有了一点把握&#xff0c;算是掌握了最基本的。 不会的就上网学&#xff0c;反正网络上什么知识都有&#xff0c;只要有需求就对照着学&#xff0c;很长时间没有学习网络了&#xff…...

【广州华锐互动】利用AR远程指导系统进行机械故障排查,实现远程虚拟信息互动

随着工业自动化和智能化的不断发展&#xff0c;机械故障诊断已经成为了工业生产中的重要环节。为了提高故障诊断的准确性和效率&#xff0c;近年来&#xff0c;AR&#xff08;增强现实&#xff09;远程协助技术逐渐应用于机械故障诊断领域。本文将探讨AR远程协助技术在机械故障…...

Spring工具类--CollectionUtils的使用

原文网址&#xff1a;Spring工具类--CollectionUtils的使用_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Spring的CollectionUtils的使用。 CollectionUtils工具类的作用&#xff1a;操作Collection&#xff0c;比如&#xff1a;List、Set。 判断 方法作用static boolean is…...

Node.js 应用的御用品: Node.js 错误处理系统

开发中&#xff0c;有些开发者会积极寻求处理错误&#xff0c;力求减少开发时间&#xff0c;但也有些人完全忽略了错误的存在。正确处理错误不仅意味着能够轻松发现和纠正错误&#xff0c;而且还意味着能够为大型应用程序开发出稳健的代码库。 特别是对于 Node.js 开发人员&am…...

K210-CanMV IDE开发软件

K210-CanMV IDE开发软件 界面功能简介连接设备临时运行开机运行程序 界面功能简介 区域①菜单栏&#xff1a;操作文件&#xff0c;使用工具等。 区域②快捷按钮&#xff1a;区域①中的文件和编辑中部分功能的快捷方式。 区域③连接设备&#xff1a;连接设备和程序控制按钮。 …...

0301yarnmapredude入门-hadoop-大数据学习

文章目录 1 MapReduce概述2 YARN2.1 yarn概述2.2 yarn与MapReduce关系2.3 yarn架构2.4 辅助角色 3 MapReduce & YARN部署3.1 集群规划3.2 配置文件3.3 分发配置文件 4 体验4.1 集群启动命令介绍4.2 提交MapReduce任务到YARN执行 结语 1 MapReduce概述 分布式计算是一种计算…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...