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

Qt Creator 网络编程----Socket客户端服务端

1、在Qt项目中的.pro中添加 network模块,用于Socket网络编程使用

QT       += network

2、相关Tcp网络通信协议头文件

#include <QtNetwork/QTcpServer>
#include <QtNetwork/QTcpSocket>
#include <QtNetwork/QHostAddress>

3、Qt socket运行实例。关于IP地址和Port端口号的设置:服务器代码设置的是服务器IP地址和Port端口号,客户端设置的是需要连接的服务器地址和端口号。所以不管是服务器还是客户端都设置的是服务器地址和端口号。

服务器端widget.h代码:
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QtNetwork/QTcpServer>
#include <QtNetwork/QTcpSocket>#include <QTableView>
#include <QStandardItemModel>
#include <QHeaderView>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private:// 初始化server操作void initServer();// close servervoid closeServer();// 更新当前状态void updateState();// 设置数据表格tableViewvoid setTableView();private:Ui::Widget *ui;//server用于监听端口,获取新的tcp连接的描述符QTcpServer *server;//存储已连接的socket对象QList<QTcpSocket*> clientList;// 设置表格模式QStandardItemModel *model;
};
#endif // WIDGET_H

服务器端widget.cpp代码:

#include "widget.h"
#include "ui_widget.h"#include<QtNetwork/QHostAddress>
#include <QMessageBox>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 设置tableListsetTableView();setWindowTitle("Server");initServer();ui->btnListen->setStyleSheet("color: rgb(0, 100, 100); background-color: rgb(255, 100, 50);");
}Widget::~Widget()
{// 关闭servercloseServer();delete ui;
}void Widget::initServer()
{// 创建Server对象server = new QTcpServer(this);//点击监听按钮,开始监听connect(ui->btnListen,&QPushButton::clicked,[this]{//判断当前是否已开启,是则close,否则listenif(server->isListening()){//server->close();closeServer();//关闭server后恢复界面状态ui->btnListen->setText("Listen");ui->btnListen->setStyleSheet("color: rgb(0, 100, 100); background-color: rgb(255, 100, 50);");ui->editAddress->setEnabled(true);ui->editPort->setEnabled(true);}else{//从界面上读取ip和端口//可以使用 QHostAddress::Any 监听所有地址的对应端口const QString address_text=ui->editAddress->text();const QHostAddress address=(address_text=="Any")?QHostAddress::Any:QHostAddress(address_text);const unsigned short port=ui->editPort->text().toUShort();//开始监听,并判断是否成功if(server->listen(address,port)){//连接成功就修改界面按钮提示,以及地址栏不可编辑ui->btnListen->setText("Close");ui->btnListen->setStyleSheet("color: rgb(100, 100, 100); background-color: rgb(0, 255, 0);");ui->editAddress->setEnabled(false);ui->editPort->setEnabled(false);}elseQMessageBox::information(NULL, "提示", "服务器ip设置错误", QMessageBox::Yes);}updateState();});//监听到新的客户端连接请求connect(server,&QTcpServer::newConnection,this,[this]{//如果有新的连接就取出while(server->hasPendingConnections()){//nextPendingConnection返回下一个挂起的连接作为已连接的QTcpSocket对象//套接字是作为服务器的子级创建的,这意味着销毁QTcpServer对象时会自动删除该套接字。//最好在完成处理后显式删除该对象,以避免浪费内存。//返回的QTcpSocket对象不能从另一个线程使用,如有需要可重写incomingConnection().QTcpSocket *socket=server->nextPendingConnection();clientList.append(socket);ui->textRecv->setTextColor(QColor(0,200,0));//      ui->textRecv->clear();ui->textRecv->append(QString("[%1:%2] Soket Connected").arg(socket->peerAddress().toString()).arg(socket->peerPort()));//关联相关操作的信号槽//收到数据,触发readyReadconnect(socket,&QTcpSocket::readyRead,[this,socket]{//没有可读的数据就返回if(socket->bytesAvailable()<=0)return;//注意收发两端文本要使用对应的编解码QByteArray data = socket->readAll();QStandardItem *item;quint16 comb;// 棉结数值comb  = (uchar)data[10]<<8 | (uchar)data[11];item = new QStandardItem(QString::number(comb));model->setItem(0, 1, item);// 短粗1comb = (uchar)data[12]<<8 | (uchar)data[13];item = new QStandardItem(QString::number(comb));model->setItem(1, 1, item);// 短粗2comb = (uchar)data[14]<<8 | (uchar)data[15];item = new QStandardItem(QString::number(comb));model->setItem(2, 1, item);// 长粗comb = (uchar)data[16]<<8 | (uchar)data[17];item = new QStandardItem(QString::number(comb));model->setItem(3, 1, item);// 细节1comb = (uchar)data[18]<<8 | (uchar)data[19];item = new QStandardItem(QString::number(comb));model->setItem(0, 3, item);// 细节2comb = (uchar)data[20]<<8 | (uchar)data[21];item = new QStandardItem(QString::number(comb));model->setItem(1, 3, item);// 特殊纱疵comb = (uchar)data[22]<<8 | (uchar)data[23];item = new QStandardItem(QString::number(comb));model->setItem(2, 3, item);// 纱支变异comb  = (uchar)data[24]<<8 | (uchar)data[25];item = new QStandardItem(QString::number(comb));model->setItem(3, 3, item);// 纱疵总数comb = (uchar)data[26]<<8 | (uchar)data[27];item = new QStandardItem(QString::number(comb));model->setItem(0, 5, item);// 十万米纱疵数comb = (uchar)data[28]<<8 | (uchar)data[29];item = new QStandardItem(QString::number(comb*0.1,'f',1));model->setItem(1, 5, item);// 产量quint16 comb2;quint32 comb12;comb = (uchar)data[30]<<8 | (uchar)data[31];comb2 = (uchar)data[32]<<8 | (uchar)data[33];comb12 = comb*65536 + comb2;item = new QStandardItem(QString::number(comb12*0.0001,'f',4));model->setItem(2, 5, item);// 效率comb = (uchar)data[34]<<8 | (uchar)data[35];item = new QStandardItem(QString::number(comb*0.01,'f',2));model->setItem(3, 5, item);// 驱动单元连接个数comb = (uchar)data[36]<<8 | (uchar)data[37];ui->driveEdit->setText(QString::number(comb));// 处理单元连接个数comb = (uchar)data[38]<<8 | (uchar)data[39];ui->processEdit->setText(QString::number(comb));/*const QString recv_text=QString::fromUtf8(socket->readAll());    // 读取客户端发送的内容ui->textRecv->clear();ui->textRecv->append(QString("[%1:%2]")                          // 在textEdit写入客户端ip和port.arg(socket->peerAddress().toString()).arg(socket->peerPort()));
*///       ui->textRecv->append(recv_text);                                 // 在textEdit吸入客户端发送内容});//错误信息connect(socket, static_cast<void(QAbstractSocket::*)(QAbstractSocket::SocketError)>(&QAbstractSocket::error),[this,socket](QAbstractSocket::SocketError){//       ui->textRecv->clear();ui->textRecv->append(QString("[%1:%2] Soket Error:%3").arg(socket->peerAddress().toString()).arg(socket->peerPort()).arg(socket->errorString()));});//连接断开,销毁socket对象,这是为了开关server时socket正确释放connect(socket,&QTcpSocket::disconnected,[this,socket]{socket->deleteLater();clientList.removeOne(socket);ui->textRecv->setTextColor(QColor(200,0,0));//      ui->textRecv->clear();ui->textRecv->append(QString("[%1:%2] Soket Disonnected").arg(socket->peerAddress().toString()).arg(socket->peerPort()));updateState();});}updateState();});
}
void Widget::closeServer()
{//停止服务server->close();for(QTcpSocket * socket:clientList){//断开与客户端的连接socket->disconnectFromHost();if(socket->state()!=QAbstractSocket::UnconnectedState){socket->abort();}}
}void Widget::updateState()
{//将当前server地址和端口、客户端连接数写在标题栏if(server->isListening()){setWindowTitle(QString("Server[%1:%2] connections:%3").arg(server->serverAddress().toString()).arg(server->serverPort()).arg(clientList.count()));}else{setWindowTitle("Server");}
}void Widget::setTableView()
{// 创建模型 - 5行6列model = new  QStandardItemModel(4,6);// 设置表头model->setHorizontalHeaderLabels({"类型","个数", "类型","个数","统计","Value"});ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);     // tableView只读ui->tableView->horizontalHeader()->setStyleSheet("QHeaderView::section{background:rgb(150,150,150);}");   // tableView设置head颜色ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);  // tableView自适应ui->tableView->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);// 填充数据QStandardItem *item;item = new QStandardItem(QString("棉结"));model->setItem(0, 0, item);item = new QStandardItem(QString("短粗1"));model->setItem(1, 0, item);item = new QStandardItem(QString("短粗2"));model->setItem(2, 0, item);item = new QStandardItem(QString("长粗"));model->setItem(3, 0, item);item = new QStandardItem(QString("细节1"));model->setItem(0, 2, item);item = new QStandardItem(QString("细节2"));model->setItem(1, 2, item);item = new QStandardItem(QString("特殊纱疵"));model->setItem(2, 2, item);item = new QStandardItem(QString("纱支变异"));model->setItem(3, 2, item);item = new QStandardItem(QString("纱疵总数"));model->setItem(0, 4, item);item = new QStandardItem(QString("纱疵数[十万米]"));model->setItem(1, 4, item);item = new QStandardItem(QString("产量[千克]"));model->setItem(2, 4, item);item = new QStandardItem(QString("效率(%)"));model->setItem(3, 4, item);ui->tableView->verticalHeader()->setVisible(false);ui->tableView->setModel(model);
}
客户端用NetAssist.exe工具即可,设置如下:

1)选择协议类型:Tcp Client 

2)远程主机地址:服务器地址(我的本机地址:192.168.0.187)

3)远程主机端口:服务器端口号(我的本机端口号:8080)

相关文章:

Qt Creator 网络编程----Socket客户端服务端

1、在Qt项目中的.pro中添加 network模块&#xff0c;用于Socket网络编程使用 QT network 2、相关Tcp网络通信协议头文件 #include <QtNetwork/QTcpServer> #include <QtNetwork/QTcpSocket> #include <QtNetwork/QHostAddress> 3、Qt socket运行实…...

《深度学习实践教程》[吴微] ch-5 3/5层全连接神经网络

一、练习课本上3层全连接神经网络识别手写数字。 答案代码&#xff1a; import torch from torch import nn, optim from torch.autograd import Variable from torch.utils.data import DataLoader from torchvision import datasets, transforms# 定义一些超参数 batch_size…...

OrcaFex11.5

OrcaFlex 11.5是一款专业的海洋工程动态分析软件 由英国Orcina公司开发 主要用于模拟和分析海洋结构物在复杂海洋环境中的动态响应 该软件广泛应用于海上油气开发 海上风电 海洋可再生能源等领域 OrcaFlex 11.5具有强大的建模和仿真能力 支持多种海洋结构物的模拟 包括船舶 …...

