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

CSerialPort教程4.3.x (4) - CSerialPort在QT中的使用

CSerialPort教程4.3.x (4) - CSerialPort在QT中的使用

环境:

QT: 5.6.3

前言

CSerialPort项目是一个基于C/C++的轻量级开源跨平台串口类库,可以轻松实现跨平台多操作系统的串口读写,同时还支持C#, Java, Python, Node.js等。

CSerialPort项目的开源协议自 V3.0.0.171216 版本后采用GNU Lesser General Public License v3.0

为了让开发者更好的使用CSerialPort进行开发,特编写基于4.3.x版本的CSerialPort教程系列。

CSerialPort项目地址:

  • https://github.com/itas109/CSerialPort
  • https://gitee.com/itas109/CSerialPort

QT完整示例程序地址:

  • https://github.com/itas109/CSerialPort/tree/master/examples/CommQT
  • https://gitee.com/itas109/CSerialPort/tree/master/examples/CommQT

1. 新建QT项目

新建一个QT项目目,解决方案名称为CommQT

【文件】-【新建文件或项目】-【Application(Qt)】-【Qt Widgets Application】-【choose…】-【名称: CommQT】

在CommQT解决方案目录下载CSerialPort源码

$ cd CommQT
$ git clone https://github.com/itas109/CSerialPort

目录结构如下:

D:/CommQT $ tree
.
+--- CommQT.pro
+--- CSerialPort
|   +--- include
|   |   +--- CSerialPort
|   |   |   +--- SerialPort.h
|   |   |   +--- SerialPortInfo.h
|   +--- src
|   |   +--- SerialPort.cpp
|   |   +--- SerialPortBase.cpp
|   |   +--- SerialPortInfo.cpp
|   |   +--- SerialPortInfoBase.cpp
|   |   +--- SerialPortInfoUnixBase.cpp
|   |   +--- SerialPortInfoWinBase.cpp
|   |   +--- SerialPortUnixBase.cpp
|   |   +--- SerialPortWinBase.cpp
+--- main.cpp
+--- mainwindow.cpp
+--- mainwindow.h
+--- mainwindow.ui

2. CommQT.pro中增加必要的CSerialPort依赖

CommQT.pro中增加CSerialPort依赖

#-------------------------------------------------
#
# Project created by QtCreator
#
#-------------------------------------------------QT       += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = CommQT
TEMPLATE = appSOURCES += main.cpp\mainwindow.cppHEADERS  += mainwindow.hFORMS    += mainwindow.ui# add by itas109
# 1. headers
INCLUDEPATH += "$$PWD/CSerialPort/include"# 2. sources
SOURCES += $$PWD/CSerialPort/src/SerialPortBase.cpp
SOURCES += $$PWD/CSerialPort/src/SerialPort.cpp
SOURCES += $$PWD/CSerialPort/src/SerialPortInfoBase.cpp
SOURCES += $$PWD/CSerialPort/src/SerialPortInfo.cppwin32 {SOURCES += $$PWD/CSerialPort/src/SerialPortWinBase.cppSOURCES += $$PWD/CSerialPort/src/SerialPortInfoWinBase.cpp
}unix {SOURCES += $$PWD/CSerialPort/src/SerialPortUnixBase.cppSOURCES += $$PWD/CSerialPort/src/SerialPortInfoUnixBase.cpp
}# 3. add system libs
win32-msvc*:LIBS += advapi32.lib
win32-msvc*:LIBS += setupapi.lib
win32-g++:LIBS += libsetupapi# 4. define UNICODE
DEFINES += _UNICODE
# end by itas109

3. 在QT中添加CSerialPort代码

3.1 增加CSerialPort的头文件、继承类、接收函数及CSerialPort实例对象

