C++学习之QT实现取证小软件首页

实现效果

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QToolButton>
#include <QLabel>
#include <QMessageBox>
#include <QDebug>
#include <QHBoxLayout>
#include <QTableView>
#include <QStandardItemModel>
#include <QApplication>
#include <QHeaderView>
#include <QItemSelection>
 
 
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
 
    ui->setupUi(this);
 
 
    //this->setStyleSheet("background-color: #00429D;");
    //设置取证大师首页属性
    this->setWindowTitle("XX大师 试用版");
    this->setFixedSize(1920,980);
    this->setWindowIcon(QPixmap(":/Luffy.png"));
 
    //this->FramelessWindowHint
 
    //this->setStyleSheet("QTitleBar { background-color: #00429D; }");
    //this->setStyleSheet("QMainWindow { background-color: #00429D; }"); // 修改为你的颜色
    //this->setStyleSheet("QFrame { background-color: #00429D; }");
    //菜单栏 只能有1个
    QMenuBar * bar = menuBar();
    bar->setStyleSheet("QMenuBar { background-color: #1052AE; color: white;}"); //
    //将菜单栏设置到窗口中
    this->setMenuBar(bar);
    //文件菜单添加菜单
    QMenu * fileMenu =  bar->addMenu("文件(F)");
    QMenu * setMenu = bar->addMenu("设置(S)");
    QMenu * viewMenu =  bar->addMenu("视图(V)");
    QMenu * forensicMenu = bar->addMenu("取证(P)");
    QMenu * toolMenu =  bar->addMenu("工具(T)");
    QMenu * helpMenu = bar->addMenu("帮助(H)");
    //添加菜单项
    QAction * newAction  = fileMenu->addAction("XX(N)    Ctrl+N");
    QAction * safeAction =  fileMenu->addAction("XX(S)    Ctrl+S");
    safeAction->setDisabled(true);
    QAction * sxAction  = fileMenu->addAction("XX(A)");
    sxAction->setDisabled(true);
    QAction * openAction = fileMenu->addAction("XX(O)    Ctrl+O");
    QAction * closeAction = fileMenu->addAction("XX(I)");
    closeAction->setDisabled(true);
    //添加分割线
    fileMenu->addSeparator();
    QAction * addAction = fileMenu->addAction("XX(D)");
    QAction * makeAction = fileMenu->addAction("XX(M)    Ctrl+M");
    addAction->setDisabled(true);
    makeAction->setDisabled(true);
    //添加分割线
    fileMenu->addSeparator();
    QAction * seeAction = fileMenu->addAction("XX");
    QAction * exportAction = fileMenu->addAction("XX");
    exportAction->setDisabled(true);
    //添加分割线
    fileMenu->addSeparator();
    QAction * exitAction = fileMenu->addAction("XX(X)");
 
    //设置菜单添加菜单项
    QAction * straAction  = setMenu->addAction("XX(P)");
    //添加分割线
    setMenu->addSeparator();
    QAction * typeAction =  setMenu->addAction("XX(S)");
    QAction * ssAction  = setMenu->addAction("XX(K)");
    QAction * txtAction = setMenu->addAction("XX(W)");
    QAction * hsAction = setMenu->addAction("XX(Z)");
    QAction * imAction = setMenu->addAction("XX(R)");
    imAction->setDisabled(true);
    //添加分割线
    setMenu->addSeparator();
    QAction * resAction = setMenu->addAction("XX(X)");
    QAction * allAction = setMenu->addAction("XX(Y)");
    //添加分割线
    setMenu->addSeparator();
    QAction * setAction = setMenu->addAction("XX(O)");
 
    //视图菜单添加菜单项
    QAction * toolsAction  = viewMenu->addAction("XX(I)");
    QAction * statusAction =  viewMenu->addAction("XX(S)");
    //添加分割线
    viewMenu->addSeparator();
    QAction * alAction  = viewMenu->addAction("XX(M)");
    QAction * evidAction = viewMenu->addAction("XX(P)    CTRL+P");
    QAction * anligailan1Action = viewMenu->addAction("XX(C)");
    QAction * sdhuifuAction = viewMenu->addAction("XX(Y)");
    QAction * gzAction = viewMenu->addAction("XX");
    //添加分割线
    viewMenu->addSeparator();
    QAction * fresAction = viewMenu->addAction("XX(R)    CTRL+R");
    QAction * sssAction = viewMenu->addAction("XX(X)");
    QAction * yuanshisAction = viewMenu->addAction("XX(H)");
    QAction * analyAction = viewMenu->addAction("XX(Y)");
    QAction * registAction = viewMenu->addAction("XX(E)");
    QAction * zlstAction = viewMenu->addAction("XX(B)");
    QAction * reportAction = viewMenu->addAction("XX(F)");
    QAction * timeAction = viewMenu->addAction("XX(D)");
    //添加分割线
    viewMenu->addSeparator();
    QAction * logAction = viewMenu->addAction("XX(L)");
 
    //取证菜单添加菜单项
    QAction * autoAction  = forensicMenu->addAction("XX(T)");
    autoAction->setDisabled(true);
    //添加分割线
    forensicMenu->addSeparator();
    QAction * netHisAction =  forensicMenu->addAction("XX(S)");
    QAction * jsAction  = forensicMenu->addAction("XX(Q)");
    QAction * mailAction = forensicMenu->addAction("XX(E)");
    QAction * syAction = forensicMenu->addAction("XX引(I)");
    netHisAction->setDisabled(true);
    jsAction->setDisabled(true);
    mailAction->setDisabled(true);
    syAction->setDisabled(true);
 
    //工具菜单添加菜单项
    QAction * filtAction  = toolMenu->addAction("XXX(U)");
    filtAction->setDisabled(true);
    //添加分割线
    toolMenu->addSeparator();
    QAction * recoAction =  toolMenu->addAction("XX(R)");
    recoAction->setDisabled(true);
    QAction * sjdAction  = toolMenu->addAction("XX(P)");
    //添加分割线
    toolMenu->addSeparator();
    QAction * hachCAction = toolMenu->addAction("XX(C)");
    hachCAction->setDisabled(true);
    QAction * hsCAction = toolMenu->addAction("XX(S)");
    hsCAction->setDisabled(true);
    //添加分割线
    toolMenu->addSeparator();
    QAction * paDicAction = toolMenu->addAction("XX(D)");
    imAction->setDisabled(true);
    //添加分割线
    toolMenu->addSeparator();
    QAction * glanalyAction = toolMenu->addAction("XX(B)");
    glanalyAction->setDisabled(true);
    QAction * anaHitAction = toolMenu->addAction("XX(L)");
    anaHitAction->setDisabled(true);
    //添加分割线
    toolMenu->addSeparator();
    QAction * uPassAction = toolMenu->addAction("XX(J)");
    uPassAction->setDisabled(true);
    QAction * screenCAction = toolMenu->addAction("XX(A)");
    screenCAction->setDisabled(true);
    //添加分割线
    setMenu->addSeparator();
    QAction * ltoolAction = toolMenu->addAction("XX(T)");
    QAction * lAppliAction = toolMenu->addAction("XX(X)");
 
 
    //帮助菜单添加菜单项
    QAction * helpAction  = helpMenu->addAction("XX(H)");
    QAction * serviceAction =  helpMenu->addAction("XX(O)");
    //添加分割线
    helpMenu->addSeparator();
    QAction * netAction  = helpMenu->addAction("XX(M)");
    QAction * feedAction = helpMenu->addAction("XX(F)");
    imAction->setDisabled(true);
    //添加分割线
    helpMenu->addSeparator();
    QAction * checkUAction = helpMenu->addAction("XX(N)");
    QAction * userDAction = helpMenu->addAction("XX(L)");
    QAction * aboutAction = helpMenu->addAction("XX(A)");
 
    //添加子菜单
    //QMenu * subMenu = new QMenu;
    //subMenu->addAction("子菜单1");
    //subMenu->addAction("子菜单2");
   // newAction->setMenu(subMenu);
 
 
 
    //工具栏 可以有多个
    QToolBar * toolBar = new QToolBar(this);
    toolBar->setStyleSheet("QToolBar { background-color: #00429D; color: white;border: none;}"); //
    //将工具栏添加到窗口中
    this->addToolBar( Qt::TopToolBarArea, toolBar);
    //设置停靠区域
    toolBar->setAllowedAreas(Qt::TopToolBarArea );
    //设置浮动
    toolBar->setFloatable(false);
    //设置移动
    toolBar->setMovable(false);
    //toolBar->setFixedHeight(200);
 
    //创建一个QToolButton并设置图标
        QToolButton *toolButton = new QToolButton();
        toolButton->setIcon(QIcon(":/bird1.png"));
        toolButton->setIconSize(QSize(32, 32)); // 设置图标大小
        toolButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 设置样式为仅图标
        toolButton->setText("案例管理");
        toolButton->setStyleSheet("QToolButton {  color: white;}"); //
        toolBar->addWidget(toolButton);
 
    //添加分割线
    //toolBar->addSeparator();
        QToolButton *equipButton = new QToolButton();
        equipButton->setIcon(QIcon(":/bird2.png"));
        equipButton->setIconSize(QSize(32, 32)); // 设置图标大小
        equipButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 设置样式为仅图标
        equipButton->setText("添加设备");
        equipButton->setStyleSheet("QToolButton {  color: white;}"); //
        toolBar->addWidget(equipButton);
 
        QToolButton *autoButton = new QToolButton();
        autoButton->setIcon(QIcon(":/bird3.png"));
        autoButton->setIconSize(QSize(32, 32)); // 设置图标大小
        autoButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 设置样式为仅图标
        autoButton->setText("自动取证");
        autoButton->setStyleSheet("QToolButton {  color: white;}"); //
        toolBar->addWidget(autoButton);
 
        QToolButton *recoverButton = new QToolButton();
        recoverButton->setIcon(QIcon(":/bird4.png"));
        recoverButton->setIconSize(QSize(32, 32)); // 设置图标大小
        recoverButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 设置样式为仅图标
        recoverButton->setText("数据恢复");
        recoverButton->setStyleSheet("QToolButton {  color: white;}"); //
        toolBar->addWidget(recoverButton);
 
 
    QToolButton *searButton = new QToolButton();
    searButton->setIcon(QIcon(":/bird5.png"));
    searButton->setIconSize(QSize(32, 32)); // 设置图标大小
    searButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 设置样式为仅图标
    searButton->setText("数据分析");
    searButton->setStyleSheet("QToolButton {  color: white;}"); //
    toolBar->addWidget(searButton);
 
    //分析按钮
    connect(searButton,&QToolButton::clicked,[=](){
        qDebug() << "分析";
 
       QMessageBox::information(this,"分析按钮","分析按钮,展现自动取证界面");
    });
 
    QToolButton *searchButton = new QToolButton();
    searchButton->setIcon(QIcon(":/bird6.png"));
    searchButton->setIconSize(QSize(32, 32)); // 设置图标大小
    searchButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 设置样式为仅图标
    searchButton->setText("搜索");
    searchButton->setStyleSheet("QToolButton {  color: white;}"); //
    toolBar->addWidget(searchButton);
 
    QToolButton *filtButton = new QToolButton();
    filtButton->setIcon(QIcon(":/bird3.png"));
    filtButton->setIconSize(QSize(32, 32)); // 设置图标大小
    filtButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 设置样式为仅图标
    filtButton->setText("文件过滤");
    filtButton->setStyleSheet("QToolButton {  color: white;}"); //
    toolBar->addWidget(filtButton);
 
    QToolButton *timeButton = new QToolButton();
    timeButton->setIcon(QIcon(":/bird4.png"));
    timeButton->setIconSize(QSize(32, 32)); // 设置图标大小
    timeButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 设置样式为仅图标
    timeButton->setText("时间线");
    timeButton->setStyleSheet("QToolButton {  color: white;}"); //
    toolBar->addWidget(timeButton);
 
    QToolButton *forReButton = new QToolButton();
    forReButton->setIcon(QIcon(":/bird5.png"));
    forReButton->setIconSize(QSize(32, 32)); // 设置图标大小
    forReButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 设置样式为仅图标
    forReButton->setText("取证报告");
    forReButton->setStyleSheet("QToolButton {  color: white;}"); //
    toolBar->addWidget(forReButton);
 
    QToolButton *repoButton = new QToolButton();
    repoButton->setIcon(QIcon(":/bird6.png"));
    repoButton->setIconSize(QSize(32, 32)); // 设置图标大小
    repoButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 设置样式为仅图标
    repoButton->setText("摘录报告");
    repoButton->setStyleSheet("QToolButton {  color: white;}"); //
    toolBar->addWidget(autoButton);
 
 
    QToolButton *toolsButton = new QToolButton();
    toolsButton->setIcon(QIcon(":/bird7.png"));
    toolsButton->setIconSize(QSize(32, 32)); // 设置图标大小
    toolsButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 设置样式为仅图标
    toolsButton->setText("工具集");
    toolsButton->setStyleSheet("QToolButton {  color: white;}"); //
    toolBar->addWidget(toolsButton);
 
    QToolButton *littleButton = new QToolButton();
    littleButton->setIcon(QIcon(":/bird8.png"));
    littleButton->setIconSize(QSize(32, 32)); // 设置图标大小
    littleButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 设置样式为仅图标
    littleButton->setText("小程序");
    littleButton->setStyleSheet("QToolButton {  color: white;}"); //
    toolBar->addWidget(littleButton);
 
 
    QToolButton *serviceButton = new QToolButton();
    serviceButton->setIcon(QIcon(":/Coin0001.png"));
    serviceButton->setIconSize(QSize(32, 32)); // 设置图标大小
    serviceButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 设置样式为仅图标
    serviceButton->setText("客服");
    serviceButton->setStyleSheet("QToolButton {  color: white;}"); //
    toolBar->addWidget(serviceButton);
 
 
    QToolButton *cloudButton = new QToolButton();
    cloudButton->setIcon(QIcon(":/Coin0002.png"));
    cloudButton->setIconSize(QSize(32, 32)); // 设置图标大小
    cloudButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 设置样式为仅图标
    cloudButton->setText("取证云平台");
    cloudButton->setStyleSheet("QToolButton {  color: white;}"); //
    toolBar->addWidget(cloudButton);
 
 
    QToolButton *testButton = new QToolButton();
    testButton->setIcon(QIcon(":/Coin0003.png"));
    testButton->setIconSize(QSize(32, 32)); // 设置图标大小
    testButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 设置样式为仅图标
    testButton->setText("试用平台");
    testButton->setStyleSheet("QToolButton {  color: white;}"); //
    toolBar->addWidget(testButton);
 
    ui->tabWidget->setFixedSize(1920,880);
    ui->tab_2->setHidden(true);
    //ui->tabWidget->setStyleSheet("background-color: #C5C5C5;");
 
    //this->setAlignment(ui->textEdit,Qt::AlignRight); // 对齐方式设置为右对齐
 
    //QPixmap pixmap(":/bird1.png"); // 确保图片已经添加到资源中
   // QTextCursor cursor = ui->textEdit->textCursor();
    //cursor.insertImage(pixmap); // 插入图片
 
 
    QImage image(":/ic_action_search.webp"); // 确保图片已经添加到资源中
    QTextImageFormat format;
    format.setName(":/ic_action_search.webp"); // 图片资源路径
    //format.setAlignment(Qt::AlignRight);    // 右对齐
    format.setHeight(20);
    format.setWidth(20);
 
    QTextCursor cursor = ui->textEdit->textCursor();
 
    cursor.insertImage(format); // 插入图片
 
 
 
 
    initStudent();
    initTableView();
 
 
    //状态栏 只能有1个
    QStatusBar * sBar = statusBar();
    //设置状态栏到窗口中
    this->setStatusBar(sBar);
 
    QLabel * lr=new QLabel("当前项目数:0",this);
    sBar->addPermanentWidget(lr);
 
 
 
}
 
