【Qt之QStandardItemModel】使用,tableview、listview、treeview设置模型

1. 引入

QStandardItemModel类提供了一个通用的模型,用于存储自定义数据。
以下是其用法:该类属于gui模块,因此在.pro中,需添加QT += gui,如果已存在,则无需重复添加。
首先,引入头文件:

#include <QStandardItemModel> 

2. 描述

以下介绍很重要,可以慢下心来阅读。
QStandardItemModel类提供了一个用于存储自定义数据的通用模型。
QStandardItemModel可以用作标准Qt数据类型的存储库。它是模型/视图类之一,是Qt模型/视图框架的一部分。
QStandardItemModel提供了一种经典的基于项目的方法来处理模型。QStandardItemModel中的项由QStandardItem提供。
QStandardItemModel实现了QAbstractItemModel接口,这意味着该模型可以用于在任何支持该接口的视图中提供数据(例如QListView, QTableViewQTreeView,以及您自己的自定义视图)。为了提高性能和灵活性,您可能希望创建QAbstractItemModel的子类,以便为不同类型的数据存储库提供支持。例如,QDirModel为底层文件系统提供了一个模型接口。
当您需要一个列表或树时,您通常会创建一个空的QStandardItemModel,并使用appendRow()向模型中添加项目,并使用item()访问项目。如果您的模型表示一个表,您通常将表的尺寸传递给QStandardItemModel构造函数,并使用setItem()将项目定位到表中。您还可以使用setRowCount()setColumnCount()来更改模型的尺寸。要插入项,使用insertRow()insertColumn(),要删除项,使用removeRow()removeColumn()
您可以使用setHorizontalHeaderLabels()setVerticalHeaderLabels()设置模型的标题标签。
您可以使用findItems()在模型中搜索项目,并通过调用sort()对模型进行排序。
调用clear()从模型中删除所有项。
QStandardItemModel创建表的一个示例:

  QStandardItemModel model(4, 4);for (int row = 0; row < 4; ++row) {for (int column = 0; column < 4; ++column) {QStandardItem *item = new QStandardItem(QString("row %0, column %1").arg(row).arg(column));model.setItem(row, column, item);}}

QStandardItemModel创建树的一个例子:

  QStandardItemModel model;QStandardItem *parentItem = model.invisibleRootItem();for (int i = 0; i < 4; ++i) {QStandardItem *item = new QStandardItem(QString("item %0").arg(i));parentItem->appendRow(item);parentItem = item;}

在视图上设置模型之后,您通常希望对用户操作做出反应,例如单击项。由于QAbstractItemView提供了基于QModelIndex的信号和函数,您需要一种方法来获得与给定的QModelIndex相对应的QStandardItem,反之亦然。itemFromIndex()indexFromItem()提供了这种映射。itemFromIndex()的典型用法包括获取视图中当前索引处的项,以及获取与QAbstractItemView信号携带的索引对应的项,例如QAbstractItemView::clicked()。首先,你将视图的信号连接到类中的槽:

  QTreeView *treeView = new QTreeView(this);treeView->setModel(myStandardItemModel);connect(treeView, SIGNAL(clicked(QModelIndex)),this, SLOT(clicked(QModelIndex)));