在mainwindow.h文件中

  • 增加CSerialPort的头文件
  • MainWindow类继承CSerialPortListener
  • 增加接收函数onReadEvent(const char *portName, unsigned int readBufferLen)
  • 增加CSerialPort的实例对象
  • 增加QPlainTextEdit控件接收数据

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>// add by itas109
#include <QPlainTextEdit>#include "CSerialPort/SerialPort.h"
#include "CSerialPort/SerialPortInfo.h"
using namespace itas109;
// end by itas109namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow,public CSerialPortListener // add by itas109
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private:Ui::MainWindow *ui;// add by itas109
private:void onReadEvent(const char *portName, unsigned int readBufferLen);signals:void emitUpdateReceive(QString str);private slots:void OnUpdateReceive(QString str);private:QPlainTextEdit * p_plainTextEditReceive;CSerialPort m_serialPort;// end by itas109
};#endif // MAINWINDOW_H

3.2 增加串口的相关实现代码

mainwindow.cpp文件增加

  • MainWindow::MainWindow中增加CSerialPort的测试代码
  • 增加OnReceive函数的实现
#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);// add by itas109p_plainTextEditReceive = NULL;p_plainTextEditReceive = new QPlainTextEdit();this->setCentralWidget(p_plainTextEditReceive);std::vector<SerialPortInfo> portNameList = CSerialPortInfo::availablePortInfos();if (portNameList.size() > 0){p_plainTextEditReceive->moveCursor (QTextCursor::End);p_plainTextEditReceive->insertPlainText(QString("First avaiable Port: %1\n").arg(portNameList[0].portName));}else{p_plainTextEditReceive->moveCursor (QTextCursor::End);p_plainTextEditReceive->insertPlainText("No avaiable Port");return;}connect(this,&MainWindow::emitUpdateReceive,this,&MainWindow::OnUpdateReceive,Qt::QueuedConnection);m_serialPort.connectReadEvent(this);m_serialPort.init(portNameList[0].portName);m_serialPort.open();if (m_serialPort.isOpen()){p_plainTextEditReceive->moveCursor (QTextCursor::End);p_plainTextEditReceive->insertPlainText(QString("open %1 success\n").arg(portNameList[0].portName));m_serialPort.writeData("itas109", 7);}else{p_plainTextEditReceive->moveCursor (QTextCursor::End);p_plainTextEditReceive->insertPlainText(QString("open %1 failed\n").arg(portNameList[0].portName));}// end by itas109
}MainWindow::~MainWindow()
{delete ui;// add by itas109m_serialPort.disconnectReadEvent();// end by itas109
}// add by itas109
void MainWindow::onReadEvent(const char *portName, unsigned int readBufferLen)
{if(readBufferLen > 0){char data[1024];int recLen = m_serialPort.readData(data,readBufferLen > 1023 ? 1023 : readBufferLen);if (recLen > 0){data[recLen] = '\0';emitUpdateReceive(QString::fromLocal8Bit(data,recLen));}}
}void MainWindow::OnUpdateReceive(QString str)
{p_plainTextEditReceive->moveCursor (QTextCursor::End);p_plainTextEditReceive->insertPlainText(str);
}
// end by itas109

4. 结果

代码中的COM2对应的串口为RS232环回测试硬件,因此对应的结果为:
程序启动后,初始化并打开串口COM2,接收窗打印open xxx success,发送数据itas09,随后接收窗打印itas09

windows下结果:

First avaiable Port: COM1
open COM1 success
itas109

linux下结果:

First avaiable Port: /dev/ttyUSB0
open /dev/ttyUSB0 success
itas109

linux下可能遇到权限问题

open port error: Unable to open /dev/ttyUSB0: 权限不够

临时解决:

$ sudo chmod 777 /dev/ttyUSB0

永久解决(dev为当前用户名):

$ sudo usermod -aG dialout dev
$ newgrp dialout # 立即生效

License

License under CC BY-NC-ND 4.0: 署名-非商业使用-禁止演绎