MUX-vlan

MUX-VLAN 理论环节 1. 定义与核心作用 Principal VLAN&#xff08;主VLAN&#xff09; 是 MUX VLAN&#xff08;Multiplex VLAN&#xff09;架构的核心组件&#xff0c;充当公共资源的访问枢纽&#xff0c;实现以下核心功能&#xff1a; 资源共享&#xff1a;允许所有从VLAN…...

vue3中解决 return‘ inside ‘finally‘ block报错的问题

vue3中解决 return’ inside ‘finally’ block报错的问题 这个错误信息通常表明你在使用Vue 3框架时&#xff0c;在finally块中不正确地使用了return语句。在JavaScript中&#xff0c;finally块是保证执行的最后一个代码块&#xff0c;用于释放资源或执行清理操作&#xff0c;…...

TestStand API 简介

TestStand API 简介 在自动化测试领域&#xff0c;TestStand 凭借其灵活的架构和强大的功能&#xff0c;成为众多开发者的首选工具。而 TestStand API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;则是打开 TestStand 强大功能的 “…...

vue2+element实现Table表格嵌套输入框、选择器、日期选择器、表单弹出窗组件的行内编辑功能

vue2element实现Table表格嵌套输入框、选择器、日期选择器、表单弹出窗组件的行内编辑功能 文章目录 vue2element实现Table表格嵌套输入框、选择器、日期选择器、表单弹出窗组件的行内编辑功能前言一、准备工作二、行内编辑1.嵌入Input文本输入框1.1遇到问题1.文本框内容修改失…...

