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

LabVIEW实现TCP通信

目录

1、TCP通信原理

2、硬件环境部署

3、云端环境部署

4、TCP通信函数

5、程序架构

6、前面板设计

7、程序框图设计

8、测试验证


本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。

结合实际案例,展示如何利用LabVIEW和常用模块实现物联网系统的快速开发与原型设计,助你从基础到实战,全面掌握物联网开发技能。


开源免费LabVIEW学习专栏分享:

LabVIEW仪器控制专栏:https://blog.csdn.net/m0_38106923/category_11798471.html?spm=1001.2014.3001.5482

LabVIEW开发技巧专栏:https://blog.csdn.net/m0_38106923/category_11616435.html?spm=1001.2014.3001.5482

LabVIEW和单片机(Arduino)专栏:https://blog.csdn.net/m0_38106923/category_11828609.html?spm=1001.2014.3001.5482

LabVIEW工业图像处理与机器视觉实战专栏:https://blog.csdn.net/m0_38106923/category_10963783.html?spm=1001.2014.3001.5482

LabVIEW物联网开发实战专栏https://blog.csdn.net/m0_38106923/category_12839370.html?spm=1001.2014.3001.5482


在本节中,我们将简要探讨TCP通信的基础知识,并以工业物联网平台TLINK中的云端设备数据发布设计为例,详细阐述在互联网环境下TCP客户端应用程序设计的基本方法。

同时,我们还将介绍如何在TLINK平台上创建TCP设备、构造通信数据帧以及进行测试。

除此之外,我们将在TCP客户端应用程序设计框架的基础上,给出数据采集计算机与物联网云端设备之间通信程序实现的完整步骤,以及程序运行结果的测试方法。

本节的例子旨在为基于TCP的数据采集终端实现物联网云端数据发布功能的相关应用程序设计提供一些参考和借鉴。

项目资源下载:https://download.csdn.net/download/m0_38106923/90042637

1、TCP通信原理

TCP是一种基于连接、可靠且基于字节流的传输层通信协议。在数据交换之前,客户端和服务器会先建立TCP连接,以便相互传输数据。TCP还提供超时重发、丢弃重复数据、检验数据、流量控制等功能,确保数据能从一端顺利传至另一端。

TCP通信的主要优点是可靠和稳定。TCP在传递数据之前会进行"三次握手"以建立连接,并在数据传输过程中采用确认、窗口、重传和拥塞控制机制。数据传输完成后,TCP会断开连接,避免占用系统资源。

然而,TCP也存在传输速度慢、效率低、占用系统资源多以及易受攻击等缺点。TCP建立连接需要时间,数据传输过程中的确认机制、重传机制和拥塞控制机制也会消耗大量时间。此外,每台设备都需要维护所有传输连接,实际上每个连接都会占用系统的CPU和内存等资源。TCP的确认机制和三次握手机制使其容易受到DoS、DDoS、CC等攻击。

TCP通信适用于对网络通信质量有较高要求的场景,例如需要确保数据准确无误地传递给对方的应用,如HTTP、HTTPS、FTP等传输文件的协议,以及POP、SMTP等邮件传输协议。在物联网应用开发中,除了直接使用TCP通信,还常使用其应用层协议,如HTTP、MQTT协议等。

TCP的通信过程类似于打电话。一方负责监听特定号码的电话,另一方需要拨通这个号码与对方建立连接。双方都可以通过听筒(输入流)接收对方的信息,通过话筒(输出流)向对方发送信息,整个过程实现双工通信。"客户端-服务器"模式贯穿整个过程,程序设计需要编写客户端应用程序和服务器应用程序。

基于TCP编写通信软件时,整个传输过程如下:

  • 1. 服务器通过主机名或IP地址与端口号建立侦听,等待客户端连接。
  • 2. 客户端根据主机的主机名或IP地址和端口号发出连接请求。
  • 3. 服务器与客户端建立连接后,通过读写函数进行TCP数据通信。
  • 4. 关闭连接。

对应的TCP通信中的客户端与服务器工作基本流程如下图所示。

2、硬件环境部署

基于TCP的通信程序得设计,得保证电脑能连上网(不管是有线还是无线,方式不限)。

但是因为路由器的限制,普通的TCP通信程序只能在局域网里的电脑之间传数据。