Reference:

  1. https://github.com/itas109/CSerialPort
  2. https://gitee.com/itas109/CSerialPort
  3. https://blog.csdn.net/itas109

相关文章:

CSerialPort教程4.3.x (4) - CSerialPort在QT中的使用

CSerialPort教程4.3.x (4) - CSerialPort在QT中的使用 环境&#xff1a; QT: 5.6.3前言 CSerialPort项目是一个基于C/C的轻量级开源跨平台串口类库&#xff0c;可以轻松实现跨平台多操作系统的串口读写&#xff0c;同时还支持C#, Java, Python, Node.js等。 CSerialPort项目…...

自然语言处理从入门到应用——LangChain:链(Chains)-[基础知识]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 在本文中&#xff0c;我们将学习如何在LangChain中创建简单的链式连接并添加组件以及运行它。链式连接允许我们将多个组件组合在一起&#xff0c;创建一个统一的应用程序。例如&#xff0c;我们可以创建一个链式连接&a…...

[ubuntu]linux服务器每次重启anaconda环境变量失效

云服务器每次重启后conda不能用了&#xff0c;应该是系统自动把设置环境变量清除了。如果想继续使用&#xff0c;则可以运行一下 minconda3激活方法&#xff1a; source ~/miniconda3/bin/activate anaconda3激活方法&#xff1a; source ~/anaconda3/bin/activate 你也修改b…...

【数据结构】如何用栈实现队列?图文解析(LeetCode)

LeetCode链接&#xff1a;232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09; 注&#xff1a;本文默认读者已掌握栈与队列的基本操作 可以看这篇文章熟悉知识点&#xff1a;【数据结构】栈与队列_字节连结的博客-CSDN博客 目录 做题思路 代码实现 1. MyQueue 2. …...

蓝桥杯上岸每日N题 (闯关)

大家好 我是寸铁 希望这篇题解对你有用&#xff0c;麻烦动动手指点个赞或关注&#xff0c;感谢您的关注 不清楚蓝桥杯考什么的点点下方&#x1f447; 考点秘籍 想背纯享模版的伙伴们点点下方&#x1f447; 蓝桥杯省一你一定不能错过的模板大全(第一期) 蓝桥杯省一你一定不…...

基于Python3 的 简单股票 可转债 提醒逻辑

概述 通过本地的定时轮训&#xff0c;结合本地建议数据库。检查股票可转债价格的同事&#xff0c;进行策略化提醒 详细 前言 为什么会有这么个东西出来呢&#xff0c;主要是因为炒股软件虽然有推送&#xff0c;但是设置了价格之后&#xff0c;看到推送也未必那么及时&#…...

Python“牵手”京东工业商品详情数据采集方法,京东工业商数据API申请步骤说明

京东工业平台介绍 京东工业平台是京东集团旗下的一个B2B电商平台&#xff0c;主要面向企业客户提供一站式的采购服务。京东工业平台依托京东强大的供应链和配送能力&#xff0c;为企业用户提供全品类、全渠道、全场景的采购解决方案&#xff0c;涵盖电子元器件、机械配件、办公…...

【LeetCode-中等题】3. 无重复字符的最长子串

题目 题解一&#xff1a;单指针&#xff0c;滑动窗口 思路&#xff1a; 设置一个左指针&#xff0c;来判断下一个元素是否在set集合中&#xff0c;如果不在&#xff0c;就加入集合&#xff0c;right继续&#xff0c;如果在&#xff0c;就剔除重复的元素&#xff0c;计算串的长度…...

【教程】Java 集成Mongodb

【教程】Java 集成Mongodb 依赖 <dependency><groupId>org.mongodb</groupId><artifactId>mongo-java-driver</artifactId><version>3.12.14</version></dependency> <dependency><groupId>cn.hutool</groupId…...

ARM开发,stm32mp157a-A7核中断实验(实现按键中断功能)