// 初始化数据
void MainWindow::initStudent()
{
   // QStringList mHeader;
   mHeader << "序号" << "案例名称" << "设备数" << "创建日期" << "最后打开时间"<< "操作";
   mHeader2 << "序号" << "名称" << "类型" << "大小" << "备注"<< "编号";
   // QList<Student *> mStudents;
   mStudents << new Student("1", "Case01-20250305-135550",1, "2025-03-05 13:56:01", "2025-03-05 13:56:01", "打开")
             << new Student("2", "Case01-20250301-135550",1,  "2025-03-03 13:56:01", "2025-03-05 13:56:01", "打开")
             << new Student("3", "Case01-20250205-135550",2,  "2025-03-03 13:56:01", "2025-03-05 13:56:01", "打开")
             << new Student("4", "Case01-20250205-135550",3,  "2025-03-03 13:56:01", "2025-03-05 13:56:01", "打开")
             << new Student("5", "Case01-20250127-135550",1,  "2025-02-05 13:56:01", "2025-02-05 13:56:01", "打开")
             << new Student("6", "Case01-20250120-135550",1, "2025-02-05 13:56:01", "2025-02-05 13:56:01", "打开")
             << new Student("7","Case01-20241105-135550", 3,  "2025-11-27 13:56:01", "2025-11-27 13:56:01", "打开")
             << new Student("8", "Case01-20241105-135550",4,  "2024-10-05 13:56:01", "2024-10-05 13:56:01", "打开")
             << new Student("9", "Case01-20241005-135550",1,  "2024-09-05 13:56:01", "2024-09-05 13:56:01", "打开")
             << new Student("10", "Case01-20241005-135550",1,  "2024-08-05 13:56:01", "2024-08-05 13:56:01", "打开")
             << new Student("11", "Case01-20240905-135550",1,  "2024-07-05 13:56:01", "2024-07-05 13:56:01", "打开")
             << new Student("12", "Case01-20240805-135550",2,  "2024-05-05 13:56:01", "2024-05-05 13:56:01", "打开")
             << new Student("13", "Case01-20240705-135550",3,  "2024-03-05 13:56:01", "2024-03-05 13:56:01", "打开");
}
 