而物联网很多时候是要在很大范围、很多平台上通信,这时候就可以用物联网平台做中介——数据采集系统把数据上传到物联网平台,其他终端再从物联网平台下载数据,这样就能实现物联网,达到数据交换、共享的目的。只要电脑能上网,能ping通远处的物联网服务器,就可以写基于TCP的数据通信程序了。

如下图,电脑用无线网卡通过本地热点连互联网,和TLINK物联网云平台建立连接。

这种组网方式,通过物联网云平台,可以让不同网段的终端互相通信。在这个例子中,电脑通过家用或办公室的路由器连互联网,就能访问TLINK物联网平台了。

3、云端环境部署

一般来说,TCP通信需要设计客户端和服务器两部分程序。

在物联网应用开发中,服务器部分的功能需求很多,一般程序员很难掌握。因此,大型物联网应用开发通常是多学科成员共同完成的项目,一个人很难进行系统级的开发。这也让许多非计算机专业的技术人员对大型复杂的物联网系统望而却步。

然而,近年来物联网开发平台的广泛应用,使得物联网系统开发模式发生了根本性的变化。通过物联网开发平台,可以将物联网应用系统中的服务器功能委托给平台,从而使应用系统开发更侧重于客户端开发。

这样,就可以实现基于系统集成思想的物联网应用的快速、高效开发,为非计算机专业人员快速入门物联网应用开发提供了新的思路。

在这个例子中,我们使用工业物联网平台TLINK创建了一个TCP虚拟设备,相关信息如下图所示。

此时,TLINK物联网开发平台相当于一个功能完备的服务器。通常,物联网应用开发只需要关注客户端采集状态数据、连接TLINK物联网平台并将采集的数据发布到物联网开发平台即可。

向TLINK物联网云平台上传测量数据的TCP通信程序实现的具体功能如下:

  • 使用随机数模拟2路数据的定时采集(采样速率可由用户控制)。
  • 将采集的数据封装为TLINK中自定义数据协议对应的数据包。
  • 在本机以多路信号波形图表的形式显示采集的数据。
  • 分别显示系统当前时间、数据采集时间以及最新采集的2路数据值。

利用TCP通信技术将采集数据传输至TLINK物联网平台,实现指定设备相关数据的更新。

4、TCP通信函数

在LabVIEW里,要找TCP通信的节点,你得去"函数→数据通信→协议→TCP"这个子选板找,就像下图这样。

TCP通信主要函数节点和VI及其功能如下表所示。

在进行LabVIEW的TCP通信程序设计时,我们至少需要3个节点,程序框图就像下图这样。

在实际应用中,你可以灵活地运用这3个节点,在轮询、事件响应、状态机等各种程序设计模式中实现TCP发送数据功能。

而接收TCP数据时,最少也需要用到“打开TCP连接”、“读取TCP数据”和“关闭TCP连接”这三个函数节点,再加上一个While循环结构。同时,接收TCP数据时,还需要根据接收节点的工作模式来设置接收字节数和超时参数。

在大多数场景下,TCP通信中的发送和接收数据是并行进行的。一个典型的TCP并行收发应用程序的框图如下所示。

5、程序架构

程序要实现模拟人工控制的数据采集,然后把数据上传到云端。用户只要点击“开始数据采集”按钮,程序就会按照用户设定的时间间隔不停地采集和上传数据。

当用户再次点击时,程序就会暂停采集和上传,如此反复。为了简化程序设计,我们采用了轮询设计模式——在While循环结构中,程序用条件结构检测前面板上的“启动数据采集”按钮的状态,以及“已用时间”节点的状态,然后根据检测结果进行相应处理。主要检测和处理的状态有:

  • “数据采集”按钮操作状态检测——这个按钮在“开始数据采集”和“暂停数据采集”之间切换,按钮的机械动作模式是“单击时转换”,当按钮状态为“真”时,采集数据并上传云端,否则什么都不做。
  • “已用时间”节点状态检测——检测是否达到了指定的目标时间,如果达到了,就开始进行数据采集和云端上传。
  • “停止”按钮操作状态检测——检测是否存在点击按钮导致其值发生变化的条件,如果满足条件,就退出程序。

为了让程序的人机交互效果更好,我们在循环事件处理结构的基础上,增加了顺序结构,把程序分成了两个顺序帧。第一个帧是程序初始化帧,用于完成程序运行前各种控件的初始化;第二个帧是主程序帧,也就是前面创建的循环事件处理程序结构,用于实时检测程序中的各种状态,并根据检测结果进行相应处理。