1.实验目的&#xff1a;实现KEY1/LEY2/KE3三个按键&#xff0c;中断触发打印一句话&#xff0c;并且灯的状态取反&#xff1b; key1 ----> LED3灯状态取反&#xff1b; key2 ----> LED2灯状态取反&#xff1b; key3 ----> LED1灯状态取反&#xff1b; 2.分析框图: …...

kafka常用命名

kafka服务启动 $KAFKA_HOME/bin/kafka-server-start.sh -daemon config/server.properties 创建Topic $KAFKA_HOME/bin/kafka-topics.sh --create --topic test0--zookeeper 127.0.0.1:2181 --config max.message.bytes12800000 --config flush.messages1 --partitions 5 …...

华为云开发工具CodeArts IDE for C/C++ 开发使用指南

简介 CodeArts IDE是一个集成开发环境&#xff08;IDE&#xff09;&#xff0c;它提供了开发语言和调试服务。本文主要介绍CodeArts IDE for C/C的基本功能。 1.下载安装 CodeArts IDE for C/C 已开放公测&#xff0c;下载获取免费体验 2.新建C/C工程 CodeArts IDE for C/…...

如何选择最适合你的SOLIDWORKS版本 硕迪科技

SOLIDWORKS是一款广泛应用于工程设计领域的三维计算机辅助设计&#xff08;CAD&#xff09;软件&#xff0c;因其强大的功能和易学易用的界面而备受工程师们的青睐。面对众多的SOLIDWORKS版本&#xff0c;比如SW专业版、白金版&#xff0c;租赁订阅版&#xff0c;以及solidwork…...

通过双层负载均衡实现HTTPS代理的高并发处理和容错能力

在互联网应用中&#xff0c;HTTPS代理服务器是承担用户请求的重要角色。当网站面临高并发请求时&#xff0c;单一的服务器可能无法满足需求&#xff0c;会导致性能下降和容错能力不足。为了解决这个问题&#xff0c;我们可以通过双层负载均衡技术来实现高并发处理和容错能力的提…...

Redis 整合中 Redisson 的使用

大家好 , 我是苏麟 , 今天带来 Redisson 使用 . 官方文档 : GitHub - redisson/redisson: Redisson - Easy Redis Java client with features of In-Memory Data Grid. Sync/Async/RxJava/Reactive API. Over 50 Redis based Java objects and services: Set, Multimap, Sorte…...

数据结构(5)

堆 堆可以看作一颗完全二叉树的数组对象。 特性&#xff1a; 1.堆是完全二叉树&#xff0c;除了树最后一层不需要满&#xff0c;其余层次都需要满&#xff0c;如果最后一层不是满的&#xff0c;那么要求左满右不满 2.通常使用数组实现&#xff0c;将二叉树结点依次放入数组中…...

R语言实现网状Meta分析(1)

#R语言实现网状Meta library(gemtc) help(package"gemtc") data<-gemtc::smoking #注意按照实例格式编写数据 net<-mtc.network(data$data.ab) #网状图 plot(net,mode"circle",displaylabelsT,boxed.labelF) summary(net) #网状model model<-mtc…...

Reactor 第十篇 定制一个生产的WebClient

1 为什么要用 WebClient 刚开始尝试使用 Spring WebFlux 的时候&#xff0c;很多人都会使用 Mono.fromFuture() 将异步请求转成 Mono 对象&#xff0c;或者 Mono.fromSupplier() 将请求转成 MOno 对象&#xff0c;这两种方式在响应式编程中都是不建议的&#xff0c;都会阻塞当…...

桃子叶片病害识别(Python代码,pyTorch框架,深度卷积网络模型,很容易替换为其它模型,带有GUI识别界面)

1.分为三类 健康的桃子叶片 &#xff0c;251张 桃疮痂病一般&#xff0c;857张 桃疮痂病严重&#xff0c;770 张 2. GUI界面识别效果和predict.py识别效果如视频所示桃子叶片病害识别&#xff08;Python代码&#xff0c;pyTorch框架&#xff0c;深度卷积网络模型&#xff0…...