【Docker系列】使用格式化输出与排序技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

针对面试-redis篇

1. 缓存穿透 什么是缓存穿透&#xff1f; 缓存穿透就是有人查询一个不存在的数据&#xff0c;数据库查询不到数据也不会直接写入缓存&#xff0c;就会导致每次请求都查数据库。 解决方案一&#xff1a;缓存空数据 当数据库中不存在该数据时&#xff0c;直接把查到的空数据给…...

HTML8:媒体元素

视频和音频 视频元素 video 音频 audio <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>媒体元素学习</title> </head> <body> <!--音频和视频 src:资源路径 controls:控制条…...

把其他conda的env复制到自己电脑的conda上

把其他conda的env复制到自己电脑的conda上 一 拷贝 将要拷贝的env环境拷贝到自己电脑的放置env环境的文件夹中 二 添加配置 找到.conda文件夹下的environments.txt文件&#xff0c;添加配置 三 测试 查看环境是否拷贝成功 激活环境 自此就拷贝成功了&#xff01;&am…...

抖音热门视频评论数追踪爬虫获取

自动追踪抖音账号收藏夹视频的评论数变化 功能&#xff1a; 1、自动追踪特定抖音账号收藏夹视频热度变化&#xff0c;评论增速超过x&#xff0c;自动通知到钉钉或飞书 2、最新最先进的js逆向算法&#xff0c;无封号风险 3、支持私有化定制 4、可同时追踪500-5w个视频的热度…...

Hive优化秘籍:大数据处理加速之道

目录 一、认识 Hive 性能瓶颈 二、优化从基础开始&#xff1a;查询语句 2.1 列与分区裁剪 2.2 谓词下推 2.3 合理使用排序 三、解决数据倾斜难题 3.1 数据倾斜原因剖析 3.2 针对性优化策略 四、优化 join 操作 4.1 MapJoin 的应用 4.2 大表 join 优化技巧 五、调整 …...

机器学习例题——预测facebook签到位置(K近邻算法)和葡萄酒质量预测(线性回归)

一、预测facebook签到位置 代码展示&#xff1a; import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import…...

10B扩散文生图模型F-Lite技术报告速读

F Lite 技术报告解析 一、研究背景与目标 F Lite 是一个开源的 100 亿参数文本到图像的扩散变换器&#xff08;DiT&#xff09;模型。该研究的目标是探索在中等数据规模和计算资源条件下&#xff0c;大规模扩散模型的性能边界。F Lite 基于 Freepik 内部数据集训练&#xff0…...

源码分析之Leaflet中Marker

概述 Marker类用于创建一个标记点对象,可以用于在地图上添加标记点。Marker类继承自Layer类,提供了一些方法用于创建标记点对象。 源码分析 源码实现 Marker类实现如下&#xff1a; export var Marker Layer.extend({options: {icon: new IconDefault(), // 默认图标实例…...

从0开始学习大模型--Day2--大模型的工作流程以及初始Agent

大模型的工作流程 分词化&#xff08;Tokenization&#xff09;与词表映射 分词化&#xff08;Tokenization&#xff09;是自然语言处理&#xff08;NLP&#xff09;中的重要概念&#xff0c;它是将段落和句子分割成更小的分词&#xff08;token&#xff09;的过程。 将一个…...

P48-56 应用游戏标签

这一段课主要是把每种道具的游戏Tag进行了整理与应用 AuraAbilitySystemComponentBase.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "AbilitySystemComponent.h"…...

4.29 tag的完整实现和登录页面的初步搭建

解释了v-for中每个属性的作用&#xff1a; 打印当前route的信息&#xff1a;&#xff08;里面会有path的信息&#xff09;当前的路由信息吧&#xff01; handleMenu() 菜单选择&#xff01;点击左侧菜单的栏目就会显示在Home.vue的tag上 这个方法的作用是让Home.vue上出现对应的…...

