实现PC端微信扫码native支付功能

目录

实现PC端微信扫码

简介

实现步骤

1. 获取商户号

2. 生成支付二维码

3. 监听支付结果

4. 发起支付请求

5. 处理支付回调

示例代码

结论

Native支付

Native支付的工作原理

Native支付的优势

Native支付的应用和市场地位

开通使用微信 native 支付流程

步骤一:注册微信开放平台账号

步骤二:创建应用

步骤三:配置支付

步骤四:集成支付功能

步骤五:测试和上线

qrcode

一、安装

二、使用

三、模糊识别(此处为意译,原文直译为:纠错级别)

四、二维码容量

五、编码模式

混合模式

自动模式

手动模式

汉字模式

六、多字节字符

方法介绍

方法一:toDataURL(text, options, callback)

方法二:toString(text, options, callback)

方法三:toBuffer(text, options, callback)

方法四:toFile(path, text, options, callback)

方法五: create(data, options)

方法六:toCanvas(text, options, callback)


实现PC端微信扫码

在本文中,我们将讨论如何在PC端实现微信扫码native支付功能,并提供代码案例和qrcode的使用方法

简介

微信扫码native支付是一种方便快捷的支付方式,用户只需使用微信扫描二维码即可完成支付操作。对于开发者来说,实现微信扫码native支付可以为PC端应用添加更多支付选择,提高用户体验。

实现步骤

以下是实现微信扫码native支付的步骤:

1. 获取商户号

首先,您需要拥有一个微信支付商户号。如果没有,请注册一个商户账号并申请商户号。

2. 生成支付二维码

在PC端应用中,您可以使用qrcode库生成支付二维码。这个库可以帮助您生成包含支付信息的二维码。

const QRCode = require('qrcode');const generatePaymentQRCode = async (paymentInfo) => {const paymentDataURL = await QRCode.toDataURL(JSON.stringify(paymentInfo));// 显示二维码图片,例如将paymentDataURL赋值给img标签的src属性
};

3. 监听支付结果

用户扫描二维码完成支付后,您需要监听支付结果。为了实现跳转到支付结果页面等功能,您可以使用回调函数或事件监听器。

const handlePaymentResult = (result) => {// 处理支付结果,例如跳转到支付结果页面
};const listenPaymentResult = () => {// 监听支付结果,例如通过回调函数或事件监听器
};

4. 发起支付请求

用户确认支付后,您需要向微信支付平台发起支付请求以完成支付。这个请求可以使用微信支付的API来实现。

const initiatePaymentRequest = (paymentInfo) => {// 使用微信支付API发起支付请求
};

5. 处理支付回调

发送支付请求后,您需要处理微信支付平台的回调。支付回调通常在用户支付成功后触发,您可以在接收到支付回调后执行相应的后续处理,例如更新订单状态或通知用户支付结果。

const handlePaymentCallback = () => {// 处理支付回调,例如更新订单状态或通知用户支付结果的操作
};

示例代码

下面是整理后的示例代码:

const openDialog = async () => {let result = await reqQrcode(route.query.orderId as string);await generatePaymentQRCode(result.data.codeUrl);dialogVisible.value = true;let timer = setInterval(async () => {let result = await reqQueryPayState(route.query.orderId as string);if (result.data) {dialogVisible.value = false;ElMessage({type: "success",message: "支付成功",});clearInterval(timer);getOrderInfo();}}, 2000);};const generatePaymentQRCode = async (codeUrl) => {const paymentDataURL = await QRCode.toDataURL(codeUrl);// 显示二维码图片,例如将paymentDataURL赋值给img标签的src属性
};const handlePaymentResult = (result) => {// 处理支付结果,例如跳转到支付结果页面
};const listenPaymentResult = () => {// 监听支付结果,例如通过回调函数或事件监听器
};const initiatePaymentRequest = (paymentInfo) => {// 使用微信支付API发起支付请求
};const handlePaymentCallback = () => {// 处理支付回调,例如更新订单状态或通知用户支付结果的操作
};

结论

通过遵循上述步骤,我们可以在PC端实现微信扫码native支付功能。这样,用户可以轻松完成支付操作,提高支付的便捷性。

希望本文提供的代码案例和qrcode库的使用方法对您有所帮助。祝您成功实现微信扫码native支付功能!

Native支付是一种广泛应用于移动支付领域的支付方式。它基于手机操作系统的本地功能,允许用户使用手机完成支付而无需依赖第三方支付应用或其他设备。本文将介绍Native支付的工作原理、优势,以及其在移动支付市场中的地位和应用。