matlab使用教程(21)—求函数最值

1. 求函数最优值 1.1求一元函数的最小值 如果给定了一个一元数学函数&#xff0c;可以使用 fminbnd 函数求该函数在给定区间中的局部最小值。例如&#xff0c;请考虑 MATLAB 提供的 humps.m 函数。下图显示了 humps 的图。 x -1:.01:2; y humps(x); plot(x,y) xlabel(x)…...

Redis中 为什么Lua脚本可以保证原子性?

Redis中 为什么Lua脚本可以保证原子性&#xff1f;...

tda4 videnc-test-app: CONTINUOUS and STEPWISE FRAMEINTERVALS not supported

/* videnc-test-app */ https://git.ti.com/cgit/jacinto7_multimedia/ git clone https://git.ti.com/git/jacinto7_multimedia/videnc-test-app.git // 编译 ./autogen.sh ./configure --enable-maintainer-mode --buildi386-linux --hostaarch64-none-linux CC/home/share…...

[已解决] libGL error: MESA-LOADER: failed to open swrast

在新的服务器中配置好虚拟环境后&#xff0c;利用已有的预训练模型test后&#xff0c;可视化时遇到&#xff1a; libGL error: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /u…...

JVM及垃圾回收机制

文章目录 1、JVM组成&#xff1f;各部分作用&#xff1f;1.1 类加载器&#xff08;Class Loaders&#xff09;1.2 运行时数据区&#xff08;Runtime Data Area&#xff09;1.3 执行引擎&#xff08;Execution Engine&#xff09;1.4 本地方法接口&#xff08;Native Interface&…...

windows11不允许安装winpcap4.1.3

问题&#xff1a;下载安装包后在安装时显示与电脑系统不兼容&#xff0c;不能安装。 原因&#xff1a;winpcap是一个用于Windows操作系统的网络抓包库&#xff0c;有一些安全漏洞&#xff0c;存在被黑客攻击的风险。Windows11为了加强系统安全而禁用了这个库&#xff0c;因此不…...

matlab使用教程(23)—优化函数的参数

本博客向您介绍如何存储或访问向 MATLAB 复合函数&#xff08;如 fzero 或 integral&#xff09;传递的数学函数的额外参数。 MATLAB 复合函数基于某个值范围计算数学表达式。这些函数之所以称为复合函数是因为它们是接受函数句柄&#xff08;函数的指针&#xff09;作为输入…...

基于“互联网+ 服务供应链”的汽车道路救援系统对策分析

1。 建立“互联网服务供应链”背景下汽车道路救援系统 基于互联网的汽车道路救援&#xff0c;两级服务供应链结构是由服务提供商、服务 集成商和客户组成。“互联网服务供应链”背景下汽车道路救援系统组成&#xff0c; 它是一种 B2B2C 的形式&#xff0c;与前述传统汽车道路…...

浅谈泛在电力物联网在电力设备状态在线监测中的应用

安科瑞 华楠 摘要&#xff1a;随着信息化水平的不断发展&#xff0c;泛在电力物联网的建设提上日程&#xff0c;这对提升变电站电力设备在线监测水平&#xff0c;推动智能电网发展具有重要的指导意义。对基于物联网的电力设备状态监测系统进行了研究&#xff0c;概括了泛在电力…...

低通滤波器和高通滤波器

应用于图像低通滤波器和高通滤波器的实现 需要用到傅里叶变换 #include <opencv2/opencv.hpp> #include <Eigen> #include <iostream> #include <vector> #include <cmath> #include <complex>#define M_PI 3.14159265358979323846…...

VS中插入Qt插件后配置项目笔记