Student::Student(const QString &id, const QString &name, int nu, const QString &ctime, const QString &ltime,const QString &op)
{
   mId = id;
   mName = name;
   mNu = nu;
   cMtime = ctime;
   lMtime = ltime;
   oMp=op;
 
}
 
Student::~Student()
{
 
}
 
void MainWindow::initTableView()
{
   // QStandardItemModel *mTableViewModel;
   // 设置模型格式
   mTableViewModel = new QStandardItemModel(this);
   mTableViewModel->setRowCount(mStudents.size());
   mTableViewModel->setColumnCount(5);
   mTableViewModel->setHorizontalHeaderLabels(mHeader);
   // 填充数据
   for (int i = 0; i < mStudents.size(); ++i) {
       Student *s = mStudents.at(i);
       QStandardItem *item0 = new QStandardItem;
       item0->setData(s->mId, Qt::DisplayRole);
       QStandardItem *item1 = new QStandardItem;
       item1->setData(s->mName, Qt::DisplayRole);
       QStandardItem *item2 = new QStandardItem;
       item2->setData(s->mNu, Qt::DisplayRole);
       QStandardItem *item3 = new QStandardItem;
       item3->setData(s->cMtime, Qt::DisplayRole);
       QStandardItem *item4 = new QStandardItem;
       item4->setData(s->lMtime, Qt::DisplayRole);
       QStandardItem *item5 = new QStandardItem;
       item5->setData(s->oMp, Qt::DisplayRole);
 
       mTableViewModel->setItem(i, 0, item0);
       mTableViewModel->setItem(i, 1, item1);
       mTableViewModel->setItem(i, 2, item2);
       mTableViewModel->setItem(i, 3, item3);
       mTableViewModel->setItem(i, 4, item4);
       mTableViewModel->setItem(i, 5, item5);
   }
   // view-model
 
   ui->tableView_1->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
   ui->tableView_1->setStyleSheet("QTableView { show-decoration-selector: on; }"
                                  "QTableView::item { border: none; }"
                                  "QTableView::horizontalHeader { border-bottom: 1px solid black; }"
                                  "QTableView::verticalHeader { border-right: 1px solid black; }");
 
   ui->tableView_1->setModel(mTableViewModel);
   ui->tableView_1->setShowGrid(false);
 
   mTableViewModel2 = new QStandardItemModel(this);
   mTableViewModel2->setRowCount(1);
   mTableViewModel2->setColumnCount(5);
   mTableViewModel2->setHorizontalHeaderLabels(mHeader2);
   QStandardItem *item20 = new QStandardItem;
   item20->setData(1, Qt::DisplayRole);
   QStandardItem *item21 = new QStandardItem;
   item21->setData("欧阳锋计算机镜像", Qt::DisplayRole);
   QStandardItem *item22 = new QStandardItem;
   item22->setData("镜像文件", Qt::DisplayRole);
   QStandardItem *item23 = new QStandardItem;
   item23->setData("60.00G", Qt::DisplayRole);
   QStandardItem *item24 = new QStandardItem;
   item24->setData("", Qt::DisplayRole);
   QStandardItem *item25 = new QStandardItem;
   item25->setData("", Qt::DisplayRole);
   mTableViewModel2->setItem(0, 0, item20);
   mTableViewModel2->setItem(0, 1, item21);
   mTableViewModel2->setItem(0, 2, item22);
   mTableViewModel2->setItem(0, 3, item23);
   mTableViewModel2->setItem(0, 4, item24);
   mTableViewModel2->setItem(0, 5, item25);
   ui->tableView_2->setModel(mTableViewModel2);
   ui->tableView_2->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
   ui->tableView_2->setShowGrid(false);
}
 
 
 