【Vue.js】 插槽通信——具名插槽通信

目录 前景基本语法命名规则默认内容使用建议 具体实例父组件 index.vue子组件 Category.vue 效果 前景 下面的父子组件代码仍然在Vue.js演练平台直接运行 基本语法 在子组件中定义插槽 <!-- Category.vue --> <slot name"插槽名称">默认内容</slo…...

从设备交付到并网调试:CET中电技术分布式光伏全流程管控方案详解

四月的最后一个工作日&#xff0c;当分布式光伏电站并网指示灯依次亮起的瞬间&#xff0c;CET中电技术与客户共同交出了一份满意的答卷。面对430政策窗口期的考验&#xff0c;我们凭借可靠的技术和高效的团队协作&#xff0c;在系统调试与并网对接的每个步骤都展现出过硬能力&a…...

(十)深入了解AVFoundation-采集:录制视频功能的实现

引言 在前文章中&#xff0c;我们深入探讨了如何通过 AVCaptureSession 配置 iOS 中的捕捉输入及输出。并通过使用 AVCaptureDeviceInput 和 AVCapturePhotoOutput&#xff0c;我们实现了基础的照片捕获功能&#xff0c;并配置了 PHPreviewView 来显示实时预览。 在本篇中&am…...

数据分析汇报七步法:用结构化思维驱动决策

在当今数据驱动的商业环境中&#xff0c;高效的数据汇报不仅是信息传递的工具&#xff0c;更是撬动决策的杠杆。基于您提供的五张核心图示&#xff0c;我们提炼出一套​「七步汇报框架」​&#xff0c;将复杂的数据分析转化为清晰的行动指南。这套方法论通过​「现状-诊断-预见…...

推荐两本集成电路制作书籍

本书共分19章&#xff0c;涵盖先进集成电路工艺的发展史&#xff0c;集成电路制造流程、介电薄膜、金属化、光刻、刻蚀、表面清洁与湿法刻蚀、掺杂、化学机械平坦化&#xff0c;器件参数与工艺相关性&#xff0c;DFM&#xff08;Design for Manufacturing&#xff09;&#xff…...

认识Grafana及其面板(Panel)

Grafana简介 Grafana 是一款开源的数据可视化与监控平台&#xff0c;以其强大的数据展示能力、灵活的插件生态和广泛的兼容性&#xff0c;成为企业监控、IT运维、DevOps、物联网(IoT)和业务分析等领域的核心工具。 数据源(Data Source) 对于Grafana而言&#xff0c;Promethe…...

FlinkCDC采集MySQL8.4报错

报错日志 原因&#xff1a; MySQL8.4版本中弃用show MASTER STATUS语法 改为&#xff1a;SHOW BINARY LOG STATUS 解决方案&#xff1a; 1、降MySQL版本 2、修改源码...

Webview通信系统学习指南

Webview通信系统学习指南 一、定义与核心概念 1. 什么是Webview&#xff1f; 定义&#xff1a;Webview是移动端&#xff08;Android/iOS&#xff09;内置的轻量级浏览器组件&#xff0c;用于在原生应用中嵌入网页内容。作用&#xff1a;实现H5页面与原生应用的深度交互&…...

人工智能如何革新数据可视化领域?探索未来趋势

在当今数字化时代&#xff0c;数据如同汹涌浪潮般不断涌现。据国际数据公司&#xff08;IDC&#xff09;预测&#xff0c;全球每年产生的数据量将从 2018 年的 33ZB 增长到 2025 年的 175ZB。面对如此海量的数据&#xff0c;如何有效理解和利用这些数据成为了关键问题。数据可视…...

探索Hello Robot开源移动操作机器人Stretch 3的新技术亮点与市场定位

Hello Robot 推出的 Stretch 3 机器人凭借其前沿技术和多功能性在众多产品中占据优势。Stretch 3 机器人采用开源设计&#xff0c;为开发者提供了灵活的定制空间&#xff0c;能够满足各种不同的需求。其配备的灵活手腕组件和 Intel Realsense D405 摄像头&#xff0c;显著增强了…...