Native支付

产品介绍 - Native支付 | 微信支付服务商文档中心https://pay.weixin.qq.com/docs/partner/products/partner-native-payment/introduction.html

 

  1. 商户后台系统根据用户选购的商品生成订单。
  2. 用户确认支付后调用微信支付【Native下单API】生成预支付交易。
  3. 微信支付系统收到请求后生成预支付交易单,并返回交易会话的二维码链接code_url。
  4. 商户后台系统根据返回的code_url生成二维码。
  5. 用户打开微信“扫一扫”扫描二维码,微信客户端将扫码内容发送到微信支付系统。
  6. 微信支付系统收到客户端请求,验证链接有效性后发起用户支付,要求用户授权。
  7. 用户在微信客户端输入密码,确认支付后,微信客户端提交授权。
  8. 微信支付系统根据用户授权完成支付交易。
  9. 微信支付系统完成支付交易后给微信客户端返回交易结果,并将交易结果通过短信、微信消息提示用户。微信客户端展示支付交易结果页面。
  10. 微信支付系统通过发送异步消息通知商户后台系统支付结果。商户后台系统需回复接收情况,通知微信后台系统不再发送该单的支付通知。
  11. 未收到支付通知的情况,商户后台系统调用【查询订单API】。
  12. 商户确认订单已支付后给用户发货。

Native支付的工作原理

Native支付利用手机操作系统的本地支付功能实现支付过程。它通常与商家的移动应用程序或移动网页集成,为用户提供便捷、安全的支付方式。以下是Native支付的一般工作流程:

  1. 用户在商家的移动应用程序或移动网页上选择商品并进入支付页面。
  2. 商家通过移动支付软件开发工具包(SDK)调用手机操作系统的本地支付功能。
  3. 用户输入支付密码、指纹或进行人脸识别等身份验证方式。
  4. 手机操作系统向支付服务提供商发送支付请求,并进行支付验证。
  5. 支付服务提供商验证支付请求的合法性,并向商家和用户返回支付结果。
  6. 商家根据支付结果完成订单处理,向用户提供支付成功的确认信息。

Native支付的优势

Native支付相对于传统的移动支付方式具有以下优势:

  1. 便捷性:Native支付与手机操作系统的本地功能紧密集成,用户可以在商家的移动应用程序内直接完成支付,无需下载额外的支付应用或使用其他设备。
  2. 安全性:通过本地支付功能,Native支付可以利用手机操作系统提供的身份验证和加密技术,保护用户的支付信息和个人隐私。
  3. 用户体验:Native支付在用户界面上通常与商家的移动应用程序或移动网页无缝衔接,提供一致的用户体验,无需用户在不同应用之间切换。
  4. 商户支持:Native支付对于商家来说也非常便利,商家可以通过集成本地支付功能,提供更多的支付选择,提升用户支付意愿和购买体验。

Native支付的应用和市场地位

Native支付作为一种普遍采用的支付方式,在移动支付市场中具有重要地位。许多主流的移动支付服务提供商,如Apple Pay、Google Pay和Samsung Pay,都采用了Native支付技术。此外,许多电子商务平台、餐饮、零售和出行服务提供商也积极采用Native支付,以提供更便捷、安全的支付体验。

尽管Native支付在移动支付市场中占据重要地位,但也面临一些挑战。例如,不同的手机操作系统之间存在兼容性问题,导致用户的选择和支付方式受到限制。此外,在一些地区,移动支付基础设施的发展仍存在不足,限制了Native支付的普及程度。

综上所述,Native支付作为一种便捷、安全的移动支付方式,已经在移动支付市场中获得广泛应用。随着技术的进步和数字支付环境的不断改善,Native支付有望继续发展并为用户提供更加便利的支付体验。

开通使用微信 native 支付流程

本文介绍了如何开通并使用微信 native 支付,以便在您的应用程序或网站中实现便捷的支付功能。请按照以下步骤进行操作。

步骤一:注册微信开放平台账号

  1. 打开微信开放平台官网。
  2. 点击右上角的"注册"按钮,填写相关信息并创建账号。
  3. 登录微信开放平台账号。

步骤二:创建应用

  1. 在微信开放平台控制台,点击"创建应用"。
  2. 填写应用名称、应用类型和应用描述等相关信息。
  3. 选择"支付产品"中的"小程序支付",并填写相关信息。
  4. 点击"提交"后,等待审核。