当你收到信号时,你调用itemFromIndex()在给定的模型索引上获得一个指向项目的指针:

  void MyWidget::clicked(const QModelIndex &index){QStandardItem *item = myStandardItemModel->itemFromIndex(index);// Do stuff with the item ...}

相反,当您想调用以索引作为参数的模型/视图函数时,您必须获得项目的QModelIndex。您可以通过使用模型的indexFromItem()函数或调用QStandardItem::index()来获得索引:

  treeView->scrollTo(item->index());

当然,您不需要使用基于项目的方法;在使用模型时,您可以完全依赖于QAbstractItemModel接口,或者使用两者的适当组合。

常用方法

  1. QStandardItemModel::QStandardItemModel(QObject *parent = Q_NULLPTR)
    构造一个带有给定父对象的新项模型。

  2. QStandardItemModel::QStandardItemModel(int rows, int columns, QObject *parent = Q_NULLPTR)
    构造一个初始具有rows行和columns列的新项模型,并给它指定一个父对象。

  3. QStandardItemModel::~QStandardItemModel()
    销毁模型。模型会销毁所有的项。

  4. voidStandardItemModel::appendColumn(const QList<QStandardItem *> &items)
    追加一个包含项的列。如果需要,行数将增加到items的大小。

  5. void QStandardItemModel::appendRow(const QList<QStandardItem *> &items)
    追加一个包含项的行。如果需要,列数将增加到items的大小。

  6. void QStandardItemModel::appendRow(QStandardItem *item)
    这是一个重载函数。
    当构建只有一列的列表或树时,此函数提供了一种方便的方法来追加一个新的项。

  7. void QStandardItemModel::clear()
    从模型中移除所有的项(包括标题项),并将行数和列数设为0。

  8. [virtual] int QStandardItemModel::columnCount(const QModelIndex &parent = QModelIndex()) const
    从QAbstractItemModel::columnCount()重新实现。

  9. [virtual] QVariant QStandardItemModel::data(const QModelIndex &index, int role = QtDisplayRole) const
    从QAbstractItemModel::data()重新实现。

  10. [virtual] bool QStandardItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
    从QAbstractItemModel::dropMimeData()重新实现。

  11. QList<QStandardItem *> QStandardItemModel::findItems(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly, int column = 0) const
    返回与给定文本匹配的项列表,使用给定的标志,在给定列中进行搜索。

  12. [virtual] Qt::ItemFlags QStandardItemModel::flags(const QModelIndex &index)
    从QAbstractItemModel::flags()重新实现。

  13. [virtual] bool QStandardItemModel::hasChildren(const QModelIndex &parent = QModelIndex()) const
    从QAbstractItemModel::hasChildren()重新实现。

  14. QVariant QStandardItemModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const
    从QAbstractItemModel::headerData()重新实现。

  15. QStandardItem *QStandardItemModel::horizontalHeaderItem(int column) const
    返回指定列的水平标题项(如果已设置),否则返回。

  16. [virtual] QModelIndex QStandardItemModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const
    从QAbstractItemModel::index()重新实现。

  17. QModelIndex QStandardItemModel::indexFromItem(const QStandardItem *item) const
    返回与给定项关联的QModelIndex。
    在执行需要项的QModelIndex的操作时使用此函数,例如QAbstractItemView::scrollTo()。QStandardItem::index()提供了方便的方式来调用此函数。

  18. void QStandardItemModel::insertColumn(int column, const QList<QStandardItem *> &items)
    在指定列中插入包含项的列。如果需要,行数将增加到items的大小。

  19. bool QStandardItemModel::insertColumn(int column, const QModelIndex &parent = QModelIndex())
    在指定的父项的子项中的指定列之前插入单个列。如果插入列成功则返回true否则返回false。

  20. `[virtual] bool QStandardItemModel::insertColumns(int column, int count, const QModelIndex &parent = QModelIndex())
    从QAbstractItemModel::insertColumns()重新实现。

  21. void QStandardItemModel::insertRow(int row, const QList<QStandardItem *> &items)
    在指定行中插入包含项的行。如果需要,列数将增加到items的大小。

  22. void QStandardItemModel::insertRow(int row, QStandardItem *item)
    这是一个重载函数。
    在指定行中插入包含item的行。
    当构建只有一列的列表或树时,此函数提供了一种方便的方法来追加一个新的项。

  23. bool QStandardItemModel::insertRow(int row, const QModelIndex &parent = QModelIndex())
    在指定的父项的子项中的指定行之前插入单个行。如果插入行成功则返回true,否则返回false。

  24. [virtual] bool QStandardItemModel::insertRows(int row, int count, const QModelIndex &parent = QModelIndex())
    从QAbstractItemModel::insertRows()重新实现。

  25. QStandardItem *QStandardItemModel::invisibleRootItem() const
    返回模型的不可见根项。
    通过QStandardItem API,不可见的根项提供对模型的顶级项的访问,以使得可以以统一的方式处理顶级项及其子项;例如,涉及树模型的递归函数。
    注意:调用从此函数获取的QStandardItem对象上的index()无效。

  26. QStandardItem *QStandardItemModel::item(int row, int column = 0) const
    返回给定行和列的项(如果已设置),否则返回0。

  27. [signal] void QStandardItemModel::itemChanged(QStandardItem *item)
    在项的数据发生更改时发出此信号。

  28. [virtual] QMap<int, QVariant> QStandardItemModel::itemData(const QModelIndex &index) const
    从QAbstractItemModel::itemData()重新实现。

  29. QStandardItem *QStandardItemModel::itemFromIndex(const QModelIndex &index) const
    返回与给定索引关联的QStandardItem指针。
    在处理来自视图的基于QModelIndex的信号(如QAbstractItemView::activated())时,通常调用此函数是初始步骤。在您的槽中,您调用itemFromIndex(),传入信号携带的QModelIndex作为参数,以获得指向相应QStandardItem的指针。
    注意,如果不存在指定索引处的项,此函数将懒惰地创建一个项(使用itemPrototype()),并在父项的子项表中设置它。
    如果索引无效,则此函数返回0。

  30. const QStandardItem *QStandardItemModel::itemPrototype() const
    返回模型使用的项原型。当模型在需要按需构造新项时(例如,当视图或项代理调用setData()时),模型使用项原型作为项工厂。

  31. [virtual] QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const
    从QAbstractItemModel::mimeData()重新实现。

  32. [virtual] QStringList QStandardItemModel::mimeTypes() const
    从QAbstractItemModel::mimeTypes()重新实现。

  33. [virtual] QModelIndex QStandardItemModel::parent(const QModelIndex &child) const
    从QAbstractItemModel::parent()重新实现。

  34. [virtual] bool QStandardItemModel::removeColumns(int column, int count, const QModelIndex &parent = QModelIndex())
    从QAbstractItemModel::removeColumns()重新实现。

  35. [virtual] bool QStandardItemModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())
    从QAbstractItemModel::removeRows()重新实现。

  36. [virtual] int QStandardItemModel::rowCount(const QModelIndex &parent = QModelIndex()) const
    从QAbstractItemModel::rowCount()重新实现。

  37. void QStandardItemModel::setColumnCount(int columns)
    将模型中的列数设置为columns。如果小于columnCount(),则将丢弃不需要的列的数据。

  38. [v] bool QStandardItemModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)
    从QAbstractItemModel::setData重新实现。

  39. [virtual] bool QStandardItemModel::setHeaderData(int section, Qt::Orientation orientation, const QVariantvalue, int role = Qt::EditRole)
    从QItemModel::setHeaderData重新实现。

  40. void QStandardItemModel::setHorizontalHeaderItem(int column, QStandardItem *item)
    将列column的水平标题项设置为item。模型将拥有该项。需要,将增加数以适应该项。先前的标题项(如果有)将被删除。

  41. void QStandardItemModel::setHeaderLabels(const QStringList &labels)
    使用labels设置水平标题签。如果需要,将增加列数以与标签大小相匹配。

  42. void QStandardItemModel::setItem(int row, int column, QStandardItem *item)
    将给定行和列项设置为item。模型将拥有该项。如果需要,增加行数和列数以适应该项。给定位置先前项(如果有)将被删除。

  43. [virtual bool QStandardItemModel::setItem(const QModelIndex &index, const QMap<int,> &roles)
    从QItemModel::setItemData()重新实现。

  44. void QStandardItemModel::setItemPrototype(const QStandardItem *item)
    将型的项原型设置为指定的项。模型将拥有该原型。
    项原型通过依赖QStandardItem::clone()函数来充当QStandardItem工厂。要提供自己的原型子类化QStandardItem,重新实现QStandardItem::clone()并将原设置为您自定义类的实例。每当QStandardItemModel需要按需创建项(例如,当视图或项委托调用setData()时),新项将是您自定义类的实例。

  45. void QStandardItemModelsetItemRoleNames(const QHash, QByteArray> &roleNames)
    将项角色名称设置为roleNames。
    void QStandardItemModel::setRowCount(int rows)
    模型中的行数为rows。如果小于rowCount(),则丢弃不需要的行数据。

  46. void StandardItemModel::setVerticalHeaderItem(int row, QStandardItem *item)
    将行row的垂直标题项设置为item模型将拥有该项。如果需要,将加行数以适应该项。先前的标题项(有)将被删除。

  47. void QStandardItemModel::setHeaderLabels(const QStringList &labels)
    使用labels设置垂直标题标签。如果需要,将增加行数以与标签大小相匹配。

  48. [virtual] QModelIndex QStandardItemModel::sibling(int row, int column, const QModelIndex &idx) const
    从QAbstractItemModel::sibling()重新实现。

  49. [virtual] void QStandardItemModel::sort(int, Qt::SortOrder order = Qt::Order)
    从QAbstractItemModel::sort()重新实现。

  50. [virtual] Qt::DropActions QStandardItemModel::supportedDropActions() const
    从QAbstractItemModel::supportedDropActions()重新实现。
    QStandardItemModel支持复制和移动。

  51. QList<QStandardItem *> QModel::takeColumn(int column)
    移除给定列而不删除列项,并指向删除的项的指针列表。模型释对项的所有权。对于未设置的列中的项,列表中相应指针将为0。

  52. QStandardItem *QStandardItem::takeHorizontalHeaderItem(int column)
    从中移除位于column的水平项而不删除它,并返回该项的指针。模型释放对该项的所有权。

  53. QStandardItem *QStandardItemModel::take(int row, int column =0)
    移除(row,column)位置的项,不删除它。模型释放对该项所有权。

  54. QList<QStandardItem *> QModel::takeRow(int row)
    移除给定行而不删除行项,并返回指向删除的项的指针列表。模型释放对项所有权。对于未设置的行中的项,列表中相应指针将为0。

  55. QStandardItem *QStandardItemModel::takeVerticalHeaderItem(int row)
    从标题中移除位于row的垂直标题项而不删除,并返回该项的指。模型释放对项的所有权。

  56. QStandardItem *QStandardItemModel::verticalHeaderItem(int row) const
    如果已设置,则返回row的垂直标题项;否则0。

示例

基于列表模型
#include <QtWidgets/QApplication>
#include <QtWidgets/QListView>
#include <QtGui/QStandardItemModel>
#include <QtGui/QStandardItem>
#include <QtCore/QModelIndex>
#include <QtCore/QDebug>
#include <QtCore/QObject>int main(int argc, char *argv[])
{QApplication a(argc, argv);QListView listView;QStandardItemModel model;// 添加行列数据QList<QStandardItem *> items;items.append(new QStandardItem(QStringLiteral("行1-列1")));items.append(new QStandardItem(QStringLiteral("行1-列2")));model.appendRow(items);items.clear();items.append(new QStandardItem(QStringLiteral("行2-列1")));items.append(new QStandardItem(QStringLiteral("行2-列2")));model.appendRow(items);// 设置modellistView.setModel(&model);// 处理item点击事件QObject::connect(&listView, &QListView::clicked, [&](const QModelIndex &index) {// 获取点击的itemQStandardItem *item = model.itemFromIndex(index);qDebug() << item->text();// 将item转换成indexQModelIndex indexFromItem = model.indexFromItem(item);// 将index转换成itemQStandardItem *itemFromIndex = model.itemFromIndex(indexFromItem);// 设置样式itemFromIndex->setBackground(QBrush(QColor(Qt::red)));});listView.show();return a.exec();
}

在这里插入图片描述

基于树模型
#include <QtWidgets>int main(int argc, char *argv[]) 
{QApplication app(argc, argv);// 创建 QTreeView 和 QStandardItemModelQTreeView treeView;QStandardItemModel model;treeView.setModel(&model);// 创建列标题QStringList headerLabels;headerLabels << "Name" << "Size" << "Date Modified";model.setHorizontalHeaderLabels(headerLabels);// 添加数据QList<QStandardItem *> items;items << new QStandardItem("File1.txt") << new QStandardItem("10 KB") << new QStandardItem("2021-01-01");model.appendRow(items);// 获取点击的 item,并将 item 转换为 index 和 itemQObject::connect(&treeView, &QTreeView::clicked, [&model](const QModelIndex &index){QStandardItem *item = model.itemFromIndex(index);qDebug() << "Clicked item: " << item->text();});// 设置样式QString styleSheet = "QTreeView::item:selected { background-color: yellow; }";treeView.setStyleSheet(styleSheet);// 显示窗口treeView.show();return app.exec();
}

在这里插入图片描述

基于表格模型
#include <QApplication>
#include <QTableView>
#include <QStandardItemModel>
#include <QDebug>int main(int argc, char *argv[])
{QApplication a(argc, argv);// 创建模型QStandardItemModel model;model.setHorizontalHeaderLabels({"Name", "Age", "Gender"});// 添加数据QList<QStandardItem*> rowData;rowData << new QStandardItem("John") << new QStandardItem("25") << new QStandardItem("Male");model.appendRow(rowData);rowData.clear();rowData << new QStandardItem("Jane") << new QStandardItem("30") << new QStandardItem("Female");model.appendRow(rowData);// 创建表格视图QTableView tableView;tableView.setModel(&model);// 设置样式tableView.setStyleSheet("QTableView { border: 1px solid black } QTableView::item { padding: 5px }");// 获取点击的itemQObject::connect(&tableView, &QTableView::clicked, [&model](const QModelIndex& index){QStandardItem* item = model.itemFromIndex(index);if(item) {qDebug() << "Clicked item:" << item->text();}});// 当item改变时,触发QObject::connect(&model, &QStandardItemModel::itemChanged, [&model](QStandardItem *item){// QStandardItem* item = model.itemFromIndex(index);if(item) {qDebug() << "Changed item:" << item->text();}});// 显示表格视图tableView.show();return a.exec();
}

在这里插入图片描述

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

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

相关文章

AI实践与学习1_Milvus向量数据库实践与原理分析

前言 随着NLP预训练模型&#xff08;大模型&#xff09;以及多模态研究领域的发展&#xff0c;向量数据库被使用的越来越多。 在XOP亿级题库业务背景下&#xff0c;对于试题召回搜索单单靠着ES集群已经出现性能瓶颈&#xff0c;因此需要预研其他技术方案提高试题搜索召回率。…

【图像分类】【深度学习】【Pytorch版本】GoogLeNet(InceptionV4)模型算法详解

【图像分类】【深度学习】【Pytorch版本】GoogLeNet(InceptionV4)模型算法详解 文章目录 【图像分类】【深度学习】【Pytorch版本】GoogLeNet(InceptionV4)模型算法详解前言GoogLeNet(InceptionV4)讲解Stem结构Inception-A结构Inception- B结构Inception-C结构redution-A结构re…

宽瞬时带宽放大器SKY66051-11、SKY66052-11、SKY66041-11、SKY66317-11(RF)适用于通讯网络

一、2300至2700 MHz宽瞬时带宽高增益线性驱动放大器&#xff1a;SKY66051-11 SKY66051-11是一款具有高增益和高线性度的宽瞬时带宽、完全输入/输出匹配驱动放大器。通过使用外部元件&#xff0c;增益可在30dB至36dB范围内调整。紧凑型33 mm PA专为工作频率为2300至2700 MHz的4…

Skywalking流程分析_9(JDK类库中增强流程)

前言 之前的文章详细介绍了关于非JDK类库的静态方法、构造方法、实例方法的增强拦截流程&#xff0c;本文会详细分析JDK类库中的类是如何被增强拦截的 回到最开始的SkyWalkingAgent#premain try {/** 里面有个重点逻辑 把一些类注入到Boostrap类加载器中 为了解决Bootstrap类…

开源与闭源:大模型时代的技术交融与商业平衡

一、开源和闭源的优劣势比较 1.1 开源 优势&#xff1a; 1.技术共享与吸引人才&#xff1a; 开源促进了技术共享&#xff0c;吸引了全球范围内的人才参与大模型的发展&#xff0c;形成了庞大的开发者社区。 2.推动创新&#xff1a; 开源模式鼓励开发者共同参与&#xff0c;推动…

uni-app:如何配置uni.request请求的超时响应时间(全局+局部)

方法一&#xff1a;全局配置响应时间 一、进入项目的manifest.json的代码视图模块 二、写入代码 "networkTimeout": {"request": 5000 }, 表示现在request请求响应时间最多位5秒 方法二&#xff1a;局部设置响应时间 一、直接在uni.request中写入属性…

微服务下整合knife4j接口文档

前言:本文旨在解决微服务下通过网关访问所用服务的knife4j文档&#xff0c;无需再通过其他服务单独访问 功能模块配置&#xff1a; 1.配置类&#xff1a; 在这个文件中注意下basePackage的扫描路径&#xff0c;修改为对应controller下的路径。 Configuration EnableSwagger…

打造自己的3D模型AI 自动纹理工具

在线工具推荐&#xff1a; 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 为 3D 模型创建纹理可能比您想象的要容易。虽然注意细节很重要&#xff0c;但有很多方法可以制…

超详细~25考研规划~感恩现在努力的你!!!

25考研规划 俄语&#xff0c;翻译过来叫我爱你 考试时间 第一天 8.30-11.30政治——100分 2.00-5.00英语——100分 第二天 8.30-11.30数学——150分 2.00-5.00专业课——150分 1.什么是25考研 将在2024年12月参加考研&#xff0c;2025年本科毕业&#xff0c;9月读研究…

java基础练习缺少项目?看这篇文章就够了(下)!

公众号&#xff1a;全干开发 。 专注分享简洁但高质量的动图技术文章&#xff01; 回顾 在上节内容中&#xff0c;我们实现了用户开户的功能createAccount public void start(){System.out.println("欢迎您进入到了ATM系统");System.out.println("1、用户登录&…

git基本用法和操作

文章目录 创建版本库方式&#xff1a;Git常用操作命令&#xff1a;远程仓库相关命令分支(branch)操作相关命令版本(tag)操作相关命令子模块(submodule)相关操作命令忽略一些文件、文件夹不提交其他常用命令 创建版本库方式&#xff1a; 创建文件夹 在目录下 右键 Git Bush H…

如何使用$APPEALS法,分析用户期待?

$APPEALS分析法是一种用于分析用户期待和需求的方法&#xff0c;它可以帮助企业全方位多角度地了解客户对产品的期望&#xff0c;有助于企业多维度有侧重地调整市场规划和产品改进策略&#xff0c;帮助企业打造优势产品&#xff0c;提高市场竞争力。 下面是使用$APPEALS分析法来…

键盘控制ROS车运动

键盘控制ROS车运动 上位机 使用pyseria库与stm32单片机进行通信控制 #!/usr/bin/env python # -*- coding: utf-8 -*import sys, select, termios, tty import serialmsg """ ---------------------------w a x ds w : x a : y s : -x …

广西柳州机械异形零部件三维扫描3D抄数全尺寸测绘建模-CASAIM中科广电

一、背景介绍 复杂机械异形零部件具有不规则的形状和复杂的结构&#xff0c;给生产制造带来了很大的检测难度。为了确保零部件的制造质量和精度&#xff0c;需要对零部件进行全面的尺寸检测和分析。 CASAIM三维扫描仪在机械异形零部件全尺寸检测应用可以实现对机械异形零部件…

腾讯云轻量数据库是什么?性能如何?费用价格说明

腾讯云轻量数据库测评&#xff0c;轻量数据库100%兼容MySQL 5.7和8.0&#xff0c;腾讯云提供1C1G20GB、1C1G40GB、1C2G80GB、2C4G120GB、2C8G240GB五种规格轻量数据库&#xff0c;腾讯云百科txybk.com分享腾讯云轻量数据库测评、轻量数据库详细介绍、特性、配置价格和常见问题解…

JVM 调优指南

文章目录 为什么要学 JVM一、JVM 整体布局二、Class 文件规范三、类加载模块四、执行引擎五、GC 垃圾回收1 、JVM内存布局2 、 JVM 有哪些主要的垃圾回收器&#xff1f;3 、分代垃圾回收工作机制 六、对 JVM 进行调优的基础思路七、 GC 情况分析实例 JVM调优指南 -- 楼兰 ​ JV…

口袋参谋:如何通过布局“问大家”,快速提高宝贝转化!

问大家对于中小卖家来说&#xff0c;是非常适合的&#xff0c;因为我们完全可以靠对问大家的布局&#xff0c;提高宝贝的转化率。 问大家的作用 问大家主要是方便买家在购买前&#xff0c;了解商品的一些问题&#xff0c;而作为该不该购买的参考。对于卖家来说&#xff0c;是…

释放机器人潜力,INDEMIND深耕底层技术

市场转暖&#xff0c;但攘外需要同时安内。 市场降温之后&#xff0c;正迎来拐点 疫情之后&#xff0c;经济逐渐下行&#xff0c;服务机器人的“好日子”也随之结束&#xff0c;整个行业都在动荡中经历渡劫。根据TE智库报告显示&#xff0c;从2022年开始&#xff0c;我国服务…

疑似openAI的BUG

Chat gpt 4.0 『最新数据2023年』 Chat gpt 3.5 智商不在线『最近数据2021年9月左右』 发现了疑似openAI的一个bug 通过固定连接访问就可以用chatgpt4.0 4.0版本的费用为20美金一个月 https://chat.openai.com/?modelgpt-4-gizmo

【Linux】C文件系统详解(四)——磁盘的物理和抽象结构

文章目录 磁盘结构磁盘物理结构磁盘的具体物理结构磁盘结构的逻辑抽象 文件系统BootBlockSuperBlockGroupDescriptorTableinode tableDataBlocksinodeBitmapblockBitmaplinux中的inode 和文件名如何理解文件的增删查改删 补充细节1.如果文件误删了,我们该怎么办?2.inode确定分…