Project下要创建四个文件夹: bin(输出目录\工作目录) 、include(头文件目录) 、lib(动态库目录) 、src(源码目录) 一、主项目模块配置&#xff1a; 1.配置属性——>常规——>输出目录加入(..\..\bin\) 2.配置属性——>调试——>工作目录加入($(OutDir)) 备注&am…...

Hugo·Stack主题·使用及修改

代码折叠 cp themes/hugo折-themt-saick/exampleSlte/config.yamsclass"codefold"><summary class"codefold__title"><span class"codefold__title-text">" {{ with .Get 0}}{{.}}{{else}}click to expand{{ end }} "&…...

实战:大数据Spark简介与docker-compose搭建独立集群

文章目录 前言技术积累Spark简介Spark核心功能及优势Spark运行架构 Spark独立集群搭建安装docker和docker-composedocker-compose编排docker-compose编排并运行容器 Spark集群官方案例测试写在最后 前言 很多同学都使用过经典的大数据分布式计算框架hadoop&#xff0c;其分布式…...

嵌入性视角下的企业集成创新网络演化过程

从嵌入性角度来看&#xff0c;集成创新网络以社会关系嵌入或结构嵌入的联结方式&#xff0c;实 现创新资源共享。由于规模经济和能力的差异&#xff0c;较高的信息复杂程度往往更强调网 络化和外部组织之间的联合而不是一体化。企业集成创新网络依靠创新网络结点上 企业的合…...

回归预测 | MATLAB实现FA-ELM萤火虫算法优化极限学习机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现FA-ELM萤火虫算法优化极限学习机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现FA-ELM萤火虫算法优化极限学习机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本介绍…...

数据结构数组栈的实现

Hello&#xff0c;今天我们来实现一下数组栈&#xff0c;学完这个我们又更进一步了。 一、栈 栈的概念 栈是一种特殊的线性表&#xff0c;它只允许在固定的一端进行插入和删除元素的操作。 进行数据的插入和删除只在栈顶实现&#xff0c;另一端就是栈底。 栈的元素是后进先出。…...

成集云 | 抖店连接器客户静默下单催付数据同步钉钉 | 解决方案

源系统成集云目标系统 方案介绍 随着各品牌全渠道铺货&#xff0c;主播在平台上直播时客户下了订单后不能及时付款&#xff0c;第一时间客户收不到提醒&#xff0c;不仅造成了客户付款率下降&#xff0c;更大量消耗了企业的人力成本和经济。而成集云与钉钉深度合作&#xff0…...

【算法专题突破】双指针 - 复写零(2)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后&#xff1a; 1. 题目解析 题目链接&#xff1a;1089. 复写零 - 力扣&#xff08;Leetcode&#xff09; 我先来读题&#xff0c; 题目的意思非常的简单&#xff0c;其实就是&#xff0c; 遇到 0 就复制一个写进数组&a…...

【Java从0到1学习】11 Java集合框架

1. Collection 1.1 Java类中集合的关系图 1.2 集合类概述 在程序中可以通过数组来保存多个对象&#xff0c;但在某些情况下开发人员无法预先确定需要保存对象的个数&#xff0c;此时数组将不再适用&#xff0c;因为数组的长度不可变。例如&#xff0c;要保存一个学校的学生信…...

uniapp使用uni.chooseLocation()打开地图选择位置

使用uni.chooseLocation()打开地址选择位置&#xff1a; 在Uniapp源码视图进行设置 添加这个属性&#xff1a;"requiredPrivateInfos":["chooseLocation"] ​ </template><view class"location_box"><view class"locatio…...

学习笔记|课后练习解答|电磁炉LED实战|逻辑运算|STC32G单片机视频开发教程(冲哥)|第八集(下):课后练习分析与解答

文章目录 课后练习解答需求分解增加KEY3控制代码如下&#xff1a; 第一版代码问题分析Tips&#xff1a;STC-ISP的设置 Tips&#xff1a;定时器实现完整电磁炉显示功能的代码测试流程 总结 课后练习解答 增加按键3&#xff0c;按下后表示启动&#xff0c;选择的对应的功能的LED…...