6、前面板设计

按照以下步骤来完成前面板控件设置:

步骤1:添加一个字符串类控件叫做“字符串控件”(控件→新式→字符串与路径→字符串控件),设置标签为“TLINKTCP服务器”。

步骤2:添加一个数值类控件叫做“数值输入控件”(控件→新式→数值→数值输入控件),设置标签为“远程端口”,数据类型选择U16(16位整数数据类型)。

步骤3:再次添加一个数值类控件叫做“数值输入控件”,设置标签为“本地端口”,数据类型选择U16。

步骤4:添加一个数值类控件叫做“数值输入控件”,设置标签为“采集间隔(s)”,数据类型选择U8。

步骤5:添加一个布尔类控件叫做“确定按钮”(控件→新式→布尔→确定按钮),设置标签为“采集按钮”,按钮显示文本为“启动数据采集”。

步骤6:添加一个布尔类控件叫做“停止按钮”(控件→新式→布尔→停止按钮),按钮标签和显示文本保持默认值。

步骤7:添加一个图形类控件叫做“波形图表”(控件→新式→图形→波形图表)。

步骤8:添加一个字符串类控件叫做“字符串显示控件”(控件→新式→字符串与路径→字符串显示控件),设置标签为“系统时间”。

步骤9:再次添加一个字符串类控件叫做“字符串显示控件”,设置标签为“采集时间”。

步骤10:添加一个字符串类控件叫做“字符串显示控件”,设置标签为“当前数据”。

然后调整各个控件的大小和位置,让操作界面看起来更和谐、友好。最后完成的程序前面板设计结果如下图所示。

7、程序框图设计

步骤1:做个两帧的顺序结构,第一帧是初始化帧。把第一帧的“子程序框图标签”改成“初始化”,这样程序框图就更好看了。

创建一个“采集按钮”的局部变量,设置成可写的,初始值是个布尔类型的“假”。(在前面的板子上右键点击这个按钮,选“机械动作→单击时转换”,让按钮变成单击时状态转换并保持的那种)。

然后在前面板子上右键点击“波形图表”,选“创建→属性节点→历史数据”,创建一个“波形图表”的属性节点,也是可写的,初始值是一个包含两个数值的簇。

这样波形图表在程序开始的时候就能清空画面了。

再创建几个字符串类控件“系统时间”、“采集时间”、“当前数据”的局部变量,初始值都设为空字符串,这样一开始运行的时候控件显示的内容就是空的。

接着,创建一个“采样间隔(s)”的数值类局部变量,初始值设为U8类型的2。然后是“本地端口”的数值类局部变量,初始值设为U16类型的8888。

再来是“远程端口”的数值类局部变量,初始值设为U16类型的8647。最后,创建一个“TLINKTCP服务器”的字符串类局部变量,初始值设为TLINK平台TCP服务器的域名“tcp.tlink.io”。

完成后的初始化帧程序子框图设计效果就像下图那样。

第二步:在顺序结构里,把第二帧的“子程序框图标签”改成“主程序”,这样能让程序框图更好懂。主程序就是“While循环结构+条件结构+移位寄存器”这种轮询式的整体结构,看下图就知道了。

在开始循环之前,我们用“打开TCP连接”节点(函数→数据通信→协议→TCP→打开TCP连接)来建立本机和物联网平台的连接。循环结束后,再用“关闭TCP连接”节点(函数→数据通信→协议→TCP→关闭TCP连接)来释放程序占用的资源。

步骤3:在“采集按钮”的连接条件里,搞定程序轮询状态,检查要不要开始采集数据,以及定时采集的条件达不达到。如果“采集数据”的条件是“真”,那就用属性节点把“采集按钮”的文本改成“暂停数据采集”。

为了能让用户指定时间间隔来采一次数据,我们用一下“已用时间”节点(函数→编程→定时→已用时间),然后看看它的输出端口“结束”状态。要是状态是“真”,那就说明定时条件满足了,可以开始采集数据并且上传到物联网云平台。具体的程序子框图,看下图就行了。