步骤三:配置支付

  1. 审核通过后,在微信开放平台控制台,进入"开发配置",找到"支付配置"。
  2. 点击"修改配置",填写商户号和API密钥等支付相关信息。
  3. 配置成功后,点击"提交"。

步骤四:集成支付功能

  1. 根据您的开发语言和技术栈,选择合适的微信支付 API。
  2. 引入相关的微信支付库,例如在 JavaScript 中可以使用 wxpay.js。
  3. 在您的应用或网站中,编写代码调用相应的支付接口。

下面是一个使用 JavaScript 的简单示例代码:

 
<script>function onBridgeReady() {WeixinJSBridge.invoke('getBrandWCPayRequest', {"appId": "", // 替换为您的APP ID"timeStamp": "", // 替换为服务器返回的时间戳"nonceStr": "", // 替换为服务器返回的随机字符串"package": "", // 替换为服务器返回的package"signType": "MD5", // 替换为服务器返回的签名类型"paySign": "" // 替换为服务器返回的签名},function(res) {if (res.err_msg == "get_brand_wcpay_request:ok") {// 支付成功,跳转到支付成功页面或进行其他操作} else {// 支付失败,跳转到支付失败页面或进行其他操作}});}if (typeof WeixinJSBridge === "undefined") {if (document.addEventListener) {document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);} else if (document.attachEvent) {document.attachEvent('WeixinJSBridgeReady', onBridgeReady);document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);}} else {onBridgeReady();}
</script>

步骤五:测试和上线

  1. 在开发环境下,通过模拟支付流程,测试支付功能的正确性。
  2. 确保支付功能正常后,将应用部署到生产环境,并进行真实支付测试。
  3. 在支付功能正常并通过测试后,即可上线使用。

希望本文能帮助您了解并成功开通微信 native 支付,并在您的应用或网站中实现便捷的支付体验。注意确保遵守微信支付的相关规定和政策。

qrcode

qrcode 是一个流行的 Node.js 库,用于生成 QR 码(Quick Response Code)。它提供了一系列方法,可以方便地生成和自定义 QR 码。

以下是 qrcode 库的主要方法:

一、安装

npm install --save qrcode

二、使用

在 JavaScript 中使用

模块引入:

<!-- index.html -->
<html><body><canvas id="canvas"></canvas><script src="bundle.js"></script> </body>
</html>

// index.js -> bundle.js
var QRCode = require('qrcode')
var canvas = document.getElementById('canvas')QRCode.toCanvas(canvas, 'sample text', function (error) {if (error) console.error(error)console.log('success!');
})

使用预编译包: 

<canvas id="canvas"></canvas><script src="/build/qrcode.min.js"></script>
<script>QRCode.toCanvas(document.getElementById('canvas'), 'sample text', function (error) {if (error) console.error(error)console.log('success!');})
</script> 

如果通过npm安装,文件存储在node_modules/qrcode/build/folder中。 

import QRCode from 'qrcode' // With promises
QRCode.toDataURL('I am a pony!').then(url => {console.log(url)}).catch(err => {console.error(err)})// With async/await
const generateQR = async text => {try {console.log(await QRCode.toDataURL(text))} catch (err) {console.error(err)}
}

三、模糊识别(此处为意译,原文直译为:纠错级别)

在二维码部分模糊的情况下依然可以进行识别,分为四个识别等级。更高的级别可以识别更模糊的二维码,但会降低二维码的容量(见第四节)。
如果生成的二维码不会被破坏,建议使用低识别等级。

 可以通过 options.errorCorrectionLevel 属性设置错误级别。
如果未指定,则默认值为M。

QRCode.toDataURL('some text', { errorCorrectionLevel: 'H' }, function (err, url) {console.log(url)
})

四、二维码容量

容量取决于二维码的版本和模糊识别等级,编码模式也会影响可存储数据的量。

二维码版本:即二维码的规格,二维码共有40种规格的矩阵,从21x21(版本1),到177x177(版本40),每一版本比前一版本的边增加4个模块。

下表显示了每种编码模式和每个模糊识别等级的最大可存储字符数。 

注意:使用混合模式(见第五节)时,最大字符数可能不同。

可以通过 options.version 属性设置二维码版本。
如果未指定版本,则将使用更合适的值。除非需要特定版本,否则不需要此选项。

QRCode.toDataURL('some text', { version: 2 }, function (err, url) {console.log(url)
})

五、编码模式

编码模式可以更有效的方式编码字符串。编码模式取决于字符串内容

 

如果输入文本未知,选择正确的模式可能会很棘手。
在这些情况下,字节模式是最佳选择,因为所有字符都可以用它进行编码。
但是,如果 QR 码阅读器支持混合模式,则使用自动模式可能会产生更好的效果。

混合模式

混合模式也是可能的。可以从具有不同编码模式的一系列段生成二维码以优化数据压缩。
但是,从模式切换到另一种模式的成本可能会导致最坏的结果,如果不考虑它。有关如何指定具有不同编码模式的段的示例,请参见手动模式。

自动模式

默认使用自动模式。
输入字符串在各种段中自动分割,优化后使用混合模式产生最短的比特流。
这是生成二维码的首选方式。
例如,字符串ABCDE12345678?A1A将分为3个段,具有以下模式:

段和模式的任何其他组合将导致更长的比特流。
如果您需要保持较小的QR码,此模式将产生最佳效果。

手动模式

如果自动模式不适合您或您有特定需求,也可以使用手动模式指定每个段。通过这种方式,不会应用任何段优化。
分段列表可以作为对象数组传递:

var QRCode = require('qrcode')var segs = [{ data: 'ABCDEFG', mode: 'alphanumeric' },{ data: '0123456', mode: 'numeric' }
]QRCode.toDataURL(segs, function (err, url) {console.log(url)
})

汉字模式


使用汉字模式可以以优化的方式对 Shift JIS 系统中的字符进行编码。
遗憾的是,没有办法从例如以 UTF-8 编码的字符计算 Shifted JIS 值,因此需要从输入字符到 SJIS 值的转换表。
默认情况下,此表不包含在包中,以使包尽可能小。

如果您的应用程序需要汉字支持,则需要传递一个函数,该函数负责将输入字符转换为适当的值。

lib 通过可选文件提供辅助方法,您可以包含该文件,如下例所示。
注意:仅当您希望受益于数据压缩时才需要支持汉字模式,否则仍然可以使用字节模式对汉字进行编码。

var QRCode = require('qrcode')
var toSJIS = require('qrcode/helper/to-sjis')QRCode.toDataURL(kanjiString, { toSJISFunc: toSJIS }, function (err, url) {console.log(url)
})

 使用预编译包:

<canvas id="canvas"></canvas><script src="/build/qrcode.min.js"></script>
<script src="/build/qrcode.tosjis.min.js"></script>
<script>QRCode.toCanvas(document.getElementById('canvas'),'sample text', { toSJISFunc: QRCode.toSJIS }, function (error) {if (error) console.error(error)console.log('success!')})
</script> 

六、多字节字符


初始二维码标准中不存在对多字节字符的支持,但可以在字节模式下编码 UTF-8 字符。

二维码提供了一种通过 ECI(扩展信道解释)指定不同类型字符集的方法,但它尚未在此 lib 中完全实现。

但是,大多数二维码阅读器即使没有 ECI 也能识别多字节字符。

请注意,单个汉字/假名或表情符号最多可占用 4 个字节。
 

方法介绍

方法一:toDataURL(text, options, callback)

这个方法用于生成包含指定文本的 QR 码,并返回一个 Data URL。可以通过将该 URL 分配给一个 <img> 标签的 src 属性,或在其他需要图像 URL 的场景中使用。

const qrcode = require('qrcode');qrcode.toDataURL('Hello World', function (err, url) {console.log(url);
});

方法二:toString(text, options, callback)

这个方法与上一个方法类似,但返回的是一个 SVG 字符串,而不是 Data URL。

const qrcode = require('qrcode');qrcode.toString('Hello World', function (err, svgString) {console.log(svgString);
});

方法三:toBuffer(text, options, callback)

这个方法生成二进制图片数据的 QR 码,它返回一个 Buffer 对象。

const qrcode = require('qrcode');qrcode.toBuffer('Hello World', function (err, buffer) {console.log(buffer);
});

方法四:toFile(path, text, options, callback)

这个方法将 QR 码保存为文件,路径由 path 参数指定。

const qrcode = require('qrcode');qrcode.toFile('./qrcode.png', 'Hello World', function (err, path) {console.log(path);
});

方法五: create(data, options)

这个方法用于创建一个 QR 码对象,你可以将其转换为字符串、图像或其他格式。

const qrcode = require('qrcode');const qr = qrcode.create('Hello World');
console.log(qr); // 返回 QR 码对象

方法六:toCanvas(text, options, callback)

这个方法生成一个包含指定文本的 QR 码的 Canvas 元素,并在回调函数中返回该元素。你可以将 Canvas 元素插入到网页中,或者在服务器端进行处理。

const qrcode = require('qrcode');qrcode.toCanvas('Hello World', function (err, canvas) {console.log(canvas);
});

以上是 qrcode 库的主要方法。使用这些方法,你可以方便地生成自定义的 QR 码,并将其嵌入到你的应用程序中。请注意,这只是 qrcode 库的基本用法介绍,你可以参考官方文档了解更多高级功能和选项。

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

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

相关文章

Oracle输出文本平面(CSV、XML)文本数据详细过程

此过程是提供给前端,调用的接口,为报表提供”下载“功能。以下是本人在测试环境的测试,有什么不足的地方,请留言指教,谢谢。 1、测试表 分别对测试表输出csv、xml两种格式文件数据。前期的准备工作。 --在服务器端创建directory,用管理员用户 create or replace directo…

ftp传文件越来越慢的原因,以及解决方案

FTP 是一种常用的文件传输协议&#xff0c;它基于客户端-服务端模型工作&#xff0c;允许用户通过网络传输文件。但是&#xff0c;有时候在使用 FTP 的过程中&#xff0c;文件传输速度会逐渐变慢&#xff0c;这给用户带来了很多困扰。本文将分析 FTP 传文件变慢的原因&#xff…

QT DAY2

1.思维导图 2.继续完善登录框&#xff0c;当登录成功时&#xff0c;关闭登录界面&#xff0c;跳转到新的界面中 Second.h #ifndef SECOND_H #define SECOND_H#include <QWidget> #include <QtCore/QDebug> #include <QIcon> #include <QPushButton> …

当ChatGPT应用在汽车行业,具体有哪些场景?

​ ChatGPT有潜力彻底改变汽车行业并将其提升到新的高度。在ChatGPT的加持下&#xff0c;该行业的多个领域都将取得重大变化。 利用ChatGPT作更高级的虚拟助理 你可能用过现有的虚拟助理&#xff0c;它们一系列的回复有时候让人不得不感叹一句“人工智障”&#xff01;然而&a…

2023-07-26 LeetCode每日一题(更新数组后处理求和查询)

2023-07-26每日一题 一、题目编号 2569. 更新数组后处理求和查询二、题目链接 点击跳转到题目位置 三、题目描述 给你两个下标从 0 开始的数组 nums1 和 nums2 &#xff0c;和一个二维数组 queries 表示一些操作。总共有 3 种类型的操作&#xff1a; 操作类型 1 为 querie…

跨境电商多语言带直播功能功能列表

一、直播导购 1.直播入驻管理&#xff1a;直播入驻实际上就是商家入驻&#xff0c;开通商家后会获得直播权限 2.直播观看/拉流页面(分三屏&#xff0c;可以左右滑动&#xff09;&#xff1a; 左屏&#xff1a; 直播间信息&#xff1a;直播间名称、直播封面、房间号、在线人数、…

【C语言项目】扫雷(详解,附图、附代码示范)

文章目录 项目思路一、分文件进行创建二、进入游戏前的目录2.1 目录的功能&#xff1a;2.2 目录界面&#xff1a;2.3 选择进入或退出游戏2.3.1 代码示范2.3.2 图片示例&#xff1a; 三、画出游戏界面3.1 创建两个数组3.2 初始化数组3.3 打印游戏界面3.3.1 代码思路3.3.2 代码示…

gin框架内容(二)

上一篇过于gin的内容 https://mp.csdn.net/mp_blog/creation/editor/131953861 CSDNhttps://mp.csdn.net/mp_blog/creation/editor/131953861 一、路由组 为了管理具有相同前缀的URL, 将拥有URL共同前缀的路由划分为一组 为了代码的阅读性&#xff0c;使用{}包裹相同组的路由…

WPF icon的设置

想给控件设置个圆形图片&#xff0c;代码如下&#xff1a; ​<Setter Property"Icon"><Setter.Value><Image Source"/WpfApp1;component/Resource/1.ico" Width"16" Height"16"/></Setter.Value></Setter&…

ncnn-android-yolov7跑自己模型的注意事项

ncnn-android-yolov7 这是一个示例 ncnn android 项目&#xff0c;它依赖于 ncnn 库和 opencv https://github.com/Tencent/ncnn https://github.com/nihui/opencv-mobile https://github.com/xiang-wuu/ncnn-android-yolov7 如何构建和运行 步骤1 https://github.com/Ten…

linux 在excel里面找内容

linux 在excel里面找内容 背景&#xff1a;在大数据行业中&#xff0c;很多数据源是excel文件&#xff0c;但是常常会出现查找excel内容找到对应的文件&#xff0c;所以制作了简单的shell脚本方便查询对应的excel文件 查看下面精简的内容即可&#xff0c;开箱即用 shell转换 …

vue项目实现数组中添加多个相同的对象

在写项目的时候&#xff0c;有时候想有一个有较大length的对象数组&#xff0c;则可以使用如下的方法&#xff1a; export default {data() {const item {date: 2016-05-02,name: 王小虎,address: 上海市普陀区金沙江路 1518 弄};return {tableData: Array(20).fill(item)}} …

将Parasoft和ChatGPT相结合会如何?

ChatGPT是2023年最热门的话题之一&#xff0c;是OpenAI训练的语言模型。它能够理解和生成自然语言文本&#xff0c;并接受过大量数据的训练&#xff0c;包括用各种编程语言编写的许多开源项目的源代码。 软件开发人员可以利用大量的知识库来协助他们的工作&#xff0c;因为它具…

「预告」飞凌嵌入式邀您相约第13届配电技术应用论坛

2023年8月3日~5日&#xff0c;第十三届配电技术应用论坛即将在浙江杭州举行&#xff0c;飞凌嵌入式受邀参加。 作为助力快速实现“双碳”目标和新型电力系统建设&#xff0c;加强“双碳”目标下的智能配电网技术研发布局的主要会议&#xff0c;第十三届配电技术应用论坛将从政…

FPGA开发:按键消抖

按键是FPGA开发板上的重要交互元件&#xff0c;因为按键的内部的结构设计&#xff0c;在按下和松开按键时&#xff0c;按键会无法避免地产生机械抖动&#xff0c;因此要对按键输入进行特殊处理&#xff0c;否则可能会因为机械抖动产生意外的重复触发。 按键消抖有很多方法&…

C++设计模式之模板方法、策略模式、观察者模式

面向对象设计模式是”好的面向对象设计“&#xff0c;所谓”好的面向对象设计“指的是可以满足”应对变化&#xff0c;提高复用“的设计。 现代软件设计的特征是”需求的频繁变化“。设计模式的要点是”寻求变化点&#xff0c;然后在变化点处应用设计模式&#xff0c;从而更好地…

我的2023上半年总结

Hi~C站的小伙伴们好久不见哇&#xff01;釉色终于回到C站&#xff0c;开始要输出了&#xff01;这一篇文章是我的2023上半年的总结&#xff0c;以此&#xff0c;致敬那段迷茫但又不曾被辜负的时光。 文章目录 总括——你愿意花五分钟时间读读我的文章吗学习——制定目标&#…

【Matlab】基于粒子群优化算法优化BP神经网络的时间序列预测(Excel可直接替换数据)

【Matlab】基于粒子群优化算法优化BP神经网络的时间序列预测&#xff08;Excel可直接替换数据&#xff09; 1.模型原理2.数学公式3.文件结构4.Excel数据5.分块代码5.1 fun.m5.2 main.m 6.完整代码6.1 fun.m6.2 main.m 7.运行结果 1.模型原理 基于粒子群优化算法&#xff08;Pa…

nsq整体架构及各个部件作用详解

文章目录 前言 nsq的整体架构图 部件&#xff1a;nsqd 部件&#xff1a;nsqlookupd 部件&#xff1a;nsq连接库 部件&#xff1a;nsqadmin 前言 上两篇博客 centos环境搭建nsq单点_YZF_Kevin的博客-CSDN博客 linux环境搭建nsq集群_YZF_Kevin的博客-CSDN博客 我们讲了nsq是…

桥梁安全监测系统中数据采集上传用 什么?

背景 2023年7月6日凌晨时分&#xff0c;G5012恩广高速达万段230公里加80米处6号大桥部分桥面发生垮塌&#xff0c;导致造成2车受损后自燃&#xff0c;3人受轻伤。目前&#xff0c;四川省公安厅交通警察总队高速公路五支队十四大队民警已对现场进行双向管制。 作为世界第一桥梁…