MainWindow::~MainWindow()
{
    delete ui;
}

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

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

相关文章

AI 数字人短视频数字人分身系统源码开发难点都有哪些?

AI 数字人分身系统源代码开发涉及多个领域的复杂技术&#xff0c;其难点主要体现在以下几个方面&#xff1a; 逼真的数字人建模 精确的人体扫描与重建&#xff1a;要创建高度逼真的数字人分身&#xff0c;首先需要对真实人体进行精确扫描&#xff0c;获取准确的人体外形、肌肉…

适合用户快速开发项目的PHP框架有哪些?

有时候用户赶时间&#xff0c;并想快速在有限的时间里&#xff0c;筑起自己的项目&#xff0c;对于适合用户快速开发项目的PHP框架有哪些推荐呢&#xff1f;下面一起来了解一下。 1. Laravel Laravel 是一个功能强大且语法优雅的PHP框架&#xff0c;提供了丰富的功能和工具&a…

物联网为什么用MQTT不用 HTTP 或 UDP?

先来两个代码对比&#xff0c;上传温度数据给服务器。 MQTT代码示例 // MQTT 客户端连接到 MQTT 服务器 mqttClient.connect("mqtt://broker.server.com:8883", clientId) // 订阅特定主题 mqttClient.subscribe("sensor/data", qos1) // …