前端高频面试题 js中堆和栈的区别和浏览器的垃圾回收机制

一、 栈(stack)和 堆(heap) 栈(stack)&#xff1a;是栈内存的简称&#xff0c;栈是自动分配相对固定大小的内存空间&#xff0c;并由系统自动释放&#xff0c;栈数据结构遵循FILO&#xff08;first in last out&#xff09;先进后出的原则&#xff0c;较为经典的就是乒乓球盒结…...

自然语言处理:大语言模型入门介绍

自然语言处理&#xff1a;大语言模型入门介绍 语言模型的历史演进大语言模型基础知识预训练Pre-traning微调Fine-Tuning指令微调Instruction Tuning对齐微调Alignment Tuning 提示Prompt上下文学习In-context Learning思维链Chain-of-thought提示开发&#xff08;调用ChatGPT的…...

使用秘籍|如何实现图数据库 NebulaGraph 的高效建模、快速导入、性能优化

本文整理自 NebulaGraph PD 方扬在「NebulaGraph x KubeBlocks」meetup 上的演讲&#xff0c;主要包括以下内容&#xff1a; NebulaGraph 3.x 发展历程NebulaGraph 最佳实践 建模篇导入篇查询篇 NebulaGraph 3.x 的发展历程 NebulaGraph 自 2019 年 5 月开源发布第一个 alp…...

对于pycharm 运行的时候不在cmd中运行,而是在python控制台运行的情况,如何处理?

对于pycharm 运行的时候不在cmd中运行&#xff0c;而是在python控制台运行的情况&#xff0c;如何处理&#xff1f; 比如&#xff0c;你在运行你的代码的时候 它总在python控制台运行&#xff0c;十分难受 解决方法 在pycharm中设置下即可&#xff0c;很简单 选择运行点击…...

Spring MVC 二 :基于xml配置

创建一个基于xml配置的Spring MVC项目。 Idea创建新项目&#xff0c;pom文件引入依赖&#xff1a; <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.12.RELEASE</version>…...

springboot aop方式实现接口入参校验

一、前言 在实际开发项目中&#xff0c;我们常常需要对接口入参进行校验&#xff0c;如果直接在业务代码中进行校验&#xff0c;则会显得代码非常冗余&#xff0c;也不够优雅&#xff0c;那么我们可以使用aop的方式校验&#xff0c;这样则会显得更优雅。 二、如何实现&#xf…...

解决git上传远程仓库时的大文件提交

在git中超过100M的文件会上传失败&#xff0c;而当一个文件超过50M时会给你警告&#xff0c;如下 warning: File XXXXXX is 51.42 MB; this is larger than GitHubs recommended maximum file size of 50.00 MB 解决这种问题&#xff0c;首先在项目的.git文件夹中找到.gitigno…...

HTML学习笔记02

HTML笔记02 页面结构分析 元素名描述header标题头部区域的内容&#xff08;用于页面或页面中的一块区域&#xff09;footer标记脚部区域的内容&#xff08;用于整个页面或页面的一块区域&#xff09;sectionWeb页面中的一块独立区域article独立的文章内容aside相关内容或应用…...

<C++> 内存管理

1.C/C内存分布 让我们先来看看下面这段代码 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] {1, 2, 3, 4};char char2[] "abcd";char *pChar3 "abcd";int *ptr1 (int *) mal…...

【Java】ByteBuffer类的arrayOffset方法详解+示例

arrayOffset功能详解;arrayOffset在position等于0和非0两种场景下的demo。使用类java.nio.ByteBuffer中的arrayOffset()方法可以获得这个缓冲区的第一个元素在底层支持(backing)数组中的偏移量。 如果这个buffer底层是由数组支持的,那么buffer的postion p对应于数组的index…...