步骤4:在While循环结构里,添加一个“获取日期/时间字符串”节点(函数→编程→定时→获取日期/时间字符串),把“需要秒?”端口设为真。接着调用“连接字符串”节点,将“获取日期/时间字符串”节点输出的日期和时间字符串合并成一个带空格的完整字符串。

最后,把结果放到“系统时间”控件里,这样程序运行时就能显示当前时间信息了。对应的程序子框图如下图所示。

步骤5:当"已用时间"节点满足条件(2秒间隔时间到)时,开始数据采集。在对应的分支子框图中,我们通过生成随机数来模拟数据采集过程。

接着,我们调用"转换为无符号单字节整型"节点将模拟采集的数据转换为字节类型。然后,使用"创建数组"节点将采集到的两组数据封装成符合TLINK物联网平台创建TCP设备用户协议的数据帧。

之后,通过"字节数组至字符串转换"节点将封装好的数据帧转换为LabVIEW中的字符串类型通信数据。按照TLINK平台的规定,我们首先调用"写入TCP数据"节点发送拟连接的设备序列号,延时50ms后,再发送封装好的数据帧对应的通信字符串。这样就可以完成本地采集数据上传物联网平台的功能。

为了增强程序功能,我们用波形图表和数值显示控件来展示采集到的数据,同时用字符串显示控件显示采集数据的时间。这样方便我们后续与物联网平台接收到的数据进行比对。对应的程序子框图如下图所示。

步骤6:在节点“已用时间”连接的条件结构里,当满足“假”(也就是指定的间隔时间还没到)时,不启动数据采集。在这个分支子框图里,直接连接左右两边的TCP资源引用和错误信息传递,如下图所示。

步骤7:在按钮控件“采集按钮”连接的假分支子框图里,右键点击“采集按钮”,选择“创建→属性节点→布尔文本→文本”,新建一个属性节点。将这个节点设置为写入模式,并填入“启动数据采集”(这样当你再次点击按钮时,采集工作就会开始)。然后,直接连接左右两边的TCP资源引用和错误信息传递。对应的程序子框图就像下图这样。

步骤8:为了让应用程序更“优雅”地退出,除了使用While循环结构之外,我们还需要调用“关闭TCP连接”节点(函数→数据通信→协议→TCP→关闭TCP连接)来释放TCP通信占用的资源,同时调用“清除错误”节点(函数→编程→对话框与用户界面→清除错误)来简单、直接地清除程序执行过程中出现的错误。

这样,一个基于TCP通信技术的物联网平台采集数据上传程序就全部完成了。完整的程序框图如下所示。

8、测试验证

点击工具栏上的“运行”按钮,让程序功能接受检验。然后,按下“启动数据采集”按钮,你会看到数据每隔2秒钟被采集一次,波形图中展示了2路数据的波动,系统时间、采集时间以及当前数据都准确无误地呈现出来,就像下图所展示的那样。

此时,打开TLINK物联网平台用户账号对应的监控中心,您会看到本地采集的数据正如期上传至云端,如图所示(设备名为“sustei_TCP03”)

物联网平台上创建的TCP设备实时数据显示结果与本地采集数据完全一致,由此可见,传统互联网通信技术中的TCP通信在物联网应用中仍具有举足轻重的地位。利用LabVIEW,我们可以非常便捷地建立起与物联网云平台的TCP连接,从而实现本地采集数据的上载至物联网云平台。

项目资源下载:https://download.csdn.net/download/m0_38106923/90042637

相关文章:

LabVIEW实现TCP通信

目录 1、TCP通信原理 2、硬件环境部署 3、云端环境部署 4、TCP通信函数 5、程序架构 6、前面板设计 7、程序框图设计 8、测试验证 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合…...

Realtek网卡MAC刷新工具PG8168.exe Version:2.34.0.4使用说明