进程间通信(1)——管道

1. 进程间通信简介 进程间通信&#xff08;Inter-Process Communication&#xff0c;IPC&#xff09;是指不同进程之间交换数据的机制。由于进程具有独立的地址空间&#xff0c;它们无法直接访问彼此的数据&#xff0c;因此需要IPC机制来实现信息共享、数据传递或同步操作。 …

台达PLC转太网转换的教程案例(台达DVP系列)

产品介绍 台达DVP-PLC自投身工业自动化市场以来&#xff0c;始终致力于创新发展&#xff0c;不断推陈出新。其产品紧密贴合市场需求与行业工艺&#xff0c;凭借卓越性能与丰富功能&#xff0c;深受用户青睐。不仅推出了高效的程序与编辑工具&#xff0c;显著提升了主机执行速度…

ArcGIS10. 8简介与安装,附下载地址

目录 ArcGIS10.8 1. 概述 2. 组成与功能 3. 10.8 特性 下载链接 安装步骤 1. 安装准备 2. 具体步骤 3.补丁 其他版本安装 ArcGIS10.8 1. 概述 ArcGIS 10.8 是由美国 Esri 公司精心研发的一款功能强大的地理信息系统&#xff08;GIS&#xff09;平台。其核心功能在于…

R语言高效数据处理-自定义格式EXCEL数据输出