机器人系统设置

机器人系统设置 机器人系统设置与操作指南 1. 系统设置基础功能 偏好设置 控制柜名称修改&#xff1a;通过文本框输入新名称并确认主题切换&#xff1a;支持橙色/蓝色主题&#xff08;需重启生效&#xff09; 语言与日期 系统语言/键盘语言设置时间格式&#xff1a;支持系统时…...

C/C++ 扩展智能提示太慢或无法解析项目

问题 C/C 扩展不解析项目&#xff0c;导致源码中的变量、函数都为灰色状态&#xff0c;无法进行跳转。 有时候 log 会报如下错误&#xff1a; Attempting to get defaults from C compiler in "compilerPath" property: D:/Development/Tools/mingw64/bin/gcc.exe…...

通过Kubernetes 外部 DNS控制器来自动管理Azure DNS 和 AKS

前言&#xff1a; 将应用程序及其服务部署到 Kubernetes 集群后&#xff0c;一个问题浮现&#xff1a;如何使用自定义域名访问它&#xff1f;一个简单的解决方案是创建一条 A 记录&#xff0c;将域名指向服务 IP 地址。这可以手动完成&#xff0c;但随着服务数量的增加&#x…...

Elasticsearch知识汇总之ElasticSearch监控方案

八 ElasticSearch监控方案 8.1 ElasticSearch监控指标 监控指标为磐基生产项指标&#xff0c;以下‘监控项名称’‘指标名称 ‘使用的公式‘都已详细说明&#xff0c;图表如下&#xff1a; 监控项名称 指标英文名称 使用的公式 elasticsearch集群健康状态 Elastic_Cluster…...

【能力比对】K8S数据平台VS数据平台

&#x1f525;&#x1f525; AllData大数据产品是可定义数据中台&#xff0c;以数据平台为底座&#xff0c;以数据中台为桥梁&#xff0c;以机器学习平台为中层框架&#xff0c;以大模型应用为上游产品&#xff0c;提供全链路数字化解决方案。 ✨AllData数据中台官方平台&…...

AutoDL+SSH在vscode中远程使用GPU训练深度学习模型

注册AutoDL账号 AutoDL官网&#xff1a;AutoDL 注册登录之后&#xff0c;如果你是学生&#xff0c;一定要进行学生认证&#xff0c;可以省钱。 认证之后&#xff0c;打开算力市场&#xff0c; 进行GPU选择 根据自己需要的环境选择版本 &#xff0c;选好之后创建并开机 这里注…...

【C语言干货】野指针

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、什么是野指针&#xff1f;二、野指针的三大成因 1.指针未初始化2.指针越界访问2.指针指向已释放的内存 前言 提示&#xff1a;以下是本篇文章正文内容&…...

QT生成保存 Excel 文件的默认路径,导出的文件后缀自动加(1)(2)等等

//生成保存 Excel 文件的默认路径 QString MainWidget::getDefaultFilePath() const { QString basePath pathEdit->text(); if (basePath.isEmpty() || !QDir(basePath).exists()) { basePath QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); } r…...

React Native【详解】搭建开发环境,创建项目,启动项目

下载安装 node https://nodejs.cn/download/ 查看 npx 版本 npx -v若无 npx 则安装 npm install -g npx创建项目 npx create-expo-applatestRN_demo 为自定义的项目名称 下载安装 Python 2.7 下载安装 JAVA JDK https://www.oracle.com/java/technologies/downloads/#jdk24-…...

AIDC智算中心建设:存储核心技术解析

目录 一、智算中心存储概述 1、存储发展 2、智算存储指导政策 3、智算智能存储必要性 二、智算中心存储架构及特征 1、智算存储中心架构 2、智算存储特征 三、智算中心存储核心技术解析 1、长记忆存储范式为推理提质增效 2、数据编织加强全局数据高效处理 3、超节点…...

第11次:用户注册(完整版)

第一步&#xff1a;定义用户模型类 class User(AbstractUser):mobile models.CharField(max_length11, uniqueTrue, verbose_name手机号)class Meta:db_table tb_userverbose_name 用户verbose_name_plural verbose_namedef __str__(self):return self.username第二步&…...