本刷新工具虽然文件名叫PG8168.EXE,但不是只有RTL8168可用,是这一个系列的产品都可以使用。实验证明RTL8111也可以使用。 用法: PG8168 [/h][/?][/b][/c HexOffsetHexValue][/d NICNumber][/l][/r][/w][/v] [/# NICNumber] [/nodeidHexNOD…...

【maven】配置下载私有仓库的快照版本

1、setting.xml配置 <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/SETTINGS/1.0.0https://maven.apache.org/xsd/settings-1.0.0.…...

基于pytorch使用仿真数据集来训练一个深度学习模型进行相位解包裹

使用 PyTorch 来训练一个深度学习模型进行相位解包裹是一种常见的方法。下面是一个详细的示例&#xff0c;展示如何生成仿真数据集并在 PyTorch 中训练模型。 1. 生成仿真数据集 首先&#xff0c;我们生成一些仿真数据集&#xff0c;包含多个包裹相位图和对应的解包裹相位图。…...

【排序算法】之快速排序篇

思想&#xff1a; 分而治之&#xff0c;通过选定某一个元素作为基准值&#xff0c;将序列分为两部分&#xff0c;左边的序列小于基准值&#xff0c;右边的序列大于基准值&#xff0c; 然后再分别将左序列和右序列进行递归排序&#xff0c;直至每部分有序。 性质&#xff1a;这…...

WebSocket

握手 1 客户端发起握手请求&#xff1a;客户端向服务器发送一个特殊的HTTP请求&#xff0c;其中包含一个Upgrade字段&#xff0c;表明客户端希望将该连接从HTTP协议升级为WebSocket协议。请求的关键部分包括&#xff1a; GET请求&#xff1a;客户端使用GET方法请求与WebSocket…...

适配器模式

适配器模式&#xff08;Adapter Pattern&#xff09;详解 定义 适配器模式是一种结构型设计模式&#xff0c;通过将一个类的接口转换为客户期望的另一个接口&#xff0c;使得原本接口不兼容的类可以一起工作。适配器模式又称“包装器&#xff08;Wrapper&#xff09;”。 适配…...

Jmeter最新详细安装及修改中文教程(附安装包)

目录 初识&#xff1a;Jmeter 一、下载&#xff1a;Jmeter 二、安装前必要的配置 1.桌面点击菜单栏搜索【cmd】&#xff0c;然后打开命令提示符 2.输入java -version命令 三、安装&#xff1a;Jmeter 1.首先在D盘创建【Jmeter】文件夹&#xff0c;把下载的【Jmeter】压缩…...

Java 语言的起源发展与基本概念(JDK,JRE,JVM)

Java语言的起源 源起 Java语言最初是由Sun Microsystems公司&#xff08;该公司于2009年被Oracle公司收购&#xff09;开发的一种编程语言。其创造者是詹姆斯高斯林&#xff08;James Gosling&#xff09;&#xff0c;他是一位加拿大计算机科学家。其前身名为Oak&#xff08;橡…...

利用dockerCompose一键部署前后端分离项目

1.Docker Compose介绍 2.将自己准备好的docker-compose.yml文件上传到宿主机 3.查看docker-compose.yml文件 宿主机的文件内容可参考&#xff1a; 项目部署-通过docker手动部署前后端分离项目&#xff08;全网超级详细 的教程&#xff09;-CSDN博客 修改宿主机的nginx.conf …...

redis大key和热key

redis中大key、热key 什么是大key大key可能产生的原因大key可能会造成什么影响如何检测大key如何优化删除大key时可能的问题删除大key的策略 热key热key可能导致的问题解决热key的方法 什么是大key 大key通常是指占用内存空间过大或包含大量元素的键值对。 数据量大&#xff…...

在 Linux 系统中根据pid查找软件位置

在 Linux 系统中,如果您知道一个进程的 PID(进程标识符),并且想要找到该进程对应的可执行文件的位置,可以使用以下几种方法: 方法一:使用 ps 命令 ps 命令可以显示进程的详细信息,包括可执行文件的路径。假设您的 PID 是 1234,可以使用以下命令: ps -p 1234 -o co…...

Python开发环境搭建+conda管理环境

下载Miniconda 推荐从清华镜像下载安装包 Index of /anaconda/miniconda/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 打开网页后&#xff0c;下拉到最后找到Miniconda3-latest前缀的文件&#xff0c;或者网页中直接搜索Miniconda3-latest&#xff0c;都可以找…...

Java 8新特性详解与实战

目录 引言 1. Lambda 表达式&#xff08;Lambda Expressions&#xff09; 2. 函数式接口&#xff08;Functional Interfaces&#xff09; 3. 流 API&#xff08;Stream API&#xff09; 4. 默认方法&#xff08;Default Methods&#xff09; 5. Optional 类 6. 新的时间日…...

K8s内存溢出问题剖析:排查与解决方案

文章目录 一、背景二、排查方案&#xff1a;1. 可能是数据量超出了限制的大小&#xff0c;检查数据目录大小2. 查看是否是内存溢出2.1 排查数据量&#xff08;查看数据目录大小是否超过limit限制&#xff09;2.2 查看pod详情发现问题 三、解决过程 一、背景 做redis压测过程中…...

Network Link Conditioner Mac 上模拟网络环境工具的安装和使用

前言 Xcode 的模拟器本身是不支持模拟网络环境的&#xff0c;在开发界面的时候&#xff0c;设计会出无网、弱网这种情况的设计图&#xff0c;为了方便在开发过程中实现这些情况的代码逻辑&#xff0c;Network Link Conditioner 就是模拟网络环境的好帮手。 安装 Network Lin…...

SeggisV1.0 遥感影像分割软件【源代码】讲解

在此基础上进行二次开发&#xff0c;开发自己的软件&#xff0c;例如&#xff1a;【1】无人机及个人私有影像识别【2】离线使用【3】变化监测模型集成【4】个人私有分割模型集成等等&#xff0c;不管是您用来个人学习 还是公司研发需求&#xff0c;都相当合适&#xff0c;包您满…...

电子应用设计方案-27:智能淋浴系统方案设计

智能淋浴系统方案设计 一、系统概述 本智能淋浴系统旨在为用户提供舒适、便捷、个性化的淋浴体验&#xff0c;通过集成多种智能技术&#xff0c;实现水温、水流、淋浴模式的精准控制以及与其他智能家居设备的联动。 二、系统组成 1. 喷头及淋浴杆 - 采用可调节角度和高度的设计…...

旋转图像(java)

题目描述&#xff1a; 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 代码思路&#xff1a; class Solution {public void ro…...

单片机知识总结(完整)

1、单片机概述 1.1. 单片机的定义与分类 定义&#xff1a; 单片机&#xff08;Microcontroller Unit&#xff0c;简称MCU&#xff09;是一种将微处理器、存储器&#xff08;包括程序存储器和数据存储器&#xff09;、输入/输出接口和其他必要的功能模块集成在单个芯片上的微型…...

蓝桥杯备赛笔记(一)

这里的笔记是关于蓝桥杯关键知识点的记录&#xff0c;有别于基础语法&#xff0c;很多内容只要求会用就行&#xff0c;无需深入掌握。 文章目录 前言一、编程基础1.1 C基础格式和版本选择1.2 输入输出cin和cout&#xff1a; 1.3 string以下是字符串的一些简介&#xff1a;字符串…...

Spring Boot【四】

单例bean中使用多例bean 1.lookup-method方式实现 当serviceB中调用getServiceA的时候&#xff0c;系统自动将这个方法拦截&#xff0c;然后去spring容器中查找对应的serviceA对象然后返回 2.replaced-method&#xff1a;方法替换 我们可以对serviceB这个bean中的getServiceA…...

linux基础1

声明&#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&#…...

DAMODEL丹摩|部署FLUX.1+ComfyUI实战教程

本文仅做测评体验&#xff0c;非广告。 文章目录 1. FLUX.1简介2. 实战2. 1 创建资源2. 1 ComfyUI的部署操作2. 3 部署FLUX.1 3. 测试5. 释放资源4. 结语 1. FLUX.1简介 FLUX.1是由黑森林实验室&#xff08;Black Forest Labs&#xff09;开发的开源AI图像生成模型。它拥有12…...

Python语法基础(三)

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 我们这篇文章来说一下函数的返回值和匿名函数 函数的返回值 我们先来看下面的这一段函数的定义代码 # 1、返回值的意义 def func1():print(111111111------start)num166print…...

计算分数的浮点数值

计算分数的浮点数值 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 两个整数a和b分别作为分子和分母&#xff0c;既分数 a/b &#xff0c;求它的浮点数值&#xff08;双精度浮点数&#xff0c;保留小数点…...

Staircase mesh” 和 Conformal mesh区别

一、Staircase Mesh&#xff08;阶梯状网格&#xff09; 1.1 含义 阶梯状网格就像是用一个个小方块或者矩形拼接起来的网格。在对几何形状进行划分网格时&#xff0c;它会以一种比较简单直接的方式&#xff0c;使得网格边界呈现出像楼梯台阶一样的形状。比如在模拟一个圆形物体…...

探索未来工业的核心:数字孪生技术深度解析

经过数十年的发展&#xff0c;建模和模拟已成为工程和科学的基石。人们针对改进建模的计算方法进行了大量的研究和开发工作。这些计算机模型对系统设计非常有用&#xff0c;可以削减实验和测试的高昂成本。然而在实操中&#xff0c;还需要跟踪系统随时间的演变情况&#xff0c;…...

dns 服务器简单介绍

dns 服务器分类&#xff1a; 根域名服务器顶级域名服务器权威域名服务器本地域名服务器 dns 的查询过程 国内优秀公共域名 腾讯&#xff1a;DNSPod-免费智能DNS解析服务商-电信_网通_教育网,智能DNS-烟台帝思普网络科技有限公司 119.29.29.29 和 182.254.118.118 阿里&#xf…...

SQL基础入门——C++与SQL连接实践

在开发中&#xff0c;C与SQL数据库的连接和交互是非常常见的需求。通过将C与SQL数据库连接起来&#xff0c;我们可以轻松地执行数据存取、查询、更新等操作。C与数据库的集成通常依赖于数据库的连接器或驱动程序&#xff0c;本章节将详细讲解如何在C中使用MySQL Connector与SQL…...

对max_seq_length参数的理解,基于open-instruct框架:中英文解释

使用open-instruct (https://github.com/allenai/open-instruct )框架&#xff0c;对其中的max_seq_length参数的理解记录下来。 bash脚本内容如下&#xff1a; # 设置模型和训练参数 MODEL_NAMEgoogle/gemma-2-2b MACHINE_RANK0 MAIN_PROCESS_IP127.0.0.1 MAIN_PROCESS_PORT2…...

似然分布(Likelihood Distribution)和似然函数(Likelihood Function)有什么区别?中英双语

中文版 在统计学中&#xff0c;似然分布&#xff08;Likelihood Distribution&#xff09;和似然函数&#xff08;Likelihood Function&#xff09;是两个相关但有所不同的概念。它们都涉及给定参数的情况下&#xff0c;数据出现的概率&#xff0c;但是它们的使用方式和含义有…...

LINUX2.4.x网络安全框架

在分析LINUX2.4.x网络安全的实现之前先简介一下它里面包括的几个重要概念&#xff1a;netfilter、iptables、match、target、nf_sockopt_ops、网络安全功能点的实现。详解会在后面的分析中讲到。 首先是netfilter&#xff0c;它定义了协议栈中的检查点和在检查点上引用的数据结…...

Python毕业设计选题:基于django+vue的智能停车系统的设计与实现

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 车主管理 车辆信息管理 车位信息管理 车位类型管理 系统…...

AI界的信仰危机:单靠“规模化”智能增长的假设,正在面临挑战

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

JMeter 并发策略-针对准点秒杀场景的压测实现

一、场景的压测实现 1&#xff0c;创建线程组&#xff0c;10并发用户执行5次&#xff1b; 2&#xff0c;创建 Synchronizing Timer 元件,用于同步线程&#xff0c;设置同步元件 Synchronizing Timer 3&#xff0c;创建 http 请求4&#xff0c;创建 view results in table 元件…...

【如何提升代码工程质量】code review篇

应该对于基本上所有软件相关的公司来说&#xff0c;都有committer机制&#xff0c;即代码写好之后会提交合并请求&#xff0c;待相关人员code review通过后再进行合入&#xff0c;所以code review就是代码合入代码仓库的最后一道关卡&#xff0c;对于代码质量的影响也是不容忽视…...

1041.困于环中的机器人

题目&#xff1a; 解题思路; 由于机器人会一直重复指令&#xff0c;存在重复多次指令才回到原点的情况&#xff0c;需要对不同情况经行分析。 当执行一次指令后回到原点&#xff0c;则机器人永远无法回到原点。当执行一次指令后不回到原点&#xff0c;只有方向向北的无法在多次…...

Python实现IP代理池

文章目录 Python实现IP代理池一、引言二、步骤一&#xff1a;获取代理IP1、第一步&#xff1a;爬取代理IP2、第二步&#xff1a;验证代理IP的有效性 三、步骤二&#xff1a;构建IP代理池四、使用示例1、完整的使用示例2、注意事项3、处理网络问题 五、总结 Python实现IP代理池 …...

【Linux网络编程】第二弹---Socket编程入门指南:从IP、端口号到传输层协议及编程接口全解析

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【Linux网络编程】 目录 1、Socket 编程预备 1.1、理解源 IP 和目的 IP 1.2、认识端口号 1.2.1、端口号范围划分 1.2.2、理解 &q…...

【机器学习】机器学习学习笔记 - 监督学习 - 多项式回归决策树回归 - 03

多项式回归 解决线性回归的准备性不足问题(线性回归只能是直线&#xff0c;多项式回归引入多项式可以是曲线)通过对预测值进行多项式转换, 使得回归模型可以是非线性的多项式回归的优点是可以处理非线性的数据多项式回归的缺点是它对数据进行了多项式转换 加菲工具&#xff0…...

篡改猴(Tampermonkey)使用指南:为您的浏览器增添超级能力

篡改猴&#xff08;Tampermonkey&#xff09;使用指南&#xff1a;为您的浏览器增添超级能力 篡改猴&#xff08;Tampermonkey&#xff09; 是一款流行的用户脚本管理工具&#xff0c;可以在浏览器中安装和运行用户脚本&#xff0c;从而增强或自定义网页的功能。无论是去广告、…...

23省赛区块链应用与维护(房屋租凭【下】)

23省赛区块链应用与维护(房屋租凭) 背景描述 随着异地务工人员的增多,房屋租赁成为一个广阔市场。目前,现有技术中的房屋租赁是由房主发布租赁信息,租赁信息发布在房屋中介或租赁软件,租客获取租赁信息后,现场看房,并签订纸质的房屋租赁合同,房屋租赁费用通过中介或…...

Java中三种常用布局方式

引言 在Java Swing和JavaFX中&#xff0c;布局管理器&#xff08;Layout Managers&#xff09;用于控制组件&#xff08;如按钮、文本框等&#xff09;在容器&#xff08;如窗口、面板等&#xff09;内的位置和大小。下面介绍Java Swing中常用的三种布局方式&#xff1a; 1. Fl…...

06_数据类型

数据类型 数据类型分类 JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(ES6 又新增了第七种 Symbol 类型的值和第八种 BigInt类型,当前课程暂不涉及) 据类型分类 原始类型(基础类型) var age = 20, var name = 尚学堂"; var le…...

及时+准确|主动元数据平台在监管报送场景中的应用实践

面对海量的数据报送需求和日益严格的监管要求&#xff0c;如何实现监管报送的全链路自动化数据质量保障&#xff0c;是金融机构亟待解决的重要课题。本文旨在介绍一种全新的监管报送场景方案&#xff0c;帮助金融机构通过“一键溯源与口径自动盘点、指标同源自动化分析、全链路…...

[python脚本处理文件入门]-18.使用Python进行PDF文件的合并与拆分

哈喽,大家好,我是木头左! Python PDF处理库概览 1. PyPDF2 PyPDF2是一个纯Python编写的库,用于PDF文件的读写和操作。它提供了丰富的功能,包括PDF文件的合并、拆分、加密、解密等。PyPDF2的安装非常简单,只需通过pip即可安装: pip install PyPDF2安装完成后,你就可以…...

4、常量和进制转换

1、常量 1.1、常量 常量是在程序运行中值不能内改变&#xff08;常数&#xff09;。 整型:12 55 实型:21.5 字符型常量: ‘A’ 1.2、常量不同进制表示 常量数据在计算机中除了用 十进制 表示&#xff0c;还可以用 二进制、八进制、十六进制表示。 十进制数据&…...

C++:探索哈希表秘密之哈希桶实现哈希

文章目录 前言一、链地址法概念二、哈希表扩容三、哈希桶插入逻辑四、析构函数五、删除逻辑六、查找七、链地址法代码实现总结 前言 前面我们用开放定址法代码实现了哈希表&#xff1a; C&#xff1a;揭秘哈希&#xff1a;提升查找效率的终极技巧_1 对于开放定址法来说&#…...

java函数式编程和Lambda表达式

https://www.bilibili.com/video/BV1fz421C7tj?spm_id_from333.788.videopod.episodes&vd_source12d5954938d20d50645e227a6a728c76 如果一个接口中只有一个方法&#xff0c;那么就可以函数对象化&#xff1a; interface Add {int add(int a, int b);}Add add (a, b) -&…...