注&#xff1a;以下代码均为实际数据处理中的笔记摘录&#xff0c;所以很零散&#xff0c; 将就看吧&#xff0c;这一篇只是代表着我还在&#xff0c;所以可能用处不大&#xff0c;这一段时间都很煎熬&#xff01; 在实际数据处理中为了提升效率&#xff0c;将Excel报表交付给…

从零构建大语言模型全栈开发指南:第一部分:数学与理论基础-1.1.2核心数学基础:线性代数、概率论与梯度优化

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 1.1.2 核心数学基础&#xff1a;线性代数、概率论与梯度优化1. 线性代数&#xff1a;大语言模型的“骨架”1.1 核心概念与应用场景表1&#xff1a;线性代数核心运算与模型应…

科研项目验收管理系统

摘 要 使用旧方法对科研项目信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在科研项目信息的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。这次开发的科研项目验收管…

游戏成瘾与学习动力激发策略研究——了解存在主义心理学(通俗版)

存在主义心理学是20世纪中叶兴起的重要心理学流派,融合了哲学存在主义思想,强调人的主观体验、自由选择与责任承担,旨在帮助个体在不确定的世界中创造意义。 研究人如何在不确定的世界中活出意义的心理学,核心思想可以概括为以下四点: 存在主义心理学的主要内容 “存在先于…