论文速读《Embodied-R: 基于强化学习激活预训练模型具身空间推理能力》

项目主页&#xff1a;https://embodiedcity.github.io/Embodied-R/ 论文链接&#xff1a;https://arxiv.org/pdf/2504.12680 代码链接&#xff1a;https://github.com/EmbodiedCity/Embodied-R.code 0. 简介 具身智能是通用人工智能的重要组成部分。我们希望预训练模型不仅能在…...

VMware Fusion安装win11 arm;使用Mac远程连接到Win

目录 背景步骤1. 安装Fusion2. 下载Win113. 安装Win113.1 初始步骤3.2 进入安装 4. 安装Windows APP 背景 最近国补太火热了&#xff0c;让Macbook来到6000这个价位。实在没忍住&#xff0c;最后入手了一台M3芯片的Macbook Air&#xff08;jd6799&#xff09;。 既然运维出身&…...

【ARM】DS-试用授权离线激活

1、 文档目标 解决客户无法在公司网络管控下进行ARM DS 试用激活&#xff0c;记录解决方案。 2、 问题场景 客户在ARM DS激活时无法连接到ARM认证网址&#xff0c;客户公司网络管理无法开放全部网络权限&#xff0c;只能针对特定网址和网络端口可以开放或客户公司开发环境无法…...

泰迪杯特等奖案例学习资料:基于卷积神经网络与集成学习的网络问政平台留言文本挖掘与分析

(第八届“泰迪杯”数据挖掘挑战赛A题特等奖案例深度解析) 一、案例背景与核心挑战 1.1 应用场景与行业痛点 随着“互联网+政务”的推进,网络问政平台成为政府与民众沟通的重要渠道。某市问政平台日均接收留言超5000条,涉及民生、环保、交通等20余类诉求。然而,传统人工…...

基于 ReentrantReadWriteLock 实现高效并发控制

在多线程 Java 应用中,管理共享资源的访问是确保数据一致性和避免竞争条件的关键挑战。在某些场景中,多个线程需要频繁读取共享数据,而只有一个线程偶尔需要更新数据。例如,在一个网页投票系统中,大量用户可能同时查看投票结果(读操作),而投票更新(写操作)则相对较少…...

代理式AI(Agentic AI):2025年企业AI转型的催化剂

李升伟 摘译 步入2025&#xff1a;代理式AI开启企业智能化转型新纪元 随着2025年临近&#xff0c;企业已不再纠结"是否采用人工智能"&#xff0c;而是迫切追问"如何加速AI进化"。传统AI系统在敏捷性、扩展性和自主性上的局限日益显现&#xff0c;新一代技…...

MySQL中MVCC指什么?

简要回答&#xff1a; MVCC&#xff08;multi version concurrency control&#xff09;即多版本并发控制&#xff0c;为了确保多线程下数据的安全&#xff0c;可以通过undo log和ReadView来实现不同的事务隔离级别。 对于已提交读和可重复读隔离级别的事务来说&#xff0c;M…...

购物数据分析

这是一个关于电商双11美妆数据分析的项目页面&#xff0c;包含版本记录、运行代码提示、评论等功能模块的相关描述。&#xff0c;会涉及数据处理、可视化、统计分析等代码逻辑&#xff0c;用于处理美妆电商双11相关数据&#xff0c;如销售数据统计、消费者行为分析等 。 数据源…...

基于GA遗传优化的不同规模城市TSP问题求解算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 旅行商问题&#xff08;Traveling Salesman Problem&#xff0c;TSP&#xff09;是一个经典的组合优化问题&#xff0c;旨在找到一个旅行商在访问多个城市后回到起…...

Nginx 安全防护与 HTTPS 部署

目录 一. 核心安全配置 1. 隐藏版本号 2. 限制危险请求方法 3. 请求限制&#xff08;CC 攻击防御&#xff09; 4. 防盗链 二. 高级防护 1. 动态黑名单 2. nginx https 配置 2.1 https 概念 2.1.1 https 为什么不安全 2.1.2 安全通信的四大原则 2.1.3 HTTPS 通信原理…...