TDengine 语言连接器(Node.js)
简介
@tdengine/websocket
是 TDengine 的官方 Node.js 语言连接器。Node.js 开发人员可以通过它开发存取 TDengine 数据库的应用软件。
Node.js 连接器源码托管在 GitHub。
Node.js 版本兼容性
支持 Node.js 14 及以上版本。
支持的平台
支持所有能运行 Node.js 的平台。
版本历史
Node.js 连接器 版本 | 主要变化 | TDengine 版本 |
---|---|---|
3.1.5 | 密码支持特殊字符 | - |
3.1.4 | 修改 readme | - |
3.1.3 | 升级了 es5-ext 版本,解决低版本的漏洞 | - |
3.1.2 | 对数据协议和解析进行了优化,性能得到大幅提升 | - |
3.1.1 | 优化了数据传输性能 | 3.3.2.0 及更高版本 |
3.1.0 | 新版本发布,支持 WebSocket 连接 | 3.2.0.0 及更高版本 |
处理异常
在调用连接器 api 报错后,通过 try catch 可以获取到错误的信息和错误码。
错误说明:Node.js 连接器错误码在 100 到 110 之间,之外的错误为 TDengine 其他功能模块的报错。
具体的连接器错误码请参考:
Error Code | Description | Suggested Actions |
---|---|---|
100 | invalid variables | 参数不合法,请检查相应接口规范,调整参数类型及大小。 |
101 | invalid url | url 错误,请检查 url 是否填写正确。 |
102 | received server data but did not find a callback for processing | 接收到服务端数据但没有找到上层回调 |
103 | invalid message type | 接收到的消息类型无法识别,请检查服务端是否正常。 |
104 | connection creation failed | 连接创建失败,请检查网络是否正常。 |
105 | websocket request timeout | 请求超时 |
106 | authentication fail | 认证失败,请检查用户名,密码是否正确。 |
107 | unknown sql type in tdengine | 请检查 TDengine 支持的 Data Type 类型。 |
108 | connection has been closed | 连接已经关闭,请检查 Connection 是否关闭后再次使用,或是连接是否正常。 |
109 | fetch block data parse fail | 获取到的查询数据,解析失败 |
110 | websocket connection has reached its maximum limit | WebSocket 连接达到上限 |
- TDengine Node.js Connector Error Code
- TDengine 其他功能模块的报错,请参考 错误码
数据类型映射
下表为 TDengine DataType 和 Node.js DataType 之间的映射关系
TDengine DataType | Node.js DataType |
---|---|
TIMESTAMP | bigint |
TINYINT | number |
SMALLINT | number |
INT | number |
BIGINT | bigint |
TINYINT UNSIGNED | number |
SMALLINT UNSIGNED | number |
INT UNSIGNED | number |
BIGINT UNSIGNED | bigint |
FLOAT | number |
DOUBLE | number |
BOOL | boolean |
BINARY | string |
NCHAR | string |
JSON | string |
VARBINARY | ArrayBuffer |
GEOMETRY | ArrayBuffer |
注意:JSON 类型仅在 tag 中支持。
更多示例程序
示例程序 | 示例程序描述 |
---|---|
sql_example | 基本的使用如如建立连接,执行 SQL 等操作。 |
stmt_example | 绑定参数插入的示例。 |
line_example | 行协议写入示例。 |
tmq_example | 订阅的使用示例。 |
all_type_query | 支持全部类型示例。 |
all_type_stmt | 参数绑定支持全部类型示例。 |
使用限制
- Node.js 连接器(
@tdengine/websocket
)支持 Node.js 14 以上版本,低于 14 的版本可能存在包兼容性的问题。 - 目前只支持 WebSocket 连接,需要提前启动 taosAdapter
- 使用连接器结束后,需要调用 taos.connectorDestroy(); 释放连接器资源。
常见问题
-
“Unable to establish connection” 或 “Unable to resolve FQDN”
原因:一般都是因为配置 FQDN 不正确。可以参考 如何彻底搞懂 TDengine 的 FQDN 。
API 参考
Node.js 连接器(@tdengine/websocket
), 其通过 taosAdapter 提供的 WebSocket 接口连接 TDengine 实例。
URL 规范
[+<protocol>]://[[<username>:<password>@]<host>:<port>][/<database>][?<p1>=<v1>[&<p2>=<v2>]]
|------------|---|-----------|-----------|------|------|------------|-----------------------|
| protocol | | username | password | host | port | database | params |
-
protocol:使用 websocket 协议建立连接。例如
ws://localhost:6041
-
username/password:数据库的用户名和密码。
-
host/port:主机地址和端口号。例如
localhost:6041
-
database:数据库名称。
-
params:其他参数。例如 token。
-
完整 URL 示例:
ws://root:taosdata@localhost:6041
WSConfig
除了通过指定的 URL 获取连接,还可以使用 WSConfig 指定建立连接时的参数。
const taos = require("@tdengine/websocket");async function createConnect() {try {let url = 'ws://127.0.0.1:6041'let conf = new taos.WSConfig(url)conf.setUser('root')conf.setPwd('taosdata')conf.setDb('db')conf.setTimeOut(500)let wsSql = await taos.sqlConnect(conf)} catch (e) {console.error(e);}
}
WSConfig 中的配置如下:
- setUrl(url string) 设置 taosAdapter 连接地址 url,详见上文 URL 规范。
- setUser(user: string) 设置数据库用户名。
- setPwd(pws:string) 设置数据库密码。
- setDb(db: string) 设置数据库名称。
- setTimeOut(ms : number) 设置连接超时,单位毫秒。
- setToken(token: string) 设置 taosAdapter 认证 token。
连接功能
static async open(wsConfig:WSConfig):Promise<WsSql>
- 接口说明:建立 taosAdapter 连接。
- 参数说明:
wsConfig
:连接配置,详见上文 WSConfig 章节。
- 返回值:连接对象。
- 异常:连接失败抛出
TDWebSocketClientError
异常。
destroyed()
- 接口说明:释放销毁资源。
- 异常:连接失败抛出
TDWebSocketClientError
异常。
获取 taosc 版本号
async version(): Promise<string>
- 接口说明:获取 taosc 客户端版本。
- 返回值:taosc 客户端版本号。
- 异常:连接失败抛出
TDWebSocketClientError
异常。
执行 SQL
async exec(sql: string, reqId?: number): Promise<TaosResult>
- 接口说明:执行 sql 语句。
- 参数说明:
sql
:待执行的 sql 语句。reqId
:请求 id 非必填,用于问题追踪。
- 返回值:执行结果
TaosResult {affectRows: number, 影响的条数timing: number, 执行时长totalTime: number, 响应总时长 }
- 异常:连接失败抛出
TDWebSocketClientError
异常。
async query(sql: string, reqId?:number): Promise<WSRows>
- 接口说明:查询数据。
- 参数说明:
sql
:待执行的查询 sql 语句。reqId
:请求 id 非必填,用于问题追踪。
- 返回值:WSRows 数据集对象。
- 异常:连接失败抛出
TDWebSocketClientError
异常。
数据集
getMeta():Array<TDengineMeta> | null
- 接口说明:获取查询结果的列的数量、类型和长度。
- 返回值:TDengineMeta 数据对象数组。
export interface TDengineMeta {name: string,type: string,length: number, }
async next(): Promise<boolean>
- 接口说明:将游标从当前位置向后移动一行。用于遍历查询结果集。
- 返回值:如果新的当前行有效,则返回 true;如果结果集中没有更多行,则返回 false。
- 异常:连接失败抛出
TDWebSocketClientError
异常。
getData(): Array<any>
- 接口说明:返回查询的一行数据。
- 返回值:返回查询的一行数据,此接口需要搭配 next 接口一起使用。
async close():Promise<void>
- 接口说明:数据读取完成后,释放结果集。
- 异常:连接失败抛出
TDWebSocketClientError
异常。
无模式写入
async schemalessInsert(lines: Array<string>, protocol: SchemalessProto, precision: Precision, ttl: number, reqId?: number): Promise<void>
- 接口说明:无模式写入。
- 参数说明:
lines
:待写入的数据数组,无模式具体的数据格式可参考Schemaless 写入
。protocol
:协议类型SchemalessProto.InfluxDBLineProtocol
:InfluxDB 行协议(Line Protocol)。SchemalessProto.OpenTSDBTelnetLineProtocol
:OpenTSDB 文本行协议。SchemalessProto.OpenTSDBJsonFormatProtocol
:JSON 协议格式。
precision
:时间精度Precision.HOURS
:小时Precision.MINUTES
:分钟Precision.SECONDS
:秒Precision.MILLI_SECONDS
:毫秒Precision.MICRO_SECONDS
:微秒Precision.NANO_SECONDS
:纳秒
ttl
:表过期时间,单位天。reqId
:用于问题追踪,可选。
- 异常:连接失败抛出
TaosResultError
异常。
参数绑定
async stmtInit(reqId?:number): Promise<WsStmt>
- 接口说明 使用 WsSql 对象创建 stmt 对象。
- 参数说明:
reqId
:请求 id 非必填,用于问题追踪。
- 返回值:stmt 对象。
- 异常:连接失败抛出
TDWebSocketClientError
异常。
async prepare(sql: string): Promise<void>
- 接口说明 绑定预编译 sql 语句。
- 参数说明:
sql
:预编译的 SQL 语句。
- 异常:连接失败抛出
TDWebSocketClientError
异常。
async setTableName(tableName: string): Promise<void>
- 接口说明 设置将要写入数据的表名。
- 参数说明:
tableName
:表名,如果需要指定数据库,例如:db_name.table_name
即可。
- 异常:连接失败抛出
TDWebSocketClientError
异常。
通过 StmtBindParams 对象设置绑定数据。
setBoolean(params :any[])
- 接口说明 设置布尔值。
- 参数说明:
params
:布尔类型列表。
- 异常:连接失败抛出
TDWebSocketClientError
异常。
- 下面接口除了要设置的值类型不同外,其余同 setBoolean:
setTinyInt(params :any[])
setUTinyInt(params :any[])
setSmallInt(params :any[])
setUSmallInt(params :any[])
setInt(params :any[])
setUInt(params :any[])
setBigint(params :any[])
setUBigint(params :any[])
setFloat(params :any[])
setDouble(params :any[])
setVarchar(params :any[])
setBinary(params :any[])
setNchar(params :any[])
setJson(params :any[])
setVarBinary(params :any[])
setGeometry(params :any[])
setTimestamp(params :any[])
async setTags(paramsArray:StmtBindParams): Promise<void>
- 接口说明 设置表 Tags 数据,用于自动建表。
- 参数说明:
paramsArray
:Tags 数据。
- 异常:连接失败抛出
TDWebSocketClientError
异常。
async bind(paramsArray:StmtBindParams): Promise<void>
- 接口说明 绑定数据。
- 参数说明:
paramsArray
:绑定数据。
- 异常:连接失败抛出
TDWebSocketClientError
异常。
async batch(): Promise<void>
- 接口说明 提交绑定数据。
- 异常:连接失败抛出
TDWebSocketClientError
异常。
async exec(): Promise<void>
- 接口说明 执行将绑定的数据全部写入。
- 异常:连接失败抛出
TDWebSocketClientError
异常。
getLastAffected()
- 接口说明 获取写入条数。
- 返回值:写入条数。
async close(): Promise<void>
- 接口说明 关闭 stmt 对象。
- 异常:连接失败抛出
TDWebSocketClientError
异常。
数据订阅
- 创建消费者支持属性列表:
- taos.TMQConstants.CONNECT_USER:用户名。
- taos.TMQConstants.CONNECT_PASS:密码。
- taos.TMQConstants.GROUP_ID:所在的 group。
- taos.TMQConstants.CLIENT_ID:客户端 id。
- taos.TMQConstants.WS_URL:taosAdapter 的 url 地址。
- taos.TMQConstants.AUTO_OFFSET_RESET:来确定消费位置为最新数据(latest)还是包含旧数据(earliest)。
- taos.TMQConstants.ENABLE_AUTO_COMMIT:是否允许自动提交。
- taos.TMQConstants.AUTO_COMMIT_INTERVAL_MS:自动提交间隔。
- taos.TMQConstants.CONNECT_MESSAGE_TIMEOUT:数据传输超时参数,单位 ms,默认为 10000 ms。
static async newConsumer(wsConfig:Map<string, any>):Promise<WsConsumer>
- 接口说明 消费者构造函数。
- 参数说明:
wsConfig
:创建消费者属性配置。
- 返回值:WsConsumer 消费者对象。
- 异常:如果在执行过程中出现异常,抛出
TDWebSocketClientError
错误。
async subscribe(topics: Array<string>, reqId?:number): Promise<void>
- 接口说明 订阅一组主题。
- 参数说明:
topics
:订阅的主题列表。reqId
:请求 id 非必填,用于问题追踪。
- 异常:失败抛出
TDWebSocketClientError
异常。
async unsubscribe(reqId?:number): Promise<void>
- 接口说明 取消订阅。
- 参数说明:
reqId
:请求 id 非必填,用于问题追踪。
- 异常:失败抛出
TDWebSocketClientError
异常。
async poll(timeoutMs: number, reqId?:number):Promise<Map<string, TaosResult>>
- 接口说明 轮询消息。
- 参数说明:
timeoutMs
:表示轮询的超时时间,单位毫秒。reqId
:请求 id 非必填,用于问题追踪。
- 返回值:
Map<string, TaosResult>
每个主题对应的数据。 - 异常:失败抛出
TDWebSocketClientError
异常。
async subscription(reqId?:number):Promise<Array<string>>
- 接口说明 获取当前订阅的所有主题。
- 参数说明:
reqId
:请求 id 非必填,用于问题追踪。
- 返回值:
Array<string>
主题列表。 - 异常:失败抛出
TDWebSocketClientError
异常。
async commit(reqId?:number):Promise<Array<TopicPartition>>
- 接口说明 提交当前处理的消息的偏移量。
- 参数说明:
reqId
:请求 id 非必填,用于问题追踪。
- 返回值:
Array<TopicPartition>
每个主题的消费进度。 - 异常:失败抛出
TDWebSocketClientError
异常。
async committed(partitions:Array<TopicPartition>, reqId?:number):Promise<Array<TopicPartition>>
- 接口说明:获取一组分区最后提交的偏移量。
- 参数说明:
partitions
:一个Array<TopicPartition>
类型的参数,表示要查询的分区集合。reqId
:请求 id 非必填,用于问题追踪。
- 返回值:
Array<TopicPartition>
,即一组分区最后提交的偏移量。 - 异常:如果在获取提交的偏移量过程中发生错误,将抛出
TDWebSocketClientError
异常。
async seek(partition:TopicPartition, reqId?:number):Promise<void>
- 接口说明:将给定分区的偏移量设置到指定的位置。
- 参数说明:
partition
:一个TopicPartition
类型的参数,表示要操作的分区和要设置的偏移量。reqId
:请求 id 非必填,用于问题追踪。
- 异常:如果在设置偏移量过程中发生错误,将抛出
TDWebSocketClientError
异常。
async positions(partitions:Array<TopicPartition>, reqId?:number):Promise<Array<TopicPartition>>
- 接口说明:获取给定分区当前的偏移量。
- 参数说明:
partitions
:一个TopicPartition
类型的参数,表示要查询的分区。reqId
:请求 id 非必填,用于问题追踪。
- 返回值:
Array<TopicPartition>
,即一组分区最后提交的偏移量。 - 异常:如果在获取偏移量过程中发生错误,将抛出
TDWebSocketClientError
异常。
async seekToBeginning(partitions:Array<TopicPartition>):Promise<void>
- 接口说明:将一组分区的偏移量设置到最早的偏移量。
- 参数说明:
partitions
:一个Array<TopicPartition>
类型的参数,表示要操作的分区集合。
- 异常:如果在设置偏移量过程中发生错误,将抛出
TDWebSocketClientError
异常。
async seekToEnd(partitions:Array<TopicPartition>):Promise<void>
- 接口说明:将一组分区的偏移量设置到最新的偏移量。
- 参数说明:
partitions
:一个Array<TopicPartition>
类型的参数,表示要操作的分区集合。
- 异常:如果在设置偏移量过程中发生错误,将抛出
TDWebSocketClientError
异常。
async assignment(topics?:string[]):Promise<Array<TopicPartition>>
- 接口说明:获取消费者当前分配的指定的分区或所有分区。
- 参数说明:
topics
:需要获取的分区(非必填),不填表示获取全部的分区
- 返回值:返回值类型为
Array<TopicPartition>
,即消费者当前分配的所有分区。 - 异常:如果在获取分配的分区过程中发生错误,将抛出
TDWebSocketClientError
异常。
async close():Promise<void>
- 接口说明:关闭 tmq 连接。
- 异常:操作失败抛出
TDWebSocketClientError
异常。
访问官网
更多内容欢迎访问 TDengine 官网
相关文章:
TDengine 语言连接器(Node.js)
简介 tdengine/websocket 是 TDengine 的官方 Node.js 语言连接器。Node.js 开发人员可以通过它开发存取 TDengine 数据库的应用软件。 Node.js 连接器源码托管在 GitHub。 Node.js 版本兼容性 支持 Node.js 14 及以上版本。 支持的平台 支持所有能运行 Node.js 的平台。 …...
Git分布式版本控制工具
一、工作流程 二、常用指令 1、配置git 配置环境变量 cmd打开命令行,输入git查看是否配置成功。 设置用户名和邮箱 git config --global user.name "用户名" git config --global user.email "邮箱" 查看用户名和邮箱 git config --glob…...
The first day of vue
关于小白直接接触vue3的第1天 首先我们需要一个脚手架node.js (这个可以从官网下载,免费的,安装也比较简单,后续我也会出一个相关的安装教程,方便大家和我一起讨论,互相学习) (不知道有没有人对…...
C语言超详细指针知识(三)
在经过前面两篇指针知识博客学习之后,我相信你已经对指针有了一定的理解,今天将更新C语言指针最后一篇,一起来学习吧。 1.字符指针变量 在指针类型的学习中,我们知道有一种指针类型为字符指针char*,之前我们是这样使用…...
无人机气动-结构耦合技术要点与难点
一、技术要点 1. 多学科耦合建模 气动载荷与结构响应的双向耦合:气动力(如升力、阻力、力矩)导致结构变形,而变形改变气动外形,进一步影响气流分布,形成闭环反馈。 建模方法: 高精度C…...
打造现代数据基础架构:MinIO对象存储完全指南
目录 打造现代数据基础架构:MinIO对象存储完全指南1. MinIO介绍1.1 什么是对象存储?1.2 MinIO核心特点1.3 MinIO使用场景 2. MinIO部署方案对比2.1 单节点单驱动器(SNSD/Standalone)2.2 单节点多驱动器(SNMD/Standalone Multi-Drive)2.3 多节点多驱动器(…...
SpringBoot条件注解全解析:核心作用与使用场景详解
目录 引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、ConditionalOnClass和ConditionalOnMissingClass2、ConditionalOnBean和ConditionalOnMissingBean3、ConditionalOnProperty4、ConditionalOnWebApplication和ConditionalOnNotWebApplication5、ConditionalO…...
智慧酒店企业站官网-前端静态网站模板【前端练习项目】
最近又写了一个静态网站,智慧酒店宣传官网。 使用的技术 html css js 。 特别适合编程学习者进行网页制作和前端开发的实践。 项目包含七个核心模块:首页、整体解决方案、优势、全国案例、行业观点、合作加盟、关于我们。 通过该项目,小伙伴们…...
#2 物联网组成要素
从下至上,则包括了5个要素,包括 设备 / 传感器 / 网络 / 物联网服务 / 数据分析 这五个要素。为了便于理解,我们用思维导图展示 物联网构成架构 设备 能够感测和反馈并连到网络进行物联网服务的装置 传感器 传感器和网关的融合实现了物…...
UE5 物理模拟 与 触发检测
文章目录 碰撞条件开启模拟关闭模拟 多层级的MeshUE的BUG 触发触发条件 碰撞 条件 1必须有网格体组件 2网格体组件必须有网格,没有网格虽然可以开启物理模拟,但是不会有任何效果 注意开启的模拟的网格体组件会计算自己和所有子网格的mesh范围 3只有网格…...
C++23 新特性静态operator[]、operator()与Lambda
文章目录 静态操作符 operator[] 和 operator()示例:静态 operator[]示例:静态 operator() 静态 Lambda 表达式(P1169R4)示例:静态 Lambda 表达式 编译器支持和总结深入静态操作符 operator[] 和 operator()性能优化代…...
C# 13新特性 - .NET 9
转载: C# 13 中的新增功能 | Microsoft Learn C# 13 包括以下新增功能。 可以使用最新的 Visual Studio 2022 版本或 .NET 9 SDK 尝试这些功能:Introduced in Visual Studio 2022 Version 17.12 and newer when using C# 13 C# 13 中的新增功能 | Micr…...
MyBatis SQL会话管理详解
目录 一、SQL会话的基本概念(一)创建SQL会话 二、SQL会话的生命周期(一)打开会话(二)执行SQL操作(三)提交事务(四)回滚事务(五)关闭会…...
Uniapp: 下拉选择框 ba-tree-picker
目录 1、效果展示2、如何使用2.1 插件市场2.2 引入插件 3、参数配置3.1 属性3.2 方法 4、遇见的问题4.1、设置下拉树的样式 1、效果展示 2、如何使用 2.1 插件市场 首先从插件市场中将插件导入到项目中 2.2 引入插件 在使用的页面引入插件 <view click"showPicke…...
【高性能缓存Redis_中间件】三、redis 精通:性能优化与生产实践
一、引言 在前两篇 Redis 消息队列的文章中,我们掌握了基础使用和高级特性。本文作为系列终篇,将聚焦生产环境的性能优化与全流程实践,请各位跟随小编的步伐一起构建高可靠、高性能的消息处理系统(文章中的演示均为Centos7的背…...
自然语言处理Hugging Face Transformers
Hugging Face Transformers 是一个基于 PyTorch 和 TensorFlow 的开源库,专注于 最先进的自然语言处理(NLP)模型,如 BERT、GPT、RoBERTa、T5 等。它提供了 预训练模型、微调工具和推理 API,广泛应用于文本分类、机器翻…...
uniapp自定义tabbar,根据角色动态显示不同tabbar,无闪动问题
🤵 作者:coderYYY 🧑 个人简介:前端程序媛,目前主攻web前端,后端辅助,其他技术知识也会偶尔分享🍀欢迎和我一起交流!🚀(评论和私信一般会回!!) 👉 个人专栏推荐:《前端项目教程以及代码》 ✨一、前言 这个需求在开发中还是很常见的,搜索了网络其他教程,…...
狂神SQL学习笔记一:初识MySQL、关系型数据库和非关系型数据库
菜鸟教程学习一半了,但是已经疲倦了,所以换一个课程学习,来提升学习质量,可能会有很多已经学习到的地方,就当是复习巩固了。 按照SQL学习课程来划分,分为45集,所以可能也会写45篇文章ÿ…...
面向MoE和推理模型时代:阿里云大数据AI产品升级发布
阿里云 2025 AI 势能大会上,阿里云智能集团副总裁、阿里云智能计算平台事业部负责人汪军华带来主题演讲《范式演进:MoE&推理模型时代的挑战与应对》,并发布大数据 AI 平台一系列重磅产品能力升级。 汪军华认为,从 Generative …...
网络安全·第三天·ICMP协议安全分析
一、ICMP功能介绍 ICMP(Internet Control Message Protocal)是一种差错和控制报文协议,不仅用于传输差错报文, 还传输控制报文,但是ICMP只是尽可能交付,提供的服务是无连接、不可靠的,并不能保…...
Hadoop大数据平台部署(Hadoop3.2.4+Hive4.0.1)
这里写自定义目录标题 1、前置要求与规划2、基础环境配置3、Hadoop 3.2.4 集群部署4、MariaDB 10.6.x 安装(仅 master 节点)5、Hive 4.0.1 部署(仅 master 节点)6、Hive 离线数据预处理7、Sqoop导出预处理结果到MySQL 1、前置要求…...
JMeter使用
1.简介 1.1 打开方式 ①点击bat,打开 ②添加JMeter系统环境变量,输⼊命令jmeter即可启动JMeter⼯具 1.2 配置 简体中文 放大字体 1.3 使用 ①添加线程组 ②创建http请求 2. 组件 2.1 线程组 控制JMeter将⽤于执⾏测试的线程数,也可以把⼀个线程理解为⼀个测…...
API:科技赋能,引领智能文字识别、身份认证与发票查验真伪变革
在数字化进程不断加速的今天,各行业对高效、精准的数据处理和身份验证方式如饥似渴。 文字识别:精准捕捉,高效便捷 文字识别产品系列宛如一把把精准的信息采集利器,其中包含证件识别接口、车牌识别接口、文档识别接口、发票识别接…...
Docker 安装 Flink 实现数据实时统计 - 华为云
概述 案例介绍 Apache Flink 是一个开源的流处理框架,具有高吞吐、低延迟、可容错等特点,可同时支持批处理和流处理,为数据处理提供了强大而灵活的解决方案,Flink 在 Docker 中的应用场景主要是为了简化集群的部署和管理&#x…...
LeetCode算法题(Go语言实现)_46
题目 给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。 另有一些以数组 queries 表示的问题,其中 querie…...
AJAX与Axios基础
目录 一、AJAX 核心概念解析 1.1 AJAX 的核心概念 1.2 AJAX 工作原理 1.3 AJAX 局限性 二、axios 库介绍 2.1 Axios 核心特性 2.2 快速上手 2.3 核心配置项 2.4 错误处理标准方案 三、Axios 核心配置项 3.1 常用核心配置项 1. url 2. method 3. params 4. data …...
CodeReview工具集合
codereview 工具集合 在现代软件开发中,代码审查(Code Review) 已成为保障代码质量和团队协作效率的关键流程。一个合适的 Code Review 工具,不仅能帮助团队发现潜在问题,还能促进知识共享与规范统一。 本文整理了一些…...
LeetCode算法题(Go语言实现)_45
题目 n 座城市,从 0 到 n-1 编号,其间共有 n-1 条路线。因此,要想在两座不同城市之间旅行只有唯一一条路线可供选择(路线网形成一颗树)。去年,交通运输部决定重新规划路线,以改变交通拥堵的状况…...
C++23 新特性:[[assume(expression)]] 属性
文章目录 语法与基本用法作用与优化原理使用注意事项未满足假设时的行为使用场景 示例代码总结 C23 引入了一个新的属性 [[assume(expression)]],它为程序员提供了一种向编译器传递额外信息的机制,从而让编译器能够生成更高效的代码。 语法与基本用法 …...
AI IDE 提示词
好的,这就将之前的分析内容整理成一篇适合发布在 CSDN 上的博客文章。 告别代码生成混乱:AI IDE 提示词模式权威指南 作者: (你的名字/昵称) 日期: 2025年4月14日 前言 随着人工智能技术的飞速发展,AI 助手(如 GitHub Copilot…...
Framework Binder架构分解
整个 Binder 架构所涉及的总共有以下 5 个目录: 1. /framework/base/core/java/(Java) 2. /framework/base/core/jni/ (JNI) 3,/framework/native/libs/binder (Native) 4,/framework/native/cmds/servicemanager/ (Native) 5,…...
三层交换机SVI功能(交换机虚拟接口)实现各个实训室电脑网络可互通,原本是独立局域网
三层交换机 SVI功能(交换机虚拟接口) 实现VLAN路由 需求 :各实训室使用独立局域网,即每个实训有自己的IP网段, 每个实训室只有内部互相访问。 需求:为了加强各实训室学生的交流,学校要求我们…...
Spark-SQL核心编程:DataFrame、DataSet与RDD深度解析
在大数据处理领域,Spark-SQL是极为重要的工具。今天就来深入探讨Spark-SQL中DataFrame、DataSet和RDD这三个关键数据结构。 Spark-SQL的前身是Shark,它摆脱了对Hive的过度依赖,在数据兼容、性能优化和组件扩展上有显著提升。DataFrame是基于R…...
腾讯云COS直传,官方后端demo,GO语言转JAVA
腾讯云COS直传,官方后端demo,GO写的,我们台是JAVA所以转一下,已跑通。废话不多说,直接上代码: Controller类如下: import com.ruoyi.web.core.config.CosConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.Ht…...
c语言坦克对战(前言)
实现C语言中的“坦克大战”游戏逻辑,可以按照以下步骤进行: 游戏初始化 定义游戏窗口:设置游戏窗口的大小和标题。加载资源:加载坦克、子弹、敌人等图像资源。初始化游戏状态:设置初始分数、生命值、坦克位置等。 游…...
空间信息可视化——WebGIS前端实例(一)
技术栈:原生HTML 源代码:CUGLin/WebGIS: This is a project of Spatial information visualization 4 全国贫困县可视化系统 4.1 系统设计思想 党的十九大报告明确指出,要“确保到2020年我国现行标准下农村贫困人口实现脱贫,贫困县全部摘帽,解决区域…...
JVM考古现场(十九):量子封神·用鸿蒙编译器重铸天道法则
楔子:代码鸿蒙劫 "警告!警告!昆仑山服务器集群出现量子纠缠现象!"凌霄殿监控中心警报响彻云霄。全息投影中,Java线程在四维时空中编织出克莱因瓶拓扑结构,GC日志里闪烁着霍金辐射般的奇点事件。本…...
思维与算法共舞:AIGC语言模型的艺术与科学
云边有个稻草人-个人主页 热门文章_云边有个稻草人的博客-本篇文章所属专栏~ 目录 引言:AIGC与文本生成概述 一、AIGC基础:语言模型的基本原理 1. 什么是语言模型? 2. 预训练与微调 二、AIGC的应用领域:文本生成的具体应用 …...
C++之 多继承
在学校里有老师和学生,他们都是人,我么应该创建一个名为 Person 的基类和两个名为 Teacher 和Student 的子类,后两者是从前者继承来的 有一部分学生还教课挣钱(助教),也就是同时存在着两个”是一个”关系&…...
AI模型的主要分类及其详细对比,涵盖任务类型、架构、数据需求、应用场景等维度,并附上典型代表模型
以下是 AI模型的主要分类及其详细对比,涵盖任务类型、架构、数据需求、应用场景等维度,并附上典型代表模型: 一、AI模型的主要分类 1. 按任务类型分类 分类定义特点代表模型应用场景推理模型专注于逻辑推理、问题解决、因果关系分析的模型…...
TypeScript 快速入门
TypeScript 快速入门 1. 初识 TypeScript 1.1 TS 是什么? 以 JavaScript 为基础构建的语言;一个 JavaScript 的超集;可以在任何支持 JavaScript 的平台执行;TypeScript 扩展了 JavaScript 并添加了类型;TS 不能被 J…...
第一章 计算机网络和因特网
1.1 什么是因特网(Internet) 在博客这一系列文章中,我们使用一种特定的计算机网络,即公共因特网作为讨论计算机网络及其协议的主要载体。什么是因特网?可以用两种方式来回答这个问题:其一,我们能够通过因特网的具体构…...
【uni-app】axios 报错:Error: Adapter ‘http‘ is not available in the build
在 uni-app 中使用 axios 会报错:Error: Adapter ‘http‘ is not available in the build 解决方法:为 axios 添加 adapter 适配器。 import axios from axios; import settle from ../../node_modules/axios/lib/core/settle; import buildURL from …...
【路由交换方向IE认证】BGP选路原则之Weight属性
文章目录 一、路由器BGP路由的处理过程控制平面和转发平面选路工具 二、BGP的选路顺序选路的前提选路顺序 三、Wight属性选路原则规则9与规则11的潜移默化使用Weight值进行选路直接更改Weight值进行选路配合使用route-map进行选路 四、BGP邻居建立配置 一、路由器BGP路由的处理…...
思科模拟器的单臂路由,交换机,路由器,路由器只要两个端口的话,连接三台电脑该怎么办,划分VLAN,dotlq协议
单臂路由 1. 需求:让三台电脑互通 2. 在二层交换机划分vlan,并加入; 3. 将连接二层交换机和路由器的端口f0/4改为trunk模式 4. 路由器:进入连接路由器的f0/0端口将端口开启 5. 进入每个vlan设dotlq协议并设网络IP(…...
计算机视觉与深度学习 | 基于Matlab的钢筋计数
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 基于Matlab的钢筋计数 1、引言2、方法设计2.1 整体流程2.2 关键技术2…...
Pytorch深度学习框架60天进阶学习计划 - 第41天:生成对抗网络进阶(三)
Pytorch深度学习框架60天进阶学习计划 - 第41天:生成对抗网络进阶(三) 7. 实现条件WGAN-GP # 训练条件WGAN-GP def train_conditional_wgan_gp():# 用于记录损失d_losses []g_losses []# 用于记录生成样本的多样性(通过类别分…...
MySQL 用 limit 影响性能的优化方案
一.使用索引覆盖扫描 如果我们只需要查询部分字段,而不是所有字段,我们可以尝试使用索引覆盖扫描,也就是让查询所需的所有字段都在索引中,这样就不需要再访问数据页,减少了随机 I/O 操作。 例如,如果我们…...
粉末冶金齿轮学习笔记分享
有一段小段时间没有更新了,不知道小伙们有没有忘记我。最近总听到粉末冶金齿轮这个概念,花点时间来学习一下,总结一篇笔记分享给大家。废话不多说,直接开始: “粉末冶金”是一种制造工艺,包括在高压下压实…...
数据结构第五版【李春葆】
数据结构教程上机实验指导第5版(李春葆主编).pdf 数据结构教程(第5版)(李春葆).pdf 数据结构教程(第五版)课后习题参考答案(李春葆).pdf 数据结构教…...