Dropshare for Mac v6.1 文件共享工具 支持M、Intel芯片

Dropshare 是 Mac 用来上传图片、视频、截图和各种文件的工具。这款软件利用了SCP over SSH传输协议来将 Mac 本机的文件快速上传到自设的远程服务器。 应用介绍 Dropshare 是 Mac 用来上传图片、视频、截图和各种文件的工具。这款软件利用了SCP over SSH传输协议来将 Mac 本…

关于redis中的分布式锁

目录 分布式锁的基础实现 引入过期时间 引入校验id 引入lua脚本 引入看门狗 redlock算法 分布式锁的基础实现 多个线程并发执行的时候&#xff0c;执行的先后顺序是不确定的&#xff0c;需要保证程序在任意执行顺序下&#xff0c;执行逻辑都是ok的。 在分布式系统中&am…

利用AI让数据可视化

1. 从问卷星上下载一份答题结果。 序号用户ID提交答卷时间所用时间来源来源详情来自IP总分1、《中华人民共和国电子商务法》正式实施的时间是&#xff08;&#xff09;。2、&#xff08;&#xff09;可以判断企业在行业中所处的地位。3、&#xff08;&#xff09;是指店铺内有…

PairRE: Knowledge Graph Embeddings via Paired Relation Vectors(论文笔记)

CCF等级&#xff1a;A 发布时间&#xff1a;2020年11月 代码位置 25年3月24日交 目录 一、简介 二、原理 1.整体 2.关系模式 3.优化模型 三、实验性能 四、结论和未来工作 一、简介 将RotatE进行生级&#xff0c;RotatE只对头实体h进行计算&#xff0c;PairRE对头尾…

解决git init 命令不显示.git

首先在自己的项目代码右击 打开git bash here 输入git init 之后自己的项目没有.git文件&#xff0c;有可能是因为.git文件隐藏了&#xff0c;下面是解决办法

汇编移位指令

rol, ror 循环左移/右移 该指令影响CF。因为左移/右移时将最高位/最低位移动到CF中&#xff0c;同时移动到最低位&#xff0c;其他位依次左移/右移。 shl, shr 逻辑左移/右移 该指令影响CF。因为左移/右移时将最高位/最低位移动到CF中&#xff0c;其他位依次左移/右移&…

Python个人学习笔记(18):模块(异常处理、traceback、日志记录)

七、异常处理 语法错误不属于异常&#xff0c;处理的是程序运行时的一些意外情况 代码&#xff1a; a int(input(>>>&#xff1a;)) b int(input(>>>&#xff1a;)) print(a / b) # 在运行的时候由于数据不对&#xff0c;导致出错 # 此时程序会中断 prin…

AnyTouch:跨多个视觉触觉传感器学习统一的静态动态表征

25年3月来自人大、武汉科技大学和北邮的论文“AnyTouch: Learning Unified Static-dynamic Representation Across Multiple Visuo-tactile Sensors”。 视觉触觉传感器旨在模拟人类的触觉感知&#xff0c;使机器人能够精确地理解和操纵物体。随着时间的推移&#xff0c;许多精…

【数据分享】1999—2023年地级市固定资产投资和对外经济贸易数据(Shp/Excel格式)

在之前的文章中&#xff0c;我们分享过基于2000-2024年《中国城市统计年鉴》整理的1999-2023年地级市的人口相关数据、染物排放和环境治理相关数据、房地产投资情况和商品房销售面积相关指标数据、社会消费品零售总额和年末金融机构存贷款余额、各类用地面积、地方一般公共预算…

(位运算 水题?407周赛题?o 使两个整数相等的位更改次数)leetcode 3226

思路 &#xff1a;灵茶山艾府 怎么判断n能构成k直接异或取1的数量就行 关键在于如何判断n无法构成k 按照灵茶山大佬的方案一就是让k是n的子集也就是n与k的交集等于k 不等于k就不是n的子集 &#xff08;当k是n的子集时 n能构成k&#xff09; 与运算取交集&#xff0c;或运算取…